@clauderecallhq/cli 0.66.0 → 0.68.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
7
7
  `+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{fe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?de(n):``}function me(e,t){switch(e.tag){case 26:case 27:case 5:return de(e.type);case 16:return de(`Lazy`);case 13:return e.child!==t&&t!==null?de(`Suspense Fallback`):de(`Suspense`);case 19:return de(`SuspenseList`);case 0:case 15:return pe(e.type,!1);case 11:return pe(e.type.render,!1);case 1:return pe(e.type,!0);case 31:return de(`Activity`);default:return``}}function he(e){try{var t=``,n=null;do t+=me(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
8
8
  Error generating stack: `+e.message+`
9
9
  `+e.stack}}var ge=Object.prototype.hasOwnProperty,_e=t.unstable_scheduleCallback,ve=t.unstable_cancelCallback,ye=t.unstable_shouldYield,be=t.unstable_requestPaint,xe=t.unstable_now,Se=t.unstable_getCurrentPriorityLevel,Ce=t.unstable_ImmediatePriority,we=t.unstable_UserBlockingPriority,Te=t.unstable_NormalPriority,Ee=t.unstable_LowPriority,De=t.unstable_IdlePriority,Oe=t.log,ke=t.unstable_setDisableYieldValue,Ae=null,je=null;function Me(e){if(typeof Oe==`function`&&ke(e),je&&typeof je.setStrictMode==`function`)try{je.setStrictMode(Ae,e)}catch{}}var Ne=Math.clz32?Math.clz32:Ie,Pe=Math.log,Fe=Math.LN2;function Ie(e){return e>>>=0,e===0?32:31-(Pe(e)/Fe|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 U(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function W(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ge(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-Ne(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&&G(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function G(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Ne(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function Ke(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Ne(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function qe(e,t){var n=t&-t;return n=n&42?1:Je(n),(n&(e.suspendedLanes|t))===0?n:0}function Je(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 Ye(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function Xe(){var e=F.p;return e===0?(e=window.event,e===void 0?32:mp(e.type)):e}function Ze(e,t){var n=F.p;try{return F.p=e,t()}finally{F.p=n}}var Qe=Math.random().toString(36).slice(2),$e=`__reactFiber$`+Qe,et=`__reactProps$`+Qe,tt=`__reactContainer$`+Qe,nt=`__reactEvents$`+Qe,rt=`__reactListeners$`+Qe,it=`__reactHandles$`+Qe,at=`__reactResources$`+Qe,ot=`__reactMarker$`+Qe;function K(e){delete e[$e],delete e[et],delete e[nt],delete e[rt],delete e[it]}function q(e){var t=e[$e];if(t)return t;for(var n=e.parentNode;n;){if(t=n[tt]||n[$e]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=df(e);e!==null;){if(n=e[$e])return n;e=df(e)}return t}e=n,n=e.parentNode}return null}function st(e){if(e=e[$e]||e[tt]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function ct(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function lt(e){var t=e[at];return t||=e[at]={hoistableStyles:new Map,hoistableScripts:new Map},t}function ut(e){e[ot]=!0}var J=new Set,Y={};function X(e,t){dt(e,t),dt(e+`Capture`,t)}function dt(e,t){for(Y[e]=t,e=0;e<t.length;e++)J.add(t[e])}var ft=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]*$`),pt={},mt={};function ht(e){return ge.call(mt,e)?!0:ge.call(pt,e)?!1:ft.test(e)?mt[e]=!0:(pt[e]=!0,!1)}function gt(e,t,n){if(ht(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 _t(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 vt(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 yt(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function bt(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function xt(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 St(e){if(!e._valueTracker){var t=bt(e)?`checked`:`value`;e._valueTracker=xt(e,t,``+e[t])}}function Ct(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=bt(e)?e.checked?`true`:`false`:e.value),e=r,e===n?!1:(t.setValue(e),!0)}function wt(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 Tt=/[\n"\\]/g;function Et(e){return e.replace(Tt,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function Dt(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=``+yt(t)):e.value!==``+yt(t)&&(e.value=``+yt(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):kt(e,o,yt(n)):kt(e,o,yt(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=``+yt(s):e.removeAttribute(`name`)}function Ot(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)){St(e);return}n=n==null?``:``+yt(n),t=t==null?n:``+yt(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),St(e)}function kt(e,t,n){t===`number`&&wt(e.ownerDocument)===e||e.defaultValue===``+n||(e.defaultValue=``+n)}function At(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=``+yt(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 jt(e,t,n){if(t!=null&&(t=``+yt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+yt(n)}function Mt(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(te(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=yt(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),St(e)}function Z(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Nt=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 Pt(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||Nt.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function Ft(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&&Pt(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&Pt(e,o,t[o])}function It(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 Lt=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`]]),Rt=/^[\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 zt(e){return Rt.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function Bt(){}var Vt=null;function Ht(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ut=null,Wt=null;function Gt(e){var t=st(e);if(t&&(e=t.stateNode)){var n=e[et]||null;a:switch(e=t.stateNode,t.type){case`input`:if(Dt(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="`+Et(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[et]||null;if(!a)throw Error(i(90));Dt(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&&Ct(r)}break a;case`textarea`:jt(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&At(e,!!n.multiple,t,!1)}}}var Kt=!1;function qt(e,t,n){if(Kt)return e(t,n);Kt=!0;try{return e(t)}finally{if(Kt=!1,(Ut!==null||Wt!==null)&&(_u(),Ut&&(t=Ut,e=Wt,Wt=Ut=null,Gt(t),e)))for(t=0;t<e.length;t++)Gt(e[t])}}function Jt(e,t){var n=e.stateNode;if(n===null)return null;var r=n[et]||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 Yt=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),Xt=!1;if(Yt)try{var Zt={};Object.defineProperty(Zt,`passive`,{get:function(){Xt=!0}}),window.addEventListener(`test`,Zt,Zt),window.removeEventListener(`test`,Zt,Zt)}catch{Xt=!1}var Qt=null,$t=null,en=null;function tn(){if(en)return en;var e,t=$t,n=t.length,r,i=`value`in Qt?Qt.value:Qt.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 en=i.slice(e,1<r?1-r:void 0)}function nn(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 rn(){return!0}function an(){return!1}function on(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)?rn:an,this.isPropagationStopped=an,this}return f(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=rn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=rn)},persist:function(){},isPersistent:rn}),t}var sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=on(sn),ln=f({},sn,{view:0,detail:0}),un=on(ln),dn,fn,pn,mn=f({},ln,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:wn,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!==pn&&(pn&&e.type===`mousemove`?(dn=e.screenX-pn.screenX,fn=e.screenY-pn.screenY):fn=dn=0,pn=e),dn)},movementY:function(e){return`movementY`in e?e.movementY:fn}}),Q=on(mn),hn=on(f({},mn,{dataTransfer:0})),gn=on(f({},ln,{relatedTarget:0})),_n=on(f({},sn,{animationName:0,elapsedTime:0,pseudoElement:0})),vn=on(f({},sn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),yn=on(f({},sn,{data:0})),bn={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},xn={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`},Sn={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Sn[e])?!!t[e]:!1}function wn(){return Cn}var Tn=on(f({},ln,{key:function(e){if(e.key){var t=bn[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=nn(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?xn[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:wn,charCode:function(e){return e.type===`keypress`?nn(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?nn(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),En=on(f({},mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Dn=on(f({},ln,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:wn})),On=on(f({},sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),kn=on(f({},mn,{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})),An=on(f({},sn,{newState:0,oldState:0})),jn=[9,13,27,32],Mn=Yt&&`CompositionEvent`in window,Nn=null;Yt&&`documentMode`in document&&(Nn=document.documentMode);var Pn=Yt&&`TextEvent`in window&&!Nn,Fn=Yt&&(!Mn||Nn&&8<Nn&&11>=Nn),In=` `,Ln=!1;function Rn(e,t){switch(e){case`keyup`:return jn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function zn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Bn=!1;function Vn(e,t){switch(e){case`compositionend`:return zn(t);case`keypress`:return t.which===32?(Ln=!0,In):null;case`textInput`:return e=t.data,e===In&&Ln?null:e;default:return null}}function Hn(e,t){if(Bn)return e===`compositionend`||!Mn&&Rn(e,t)?(e=tn(),en=$t=Qt=null,Bn=!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 Fn&&t.locale!==`ko`?null:t.data;default:return null}}var Un={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 Wn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!Un[e.type]:t===`textarea`}function Gn(e,t,n,r){Ut?Wt?Wt.push(r):Wt=[r]:Ut=r,t=Td(t,`onChange`),0<t.length&&(n=new cn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var Kn=null,qn=null;function Jn(e){_d(e,0)}function Yn(e){if(Ct(ct(e)))return e}function Xn(e,t){if(e===`change`)return t}var Zn=!1;if(Yt){var Qn;if(Yt){var $n=`oninput`in document;if(!$n){var er=document.createElement(`div`);er.setAttribute(`oninput`,`return;`),$n=typeof er.oninput==`function`}Qn=$n}else Qn=!1;Zn=Qn&&(!document.documentMode||9<document.documentMode)}function tr(){Kn&&(Kn.detachEvent(`onpropertychange`,nr),qn=Kn=null)}function nr(e){if(e.propertyName===`value`&&Yn(qn)){var t=[];Gn(t,qn,e,Ht(e)),qt(Jn,t)}}function rr(e,t,n){e===`focusin`?(tr(),Kn=t,qn=n,Kn.attachEvent(`onpropertychange`,nr)):e===`focusout`&&tr()}function ir(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return Yn(qn)}function ar(e,t){if(e===`click`)return Yn(t)}function or(e,t){if(e===`input`||e===`change`)return Yn(t)}function sr(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var cr=typeof Object.is==`function`?Object.is:sr;function lr(e,t){if(cr(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(!ge.call(t,i)||!cr(e[i],t[i]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function dr(e,t){var n=ur(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=ur(n)}}function fr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?fr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function pr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=wt(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=wt(e.document)}return t}function mr(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 hr=Yt&&`documentMode`in document&&11>=document.documentMode,gr=null,_r=null,vr=null,yr=!1;function br(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;yr||gr==null||gr!==wt(r)||(r=gr,`selectionStart`in r&&mr(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}),vr&&lr(vr,r)||(vr=r,r=Td(_r,`onSelect`),0<r.length&&(t=new cn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function xr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Sr={animationend:xr(`Animation`,`AnimationEnd`),animationiteration:xr(`Animation`,`AnimationIteration`),animationstart:xr(`Animation`,`AnimationStart`),transitionrun:xr(`Transition`,`TransitionRun`),transitionstart:xr(`Transition`,`TransitionStart`),transitioncancel:xr(`Transition`,`TransitionCancel`),transitionend:xr(`Transition`,`TransitionEnd`)},Cr={},wr={};Yt&&(wr=document.createElement(`div`).style,`AnimationEvent`in window||(delete Sr.animationend.animation,delete Sr.animationiteration.animation,delete Sr.animationstart.animation),`TransitionEvent`in window||delete Sr.transitionend.transition);function Tr(e){if(Cr[e])return Cr[e];if(!Sr[e])return e;var t=Sr[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in wr)return Cr[e]=t[n];return e}var Er=Tr(`animationend`),Dr=Tr(`animationiteration`),Or=Tr(`animationstart`),kr=Tr(`transitionrun`),Ar=Tr(`transitionstart`),jr=Tr(`transitioncancel`),Mr=Tr(`transitionend`),Nr=new Map,Pr=`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(` `);Pr.push(`scrollEnd`);function Fr(e,t){Nr.set(e,t),X(t,[e])}var Ir=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)},Lr=[],Rr=0,zr=0;function Br(){for(var e=Rr,t=zr=Rr=0;t<e;){var n=Lr[t];Lr[t++]=null;var r=Lr[t];Lr[t++]=null;var i=Lr[t];Lr[t++]=null;var a=Lr[t];if(Lr[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&&Wr(n,i,a)}}function Vr(e,t,n,r){Lr[Rr++]=e,Lr[Rr++]=t,Lr[Rr++]=n,Lr[Rr++]=r,zr|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function Hr(e,t,n,r){return Vr(e,t,n,r),Gr(e)}function Ur(e,t){return Vr(e,null,null,t),Gr(e)}function Wr(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-Ne(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function Gr(e){if(50<cu)throw cu=0,lu=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Kr={};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 Jr(e,t,n,r){return new qr(e,t,n,r)}function Yr(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Xr(e,t){var n=e.alternate;return n===null?(n=Jr(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 Zr(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 Qr(e,t,n,r,a,o){var s=0;if(r=e,typeof e==`function`)Yr(e)&&(s=1);else if(typeof e==`string`)s=Uf(e,n,ne.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(e){case k:return e=Jr(31,n,t,a),e.elementType=k,e.lanes=o,e;case y:return $r(n.children,a,o,t);case b:s=8,a|=24;break;case x:return e=Jr(12,n,t,a|2),e.elementType=x,e.lanes=o,e;case T:return e=Jr(13,n,t,a),e.elementType=T,e.lanes=o,e;case E:return e=Jr(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=Jr(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function $r(e,t,n,r){return e=Jr(7,e,r,t),e.lanes=n,e}function ei(e,t,n){return e=Jr(6,e,null,t),e.lanes=n,e}function ti(e){var t=Jr(18,null,null,0);return t.stateNode=e,t}function ni(e,t,n){return t=Jr(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var ri=new WeakMap;function ii(e,t){if(typeof e==`object`&&e){var n=ri.get(e);return n===void 0?(t={value:e,source:t,stack:he(t)},ri.set(e,t),t):n}return{value:e,source:t,stack:he(t)}}var ai=[],oi=0,si=null,ci=0,li=[],ui=0,di=null,fi=1,pi=``;function mi(e,t){ai[oi++]=ci,ai[oi++]=si,si=e,ci=t}function hi(e,t,n){li[ui++]=fi,li[ui++]=pi,li[ui++]=di,di=e;var r=fi;e=pi;var i=32-Ne(r)-1;r&=~(1<<i),n+=1;var a=32-Ne(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,fi=1<<32-Ne(t)+i|n<<i|r,pi=a+e}else fi=1<<a|n<<i|r,pi=e}function gi(e){e.return!==null&&(mi(e,1),hi(e,1,0))}function _i(e){for(;e===si;)si=ai[--oi],ai[oi]=null,ci=ai[--oi],ai[oi]=null;for(;e===di;)di=li[--ui],li[ui]=null,pi=li[--ui],li[ui]=null,fi=li[--ui],li[ui]=null}function vi(e,t){li[ui++]=fi,li[ui++]=pi,li[ui++]=di,fi=t.id,pi=t.overflow,di=e}var yi=null,bi=null,xi=!1,Si=null,Ci=!1,wi=Error(i(519));function Ti(e){throw ji(ii(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),wi}function Ei(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[$e]=e,t[et]=r,n){case`dialog`:vd(`cancel`,t),vd(`close`,t);break;case`iframe`:case`object`:case`embed`:vd(`load`,t);break;case`video`:case`audio`:for(n=0;n<hd.length;n++)vd(hd[n],t);break;case`source`:vd(`error`,t);break;case`img`:case`image`:case`link`:vd(`error`,t),vd(`load`,t);break;case`details`:vd(`toggle`,t);break;case`input`:vd(`invalid`,t),Ot(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:vd(`invalid`,t);break;case`textarea`:vd(`invalid`,t),Mt(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||jd(t.textContent,n)?(r.popover!=null&&(vd(`beforetoggle`,t),vd(`toggle`,t)),r.onScroll!=null&&vd(`scroll`,t),r.onScrollEnd!=null&&vd(`scrollend`,t),r.onClick!=null&&(t.onclick=Bt),t=!0):t=!1,t||Ti(e,!0)}function Di(e){for(yi=e.return;yi;)switch(yi.tag){case 5:case 31:case 13:Ci=!1;return;case 27:case 3:Ci=!0;return;default:yi=yi.return}}function Oi(e){if(e!==yi)return!1;if(!xi)return Di(e),xi=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!==`form`&&n!==`button`)||Ud(e.type,e.memoizedProps)),n=!n),n&&bi&&Ti(e),Di(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));bi=uf(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));bi=uf(e)}else t===27?(t=bi,Zd(e.type)?(e=lf,lf=null,bi=e):bi=t):bi=yi?cf(e.stateNode.nextSibling):null;return!0}function ki(){bi=yi=null,xi=!1}function Ai(){var e=Si;return e!==null&&(Jl===null?Jl=e:Jl.push.apply(Jl,e),Si=null),e}function ji(e){Si===null?Si=[e]:Si.push(e)}var Mi=z(null),Ni=null,Pi=null;function Fi(e,t,n){V(Mi,t._currentValue),t._currentValue=n}function Ii(e){e._currentValue=Mi.current,B(Mi)}function Li(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 Ri(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),Li(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),Li(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 zi(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;cr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===H.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[Qf]:e.push(Qf))}a=a.return}e!==null&&Ri(t,e,n,r),t.flags|=262144}function Bi(e){for(e=e.firstContext;e!==null;){if(!cr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Vi(e){Ni=e,Pi=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Hi(e){return Wi(Ni,e)}function Ui(e,t){return Ni===null&&Vi(e),Wi(e,t)}function Wi(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Pi===null){if(e===null)throw Error(i(308));Pi=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Pi=Pi.next=t;return n}var Gi=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()})}},Ki=t.unstable_scheduleCallback,qi=t.unstable_NormalPriority,Ji={$$typeof:C,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Yi(){return{controller:new Gi,data:new Map,refCount:0}}function Xi(e){e.refCount--,e.refCount===0&&Ki(qi,function(){e.controller.abort()})}var Zi=null,Qi=0,$i=0,ea=null;function ta(e,t){if(Zi===null){var n=Zi=[];Qi=0,$i=ld(),ea={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return Qi++,t.then(na,na),t}function na(){if(--Qi===0&&Zi!==null){ea!==null&&(ea.status=`fulfilled`);var e=Zi;Zi=null,$i=0,ea=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function ra(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 ia=P.S;P.S=function(e,t){Zl=xe(),typeof t==`object`&&t&&typeof t.then==`function`&&ta(e,t),ia!==null&&ia(e,t)};var aa=z(null);function oa(){var e=aa.current;return e===null?Ml.pooledCache:e}function sa(e,t){t===null?V(aa,aa.current):V(aa,t.pool)}function ca(){var e=oa();return e===null?null:{parent:Ji._currentValue,pool:e}}var la=Error(i(460)),ua=Error(i(474)),da=Error(i(542)),fa={then:function(){}};function pa(e){return e=e.status,e===`fulfilled`||e===`rejected`}function ma(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(Bt,Bt),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,va(e),e;default:if(typeof t.status==`string`)t.then(Bt,Bt);else{if(e=Ml,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,va(e),e}throw ga=t,la}}function ha(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(ga=e,la):e}}var ga=null;function _a(){if(ga===null)throw Error(i(459));var e=ga;return ga=null,e}function va(e){if(e===la||e===da)throw Error(i(483))}var ya=null,ba=0;function xa(e){var t=ba;return ba+=1,ya===null&&(ya=[]),ma(ya,e,t)}function Sa(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function Ca(e,t){throw t.$$typeof===m?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function wa(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=Xr(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=ei(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&&ha(i)===t.type)?(t=a(t,n.props),Sa(t,n),t.return=e,t):(t=Qr(n.type,n.key,n.props,null,e.mode,r),Sa(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=ni(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=$r(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=ei(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case g:return n=Qr(t.type,t.key,t.props,null,e.mode,n),Sa(n,t),n.return=e,n;case v:return t=ni(t,e.mode,n),t.return=e,t;case O:return t=ha(t),f(e,t,n)}if(te(t)||M(t))return t=$r(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,xa(t),n);if(t.$$typeof===C)return f(e,Ui(e,t),n);Ca(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 g: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=ha(n),p(e,t,n,r)}if(te(n)||M(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,xa(n),r);if(n.$$typeof===C)return p(e,t,Ui(e,n),r);Ca(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 g: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=ha(r),m(e,t,n,r,i)}if(te(r)||M(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,xa(r),i);if(r.$$typeof===C)return m(e,t,n,Ui(t,r),i);Ca(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),xi&&mi(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 xi&&mi(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)}),xi&&mi(i,h),l}function _(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),xi&&mi(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 xi&&mi(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)}),xi&&mi(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 g: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&&ha(l)===r.type){n(e,r.sibling),c=a(r,o.props),Sa(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=$r(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=Qr(o.type,o.key,o.props,null,e.mode,c),Sa(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}else{n(e,r);break}else t(e,r);r=r.sibling}c=ni(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=ha(o),b(e,r,o,c)}if(te(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),_(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,xa(o),c);if(o.$$typeof===C)return b(e,r,Ui(e,o),c);Ca(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=ei(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ba=0;var i=b(e,t,n,r);return ya=null,i}catch(t){if(t===la||t===da)throw t;var a=Jr(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ta=wa(!0),Ea=wa(!1),Da=!1;function Oa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ka(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 Aa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ja(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,jl&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Gr(e),Wr(e,null,n),t}return Vr(e,r,t,n),Gr(e)}function Ma(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,Ke(e,n)}}function Na(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 Pa=!1;function Fa(){if(Pa){var e=ea;if(e!==null)throw e}}function Ia(e,t,n,r){Pa=!1;var i=e.updateQueue;Da=!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 p=s.lane&-536870913,m=p!==s.lane;if(m?(Pl&p)===p:(r&p)===p){p!==0&&p===$i&&(Pa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;p=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,p);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,p=typeof h==`function`?h.call(_,d,p):h,p==null)break a;d=f({},d,p);break a;case 2:Da=!0}}p=s.callback,p!==null&&(e.flags|=64,m&&(e.flags|=8192),m=i.callbacks,m===null?i.callbacks=[p]:m.push(p))}else m={lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=m,c=d):u=u.next=m,o|=p;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;m=s,s=m.next,m.next=null,i.lastBaseUpdate=m,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),Hl|=o,e.lanes=o,e.memoizedState=d}}function La(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ra(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)La(n[e],t)}var za=z(null),Ba=z(0);function Va(e,t){e=Bl,V(Ba,e),V(za,t),Bl=e|t.baseLanes}function Ha(){V(Ba,Bl),V(za,za.current)}function Ua(){Bl=Ba.current,B(za),B(Ba)}var $=z(null),Wa=null;function Ga(e){var t=e.alternate;V(Xa,Xa.current&1),V($,e),Wa===null&&(t===null||za.current!==null||t.memoizedState!==null)&&(Wa=e)}function Ka(e){V(Xa,Xa.current),V($,e),Wa===null&&(Wa=e)}function qa(e){e.tag===22?(V(Xa,Xa.current),V($,e),Wa===null&&(Wa=e)):Ja(e)}function Ja(){V(Xa,Xa.current),V($,$.current)}function Ya(e){B($),Wa===e&&(Wa=null),B(Xa)}var Xa=z(0);function Za(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||af(n)||of(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 Qa=0,$a=null,eo=null,to=null,no=!1,ro=!1,io=!1,ao=0,oo=0,so=null,co=0;function lo(){throw Error(i(321))}function uo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function fo(e,t,n,r,i,a){return Qa=a,$a=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,P.H=e===null||e.memoizedState===null?ks:As,io=!1,a=n(r,i),io=!1,ro&&(a=mo(t,n,r,i)),po(e),a}function po(e){P.H=Os;var t=eo!==null&&eo.next!==null;if(Qa=0,to=eo=$a=null,no=!1,oo=0,so=null,t)throw Error(i(300));e===null||qs||(e=e.dependencies,e!==null&&Bi(e)&&(qs=!0))}function mo(e,t,n,r){$a=e;var a=0;do{if(ro&&(so=null),oo=0,ro=!1,25<=a)throw Error(i(301));if(a+=1,to=eo=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}P.H=js,o=t(n,r)}while(ro);return o}function ho(){var e=P.H,t=e.useState()[0];return t=typeof t.then==`function`?So(t):t,e=e.useState()[0],(eo===null?null:eo.memoizedState)!==e&&($a.flags|=1024),t}function go(){var e=ao!==0;return ao=0,e}function _o(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function vo(e){if(no){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}no=!1}Qa=0,to=eo=$a=null,ro=!1,oo=ao=0,so=null}function yo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return to===null?$a.memoizedState=to=e:to=to.next=e,to}function bo(){if(eo===null){var e=$a.alternate;e=e===null?null:e.memoizedState}else e=eo.next;var t=to===null?$a.memoizedState:to.next;if(t!==null)to=t,eo=e;else{if(e===null)throw $a.alternate===null?Error(i(467)):Error(i(310));eo=e,e={memoizedState:eo.memoizedState,baseState:eo.baseState,baseQueue:eo.baseQueue,queue:eo.queue,next:null},to===null?$a.memoizedState=to=e:to=to.next=e}return to}function xo(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function So(e){var t=oo;return oo+=1,so===null&&(so=[]),e=ma(so,e,t),t=$a,(to===null?t.memoizedState:to.next)===null&&(t=t.alternate,P.H=t===null||t.memoizedState===null?ks:As),e}function Co(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return So(e);if(e.$$typeof===C)return Hi(e)}throw Error(i(438,String(e)))}function wo(e){var t=null,n=$a.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=$a.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=xo(),$a.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 To(e,t){return typeof t==`function`?t(e):t}function Eo(e){return Do(bo(),eo,e)}function Do(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?(Qa&f)===f:(Pl&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===$i&&(d=!0);else if((Qa&p)===p){u=u.next,p===$i&&(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,$a.lanes|=p,Hl|=p;f=u.action,io&&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,$a.lanes|=f,Hl|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!cr(o,e.memoizedState)&&(qs=!0,d&&(n=ea,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 Oo(e){var t=bo(),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);cr(o,t.memoizedState)||(qs=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function ko(e,t,n){var r=$a,a=bo(),o=xi;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!cr((eo||a).memoizedState,n);if(s&&(a.memoizedState=n,qs=!0),a=a.queue,es(Mo.bind(null,r,a,e),[e]),a.getSnapshot!==t||s||to!==null&&to.memoizedState.tag&1){if(r.flags|=2048,Yo(9,{destroy:void 0},jo.bind(null,r,a,n,t),null),Ml===null)throw Error(i(349));o||Qa&127||Ao(r,t,n)}return n}function Ao(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=$a.updateQueue,t===null?(t=xo(),$a.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function jo(e,t,n,r){t.value=n,t.getSnapshot=r,No(t)&&Po(e)}function Mo(e,t,n){return n(function(){No(t)&&Po(e)})}function No(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!cr(e,n)}catch{return!0}}function Po(e){var t=Ur(e,2);t!==null&&fu(t,e,2)}function Fo(e){var t=yo();if(typeof e==`function`){var n=e;if(e=n(),io){Me(!0);try{n()}finally{Me(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:To,lastRenderedState:e},t}function Io(e,t,n,r){return e.baseState=n,Do(e,eo,typeof r==`function`?r:To)}function Lo(e,t,n,r,a){if(Ts(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)}};P.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Ro(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Ro(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=P.T,o={};P.T=o;try{var s=n(i,r),c=P.S;c!==null&&c(o,s),zo(e,t,s)}catch(n){Vo(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),P.T=a}}else try{a=n(i,r),zo(e,t,a)}catch(n){Vo(e,t,n)}}function zo(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){Bo(e,t,n)},function(n){return Vo(e,t,n)}):Bo(e,t,n)}function Bo(e,t,n){t.status=`fulfilled`,t.value=n,Ho(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Ro(e,n)))}function Vo(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,Ho(t),t=t.next;while(t!==r)}e.action=null}function Ho(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Uo(e,t){return t}function Wo(e,t){if(xi){var n=Ml.formState;if(n!==null){a:{var r=$a;if(xi){if(bi){b:{for(var i=bi,a=Ci;i.nodeType!==8;){if(!a){i=null;break b}if(i=cf(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){bi=cf(i.nextSibling),r=i.data===`F!`;break a}}Ti(r)}r=!1}r&&(t=n[0])}}return n=yo(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Uo,lastRenderedState:t},n.queue=r,n=Ss.bind(null,$a,r),r.dispatch=n,r=Fo(!1),a=ws.bind(null,$a,!1,r.queue),r=yo(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Lo.bind(null,$a,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function Go(e){return Ko(bo(),eo,e)}function Ko(e,t,n){if(t=Do(e,t,Uo)[0],e=Eo(To)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=So(t)}catch(e){throw e===la?da:e}else r=t;t=bo();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&($a.flags|=2048,Yo(9,{destroy:void 0},qo.bind(null,i,n),null)),[r,a,e]}function qo(e,t){e.action=t}function Jo(e){var t=bo(),n=eo;if(n!==null)return Ko(t,n,e);bo(),t=t.memoizedState,n=bo();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function Yo(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=$a.updateQueue,t===null&&(t=xo(),$a.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 Xo(){return bo().memoizedState}function Zo(e,t,n,r){var i=yo();$a.flags|=e,i.memoizedState=Yo(1|t,{destroy:void 0},n,r===void 0?null:r)}function Qo(e,t,n,r){var i=bo();r=r===void 0?null:r;var a=i.memoizedState.inst;eo!==null&&r!==null&&uo(r,eo.memoizedState.deps)?i.memoizedState=Yo(t,a,n,r):($a.flags|=e,i.memoizedState=Yo(1|t,a,n,r))}function $o(e,t){Zo(8390656,8,e,t)}function es(e,t){Qo(2048,8,e,t)}function ts(e){$a.flags|=4;var t=$a.updateQueue;if(t===null)t=xo(),$a.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function ns(e){var t=bo().memoizedState;return ts({ref:t,nextImpl:e}),function(){if(jl&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function rs(e,t){return Qo(4,2,e,t)}function is(e,t){return Qo(4,4,e,t)}function as(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 os(e,t,n){n=n==null?null:n.concat([e]),Qo(4,4,as.bind(null,t,e),n)}function ss(){}function cs(e,t){var n=bo();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&uo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ls(e,t){var n=bo();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&uo(t,r[1]))return r[0];if(r=e(),io){Me(!0);try{e()}finally{Me(!1)}}return n.memoizedState=[r,t],r}function us(e,t,n){return n===void 0||Qa&1073741824&&!(Pl&261930)?e.memoizedState=t:(e.memoizedState=n,e=du(),$a.lanes|=e,Hl|=e,n)}function ds(e,t,n,r){return cr(n,t)?n:za.current===null?!(Qa&42)||Qa&1073741824&&!(Pl&261930)?(qs=!0,e.memoizedState=n):(e=du(),$a.lanes|=e,Hl|=e,t):(e=us(e,n,r),cr(e,t)||(qs=!0),e)}function fs(e,t,n,r,i){var a=F.p;F.p=a!==0&&8>a?a:8;var o=P.T,s={};P.T=s,ws(e,!1,t,n);try{var c=i(),l=P.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Cs(e,t,ra(c,r),uu(e)):Cs(e,t,r,uu(e))}catch(n){Cs(e,t,{then:function(){},status:`rejected`,reason:n},uu())}finally{F.p=a,o!==null&&s.types!==null&&(o.types=s.types),P.T=o}}function ps(){}function ms(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=hs(e).queue;fs(e,a,t,I,n===null?ps:function(){return gs(e),n(r)})}function hs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:I,baseState:I,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:To,lastRenderedState:I},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:To,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function gs(e){var t=hs(e);t.next===null&&(t=e.alternate.memoizedState),Cs(e,t.next.queue,{},uu())}function _s(){return Hi(Qf)}function vs(){return bo().memoizedState}function ys(){return bo().memoizedState}function bs(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=uu();e=Aa(n);var r=ja(t,e,n);r!==null&&(fu(r,t,n),Ma(r,t,n)),t={cache:Yi()},e.payload=t;return}t=t.return}}function xs(e,t,n){var r=uu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ts(e)?Es(t,n):(n=Hr(e,t,n,r),n!==null&&(fu(n,e,r),Ds(n,t,r)))}function Ss(e,t,n){Cs(e,t,n,uu())}function Cs(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ts(e))Es(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,cr(s,o))return Vr(e,t,i,0),Ml===null&&Br(),!1}catch{}if(n=Hr(e,t,i,r),n!==null)return fu(n,e,r),Ds(n,t,r),!0}return!1}function ws(e,t,n,r){if(r={lane:2,revertLane:ld(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ts(e)){if(t)throw Error(i(479))}else t=Hr(e,n,r,2),t!==null&&fu(t,e,2)}function Ts(e){var t=e.alternate;return e===$a||t!==null&&t===$a}function Es(e,t){ro=no=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ds(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ke(e,n)}}var Os={readContext:Hi,use:Co,useCallback:lo,useContext:lo,useEffect:lo,useImperativeHandle:lo,useLayoutEffect:lo,useInsertionEffect:lo,useMemo:lo,useReducer:lo,useRef:lo,useState:lo,useDebugValue:lo,useDeferredValue:lo,useTransition:lo,useSyncExternalStore:lo,useId:lo,useHostTransitionStatus:lo,useFormState:lo,useActionState:lo,useOptimistic:lo,useMemoCache:lo,useCacheRefresh:lo};Os.useEffectEvent=lo;var ks={readContext:Hi,use:Co,useCallback:function(e,t){return yo().memoizedState=[e,t===void 0?null:t],e},useContext:Hi,useEffect:$o,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Zo(4194308,4,as.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Zo(4194308,4,e,t)},useInsertionEffect:function(e,t){Zo(4,2,e,t)},useMemo:function(e,t){var n=yo();t=t===void 0?null:t;var r=e();if(io){Me(!0);try{e()}finally{Me(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=yo();if(n!==void 0){var i=n(t);if(io){Me(!0);try{n(t)}finally{Me(!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=xs.bind(null,$a,e),[r.memoizedState,e]},useRef:function(e){var t=yo();return e={current:e},t.memoizedState=e},useState:function(e){e=Fo(e);var t=e.queue,n=Ss.bind(null,$a,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ss,useDeferredValue:function(e,t){return us(yo(),e,t)},useTransition:function(){var e=Fo(!1);return e=fs.bind(null,$a,e.queue,!0,!1),yo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=$a,a=yo();if(xi){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Ml===null)throw Error(i(349));Pl&127||Ao(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,$o(Mo.bind(null,r,o,e),[e]),r.flags|=2048,Yo(9,{destroy:void 0},jo.bind(null,r,o,n,t),null),n},useId:function(){var e=yo(),t=Ml.identifierPrefix;if(xi){var n=pi,r=fi;n=(r&~(1<<32-Ne(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=ao++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=co++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:_s,useFormState:Wo,useActionState:Wo,useOptimistic:function(e){var t=yo();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=ws.bind(null,$a,!0,n),n.dispatch=t,[e,t]},useMemoCache:wo,useCacheRefresh:function(){return yo().memoizedState=bs.bind(null,$a)},useEffectEvent:function(e){var t=yo(),n={impl:e};return t.memoizedState=n,function(){if(jl&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},As={readContext:Hi,use:Co,useCallback:cs,useContext:Hi,useEffect:es,useImperativeHandle:os,useInsertionEffect:rs,useLayoutEffect:is,useMemo:ls,useReducer:Eo,useRef:Xo,useState:function(){return Eo(To)},useDebugValue:ss,useDeferredValue:function(e,t){return ds(bo(),eo.memoizedState,e,t)},useTransition:function(){var e=Eo(To)[0],t=bo().memoizedState;return[typeof e==`boolean`?e:So(e),t]},useSyncExternalStore:ko,useId:vs,useHostTransitionStatus:_s,useFormState:Go,useActionState:Go,useOptimistic:function(e,t){return Io(bo(),eo,e,t)},useMemoCache:wo,useCacheRefresh:ys};As.useEffectEvent=ns;var js={readContext:Hi,use:Co,useCallback:cs,useContext:Hi,useEffect:es,useImperativeHandle:os,useInsertionEffect:rs,useLayoutEffect:is,useMemo:ls,useReducer:Oo,useRef:Xo,useState:function(){return Oo(To)},useDebugValue:ss,useDeferredValue:function(e,t){var n=bo();return eo===null?us(n,e,t):ds(n,eo.memoizedState,e,t)},useTransition:function(){var e=Oo(To)[0],t=bo().memoizedState;return[typeof e==`boolean`?e:So(e),t]},useSyncExternalStore:ko,useId:vs,useHostTransitionStatus:_s,useFormState:Jo,useActionState:Jo,useOptimistic:function(e,t){var n=bo();return eo===null?(n.baseState=e,[e,n.queue.dispatch]):Io(n,eo,e,t)},useMemoCache:wo,useCacheRefresh:ys};js.useEffectEvent=ns;function Ms(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:f({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Ns={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=uu(),i=Aa(r);i.payload=t,n!=null&&(i.callback=n),t=ja(e,i,r),t!==null&&(fu(t,e,r),Ma(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=uu(),i=Aa(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=ja(e,i,r),t!==null&&(fu(t,e,r),Ma(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=uu(),r=Aa(n);r.tag=2,t!=null&&(r.callback=t),t=ja(e,r,n),t!==null&&(fu(t,e,n),Ma(t,e,n))}};function Ps(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?!lr(n,r)||!lr(i,a):!0}function Fs(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&&Ns.enqueueReplaceState(t,t.state,null)}function Is(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=f({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Ls(e){Ir(e)}function Rs(e){console.error(e)}function zs(e){Ir(e)}function Bs(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function Vs(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 Hs(e,t,n){return n=Aa(n),n.tag=3,n.payload={element:null},n.callback=function(){Bs(e,t)},n}function Us(e){return e=Aa(e),e.tag=3,e}function Ws(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(){Vs(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){Vs(t,n,r),typeof i!=`function`&&(eu===null?eu=new Set([this]):eu.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function Gs(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&zi(t,n,a,!0),n=$.current,n!==null){switch(n.tag){case 31:case 13:return Wa===null?wu():n.alternate===null&&Vl===0&&(Vl=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===fa?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),Uu(e,r,a)),!1;case 22:return n.flags|=65536,r===fa?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)),Uu(e,r,a)),!1}throw Error(i(435,n.tag))}return Uu(e,r,a),wu(),!1}if(xi)return t=$.current,t===null?(r!==wi&&(t=Error(i(423),{cause:r}),ji(ii(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=ii(r,n),a=Hs(e.stateNode,r,a),Na(e,a),Vl!==4&&(Vl=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==wi&&(e=Error(i(422),{cause:r}),ji(ii(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=ii(o,n),ql===null?ql=[o]:ql.push(o),Vl!==4&&(Vl=2),t===null)return!0;r=ii(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Hs(n.stateNode,r,e),Na(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`&&(eu===null||!eu.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Us(a),Ws(a,e,n,r),Na(n,a),!1}n=n.return}while(n!==null);return!1}var Ks=Error(i(461)),qs=!1;function Js(e,t,n,r){t.child=e===null?Ea(t,null,n,r):Ta(t,e.child,n,r)}function Ys(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 Vi(t),r=fo(e,t,n,o,a,i),s=go(),e!==null&&!qs?(_o(e,t,i),yc(e,t,i)):(xi&&s&&gi(t),t.flags|=1,Js(e,t,r,i),t.child)}function Xs(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!Yr(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,Zs(e,t,a,r,i)):(e=Qr(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!bc(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?lr:n,n(o,r)&&e.ref===t.ref)return yc(e,t,i)}return t.flags|=1,e=Xr(a,r),e.ref=t.ref,e.return=t,t.child=e}function Zs(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(lr(a,r)&&e.ref===t.ref)if(qs=!1,t.pendingProps=r=a,bc(e,i))e.flags&131072&&(qs=!0);else return t.lanes=e.lanes,yc(e,t,i)}return ac(e,t,n,r,i)}function Qs(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 ec(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&sa(t,a===null?null:a.cachePool),a===null?Ha():Va(t,a),qa(t);else return r=t.lanes=536870912,ec(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&sa(t,null),Ha(),Ja(t)):(sa(t,a.cachePool),Va(t,a),Ja(t),t.memoizedState=null);return Js(e,t,i,n),t.child}function $s(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function ec(e,t,n,r,i){var a=oa();return a=a===null?null:{parent:Ji._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&sa(t,null),Ha(),qa(t),e!==null&&zi(e,t,r,!0),t.childLanes=i,null}function tc(e,t){return t=mc({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function nc(e,t,n){return Ta(t,e.child,null,n),e=tc(t,t.pendingProps),e.flags|=2,Ya(t),t.memoizedState=null,e}function rc(e,t,n){var r=t.pendingProps,a=(t.flags&128)!=0;if(t.flags&=-129,e===null){if(xi){if(r.mode===`hidden`)return e=tc(t,r),t.lanes=536870912,$s(null,e);if(Ka(t),(e=bi)?(e=rf(e,Ci),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:di===null?null:{id:fi,overflow:pi},retryLane:536870912,hydrationErrors:null},n=ti(e),n.return=t,t.child=n,yi=t,bi=null)):e=null,e===null)throw Ti(t);return t.lanes=536870912,null}return tc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(Ka(t),a)if(t.flags&256)t.flags&=-257,t=nc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558));else if(qs||zi(e,t,n,!1),a=(n&e.childLanes)!==0,qs||a){if(r=Ml,r!==null&&(s=qe(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,Ur(e,s),fu(r,e,s),Ks;wu(),t=nc(e,t,n)}else e=o.treeContext,bi=cf(s.nextSibling),yi=t,xi=!0,Si=null,Ci=!1,e!==null&&vi(t,e),t=tc(t,r),t.flags|=4096;return t}return e=Xr(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function ic(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 ac(e,t,n,r,i){return Vi(t),n=fo(e,t,n,r,void 0,i),r=go(),e!==null&&!qs?(_o(e,t,i),yc(e,t,i)):(xi&&r&&gi(t),t.flags|=1,Js(e,t,n,i),t.child)}function oc(e,t,n,r,i,a){return Vi(t),t.updateQueue=null,n=mo(t,r,n,i),po(e),r=go(),e!==null&&!qs?(_o(e,t,a),yc(e,t,a)):(xi&&r&&gi(t),t.flags|=1,Js(e,t,n,a),t.child)}function sc(e,t,n,r,i){if(Vi(t),t.stateNode===null){var a=Kr,o=n.contextType;typeof o==`object`&&o&&(a=Hi(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Ns,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},Oa(t),o=n.contextType,a.context=typeof o==`object`&&o?Hi(o):Kr,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(Ms(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&&Ns.enqueueReplaceState(a,a.state,null),Ia(t,r,a,i),Fa(),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=Is(n,s);a.props=c;var l=a.context,u=n.contextType;o=Kr,typeof u==`object`&&u&&(o=Hi(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)&&Fs(t,a,r,o),Da=!1;var f=t.memoizedState;a.state=f,Ia(t,r,a,i),Fa(),l=t.memoizedState,s||f!==l||Da?(typeof d==`function`&&(Ms(t,n,d,r),l=t.memoizedState),(c=Da||Ps(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,ka(e,t),o=t.memoizedProps,u=Is(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=Kr,typeof l==`object`&&l&&(c=Hi(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)&&Fs(t,a,r,c),Da=!1,f=t.memoizedState,a.state=f,Ia(t,r,a,i),Fa();var p=t.memoizedState;o!==d||f!==p||Da||e!==null&&e.dependencies!==null&&Bi(e.dependencies)?(typeof s==`function`&&(Ms(t,n,s,r),p=t.memoizedState),(u=Da||Ps(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&Bi(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,ic(e,t),r=(t.flags&128)!=0,a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=Ta(t,e.child,null,i),t.child=Ta(t,null,n,i)):Js(e,t,n,i),t.memoizedState=a.state,e=t.child):e=yc(e,t,i),e}function cc(e,t,n,r){return ki(),t.flags|=256,Js(e,t,n,r),t.child}var lc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function uc(e){return{baseLanes:e,cachePool:ca()}}function dc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=Gl),e}function fc(e,t,n){var r=t.pendingProps,a=!1,o=(t.flags&128)!=0,s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:(Xa.current&2)!=0),s&&(a=!0,t.flags&=-129),s=(t.flags&32)!=0,t.flags&=-33,e===null){if(xi){if(a?Ga(t):Ja(t),(e=bi)?(e=rf(e,Ci),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:di===null?null:{id:fi,overflow:pi},retryLane:536870912,hydrationErrors:null},n=ti(e),n.return=t,t.child=n,yi=t,bi=null)):e=null,e===null)throw Ti(t);return of(e)?t.lanes=32:t.lanes=536870912,null}var c=r.children;return r=r.fallback,a?(Ja(t),a=t.mode,c=mc({mode:`hidden`,children:c},a),r=$r(r,a,n,null),c.return=t,r.return=t,c.sibling=r,t.child=c,r=t.child,r.memoizedState=uc(n),r.childLanes=dc(e,s,n),t.memoizedState=lc,$s(null,r)):(Ga(t),pc(t,c))}var l=e.memoizedState;if(l!==null&&(c=l.dehydrated,c!==null)){if(o)t.flags&256?(Ga(t),t.flags&=-257,t=hc(e,t,n)):t.memoizedState===null?(Ja(t),c=r.fallback,a=t.mode,r=mc({mode:`visible`,children:r.children},a),c=$r(c,a,n,null),c.flags|=2,r.return=t,c.return=t,r.sibling=c,t.child=r,Ta(t,e.child,null,n),r=t.child,r.memoizedState=uc(n),r.childLanes=dc(e,s,n),t.memoizedState=lc,t=$s(null,r)):(Ja(t),t.child=e.child,t.flags|=128,t=null);else if(Ga(t),of(c)){if(s=c.nextSibling&&c.nextSibling.dataset,s)var u=s.dgst;s=u,r=Error(i(419)),r.stack=``,r.digest=s,ji({value:r,source:null,stack:null}),t=hc(e,t,n)}else if(qs||zi(e,t,n,!1),s=(n&e.childLanes)!==0,qs||s){if(s=Ml,s!==null&&(r=qe(s,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,Ur(e,r),fu(s,e,r),Ks;af(c)||wu(),t=hc(e,t,n)}else af(c)?(t.flags|=192,t.child=e.child,t=null):(e=l.treeContext,bi=cf(c.nextSibling),yi=t,xi=!0,Si=null,Ci=!1,e!==null&&vi(t,e),t=pc(t,r.children),t.flags|=4096);return t}return a?(Ja(t),c=r.fallback,a=t.mode,l=e.child,u=l.sibling,r=Xr(l,{mode:`hidden`,children:r.children}),r.subtreeFlags=l.subtreeFlags&65011712,u===null?(c=$r(c,a,n,null),c.flags|=2):c=Xr(u,c),c.return=t,r.return=t,r.sibling=c,t.child=r,$s(null,r),r=t.child,c=e.child.memoizedState,c===null?c=uc(n):(a=c.cachePool,a===null?a=ca():(l=Ji._currentValue,a=a.parent===l?a:{parent:l,pool:l}),c={baseLanes:c.baseLanes|n,cachePool:a}),r.memoizedState=c,r.childLanes=dc(e,s,n),t.memoizedState=lc,$s(e.child,r)):(Ga(t),n=e.child,e=n.sibling,n=Xr(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 pc(e,t){return t=mc({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function mc(e,t){return e=Jr(22,e,null,t),e.lanes=0,e}function hc(e,t,n){return Ta(t,e.child,null,n),e=pc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function gc(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Li(e.return,t,n)}function _c(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 vc(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=Xa.current,s=(o&2)!=0;if(s?(o=o&1|2,t.flags|=128):o&=1,V(Xa,o),Js(e,t,r,n),r=xi?ci:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&gc(e,n,t);else if(e.tag===19)gc(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&&Za(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),_c(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&&Za(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}_c(t,!0,n,null,a,r);break;case`together`:_c(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function yc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Hl|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(zi(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=Xr(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Xr(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function bc(e,t){return(e.lanes&t)===0?(e=e.dependencies,!!(e!==null&&Bi(e))):!0}function xc(e,t,n){switch(t.tag){case 3:ae(t,t.stateNode.containerInfo),Fi(t,Ji,e.memoizedState.cache),ki();break;case 27:case 5:se(t);break;case 4:ae(t,t.stateNode.containerInfo);break;case 10:Fi(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Ka(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(Ga(t),e=yc(e,t,n),e===null?null:e.sibling):fc(e,t,n):(Ga(t),t.flags|=128,null);Ga(t);break;case 19:var i=(e.flags&128)!=0;if(r=(n&t.childLanes)!==0,r||=(zi(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return vc(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),V(Xa,Xa.current),r)break;return null;case 22:return t.lanes=0,Qs(e,t,n,t.pendingProps);case 24:Fi(t,Ji,e.memoizedState.cache)}return yc(e,t,n)}function Sc(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)qs=!0;else{if(!bc(e,n)&&!(t.flags&128))return qs=!1,xc(e,t,n);qs=!!(e.flags&131072)}else qs=!1,xi&&t.flags&1048576&&hi(t,ci,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=ha(t.elementType),t.type=e,typeof e==`function`)Yr(e)?(r=Is(e,r),t.tag=1,t=sc(null,t,e,r,n)):(t.tag=0,t=ac(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===w){t.tag=11,t=Ys(null,t,e,r,n);break a}else if(a===D){t.tag=14,t=Xs(null,t,e,r,n);break a}}throw t=N(e)||e,Error(i(306,t,``))}}return t;case 0:return ac(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=Is(r,t.pendingProps),sc(e,t,r,a,n);case 3:a:{if(ae(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,ka(e,t),Ia(t,r,null,n);var s=t.memoizedState;if(r=s.cache,Fi(t,Ji,r),r!==o.cache&&Ri(t,[Ji],n,!0),Fa(),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=cc(e,t,r,n);break a}else if(r!==a){a=ii(Error(i(424)),t),ji(a),t=cc(e,t,r,n);break a}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(bi=cf(e.firstChild),yi=t,xi=!0,Si=null,Ci=!0,n=Ea(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(ki(),r===a){t=yc(e,t,n);break a}Js(e,t,r,n)}t=t.child}return t;case 26:return ic(e,t),e===null?(n=kf(t.type,null,t.pendingProps,null))?t.memoizedState=n:xi||(n=t.type,e=t.pendingProps,r=Bd(ie.current).createElement(n),r[$e]=t,r[et]=e,Pd(r,n,e),ut(r),t.stateNode=r):t.memoizedState=kf(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return se(t),e===null&&xi&&(r=t.stateNode=ff(t.type,t.pendingProps,ie.current),yi=t,Ci=!0,a=bi,Zd(t.type)?(lf=a,bi=cf(r.firstChild)):bi=a),Js(e,t,t.pendingProps.children,n),ic(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&xi&&((a=r=bi)&&(r=tf(r,t.type,t.pendingProps,Ci),r===null?a=!1:(t.stateNode=r,yi=t,bi=cf(r.firstChild),Ci=!1,a=!0)),a||Ti(t)),se(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,Ud(a,o)?r=null:s!==null&&Ud(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=fo(e,t,ho,null,null,n),Qf._currentValue=a),ic(e,t),Js(e,t,r,n),t.child;case 6:return e===null&&xi&&((e=n=bi)&&(n=nf(n,t.pendingProps,Ci),n===null?e=!1:(t.stateNode=n,yi=t,bi=null,e=!0)),e||Ti(t)),null;case 13:return fc(e,t,n);case 4:return ae(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ta(t,null,r,n):Js(e,t,r,n),t.child;case 11:return Ys(e,t,t.type,t.pendingProps,n);case 7:return Js(e,t,t.pendingProps,n),t.child;case 8:return Js(e,t,t.pendingProps.children,n),t.child;case 12:return Js(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,Fi(t,t.type,r.value),Js(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,Vi(t),a=Hi(a),r=r(a),t.flags|=1,Js(e,t,r,n),t.child;case 14:return Xs(e,t,t.type,t.pendingProps,n);case 15:return Zs(e,t,t.type,t.pendingProps,n);case 19:return vc(e,t,n);case 31:return rc(e,t,n);case 22:return Qs(e,t,n,t.pendingProps);case 24:return Vi(t),r=Hi(Ji),e===null?(a=oa(),a===null&&(a=Ml,o=Yi(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},Oa(t),Fi(t,Ji,a)):((e.lanes&n)!==0&&(ka(e,t),Ia(t,null,null,n),Fa()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,Fi(t,Ji,r),r!==a.cache&&Ri(t,[Ji],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),Fi(t,Ji,r))),Js(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function Cc(e){e.flags|=4}function wc(e,t,n,r,i){if((t=(e.mode&32)!=0)&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i)if(e.stateNode.complete)e.flags|=8192;else if(xu())e.flags|=8192;else throw ga=fa,ua}else e.flags&=-16777217}function Tc(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Wf(t))if(xu())e.flags|=8192;else throw ga=fa,ua}function Ec(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:We(),e.lanes|=t,Kl|=t)}function Dc(e,t){if(!xi)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 Oc(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 kc(e,t,n){var r=t.pendingProps;switch(_i(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Oc(t),null;case 1:return Oc(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Ii(Ji),oe(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Oi(t)?Cc(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ai())),Oc(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(Cc(t),o===null?(Oc(t),wc(t,a,null,r,n)):(Oc(t),Tc(t,o))):o?o===e.memoizedState?(Oc(t),t.flags&=-16777217):(Cc(t),Oc(t),Tc(t,o)):(e=e.memoizedProps,e!==r&&Cc(t),Oc(t),wc(t,a,e,r,n)),null;case 27:if(ce(t),n=ie.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Cc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Oc(t),null}e=ne.current,Oi(t)?Ei(t,e):(e=ff(a,r,n),t.stateNode=e,Cc(t))}return Oc(t),null;case 5:if(ce(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&Cc(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return Oc(t),null}if(o=ne.current,Oi(t))Ei(t,o);else{var s=Bd(ie.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[$e]=t,o[et]=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(Pd(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&&Cc(t)}}return Oc(t),wc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Cc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ie.current,Oi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=yi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[$e]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||jd(e.nodeValue,n)),e||Ti(t,!0)}else e=Bd(e).createTextNode(r),e[$e]=t,t.stateNode=e}return Oc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Oi(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[$e]=t}else ki(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Oc(t),e=!1}else n=Ai(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Ya(t),t):(Ya(t),null);if(t.flags&128)throw Error(i(558))}return Oc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Oi(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[$e]=t}else ki(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Oc(t),a=!1}else a=Ai(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Ya(t),t):(Ya(t),null)}return Ya(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),Ec(t,t.updateQueue),Oc(t),null);case 4:return oe(),e===null&&xd(t.stateNode.containerInfo),Oc(t),null;case 10:return Ii(t.type),Oc(t),null;case 19:if(B(Xa),r=t.memoizedState,r===null)return Oc(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Dc(r,!1);else{if(Vl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Za(e),o!==null){for(t.flags|=128,Dc(r,!1),e=o.updateQueue,t.updateQueue=e,Ec(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Zr(n,e),n=n.sibling;return V(Xa,Xa.current&1|2),xi&&mi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&xe()>Ql&&(t.flags|=128,a=!0,Dc(r,!1),t.lanes=4194304)}else{if(!a)if(e=Za(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Ec(t,e),Dc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!xi)return Oc(t),null}else 2*xe()-r.renderingStartTime>Ql&&n!==536870912&&(t.flags|=128,a=!0,Dc(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?(Oc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=xe(),e.sibling=null,n=Xa.current,V(Xa,a?n&1|2:n&1),xi&&mi(t,r.treeForkCount),e);case 22:case 23:return Ya(t),Ua(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Oc(t),t.subtreeFlags&6&&(t.flags|=8192)):Oc(t),n=t.updateQueue,n!==null&&Ec(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&&B(aa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ii(Ji),Oc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Ac(e,t){switch(_i(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ii(Ji),oe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ce(t),null;case 31:if(t.memoizedState!==null){if(Ya(t),t.alternate===null)throw Error(i(340));ki()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ya(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ki()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(Xa),null;case 4:return oe(),null;case 10:return Ii(t.type),null;case 22:case 23:return Ya(t),Ua(),e!==null&&B(aa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ii(Ji),null;case 25:return null;default:return null}}function jc(e,t){switch(_i(t),t.tag){case 3:Ii(Ji),oe();break;case 26:case 27:case 5:ce(t);break;case 4:oe();break;case 31:t.memoizedState!==null&&Ya(t);break;case 13:Ya(t);break;case 19:B(Xa);break;case 10:Ii(t.type);break;case 22:case 23:Ya(t),Ua(),e!==null&&B(aa);break;case 24:Ii(Ji)}}function Mc(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){Hu(t,t.return,e)}}function Nc(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){Hu(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Hu(t,t.return,e)}}function Pc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ra(t,n)}catch(t){Hu(e,e.return,t)}}}function Fc(e,t,n){n.props=Is(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Hu(e,t,n)}}function Ic(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){Hu(e,t,n)}}function Lc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Hu(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){Hu(e,t,n)}else n.current=null}function Rc(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){Hu(e,e.return,t)}}function zc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[et]=t}catch(t){Hu(e,e.return,t)}}function Bc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Vc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Bc(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&&Zd(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 Hc(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=Bt));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Hc(e,t,n),e=e.sibling;e!==null;)Hc(e,t,n),e=e.sibling}function Uc(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&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Uc(e,t,n),e=e.sibling;e!==null;)Uc(e,t,n),e=e.sibling}function Wc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[$e]=e,t[et]=n}catch(t){Hu(e,e.return,t)}}var Gc=!1,Kc=!1,qc=!1,Jc=typeof WeakSet==`function`?WeakSet:Set,Yc=null;function Xc(e,t){if(e=e.containerInfo,Rd=sp,e=pr(e),mr(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(zd={focusedElem:e,selectionRange:n},sp=!1,Yc=t;Yc!==null;)if(t=Yc,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,Yc=e;else for(;Yc!==null;){switch(t=Yc,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=Is(n.type,a);e=r.getSnapshotBeforeUpdate(h,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(e){Hu(n,n.return,e)}}break;case 3:if(e&1024){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)ef(e);else if(n===1)switch(e.nodeName){case`HEAD`:case`HTML`:case`BODY`:ef(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,Yc=e;break}Yc=t.return}}function Zc(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:fl(e,n),r&4&&Mc(5,n);break;case 1:if(fl(e,n),r&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Hu(n,n.return,e)}else{var i=Is(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Hu(n,n.return,e)}}r&64&&Pc(n),r&512&&Ic(n,n.return);break;case 3:if(fl(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{Ra(e,t)}catch(e){Hu(n,n.return,e)}}break;case 27:t===null&&r&4&&Wc(n);case 26:case 5:fl(e,n),t===null&&r&4&&Rc(n),r&512&&Ic(n,n.return);break;case 12:fl(e,n);break;case 31:fl(e,n),r&4&&rl(e,n);break;case 13:fl(e,n),r&4&&il(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=Ku.bind(null,n),sf(e,n))));break;case 22:if(r=n.memoizedState!==null||Gc,!r){t=t!==null&&t.memoizedState!==null||Kc,i=Gc;var a=Kc;Gc=r,(Kc=t)&&!a?ml(e,n,(n.subtreeFlags&8772)!=0):fl(e,n),Gc=i,Kc=a}break;case 30:break;default:fl(e,n)}}function Qc(e){var t=e.alternate;t!==null&&(e.alternate=null,Qc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&K(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 $c=null,el=!1;function tl(e,t,n){for(n=n.child;n!==null;)nl(e,t,n),n=n.sibling}function nl(e,t,n){if(je&&typeof je.onCommitFiberUnmount==`function`)try{je.onCommitFiberUnmount(Ae,n)}catch{}switch(n.tag){case 26:Kc||Lc(n,t),tl(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Kc||Lc(n,t);var r=$c,i=el;Zd(n.type)&&($c=n.stateNode,el=!1),tl(e,t,n),pf(n.stateNode),$c=r,el=i;break;case 5:Kc||Lc(n,t);case 6:if(r=$c,i=el,$c=null,tl(e,t,n),$c=r,el=i,$c!==null)if(el)try{($c.nodeType===9?$c.body:$c.nodeName===`HTML`?$c.ownerDocument.body:$c).removeChild(n.stateNode)}catch(e){Hu(n,t,e)}else try{$c.removeChild(n.stateNode)}catch(e){Hu(n,t,e)}break;case 18:$c!==null&&(el?(e=$c,Qd(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Np(e)):Qd($c,n.stateNode));break;case 4:r=$c,i=el,$c=n.stateNode.containerInfo,el=!0,tl(e,t,n),$c=r,el=i;break;case 0:case 11:case 14:case 15:Nc(2,n,t),Kc||Nc(4,n,t),tl(e,t,n);break;case 1:Kc||(Lc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Fc(n,t,r)),tl(e,t,n);break;case 21:tl(e,t,n);break;case 22:Kc=(r=Kc)||n.memoizedState!==null,tl(e,t,n),Kc=r;break;default:tl(e,t,n)}}function rl(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Np(e)}catch(e){Hu(t,t.return,e)}}}function il(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Np(e)}catch(e){Hu(t,t.return,e)}}function al(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new Jc),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new Jc),t;default:throw Error(i(435,e.tag))}}function ol(e,t){var n=al(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=qu.bind(null,e,t);t.then(r,r)}})}function sl(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(Zd(c.type)){$c=c.stateNode,el=!1;break a}break;case 5:$c=c.stateNode,el=!1;break a;case 3:case 4:$c=c.stateNode.containerInfo,el=!0;break a}c=c.return}if($c===null)throw Error(i(160));nl(o,s,a),$c=null,el=!1,o=a.alternate,o!==null&&(o.return=null),a.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)ll(t,e),t=t.sibling}var cl=null;function ll(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:sl(t,e),ul(e),r&4&&(Nc(3,e,e.return),Mc(3,e),Nc(5,e,e.return));break;case 1:sl(t,e),ul(e),r&512&&(Kc||n===null||Lc(n,n.return)),r&64&&Gc&&(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=cl;if(sl(t,e),ul(e),r&512&&(Kc||n===null||Lc(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[ot]||o[$e]||o.namespaceURI===`http://www.w3.org/2000/svg`||o.hasAttribute(`itemprop`))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector(`head > title`))),Pd(o,r,n),o[$e]=e,ut(o),r=o;break a;case`link`:var s=Vf(`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),Pd(o,r,n),a.head.appendChild(o);break;case`meta`:if(s=Vf(`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),Pd(o,r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[$e]=e,ut(o),r=o}e.stateNode=r}else Hf(a,e.type,e.stateNode);else e.stateNode=If(a,r,e.memoizedProps);else o===r?r===null&&e.stateNode!==null&&zc(e,e.memoizedProps,n.memoizedProps):(o===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):o.count--,r===null?Hf(a,e.type,e.stateNode):If(a,r,e.memoizedProps))}break;case 27:sl(t,e),ul(e),r&512&&(Kc||n===null||Lc(n,n.return)),n!==null&&r&4&&zc(e,e.memoizedProps,n.memoizedProps);break;case 5:if(sl(t,e),ul(e),r&512&&(Kc||n===null||Lc(n,n.return)),e.flags&32){a=e.stateNode;try{Z(a,``)}catch(t){Hu(e,e.return,t)}}r&4&&e.stateNode!=null&&(a=e.memoizedProps,zc(e,a,n===null?a:n.memoizedProps)),r&1024&&(qc=!0);break;case 6:if(sl(t,e),ul(e),r&4){if(e.stateNode===null)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(t){Hu(e,e.return,t)}}break;case 3:if(Bf=null,a=cl,cl=gf(t.containerInfo),sl(t,e),cl=a,ul(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Np(t.containerInfo)}catch(t){Hu(e,e.return,t)}qc&&(qc=!1,dl(e));break;case 4:r=cl,cl=gf(e.stateNode.containerInfo),sl(t,e),ul(e),cl=r;break;case 12:sl(t,e),ul(e);break;case 31:sl(t,e),ul(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,ol(e,r)));break;case 13:sl(t,e),ul(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Xl=xe()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,ol(e,r)));break;case 22:a=e.memoizedState!==null;var l=n!==null&&n.memoizedState!==null,u=Gc,d=Kc;if(Gc=u||a,Kc=d||l,sl(t,e),Kc=d,Gc=u,ul(e),r&8192)a:for(t=e.stateNode,t._visibility=a?t._visibility&-2:t._visibility|1,a&&(n===null||l||Gc||Kc||pl(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){Hu(l,l.return,e)}}}else if(t.tag===6){if(n===null){l=t;try{l.stateNode.nodeValue=a?``:l.memoizedProps}catch(e){Hu(l,l.return,e)}}}else if(t.tag===18){if(n===null){l=t;try{var m=l.stateNode;a?$d(m,!0):$d(l.stateNode,!1)}catch(e){Hu(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,ol(e,n))));break;case 19:sl(t,e),ul(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,ol(e,r)));break;case 30:break;case 21:break;default:sl(t,e),ul(e)}}function ul(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Bc(r)){n=r;break}r=r.return}if(n==null)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Uc(e,Vc(e),a);break;case 5:var o=n.stateNode;n.flags&32&&(Z(o,``),n.flags&=-33),Uc(e,Vc(e),o);break;case 3:case 4:var s=n.stateNode.containerInfo;Hc(e,Vc(e),s);break;default:throw Error(i(161))}}catch(t){Hu(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function dl(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;dl(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function fl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Zc(e,t.alternate,t),t=t.sibling}function pl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Nc(4,t,t.return),pl(t);break;case 1:Lc(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount==`function`&&Fc(t,t.return,n),pl(t);break;case 27:pf(t.stateNode);case 26:case 5:Lc(t,t.return),pl(t);break;case 22:t.memoizedState===null&&pl(t);break;case 30:pl(t);break;default:pl(t)}e=e.sibling}}function ml(e,t,n){for(n&&=(t.subtreeFlags&8772)!=0,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:ml(i,a,n),Mc(4,a);break;case 1:if(ml(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Hu(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++)La(c[i],s)}catch(e){Hu(r,r.return,e)}}n&&o&64&&Pc(a),Ic(a,a.return);break;case 27:Wc(a);case 26:case 5:ml(i,a,n),n&&r===null&&o&4&&Rc(a),Ic(a,a.return);break;case 12:ml(i,a,n);break;case 31:ml(i,a,n),n&&o&4&&rl(i,a);break;case 13:ml(i,a,n),n&&o&4&&il(i,a);break;case 22:a.memoizedState===null&&ml(i,a,n),Ic(a,a.return);break;case 30:break;default:ml(i,a,n)}t=t.sibling}}function hl(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&&Xi(n))}function gl(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Xi(e))}function _l(e,t,n,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)vl(e,t,n,r),t=t.sibling}function vl(e,t,n,r){var i=t.flags;switch(t.tag){case 0:case 11:case 15:_l(e,t,n,r),i&2048&&Mc(9,t);break;case 1:_l(e,t,n,r);break;case 3:_l(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&&Xi(e)));break;case 12:if(i&2048){_l(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){Hu(t,t.return,e)}}else _l(e,t,n,r);break;case 31:_l(e,t,n,r);break;case 13:_l(e,t,n,r);break;case 23:break;case 22:a=t.stateNode,o=t.alternate,t.memoizedState===null?a._visibility&2?_l(e,t,n,r):(a._visibility|=2,yl(e,t,n,r,(t.subtreeFlags&10256)!=0||!1)):a._visibility&2?_l(e,t,n,r):bl(e,t),i&2048&&hl(o,t);break;case 24:_l(e,t,n,r),i&2048&&gl(t.alternate,t);break;default:_l(e,t,n,r)}}function yl(e,t,n,r,i){for(i&&=(t.subtreeFlags&10256)!=0||!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:yl(a,o,s,c,i),Mc(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,yl(a,o,s,c,i)):u._visibility&2?yl(a,o,s,c,i):bl(a,o),i&&l&2048&&hl(o.alternate,o);break;case 24:yl(a,o,s,c,i),i&&l&2048&&gl(o.alternate,o);break;default:yl(a,o,s,c,i)}t=t.sibling}}function bl(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:bl(n,r),i&2048&&hl(r.alternate,r);break;case 24:bl(n,r),i&2048&&gl(r.alternate,r);break;default:bl(n,r)}t=t.sibling}}var xl=8192;function Sl(e,t,n){if(e.subtreeFlags&xl)for(e=e.child;e!==null;)Cl(e,t,n),e=e.sibling}function Cl(e,t,n){switch(e.tag){case 26:Sl(e,t,n),e.flags&xl&&e.memoizedState!==null&&Gf(n,cl,e.memoizedState,e.memoizedProps);break;case 5:Sl(e,t,n);break;case 3:case 4:var r=cl;cl=gf(e.stateNode.containerInfo),Sl(e,t,n),cl=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=xl,xl=16777216,Sl(e,t,n),xl=r):Sl(e,t,n));break;default:Sl(e,t,n)}}function wl(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 Tl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];Yc=r,Ol(r,e)}wl(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)El(e),e=e.sibling}function El(e){switch(e.tag){case 0:case 11:case 15:Tl(e),e.flags&2048&&Nc(9,e,e.return);break;case 3:Tl(e);break;case 12:Tl(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Dl(e)):Tl(e);break;default:Tl(e)}}function Dl(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];Yc=r,Ol(r,e)}wl(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Nc(8,t,t.return),Dl(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Dl(t));break;default:Dl(t)}e=e.sibling}}function Ol(e,t){for(;Yc!==null;){var n=Yc;switch(n.tag){case 0:case 11:case 15:Nc(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:Xi(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,Yc=r;else a:for(n=e;Yc!==null;){r=Yc;var i=r.sibling,a=r.return;if(Qc(r),r===n){Yc=null;break a}if(i!==null){i.return=a,Yc=i;break a}Yc=a}}}var kl={getCacheForType:function(e){var t=Hi(Ji),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Hi(Ji).controller.signal}},Al=typeof WeakMap==`function`?WeakMap:Map,jl=0,Ml=null,Nl=null,Pl=0,Fl=0,Il=null,Ll=!1,Rl=!1,zl=!1,Bl=0,Vl=0,Hl=0,Ul=0,Wl=0,Gl=0,Kl=0,ql=null,Jl=null,Yl=!1,Xl=0,Zl=0,Ql=1/0,$l=null,eu=null,tu=0,nu=null,ru=null,iu=0,au=0,ou=null,su=null,cu=0,lu=null;function uu(){return jl&2&&Pl!==0?Pl&-Pl:P.T===null?Xe():ld()}function du(){if(Gl===0)if(!(Pl&536870912)||xi){var e=Re;Re<<=1,!(Re&3932160)&&(Re=262144),Gl=e}else Gl=536870912;return e=$.current,e!==null&&(e.flags|=32),Gl}function fu(e,t,n){(e===Ml&&(Fl===2||Fl===9)||e.cancelPendingCommit!==null)&&(yu(e,0),gu(e,Pl,Gl,!1)),W(e,n),(!(jl&2)||e!==Ml)&&(e===Ml&&(!(jl&2)&&(Ul|=n),Vl===4&&gu(e,Pl,Gl,!1)),td(e))}function pu(e,t,n){if(jl&6)throw Error(i(327));var r=!n&&(t&127)==0&&(t&e.expiredLanes)===0||He(e,t),a=r?Du(e,t):Tu(e,t,!0),o=r;do{if(a===0){Rl&&!r&&gu(e,t,0,!1);break}else{if(n=e.current.alternate,o&&!hu(n)){a=Tu(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=ql;var l=c.current.memoizedState.isDehydrated;if(l&&(yu(c,s).flags|=256),s=Tu(c,s,!1),s!==2){if(zl&&!l){c.errorRecoveryDisabledLanes|=o,Ul|=o,a=4;break a}o=Jl,Jl=a,o!==null&&(Jl===null?Jl=o:Jl.push.apply(Jl,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){yu(e,0),gu(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:gu(r,t,Gl,!Ll);break a;case 2:Jl=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=Xl+300-xe(),10<a)){if(gu(r,t,Gl,!Ll),Ve(r,0,!0)!==0)break a;iu=t,r.timeoutHandle=Kd(mu.bind(null,r,n,Jl,$l,Yl,t,Gl,Ul,Kl,Ll,o,`Throttled`,-0,0),a);break a}mu(r,n,Jl,$l,Yl,t,Gl,Ul,Kl,Ll,o,null,-0,0)}}break}while(1);td(e)}function mu(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:Bt},Cl(t,a,d);var m=(a&62914560)===a?Xl-xe():(a&4194048)===a?Zl-xe():0;if(m=qf(d,m),m!==null){iu=a,e.cancelPendingCommit=m(Pu.bind(null,e,t,a,n,r,i,o,s,c,u,d,null,f,p)),gu(e,a,o,!l);return}}Pu(e,t,a,n,r,i,o,s,c)}function hu(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(!cr(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 gu(e,t,n,r){t&=~Wl,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-Ne(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&G(e,n,t)}function _u(){return jl&6?!0:(nd(0,!1),!1)}function vu(){if(Nl!==null){if(Fl===0)var e=Nl.return;else e=Nl,Pi=Ni=null,vo(e),ya=null,ba=0,e=Nl;for(;e!==null;)jc(e.alternate,e),e=e.return;Nl=null}}function yu(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,qd(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),iu=0,vu(),Ml=e,Nl=n=Xr(e.current,null),Pl=t,Fl=0,Il=null,Ll=!1,Rl=He(e,t),zl=!1,Kl=Gl=Wl=Ul=Hl=Vl=0,Jl=ql=null,Yl=!1,t&8&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var i=31-Ne(r),a=1<<i;t|=e[i],r&=~a}return Bl=t,Br(),n}function bu(e,t){$a=null,P.H=Os,t===la||t===da?(t=_a(),Fl=3):t===ua?(t=_a(),Fl=4):Fl=t===Ks?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,Il=t,Nl===null&&(Vl=1,Bs(e,ii(t,e.current)))}function xu(){var e=$.current;return e===null?!0:(Pl&4194048)===Pl?Wa===null:(Pl&62914560)===Pl||Pl&536870912?e===Wa:!1}function Su(){var e=P.H;return P.H=Os,e===null?Os:e}function Cu(){var e=P.A;return P.A=kl,e}function wu(){Vl=4,Ll||(Pl&4194048)!==Pl&&$.current!==null||(Rl=!0),!(Hl&134217727)&&!(Ul&134217727)||Ml===null||gu(Ml,Pl,Gl,!1)}function Tu(e,t,n){var r=jl;jl|=2;var i=Su(),a=Cu();(Ml!==e||Pl!==t)&&($l=null,yu(e,t)),t=!1;var o=Vl;a:do try{if(Fl!==0&&Nl!==null){var s=Nl,c=Il;switch(Fl){case 8:vu(),o=6;break a;case 3:case 2:case 9:case 6:$.current===null&&(t=!0);var l=Fl;if(Fl=0,Il=null,ju(e,s,c,l),n&&Rl){o=0;break a}break;default:l=Fl,Fl=0,Il=null,ju(e,s,c,l)}}Eu(),o=Vl;break}catch(t){bu(e,t)}while(1);return t&&e.shellSuspendCounter++,Pi=Ni=null,jl=r,P.H=i,P.A=a,Nl===null&&(Ml=null,Pl=0,Br()),o}function Eu(){for(;Nl!==null;)ku(Nl)}function Du(e,t){var n=jl;jl|=2;var r=Su(),a=Cu();Ml!==e||Pl!==t?($l=null,Ql=xe()+500,yu(e,t)):Rl=He(e,t);a:do try{if(Fl!==0&&Nl!==null){t=Nl;var o=Il;b:switch(Fl){case 1:Fl=0,Il=null,ju(e,t,o,1);break;case 2:case 9:if(pa(o)){Fl=0,Il=null,Au(t);break}t=function(){Fl!==2&&Fl!==9||Ml!==e||(Fl=7),td(e)},o.then(t,t);break a;case 3:Fl=7;break a;case 4:Fl=5;break a;case 7:pa(o)?(Fl=0,Il=null,Au(t)):(Fl=0,Il=null,ju(e,t,o,7));break;case 5:var s=null;switch(Nl.tag){case 26:s=Nl.memoizedState;case 5:case 27:var c=Nl;if(s?Wf(s):c.stateNode.complete){Fl=0,Il=null;var l=c.sibling;if(l!==null)Nl=l;else{var u=c.return;u===null?Nl=null:(Nl=u,Mu(u))}break b}}Fl=0,Il=null,ju(e,t,o,5);break;case 6:Fl=0,Il=null,ju(e,t,o,6);break;case 8:vu(),Vl=6;break a;default:throw Error(i(462))}}Ou();break}catch(t){bu(e,t)}while(1);return Pi=Ni=null,P.H=r,P.A=a,jl=n,Nl===null?(Ml=null,Pl=0,Br(),Vl):0}function Ou(){for(;Nl!==null&&!ye();)ku(Nl)}function ku(e){var t=Sc(e.alternate,e,Bl);e.memoizedProps=e.pendingProps,t===null?Mu(e):Nl=t}function Au(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=oc(n,t,t.pendingProps,t.type,void 0,Pl);break;case 11:t=oc(n,t,t.pendingProps,t.type.render,t.ref,Pl);break;case 5:vo(t);default:jc(n,t),t=Nl=Zr(t,Bl),t=Sc(n,t,Bl)}e.memoizedProps=e.pendingProps,t===null?Mu(e):Nl=t}function ju(e,t,n,r){Pi=Ni=null,vo(t),ya=null,ba=0;var i=t.return;try{if(Gs(e,i,t,n,Pl)){Vl=1,Bs(e,ii(n,e.current)),Nl=null;return}}catch(t){if(i!==null)throw Nl=i,t;Vl=1,Bs(e,ii(n,e.current)),Nl=null;return}t.flags&32768?(xi||r===1?e=!0:Rl||Pl&536870912?e=!1:(Ll=e=!0,(r===2||r===9||r===3||r===6)&&(r=$.current,r!==null&&r.tag===13&&(r.flags|=16384))),Nu(t,e)):Mu(t)}function Mu(e){var t=e;do{if(t.flags&32768){Nu(t,Ll);return}e=t.return;var n=kc(t.alternate,t,Bl);if(n!==null){Nl=n;return}if(t=t.sibling,t!==null){Nl=t;return}Nl=t=e}while(t!==null);Vl===0&&(Vl=5)}function Nu(e,t){do{var n=Ac(e.alternate,e);if(n!==null){n.flags&=32767,Nl=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){Nl=e;return}Nl=e=n}while(e!==null);Vl=6,Nl=null}function Pu(e,t,n,r,a,o,s,c,l){e.cancelPendingCommit=null;do zu();while(tu!==0);if(jl&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,o|=zr,Ge(e,n,o,s,c,l),e===Ml&&(Nl=Ml=null,Pl=0),ru=t,nu=e,iu=n,au=o,ou=a,su=r,t.subtreeFlags&10256||t.flags&10256?(e.callbackNode=null,e.callbackPriority=0,Ju(Te,function(){return Bu(),null})):(e.callbackNode=null,e.callbackPriority=0),r=(t.flags&13878)!=0,t.subtreeFlags&13878||r){r=P.T,P.T=null,a=F.p,F.p=2,s=jl,jl|=4;try{Xc(e,t,n)}finally{jl=s,F.p=a,P.T=r}}tu=1,Fu(),Iu(),Lu()}}function Fu(){if(tu===1){tu=0;var e=nu,t=ru,n=(t.flags&13878)!=0;if(t.subtreeFlags&13878||n){n=P.T,P.T=null;var r=F.p;F.p=2;var i=jl;jl|=4;try{ll(t,e);var a=zd,o=pr(e.containerInfo),s=a.focusedElem,c=a.selectionRange;if(o!==s&&s&&s.ownerDocument&&fr(s.ownerDocument.documentElement,s)){if(c!==null&&mr(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 _=dr(s,h),v=dr(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}}sp=!!Rd,zd=Rd=null}finally{jl=i,F.p=r,P.T=n}}e.current=t,tu=2}}function Iu(){if(tu===2){tu=0;var e=nu,t=ru,n=(t.flags&8772)!=0;if(t.subtreeFlags&8772||n){n=P.T,P.T=null;var r=F.p;F.p=2;var i=jl;jl|=4;try{Zc(e,t.alternate,t)}finally{jl=i,F.p=r,P.T=n}}tu=3}}function Lu(){if(tu===4||tu===3){tu=0,be();var e=nu,t=ru,n=iu,r=su;t.subtreeFlags&10256||t.flags&10256?tu=5:(tu=0,ru=nu=null,Ru(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(eu=null),Ye(n),t=t.stateNode,je&&typeof je.onCommitFiberRoot==`function`)try{je.onCommitFiberRoot(Ae,t,void 0,(t.current.flags&128)==128)}catch{}if(r!==null){t=P.T,i=F.p,F.p=2,P.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{P.T=t,F.p=i}}iu&3&&zu(),td(e),i=e.pendingLanes,n&261930&&i&42?e===lu?cu++:(cu=0,lu=e):cu=0,nd(0,!1)}}function Ru(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Xi(t)))}function zu(){return Fu(),Iu(),Lu(),Bu()}function Bu(){if(tu!==5)return!1;var e=nu,t=au;au=0;var n=Ye(iu),r=P.T,a=F.p;try{F.p=32>n?32:n,P.T=null,n=ou,ou=null;var o=nu,s=iu;if(tu=0,ru=nu=null,iu=0,jl&6)throw Error(i(331));var c=jl;if(jl|=4,El(o.current),vl(o,o.current,s,n),jl=c,nd(0,!1),je&&typeof je.onPostCommitFiberRoot==`function`)try{je.onPostCommitFiberRoot(Ae,o)}catch{}return!0}finally{F.p=a,P.T=r,Ru(e,t)}}function Vu(e,t,n){t=ii(n,t),t=Hs(e.stateNode,t,2),e=ja(e,t,2),e!==null&&(W(e,2),td(e))}function Hu(e,t,n){if(e.tag===3)Vu(e,e,n);else for(;t!==null;){if(t.tag===3){Vu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(eu===null||!eu.has(r))){e=ii(n,e),n=Us(2),r=ja(t,n,2),r!==null&&(Ws(n,r,t,e),W(r,2),td(r));break}}t=t.return}}function Uu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Al;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)||(zl=!0,i.add(n),e=Wu.bind(null,e,t,n),t.then(e,e))}function Wu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ml===e&&(Pl&n)===n&&(Vl===4||Vl===3&&(Pl&62914560)===Pl&&300>xe()-Xl?!(jl&2)&&yu(e,0):Wl|=n,Kl===Pl&&(Kl=0)),td(e)}function Gu(e,t){t===0&&(t=We()),e=Ur(e,t),e!==null&&(W(e,t),td(e))}function Ku(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Gu(e,n)}function qu(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),Gu(e,n)}function Ju(e,t){return _e(e,t)}var Yu=null,Xu=null,Zu=!1,Qu=!1,$u=!1,ed=0;function td(e){e!==Xu&&e.next===null&&(Xu===null?Yu=Xu=e:Xu=Xu.next=e),Qu=!0,Zu||(Zu=!0,cd())}function nd(e,t){if(!$u&&Qu){$u=!0;do for(var n=!1,r=Yu;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-Ne(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,sd(r,a))}else a=Pl,a=Ve(r,r===Ml?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||He(r,a)||(n=!0,sd(r,a));r=r.next}while(n);$u=!1}}function rd(){id()}function id(){Qu=Zu=!1;var e=0;ed!==0&&Gd()&&(e=ed);for(var t=xe(),n=null,r=Yu;r!==null;){var i=r.next,a=ad(r,t);a===0?(r.next=null,n===null?Yu=i:n.next=i,i===null&&(Xu=n)):(n=r,(e!==0||a&3)&&(Qu=!0)),r=i}tu!==0&&tu!==5||nd(e,!1),ed!==0&&(ed=0)}function ad(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-Ne(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=Ml,n=Pl,n=Ve(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(Fl===2||Fl===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&ve(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&&ve(r),Ye(n)){case 2:case 8:n=we;break;case 32:n=Te;break;case 268435456:n=De;break;default:n=Te}return r=od.bind(null,e),n=_e(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&ve(r),e.callbackPriority=2,e.callbackNode=null,2}function od(e,t){if(tu!==0&&tu!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(zu()&&e.callbackNode!==n)return null;var r=Pl;return r=Ve(e,e===Ml?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(pu(e,r,t),ad(e,xe()),e.callbackNode!=null&&e.callbackNode===n?od.bind(null,e):null)}function sd(e,t){if(zu())return null;pu(e,t,!0)}function cd(){Yd(function(){jl&6?_e(Ce,rd):id()})}function ld(){if(ed===0){var e=$i;e===0&&(e=Le,Le<<=1,!(Le&261888)&&(Le=256)),ed=e}return ed}function ud(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:zt(``+e)}function dd(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 fd(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=ud((i[et]||null).action),o=r.submitter;o&&(t=(t=o[et]||null)?ud(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new cn(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(ed!==0){var e=o?dd(i,o):new FormData(i);ms(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=o?dd(i,o):new FormData(i),ms(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var pd=0;pd<Pr.length;pd++){var md=Pr[pd];Fr(md.toLowerCase(),`on`+(md[0].toUpperCase()+md.slice(1)))}Fr(Er,`onAnimationEnd`),Fr(Dr,`onAnimationIteration`),Fr(Or,`onAnimationStart`),Fr(`dblclick`,`onDoubleClick`),Fr(`focusin`,`onFocus`),Fr(`focusout`,`onBlur`),Fr(kr,`onTransitionRun`),Fr(Ar,`onTransitionStart`),Fr(jr,`onTransitionCancel`),Fr(Mr,`onTransitionEnd`),dt(`onMouseEnter`,[`mouseout`,`mouseover`]),dt(`onMouseLeave`,[`mouseout`,`mouseover`]),dt(`onPointerEnter`,[`pointerout`,`pointerover`]),dt(`onPointerLeave`,[`pointerout`,`pointerover`]),X(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),X(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),X(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),X(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),X(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),X(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var hd=`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(` `),gd=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(hd));function _d(e,t){t=(t&4)!=0;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){Ir(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){Ir(e)}i.currentTarget=null,a=c}}}}function vd(e,t){var n=t[nt];n===void 0&&(n=t[nt]=new Set);var r=e+`__bubble`;n.has(r)||(Sd(t,e,2,!1),n.add(r))}function yd(e,t,n){var r=0;t&&(r|=4),Sd(n,e,r,t)}var bd=`_reactListening`+Math.random().toString(36).slice(2);function xd(e){if(!e[bd]){e[bd]=!0,J.forEach(function(t){t!==`selectionchange`&&(gd.has(t)||yd(t,!1,e),yd(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[bd]||(t[bd]=!0,yd(`selectionchange`,!1,t))}}function Sd(e,t,n,r){switch(mp(t)){case 2:var i=cp;break;case 8:i=lp;break;default:i=up}n=i.bind(null,t,n,e),i=void 0,!Xt||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 Cd(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=q(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}qt(function(){var r=a,i=Ht(n),s=[];a:{var c=Nr.get(e);if(c!==void 0){var l=cn,u=e;switch(e){case`keypress`:if(nn(n)===0)break a;case`keydown`:case`keyup`:l=Tn;break;case`focusin`:u=`focus`,l=gn;break;case`focusout`:u=`blur`,l=gn;break;case`beforeblur`:case`afterblur`:l=gn;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=Q;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=hn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=Dn;break;case Er:case Dr:case Or:l=_n;break;case Mr:l=On;break;case`scroll`:case`scrollend`:l=un;break;case`wheel`:l=kn;break;case`copy`:case`cut`:case`paste`:l=vn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=En;break;case`toggle`:case`beforetoggle`:l=An}var d=(t&4)!=0,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=Jt(m,p),g!=null&&d.push(wd(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!==Vt&&(u=n.relatedTarget||n.fromElement)&&(q(u)||u[tt]))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?q(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=Q,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=En,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=l==null?c:ct(l),h=u==null?c:ct(u),c=new d(g,m+`leave`,l,n,i),c.target=f,c.relatedTarget=h,g=null,q(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=Ed,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&&Dd(s,c,l,d,!1),u!==null&&f!==null&&Dd(s,f,u,d,!0)}}a:{if(c=r?ct(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var v=Xn;else if(Wn(c))if(Zn)v=or;else{v=ir;var y=rr}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&It(r.elementType)&&(v=Xn):v=ar;if(v&&=v(e,r)){Gn(s,v,n,i);break a}y&&y(e,c,r),e===`focusout`&&r&&c.type===`number`&&r.memoizedProps.value!=null&&kt(c,`number`,c.value)}switch(y=r?ct(r):window,e){case`focusin`:(Wn(y)||y.contentEditable===`true`)&&(gr=y,_r=r,vr=null);break;case`focusout`:vr=_r=gr=null;break;case`mousedown`:yr=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:yr=!1,br(s,n,i);break;case`selectionchange`:if(hr)break;case`keydown`:case`keyup`:br(s,n,i)}var b;if(Mn)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 Bn?Rn(e,n)&&(x=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(x=`onCompositionStart`);x&&(Fn&&n.locale!==`ko`&&(Bn||x!==`onCompositionStart`?x===`onCompositionEnd`&&Bn&&(b=tn()):(Qt=i,$t=`value`in Qt?Qt.value:Qt.textContent,Bn=!0)),y=Td(r,x),0<y.length&&(x=new yn(x,e,null,n,i),s.push({event:x,listeners:y}),b?x.data=b:(b=zn(n),b!==null&&(x.data=b)))),(b=Pn?Vn(e,n):Hn(e,n))&&(x=Td(r,`onBeforeInput`),0<x.length&&(y=new yn(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:y,listeners:x}),y.data=b)),fd(s,e,r,n,i)}_d(s,t)})}function wd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Td(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=Jt(e,n),i!=null&&r.unshift(wd(e,i,a)),i=Jt(e,t),i!=null&&r.push(wd(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Ed(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Dd(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=Jt(n,a),l!=null&&o.unshift(wd(n,l,c))):i||(l=Jt(n,a),l!=null&&o.push(wd(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var Od=/\r\n?/g,kd=/\u0000|\uFFFD/g;function Ad(e){return(typeof e==`string`?e:``+e).replace(Od,`
10
- `).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Z(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Z(e,``+r);break;case`className`:_t(e,`class`,r);break;case`tabIndex`:_t(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:_t(e,n,r);break;case`style`:Ft(e,r,o);break;case`data`:if(t!==`object`){_t(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=zt(``+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}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Md(e,t,`name`,a.name,a,null),Md(e,t,`formEncType`,a.formEncType,a,null),Md(e,t,`formMethod`,a.formMethod,a,null),Md(e,t,`formTarget`,a.formTarget,a,null)):(Md(e,t,`encType`,a.encType,a,null),Md(e,t,`method`,a.method,a,null),Md(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=zt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=Bt);break;case`onScroll`:r!=null&&vd(`scroll`,e);break;case`onScrollEnd`:r!=null&&vd(`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=zt(``+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`:vd(`beforetoggle`,e),vd(`toggle`,e),gt(e,`popover`,r);break;case`xlinkActuate`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:vt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:vt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:vt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:gt(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=Lt.get(n)||n,gt(e,n,r))}}function Nd(e,t,n,r,a,o){switch(n){case`style`:Ft(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`?Z(e,r):(typeof r==`number`||typeof r==`bigint`)&&Z(e,``+r);break;case`onScroll`:r!=null&&vd(`scroll`,e);break;case`onScrollEnd`:r!=null&&vd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=Bt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!Y.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[et]||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,``):gt(e,n,r)}}}function Pd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:vd(`error`,e),vd(`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:Md(e,t,o,s,n,null)}}a&&Md(e,t,`srcSet`,n.srcSet,n,null),r&&Md(e,t,`src`,n.src,n,null);return;case`input`:vd(`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:Md(e,t,r,d,n,null)}}Ot(e,o,c,l,u,s,a,!1);return;case`select`:for(a in vd(`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:Md(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&At(e,!!r,n,!0):At(e,!!r,t,!1);return;case`textarea`:for(s in vd(`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:Md(e,t,s,c,n,null)}Mt(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:Md(e,t,l,r,n,null)}return;case`dialog`:vd(`beforetoggle`,e),vd(`toggle`,e),vd(`cancel`,e),vd(`close`,e);break;case`iframe`:case`object`:vd(`load`,e);break;case`video`:case`audio`:for(r=0;r<hd.length;r++)vd(hd[r],e);break;case`image`:vd(`error`,e),vd(`load`,e);break;case`details`:vd(`toggle`,e);break;case`embed`:case`source`:case`link`:vd(`error`,e),vd(`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:Md(e,t,u,r,n,null)}return;default:if(It(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Nd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Md(e,t,c,r,n,null))}function Fd(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)||Md(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&&Md(e,t,p,m,r,f)}}Dt(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)||Md(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&&Md(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?At(e,!!n,n?[]:``,!1):At(e,!!n,t,!0)):At(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:Md(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&&Md(e,t,s,a,r,o)}jt(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:Md(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:Md(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)&&Md(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:Md(e,t,u,p,r,m)}return;default:if(It(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Nd(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||Nd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Md(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||Md(e,t,f,p,r,m)}function Id(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Ld(){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&&Id(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&&Id(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 Rd=null,zd=null;function Bd(e){return e.nodeType===9?e:e.ownerDocument}function Vd(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 Hd(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 Ud(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 Wd=null;function Gd(){var e=window.event;return e&&e.type===`popstate`?e===Wd?!1:(Wd=e,!0):(Wd=null,!1)}var Kd=typeof setTimeout==`function`?setTimeout:void 0,qd=typeof clearTimeout==`function`?clearTimeout:void 0,Jd=typeof Promise==`function`?Promise:void 0,Yd=typeof queueMicrotask==`function`?queueMicrotask:Jd===void 0?Kd:function(e){return Jd.resolve(null).then(e).catch(Xd)};function Xd(e){setTimeout(function(){throw e})}function Zd(e){return e===`head`}function Qd(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),Np(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)pf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,pf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[ot]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&pf(e.ownerDocument.body);n=i}while(n);Np(t)}function $d(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 ef(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`:ef(n),K(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function tf(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[ot])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=cf(e.nextSibling),e===null)break}return null}function nf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=cf(e.nextSibling),e===null))return null;return e}function rf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=cf(e.nextSibling),e===null))return null;return e}function af(e){return e.data===`$?`||e.data===`$~`}function of(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function sf(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 cf(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 lf=null;function uf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return cf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function df(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 ff(e,t,n){switch(t=Bd(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 pf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);K(e)}var mf=new Map,hf=new Set;function gf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var _f=F.d;F.d={f:vf,r:yf,D:Sf,C:Cf,L:wf,m:Tf,X:Df,S:Ef,M:Of};function vf(){var e=_f.f(),t=_u();return e||t}function yf(e){var t=st(e);t!==null&&t.tag===5&&t.type===`form`?gs(t):_f.r(e)}var bf=typeof document>`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Et(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),ut(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Et(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Et(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Et(n.imageSizes)+`"]`)):i+=`[href="`+Et(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),ut(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Et(r)+`"][href="`+Et(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),ut(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=lt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);ut(c),Pd(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,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=lt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=f({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),ut(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=lt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),ut(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ie.current)?gf(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=Af(n.href),n=lt(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=Af(n.href);var o=lt(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(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.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},mf.set(e,n),o||Nf(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=Pf(n),n=lt(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 Af(e){return`href="`+Et(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(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}),Pd(t,`link`,n),ut(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Et(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Et(n.href)+`"]`);if(r)return t.instance=r,ut(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),ut(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,ut(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),ut(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,ut(a),a):(r=n,(a=mf.get(o))&&(r=f({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),ut(a),Pd(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,Lf(r,n.precedence,e));return t.instance}function Lf(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 Rf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function zf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Bf=null;function Vf(e,t,n){if(Bf===null){var r=new Map,i=Bf=new Map;i.set(n,r)}else i=Bf,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[ot]||a[$e]||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 Hf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Uf(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 Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(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=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,ut(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),ut(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(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=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Kf===0&&(Kf=62500*Ld());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.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=Jf.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 Qf={$$typeof:C,Provider:null,Consumer:null,_currentValue:I,_currentValue2:I,_threadCount:0};function $f(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=U(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=U(0),this.hiddenUpdates=U(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 ep(e,t,n,r,i,a,o,s,c,l,u,d){return e=new $f(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=Jr(3,null,null,t),e.current=a,a.stateNode=e,t=Yi(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Oa(a),e}function tp(e){return e?(e=Kr,e):Kr}function np(e,t,n,r,i,a){i=tp(i),r.context===null?r.context=i:r.pendingContext=i,r=Aa(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=ja(e,r,t),n!==null&&(fu(n,e,t),Ma(n,e,t))}function rp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ip(e,t){rp(e,t),(e=e.alternate)&&rp(e,t)}function ap(e){if(e.tag===13||e.tag===31){var t=Ur(e,67108864);t!==null&&fu(t,e,67108864),ip(e,67108864)}}function op(e){if(e.tag===13||e.tag===31){var t=uu();t=Je(t);var n=Ur(e,t);n!==null&&fu(n,e,t),ip(e,t)}}var sp=!0;function cp(e,t,n,r){var i=P.T;P.T=null;var a=F.p;try{F.p=2,up(e,t,n,r)}finally{F.p=a,P.T=i}}function lp(e,t,n,r){var i=P.T;P.T=null;var a=F.p;try{F.p=8,up(e,t,n,r)}finally{F.p=a,P.T=i}}function up(e,t,n,r){if(sp){var i=dp(r);if(i===null)Cd(e,t,r,fp,n),Cp(e,r);else if(Tp(i,e,t,n,r))r.stopPropagation();else if(Cp(e,r),t&4&&-1<Sp.indexOf(e)){for(;i!==null;){var a=st(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-Ne(o);s.entanglements[1]|=c,o&=~c}td(a),!(jl&6)&&(Ql=xe()+500,nd(0,!1))}}break;case 31:case 13:s=Ur(a,2),s!==null&&fu(s,a,2),_u(),ip(a,2)}if(a=dp(r),a===null&&Cd(e,t,r,fp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Cd(e,t,r,null,n)}}function dp(e){return e=Ht(e),pp(e)}var fp=null;function pp(e){if(fp=null,e=q(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 fp=e,null}function mp(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(Se()){case Ce:return 2;case we:return 8;case Te:case Ee:return 32;case De:return 268435456;default:return 32}default:return 32}}var hp=!1,gp=null,_p=null,vp=null,yp=new Map,bp=new Map,xp=[],Sp=`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 Cp(e,t){switch(e){case`focusin`:case`focusout`:gp=null;break;case`dragenter`:case`dragleave`:_p=null;break;case`mouseover`:case`mouseout`:vp=null;break;case`pointerover`:case`pointerout`:yp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:bp.delete(t.pointerId)}}function wp(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=st(t),t!==null&&ap(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Tp(e,t,n,r,i){switch(t){case`focusin`:return gp=wp(gp,e,t,n,r,i),!0;case`dragenter`:return _p=wp(_p,e,t,n,r,i),!0;case`mouseover`:return vp=wp(vp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return yp.set(a,wp(yp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,bp.set(a,wp(bp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ep(e){var t=q(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,Ze(e.priority,function(){op(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,Ze(e.priority,function(){op(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 Dp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=dp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Vt=r,n.target.dispatchEvent(r),Vt=null}else return t=st(n),t!==null&&ap(t),e.blockedOn=n,!1;t.shift()}return!0}function Op(e,t,n){Dp(e)&&n.delete(t)}function kp(){hp=!1,gp!==null&&Dp(gp)&&(gp=null),_p!==null&&Dp(_p)&&(_p=null),vp!==null&&Dp(vp)&&(vp=null),yp.forEach(Op),bp.forEach(Op)}function Ap(e,n){e.blockedOn===n&&(e.blockedOn=null,hp||(hp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,kp)))}var jp=null;function Mp(e){jp!==e&&(jp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jp===e&&(jp=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(pp(r||n)===null)continue;break}var a=st(n);a!==null&&(e.splice(t,3),t-=3,ms(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Np(e){function t(t){return Ap(t,e)}gp!==null&&Ap(gp,e),_p!==null&&Ap(_p,e),vp!==null&&Ap(vp,e),yp.forEach(t),bp.forEach(t);for(var n=0;n<xp.length;n++){var r=xp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<xp.length&&(n=xp[0],n.blockedOn===null);)Ep(n),n.blockedOn===null&&xp.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[et]||null;if(typeof a==`function`)o||Mp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[et]||null)s=o.formAction;else if(pp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Mp(n)}}}function Pp(){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 Fp(e){this._internalRoot=e}Ip.prototype.render=Fp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;np(n,uu(),e,t,null,null)},Ip.prototype.unmount=Fp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;np(e.current,2,null,e,null,null),_u(),t[tt]=null}};function Ip(e){this._internalRoot=e}Ip.prototype.unstable_scheduleHydration=function(e){if(e){var t=Xe();e={blockedOn:null,target:e,priority:t};for(var n=0;n<xp.length&&t!==0&&t<xp[n].priority;n++);xp.splice(n,0,e),n===0&&Ep(e)}};var Lp=n.version;if(Lp!==`19.2.6`)throw Error(i(527,Lp,`19.2.6`));F.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=u(t),e=e===null?null:d(e),e=e===null?null:e.stateNode,e};var Rp={bundleType:0,version:`19.2.6`,rendererPackageName:`react-dom`,currentDispatcherRef:P,reconcilerVersion:`19.2.6`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var zp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zp.isDisabled&&zp.supportsFiber)try{Ae=zp.inject(Rp),je=zp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Ls,s=Rs,c=zs;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=ep(e,1,!1,null,null,n,r,null,o,s,c,Pp),e[tt]=t.current,xd(e),new Fp(t)}})),y=s(((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=v()})),b=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},x=new class extends b{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},S={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},C=new class{#e=S;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function w(e){setTimeout(e,0)}var T=typeof window>`u`||`Deno`in globalThis;function E(){}function D(e,t){return typeof e==`function`?e(t):e}function O(e){return typeof e==`number`&&e>=0&&e!==1/0}function k(e,t){return Math.max(e+(t||0)-Date.now(),0)}function A(e,t){return typeof e==`function`?e(t):e}function j(e,t){return typeof e==`function`?e(t):e}function M(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==N(o,t.options))return!1}else if(!P(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function ee(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(te(t.options.mutationKey)!==te(a))return!1}else if(!P(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function N(e,t){return(t?.queryKeyHashFn||te)(e)}function te(e){return JSON.stringify(e,(e,t)=>z(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function P(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>P(e[n],t[n])):!1}var F=Object.prototype.hasOwnProperty;function I(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=R(e)&&R(t);if(!r&&!(z(e)&&z(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:F.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=I(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function L(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function R(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function z(e){if(!B(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!B(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function B(e){return Object.prototype.toString.call(e)===`[object Object]`}function V(e){return new Promise(t=>{C.setTimeout(t,e)})}function ne(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:I(e,t)}function re(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function ie(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var H=Symbol();function ae(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===H?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function oe(e,t){return typeof e==`function`?e(...t):!!e}function se(e,t,n){let r=!1,i;return Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var ce=(()=>{let e=()=>T;return{isServer(){return e()},setIsServer(t){e=t}}})();function le(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var ue=w;function de(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=ue,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var fe=de(),pe=new class extends b{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function me(e){return Math.min(1e3*2**e,3e4)}function he(e){return(e??`online`)===`online`?pe.isOnline():!0}var ge=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function _e(e){let t=!1,n=0,r,i=le(),a=()=>i.status!==`pending`,o=t=>{if(!a()){let n=new ge(t);f(n),e.onCancel?.(n)}},s=()=>{t=!0},c=()=>{t=!1},l=()=>x.isFocused()&&(e.networkMode===`always`||pe.isOnline())&&e.canRun(),u=()=>he(e.networkMode)&&e.canRun(),d=e=>{a()||(r?.(),i.resolve(e))},f=e=>{a()||(r?.(),i.reject(e))},p=()=>new Promise(t=>{r=e=>{(a()||l())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,a()||e.onContinue?.()}),m=()=>{if(a())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(d).catch(r=>{if(a())return;let i=e.retry??(ce.isServer()?0:3),o=e.retryDelay??me,s=typeof o==`function`?o(n,r):o,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){f(r);return}n++,e.onFail?.(n,r),V(s).then(()=>l()?void 0:p()).then(()=>{t?f(r):m()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(r?.(),i),cancelRetry:s,continueRetry:c,canStart:u,start:()=>(u()?m():p().then(m),i)}}var ve=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),O(this.gcTime)&&(this.#e=C.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(ce.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(C.clearTimeout(this.#e),this.#e=void 0)}};function ye(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{se(e,()=>t.signal,()=>n=!0)},u=ae(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?ie:re;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?xe:be,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:be(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.options.persister?t.fetchFn=()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function be(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function xe(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Se=class extends ve{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=Te(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=Te(this.options);e.data!==void 0&&(this.setState(we(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=ne(this.state.data,e,this.options);return this.#l({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#l({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(E).catch(E):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>j(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===H||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>A(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!k(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#a&&(this.#s||this.#c()?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}#c(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}invalidate(){this.state.isInvalidated||this.#l({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=ae(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?ye(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#l({type:`fetch`,meta:a.fetchOptions?.meta}),this.#a=_e({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof ge&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#l({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#l({type:`pause`})},onContinue:()=>{this.#l({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#a.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof ge){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#l({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#l(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Ce(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...we(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),fe.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Ce(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:he(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function we(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function Te(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Ee=class extends b{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=le(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),Oe(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ke(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ke(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof j(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!L(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&Ae(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||j(this.options.enabled,this.#t)!==j(t.enabled,this.#t)||A(this.options.staleTime,this.#t)!==A(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||j(this.options.enabled,this.#t)!==j(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return Me(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(E)),t}#g(){this.#b();let e=A(this.options.staleTime,this.#t);if(ce.isServer()||this.#r.isStale||!O(e))return;let t=k(this.#r.dataUpdatedAt,e)+1;this.#d=C.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(ce.isServer()||j(this.options.enabled,this.#t)===!1||!O(this.#p)||this.#p===0)&&(this.#f=C.setInterval(()=>{(this.options.refetchIntervalInBackground||x.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(C.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(C.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Oe(e,t),o=i&&Ae(e,n,t,r);(a||o)&&(l={...l,...Ce(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(m=`success`,d=ne(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h)if(i&&d===a?.data&&t.select===this.#c)d=this.#l;else try{this.#c=t.select,d=t.select(d),d=ne(i?.data,d,t),this.#l=d,this.#s=null}catch(e){this.#s=e}this.#s&&(f=this.#s,d=this.#l,p=Date.now(),m=`error`);let g=l.fetchStatus===`fetching`,_=m===`pending`,v=m===`error`,y=_&&g,b=d!==void 0,x={status:m,fetchStatus:l.fetchStatus,isPending:_,isSuccess:m===`success`,isError:v,isInitialLoading:y,isLoading:y,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!_,isLoadingError:v&&!b,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:v&&b,isStale:je(e,t),refetch:this.refetch,promise:this.#o,isEnabled:j(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=x.data!==void 0,r=x.status===`error`&&!t,i=e=>{r?e.reject(x.error):t&&e.resolve(x.data)},a=()=>{i(this.#o=x.promise=le())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||x.data!==o.value)&&a();break;case`rejected`:(!r||x.error!==o.reason)&&a();break}}return x}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!L(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){fe.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function De(e,t){return j(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&j(t.retryOnMount,e)===!1)}function Oe(e,t){return De(e,t)||e.state.data!==void 0&&ke(e,t,t.refetchOnMount)}function ke(e,t,n){if(j(t.enabled,e)!==!1&&A(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&je(e,t)}return!1}function Ae(e,t,n,r){return(e!==t||j(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&je(e,n)}function je(e,t){return j(t.enabled,e)!==!1&&e.isStaleByTime(A(t.staleTime,e))}function Me(e,t){return!L(e.getCurrentResult(),t)}var Ne=class extends ve{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||Pe(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=_e({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),fe.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function Pe(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var Fe=class extends b{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new Ne({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=Ie(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=Ie(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=Ie(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=Ie(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){fe.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ee(t,e))}findAll(e={}){return this.getAll().filter(t=>ee(e,t))}notify(e){fe.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return fe.batch(()=>Promise.all(e.map(e=>e.continue().catch(E))))}};function Ie(e){return e.options.scope?.id}var Le=class extends b{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),L(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&te(t.mutationKey)!==te(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??Pe();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){fe.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}};function Re(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function ze(e,t,n){let r=e.slice(0);return r[t]=n,r}var Be=class extends b{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,fe.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!L(e,n)});!o&&!s||(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(Re(e,n).forEach(e=>{e.destroy()}),Re(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){return t.map((n,r)=>{let i=e[r];return n.defaultedQueryOptions.notifyOnChangeProps?i:n.observer.trackResult(i,e=>{t.forEach(t=>{t.observer.trackProp(e)})})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(!this.#a||this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=I(this.#a,t(e))),this.#a}return e}#f(){return this.#r?.combine!==void 0&&this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new Ee(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=ze(this.#t,n,t),this.#h())}#h(){if(this.hasListeners()){let e=this.#u(this.#t,this.#l),t=this.#f(),n=this.#a,r=t?n:this.#d(e,this.#r?.combine);(t||n!==r)&&fe.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},Ve=class extends b{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??N(r,t),a=this.get(i);return a||(a=new Se({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){fe.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>M(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>M(e,t)):t}notify(e){fe.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){fe.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){fe.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},He=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Ve,this.#t=e.mutationCache||new Fe,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=x.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=pe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(A(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=D(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return fe.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;fe.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return fe.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=fe.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(E).catch(E)}invalidateQueries(e,t={}){return fe.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=fe.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(E)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(E)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(A(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(E).catch(E)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(E).catch(E)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return pe.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(te(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{P(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(te(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{P(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=N(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===H&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},Ue=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),We=s(((e,t)=>{t.exports=Ue()})),U=u(p(),1),W=We(),Ge=U.createContext(void 0),G=e=>{let t=U.useContext(Ge);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},Ke=({client:e,children:t})=>(U.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,W.jsx)(Ge.Provider,{value:e,children:t})),qe=U.createContext(!1),Je=()=>U.useContext(qe);qe.Provider;function Ye(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Xe=U.createContext(Ye()),Ze=()=>U.useContext(Xe),Qe=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?oe(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},$e=e=>{U.useEffect(()=>{e.clearReset()},[e])},et=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||oe(n,[e.error,r])),tt=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},nt=(e,t)=>e.isLoading&&e.isFetching&&!t,rt=(e,t)=>e?.suspense&&t.isPending,it=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function at({queries:e,...t},n){let r=G(n),i=Je(),a=Ze(),o=U.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:`optimistic`,t}),[e,r,i]);o.forEach(e=>{tt(e),Qe(e,a,r.getQueryCache().get(e.queryHash))}),$e(a);let[s]=U.useState(()=>new Be(r,o,t)),[c,l,u]=s.getOptimisticResult(o,t.combine),d=!i&&t.subscribed!==!1;U.useSyncExternalStore(U.useCallback(e=>d?s.subscribe(fe.batchCalls(e)):E,[s,d]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),U.useEffect(()=>{s.setQueries(o,t)},[o,t,s]);let f=c.some((e,t)=>rt(o[t],e))?c.flatMap((e,t)=>{let n=o[t];return n&&rt(n,e)?it(n,new Ee(r,n),a):[]}):[];if(f.length>0)throw Promise.all(f);let p=c.find((e,t)=>{let n=o[t];return n&&et({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(p?.error)throw p.error;return l(u())}function ot(e,t,n){let r=Je(),i=Ze(),a=G(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,tt(o),Qe(o,i,s),$e(i);let c=!a.getQueryCache().get(o.queryHash),[l]=U.useState(()=>new t(a,o)),u=l.getOptimisticResult(o),d=!r&&e.subscribed!==!1;if(U.useSyncExternalStore(U.useCallback(e=>{let t=d?l.subscribe(fe.batchCalls(e)):E;return l.updateResult(),t},[l,d]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),U.useEffect(()=>{l.setOptions(o)},[o,l]),rt(o,u))throw it(o,l,i);if(et({result:u,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw u.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,u),o.experimental_prefetchInRender&&!ce.isServer()&&nt(u,r)&&(c?it(o,l,i):s?.promise)?.catch(E).finally(()=>{l.updateResult()}),o.notifyOnChangeProps?u:l.trackResult(u)}function K(e,t){return ot(e,Ee,t)}function q(e,t){let n=G(t),[r]=U.useState(()=>new Le(n,e));U.useEffect(()=>{r.setOptions(e)},[r,e]);let i=U.useSyncExternalStore(U.useCallback(e=>r.subscribe(fe.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=U.useCallback((e,t)=>{r.mutate(e,t).catch(E)},[r]);if(i.error&&oe(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var st=u(y(),1),ct=(typeof document<`u`?document.querySelector(`meta[name="recall-token"]`)?.getAttribute(`content`):null)??``;function lt(){return ct}function ut(e){let t=lt(),n={...e};return t&&(n[`x-recall-token`]=t),n}async function J(e){let t=await fetch(e,{headers:ut()});if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`${t.status} ${t.statusText}: ${e.slice(0,200)}`)}return await t.json()}async function Y(e,t,n){let r=await fetch(t,{method:e,headers:ut(n===void 0?void 0:{"content-type":`application/json`}),body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`${r.status} ${r.statusText}: ${e.slice(0,200)}`)}return await r.json()}var X={stats:()=>J(`/api/stats`),health:()=>J(`/api/health`),neighborhood:(e,t={})=>{let n=new URLSearchParams;t.budget&&n.set(`budget`,String(t.budget)),t.scoring&&n.set(`scoring`,t.scoring);let r=n.toString();return J(`/api/neighborhood/${encodeURIComponent(e)}${r?`?${r}`:``}`)},projects:()=>J(`/api/projects`),sessions:(e={})=>{let t=new URLSearchParams({limit:String(e.limit??200)});return e.projectName&&t.set(`project`,e.projectName),e.since&&t.set(`since`,e.since),e.until&&t.set(`until`,e.until),e.collectionId&&t.set(`collection`,e.collectionId),J(`/api/sessions?${t}`)},session:e=>J(`/api/sessions/${encodeURIComponent(e)}`),graph:e=>J(`/api/graph/${encodeURIComponent(e)}`),search:(e,t=40,n,r)=>{let i=new URLSearchParams({q:e,limit:String(t)});return n&&i.set(`project`,n),r&&i.set(`mode`,r),J(`/api/search?${i}`)},allTags:()=>J(`/api/tags`),sessionTags:e=>J(`/api/sessions/${encodeURIComponent(e)}/tags`),addSessionTag:async(e,t)=>{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/tags`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({tag:t})});if(!n.ok)throw Error(`${n.status}: ${await n.text()}`);return await n.json()},removeSessionTag:async(e,t)=>{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/tags/${encodeURIComponent(t)}`,{method:`DELETE`});if(!n.ok)throw Error(`${n.status}: ${await n.text()}`);return await n.json()},shareStats:e=>J(`/api/sessions/${encodeURIComponent(e)}/share-stats`),listCollections:(e=!1)=>{let t=new URLSearchParams;e&&t.set(`archived`,`1`);let n=t.toString();return J(`/api/collections${n?`?${n}`:``}`)},getCollection:e=>J(`/api/collections/${encodeURIComponent(e)}`),createCollection:e=>Y(`POST`,`/api/collections`,e),patchCollection:(e,t)=>Y(`PATCH`,`/api/collections/${encodeURIComponent(e)}`,t),archiveCollection:e=>Y(`POST`,`/api/collections/${encodeURIComponent(e)}/archive`),restoreCollection:e=>Y(`POST`,`/api/collections/${encodeURIComponent(e)}/restore`),addSessionToCollection:(e,t,n)=>Y(`POST`,`/api/collections/${encodeURIComponent(e)}/members`,{session_id:t,note:n??null}),removeSessionFromCollection:(e,t)=>Y(`DELETE`,`/api/collections/${encodeURIComponent(e)}/members/${encodeURIComponent(t)}`),sessionCollections:e=>J(`/api/sessions/${encodeURIComponent(e)}/collections`),getAutoTagConfig:()=>J(`/api/config/auto-tag`),putAutoTagConfig:e=>Y(`PUT`,`/api/config/auto-tag`,e),startScan:e=>Y(`POST`,`/api/tags/scan`,{scope:e}),getScan:e=>J(`/api/tags/scan/${encodeURIComponent(e)}`),applyScan:(e,t)=>Y(`POST`,`/api/tags/scan/${encodeURIComponent(e)}/apply`,{selection:t}),cancelScan:e=>Y(`DELETE`,`/api/tags/scan/${encodeURIComponent(e)}`),getMcpInstallStatus:()=>J(`/api/config/mcp-install`),installMcp:()=>Y(`POST`,`/api/config/mcp-install`),uninstallMcp:()=>Y(`DELETE`,`/api/config/mcp-install`),getAutopilotStatus:()=>J(`/api/autopilot/status`),kickAutopilot:()=>Y(`POST`,`/api/autopilot/kick`),runClaudeCliScan:(e,t={})=>Y(`POST`,`/api/tags/scan/claude-cli`,t.scanId?{scope:e,scanId:t.scanId}:{scope:e}),subscribeToScanProgress:e=>new EventSource(`/api/claude-cli/scan/${encodeURIComponent(e)}/progress`),listPrompts:()=>J(`/api/prompts`),runPrompt:(e,t)=>Y(`POST`,`/api/prompts/run`,{name:e,args:t}),getSemanticStatus:()=>J(`/api/semantic/status`),setSemanticEnabled:e=>Y(`PUT`,`/api/semantic/config`,{enabled:e}),triggerSemanticBackfill:(e=200)=>Y(`POST`,`/api/semantic/backfill`,{limit:e}),getSessionStats:e=>J(`/api/stats/session/${encodeURIComponent(e)}`),getProjectStats:e=>J(`/api/stats/project/${encodeURIComponent(e)}`),getOverviewStats:(e=`all`)=>J(`/api/stats/overview?range=${e}`),triggerStatsBackfill:e=>Y(`POST`,`/api/stats/backfill`,e?{limit:e}:{}),getOnboarding:()=>J(`/api/onboarding`),patchOnboarding:e=>Y(`PUT`,`/api/onboarding`,e),resetOnboarding:()=>Y(`POST`,`/api/onboarding/reset`),getSessionCommits:e=>J(`/api/sessions/${encodeURIComponent(e)}/commits`),refreshSessionCommits:e=>J(`/api/sessions/${encodeURIComponent(e)}/commits?refresh=1`),getCommitSessions:e=>J(`/api/commits/${encodeURIComponent(e)}/session`),getDiscoverToday:()=>J(`/api/discover/today`),getAutoTitleConfig:()=>J(`/api/config/auto-title`),putAutoTitleConfig:e=>Y(`PUT`,`/api/config/auto-title`,e),generateAutoTitle:e=>Y(`POST`,`/api/sessions/${encodeURIComponent(e)}/auto-title`),regenerateTitle:(e,t={})=>Y(`POST`,`/api/sessions/${encodeURIComponent(e)}/regenerate-title`,t),revertAutoTitle:e=>Y(`POST`,`/api/sessions/${encodeURIComponent(e)}/auto-title/revert`),listAutoRules:()=>J(`/api/auto-collections/rules`),createAutoRule:e=>Y(`POST`,`/api/auto-collections/rules`,e),patchAutoRule:(e,t)=>Y(`PATCH`,`/api/auto-collections/rules/${encodeURIComponent(e)}`,t),deleteAutoRule:e=>Y(`DELETE`,`/api/auto-collections/rules/${encodeURIComponent(e)}`),listAutoSuggestions:(e=!1)=>J(`/api/auto-collections/suggestions${e?`?dismissed=1`:``}`),acceptAutoSuggestion:e=>Y(`POST`,`/api/auto-collections/suggestions/${encodeURIComponent(e)}/accept`),dismissAutoSuggestion:e=>Y(`POST`,`/api/auto-collections/suggestions/${encodeURIComponent(e)}/dismiss`),detectAutoSuggestionsNow:()=>Y(`POST`,`/api/auto-collections/detect`),previewAutoSuggestion:(e,t=3)=>J(`/api/auto-collections/suggestions/${encodeURIComponent(e)}/preview?limit=${t}`),listAutoCollectionIds:()=>J(`/api/auto-collections/parents`),healthScores:()=>J(`/api/stats/health`),healthScore:e=>J(`/api/stats/health/${e}`),getVerificationConfig:()=>J(`/api/config/verification`),setVerificationConfig:e=>Y(`PUT`,`/api/config/verification`,{enabled:e}),getVerificationDetail:e=>J(`/api/sessions/${encodeURIComponent(e)}/verification`),listThreads:(e=!1)=>J(`/api/threads${e?`?archived=1`:``}`),getThread:e=>J(`/api/threads/${encodeURIComponent(e)}`),createThread:e=>Y(`POST`,`/api/threads`,e),patchThread:(e,t)=>Y(`PATCH`,`/api/threads/${encodeURIComponent(e)}`,t),listThreadFolders:()=>J(`/api/thread-folders`),createThreadFolder:e=>Y(`POST`,`/api/thread-folders`,{name:e.name,parent_folder_id:e.parentFolderId??null,project_scope:e.projectScope??null}),patchThreadFolder:(e,t)=>Y(`PATCH`,`/api/thread-folders/${encodeURIComponent(e)}`,t),deleteThreadFolder:e=>Y(`DELETE`,`/api/thread-folders/${encodeURIComponent(e)}`),reorderThreadFolders:e=>Y(`POST`,`/api/thread-folders/reorder`,{parent_folder_id:e.parentFolderId,project_scope:e.projectScope,ordered_ids:e.orderedIds}),addSessionToThread:(e,t)=>Y(`POST`,`/api/threads/${encodeURIComponent(e)}/sessions`,t),removeSessionFromThread:(e,t)=>Y(`DELETE`,`/api/threads/${encodeURIComponent(e)}/sessions/${encodeURIComponent(t)}`),setThreadSessionParent:(e,t,n)=>Y(`PATCH`,`/api/threads/${encodeURIComponent(e)}/sessions/${encodeURIComponent(t)}`,{parentSessionId:n}),threadsForSession:e=>J(`/api/sessions/${encodeURIComponent(e)}/threads`),threadTitlesPreflight:e=>J(`/api/threads/${encodeURIComponent(e)}/titles/preflight`),startThreadTitlesJob:(e,t)=>Y(`POST`,`/api/threads/${encodeURIComponent(e)}/titles/generate`,{force:t}),cancelJob:e=>Y(`DELETE`,`/api/jobs/${encodeURIComponent(e)}`),listSuggestions:(e={})=>{let t=new URLSearchParams;e.status&&t.set(`status`,e.status),e.linkType&&t.set(`type`,e.linkType),e.inferredBy&&t.set(`inferred_by`,e.inferredBy),e.sourceSessionId&&t.set(`source_id`,e.sourceSessionId),e.targetSessionId&&t.set(`target_id`,e.targetSessionId),typeof e.limit==`number`&&t.set(`limit`,String(e.limit));let n=t.toString();return J(n?`/api/links/suggestions?${n}`:`/api/links/suggestions`)},decideSuggestion:(e,t)=>Y(`PATCH`,`/api/links/suggestions/${e}`,{status:t}),bulkDecideSuggestions:(e,t)=>Y(`POST`,`/api/links/suggestions/bulk-decide`,{ids:e,status:t}),sessionLinks:e=>J(`/api/sessions/${encodeURIComponent(e)}/links?type=wiki_link`),createWikiLink:(e,t,n={created_via:`context_menu`})=>Y(`POST`,`/api/links`,{source_session_id:e,target_session_id:t,link_type:`wiki_link`,evidence:n}),removeLink:e=>Y(`DELETE`,`/api/links/${e}`),listBugPatterns:(e={})=>{let t=new URLSearchParams;typeof e.minCount==`number`&&t.set(`min_count`,String(e.minCount)),e.status&&t.set(`status`,e.status),e.project&&t.set(`project`,e.project),typeof e.limit==`number`&&t.set(`limit`,String(e.limit)),typeof e.offset==`number`&&t.set(`offset`,String(e.offset));let n=t.toString();return J(n?`/api/bug-patterns?${n}`:`/api/bug-patterns`)},getBugPattern:e=>J(`/api/bug-patterns/${encodeURIComponent(e)}`),resolveBugPattern:(e,t,n)=>Y(`POST`,`/api/bug-patterns/${encodeURIComponent(e)}/resolve`,{resolved_in_session_id:t,fix_summary:n}),splitBugPattern:(e,t)=>Y(`POST`,`/api/bug-patterns/${encodeURIComponent(e)}/split`,{member_session_ids:t}),getBugPatternsSetupStatus:()=>J(`/api/bug-patterns/setup-status`),bugSignatures:(e,t=100)=>{let n=new URLSearchParams;return e&&n.set(`project`,e),n.set(`limit`,String(t)),J(`/api/bug-signatures?${n.toString()}`)},resolveBugSignature:(e,t)=>Y(`POST`,`/api/bug-signatures/${encodeURIComponent(e)}/resolve`,t),unresolveBugSignature:e=>Y(`POST`,`/api/bug-signatures/${encodeURIComponent(e)}/unresolve`),bugPatternsGraph:(e,t=!0)=>{let n=new URLSearchParams;e&&n.set(`project`,e),t||n.set(`include_resolved`,`0`);let r=n.toString();return J(`/api/bug-patterns/graph${r?`?${r}`:``}`)},extractOutputsPreflight:e=>dt(`/api/extract-outputs/preflight`,e),extractOutputsRun:e=>dt(`/api/extract-outputs/run`,{preflight_token:e}),extractOutputsCancel:e=>ft(`/api/extract-outputs/jobs/${encodeURIComponent(e)}`),extractOutputsJobSnapshot:e=>J(`/api/extract-outputs/jobs/${encodeURIComponent(e)}`),launcherBudget:()=>J(`/api/extract-outputs/budget`),synthesizePreflight:e=>dt(`/api/bug-patterns/synthesize/preflight`,e),synthesizeRun:e=>dt(`/api/bug-patterns/synthesize/run`,{preflight_token:e}),synthesizeJobSnapshot:e=>J(`/api/bug-patterns/synthesize/jobs/${encodeURIComponent(e)}`),synthesizeCancel:e=>ft(`/api/bug-patterns/synthesize/jobs/${encodeURIComponent(e)}`),threadScanPreflight:e=>dt(`/api/threads/scan/preflight`,e),threadScanApply:e=>dt(`/api/threads/scan/apply`,e),threadScanJobSnapshot:e=>J(`/api/threads/scan/jobs/${encodeURIComponent(e)}`),threadScanCancel:e=>ft(`/api/threads/scan/jobs/${encodeURIComponent(e)}`),syncActivePreflight:e=>Y(`POST`,`/api/threads/sync-active`,{...e,mode:`preflight`}),syncActiveApply:e=>Y(`POST`,`/api/threads/sync-active`,{...e,mode:`apply`}),listMacroRepos:()=>J(`/api/macro-repos`),createMacroRepo:e=>Y(`POST`,`/api/macro-repos`,e),patchMacroRepo:(e,t)=>Y(`PATCH`,`/api/macro-repos/${e}`,t),deleteMacroRepo:e=>Y(`DELETE`,`/api/macro-repos/${e}`),addMacroRepoMember:(e,t)=>Y(`POST`,`/api/macro-repos/${e}/members`,{project_id:t}),removeMacroRepoMember:(e,t)=>Y(`DELETE`,`/api/macro-repos/${e}/members/${t}`),listBugSynthesisResults:e=>{let t=new URLSearchParams;e?.scope&&t.set(`scope`,e.scope),e?.target_id&&t.set(`target_id`,e.target_id),e?.limit&&t.set(`limit`,String(e.limit));let n=t.toString();return J(`/api/bug-synthesis${n?`?${n}`:``}`)},bugSynthesisCounts:e=>J(`/api/bug-synthesis/counts?scope=${e}`),getBugSynthesisResult:e=>J(`/api/bug-synthesis/${e}`),deleteBugSynthesisResult:e=>Y(`DELETE`,`/api/bug-synthesis/${e}`)};async function dt(e,t){let n=await fetch(e,{method:`POST`,headers:ut({"content-type":`application/json`,"x-recall-launcher":`1`}),body:JSON.stringify(t)});if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`${n.status} ${n.statusText}: ${e.slice(0,300)}`)}return await n.json()}async function ft(e){let t=await fetch(e,{method:`DELETE`,headers:ut({"x-recall-launcher":`1`})});if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`${t.status} ${t.statusText}: ${e.slice(0,300)}`)}return await t.json()}function pt(e){return e?e.slice(0,8):``}function mt(e,t){if(!e)return``;let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:n.slice(0,t-1)+`…`}function ht(e){if(!e)return``;let t=new Date(e).getTime();if(Number.isNaN(t))return``;let n=Date.now()-t,r=Math.floor(n/1e3);if(r<60)return`${r}s ago`;let i=Math.floor(r/60);if(i<60)return`${i}m ago`;let a=Math.floor(i/60);if(a<24)return`${a}h ago`;let o=Math.floor(a/24);if(o<30)return`${o}d ago`;let s=Math.floor(o/30);return s<12?`${s}mo ago`:`${Math.floor(o/365)}y ago`}function gt(e){return e==null?`0`:e.toLocaleString()}function _t(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function vt(e){let t=e.split(/\s+/).filter(e=>e.length>1).map(_t);return t.length===0?null:RegExp(`(${t.join(`|`)})`,`gi`)}function yt(){let[e,t]=(0,U.useState)(null),n=(0,U.useRef)(null);return(0,U.useEffect)(()=>{let e=new EventSource(`/api/autopilot/events`);return n.current=e,e.addEventListener(`state`,e=>{try{t(JSON.parse(e.data))}catch(e){console.error(`autopilot state parse failed`,e)}}),e.onerror=()=>{},()=>e.close()},[]),e}function bt(){return K({queryKey:[`auto-tag-config`],queryFn:()=>X.getAutoTagConfig()})}function xt(){let e=G();return q({mutationFn:e=>X.putAutoTagConfig(e),onSuccess:()=>void e.invalidateQueries({queryKey:[`auto-tag-config`]})})}function St(){let e=bt(),t=yt();return!e.data?.autopilot||!t||t.status===`idle`?null:t.status===`error`?(0,W.jsx)(`div`,{className:`text-[11px] px-2 py-1 rounded-full border border-role-user/40 bg-role-user/10 text-role-user`,title:t.lastError??`autopilot error`,children:`⚠ autopilot error`}):(0,W.jsxs)(`div`,{className:`text-[11px] px-2 py-1 rounded-full border border-accent/40 bg-accent/10 text-accent flex items-center gap-1.5`,title:`Autopilot is tagging untagged sessions in the background.`,children:[(0,W.jsx)(`span`,{className:`inline-block w-1.5 h-1.5 rounded-full bg-accent animate-pulse`}),`tagging `,t.processed,`/`,t.total]})}var Ct=[{value:1,label:`bad`,emoji:`😡`},{value:2,label:`meh`,emoji:`😕`},{value:3,label:`ok`,emoji:`😐`},{value:4,label:`good`,emoji:`🙂`},{value:5,label:`great`,emoji:`🤩`}];function wt(){let[e,t]=(0,U.useState)(!1),[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(`idle`),[c,l]=(0,U.useState)(null);(0,U.useEffect)(()=>{function n(n){n.key===`Escape`&&e&&t(!1)}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e]);function u(){r(null),a(``),s(`idle`),l(null)}async function d(){if(n!==null){s(`sending`),l(null);try{let e=await fetch(`/api/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,...ut()},body:JSON.stringify({score:n,comment:i.trim()||null,trigger_kind:`manual`})});if(e.ok){s(`sent`),setTimeout(()=>{t(!1),u()},1400);return}let r=await e.json().catch(()=>({}));e.status===429?l(r.detail??`You sent feedback recently. Try again later.`):l(r.detail??r.error??`Failed (${e.status})`),s(`error`)}catch(e){l(e instanceof Error?e.message:`network error`),s(`error`)}}}return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors text-accent border-accent/40 hover:bg-accent hover:text-bg hover:border-accent`,"aria-label":`Send feedback`,title:`Send feedback to the Claude Recall team`,children:`💬 Feedback`}),e&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-end justify-center bg-black/40 p-4 backdrop-blur-sm sm:items-center`,onClick:()=>{t(!1),u()},children:(0,W.jsxs)(`div`,{className:`w-full max-w-md rounded-2xl bg-white p-5 shadow-2xl dark:bg-neutral-900`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`mb-3 flex items-start justify-between`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-neutral-900 dark:text-neutral-100`,children:`Tell us how it's going`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-neutral-500 dark:text-neutral-400`,children:`Sent to the Claude Recall team. Pro users are attributed automatically.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{t(!1),u()},className:`text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-200`,"aria-label":`Close`,children:`×`})]}),(0,W.jsx)(`div`,{className:`mb-3 flex justify-between gap-1`,children:Ct.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e.value),className:`flex flex-1 flex-col items-center rounded-lg border px-2 py-2 text-xs transition ${n===e.value?`border-accent bg-accent/15 text-accent`:`border-line text-fg-dim hover:border-accent/60`}`,"aria-pressed":n===e.value,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:e.emoji}),(0,W.jsx)(`span`,{className:`mt-1`,children:e.label})]},e.value))}),(0,W.jsx)(`textarea`,{value:i,onChange:e=>a(e.target.value),placeholder:n!==null&&n<=2?`What is the biggest pain point?`:`Anything you'd add? (optional)`,maxLength:2e3,rows:4,className:`w-full resize-none rounded-lg border border-line bg-bg-elevated px-3 py-2 text-sm text-fg placeholder-fg-muted focus:border-accent focus:outline-none focus:ring-1 focus:ring-accent`}),c&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-red-600 dark:text-red-400`,children:c}),o===`sent`&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-emerald-600 dark:text-emerald-400`,children:`Thanks. Your feedback landed.`}),(0,W.jsxs)(`div`,{className:`mt-3 flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-xs text-neutral-400`,children:[i.length,`/2000`]}),(0,W.jsx)(`button`,{type:`button`,onClick:d,disabled:n===null||o===`sending`||o===`sent`,className:`rounded-lg bg-accent px-4 py-2 text-sm font-medium text-bg shadow-sm hover:brightness-110 disabled:cursor-not-allowed disabled:opacity-50`,children:o===`sending`?`Sending…`:o===`sent`?`Sent`:`Send feedback`})]})]})})]})}function Tt(){return K({queryKey:[`license-status`],queryFn:async()=>{let e=await fetch(`/api/license/status`,{headers:ut()});if(!e.ok)throw Error(`${e.status}: ${await e.text()}`);return await e.json()},staleTime:6e4})}var Et=`https://clauderecall.com/pricing`;function Dt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function Ot(){let{data:e,isLoading:t}=Tt(),[n,r]=(0,U.useState)(!1),i=(0,U.useRef)(null);if((0,U.useEffect)(()=>{if(!n)return;let e=e=>{i.current&&(i.current.contains(e.target)||r(!1))},t=e=>{e.key===`Escape`&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[n]),t||!e)return null;if(e.tier===`pro`){let t=Dt(e.activated_at);return(0,W.jsxs)(`div`,{className:`relative`,ref:i,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`text-[11px] font-bold tracking-wide px-2 py-0.5 rounded-md bg-accent text-bg hover:brightness-110 transition`,title:`Pro license active. Click for details.`,"aria-haspopup":`dialog`,"aria-expanded":n,children:[`PRO`,e.test_mode&&(0,W.jsx)(`span`,{className:`ml-1 font-medium opacity-80`,children:`· TEST`})]}),n&&(0,W.jsxs)(`div`,{role:`dialog`,className:`absolute right-0 top-full mt-2 w-72 z-50 rounded-lg border border-line bg-bg-elevated shadow-lg p-3 text-xs`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsx)(`div`,{className:`text-[11px] font-bold tracking-wide px-1.5 py-0.5 rounded bg-accent text-bg`,children:`PRO`}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Lifetime`})]}),(0,W.jsxs)(`dl`,{className:`space-y-1.5`,children:[e.key_short&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Key`}),(0,W.jsx)(`dd`,{className:`font-mono text-fg truncate`,children:e.key_short})]}),e.customer_email&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Email`}),(0,W.jsx)(`dd`,{className:`text-fg truncate`,children:e.customer_email})]}),t&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Activated`}),(0,W.jsx)(`dd`,{className:`text-fg`,children:t})]}),e.test_mode&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Mode`}),(0,W.jsx)(`dd`,{className:`text-accent`,children:`Test mode`})]})]})]})]})}return(0,W.jsxs)(`a`,{href:Et,target:`_blank`,rel:`noreferrer noopener`,className:`text-[11px] font-medium px-2 py-0.5 rounded-md border border-line text-fg-dim hover:text-fg hover:border-accent/60 transition`,title:`Free tier. Click to view Pro pricing.`,children:[`Free `,(0,W.jsx)(`span`,{className:`text-accent`,children:`· Upgrade`})]})}var kt=new Set,At=[],jt=1;function Mt(){for(let e of kt)e([...At])}function Z(e){let t=e.id??`t-${jt++}`,n={id:t,message:e.message,tone:e.tone??`info`,duration:e.duration??4e3,action:e.action};return At=[...At.filter(e=>e.id!==t),n],Mt(),n.duration>0&&setTimeout(()=>Nt(t),n.duration),t}function Nt(e){At=At.filter(t=>t.id!==e),Mt()}function Pt(){let[e,t]=(0,U.useState)([]);return(0,U.useEffect)(()=>(kt.add(t),()=>{kt.delete(t)}),[]),e.length===0?null:(0,W.jsx)(`div`,{className:`fixed bottom-4 right-4 z-50 flex flex-col gap-2 items-end max-w-[calc(100vw-2rem)]`,children:e.map(e=>(0,W.jsxs)(`div`,{className:`min-w-[260px] max-w-[420px] rounded-lg border shadow-lg px-3 py-2 text-xs flex items-start gap-3 ${e.tone===`error`?`bg-bg-elevated border-role-user/60 text-fg`:e.tone===`success`?`bg-bg-elevated border-accent/60 text-fg`:`bg-bg-elevated border-line text-fg`}`,children:[(0,W.jsx)(`div`,{className:`flex-1 break-words`,children:e.message}),e.action&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{e.action.onClick(),Nt(e.id)},className:`text-accent hover:underline whitespace-nowrap`,children:e.action.label}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>Nt(e.id),className:`text-fg-muted hover:text-fg leading-none`,title:`dismiss`,children:`×`})]},e.id))})}var Ft=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20width='64'%20height='64'%20role='img'%20aria-label='Claude%20Recall'%3e%3ctitle%3eClaude%20Recall%20—%20Scrollback%20mark%20(dark%20bg)%3c/title%3e%3cg%20stroke='%23e7e9ee'%20stroke-width='3'%20stroke-linecap='round'%20fill='none'%3e%3cline%20x1='14'%20y1='16'%20x2='46'%20y2='16'/%3e%3cline%20x1='14'%20y1='24'%20x2='38'%20y2='24'/%3e%3c/g%3e%3cline%20x1='10'%20y1='32'%20x2='54'%20y2='32'%20stroke='%23f97316'%20stroke-width='5'%20stroke-linecap='round'/%3e%3cg%20stroke='%23e7e9ee'%20stroke-width='3'%20stroke-linecap='round'%20fill='none'%3e%3cline%20x1='14'%20y1='40'%20x2='42'%20y2='40'/%3e%3cline%20x1='14'%20y1='48'%20x2='36'%20y2='48'/%3e%3c/g%3e%3c/svg%3e`;function It({query:e,onQueryChange:t,matchCount:n,scope:r,onScopeChange:i,canScope:a,projectName:o,onOpenHelp:s,helpActive:c,onOpenStats:l,statsActive:u,onOpenThreads:d,threadsActive:f,onOpenGraph:p,graphActive:m,onOpenSuggestions:h,suggestionsActive:g,onOpenPatterns:_,patternsActive:v,onOpenShare:y,onGoHome:b,semanticMode:x,onSemanticModeChange:S,semanticAvailable:C}){let w=K({queryKey:[`stats`],queryFn:X.stats,refetchInterval:3e4,refetchIntervalInBackground:!1,staleTime:1e4}).data,T=G(),[E,D]=(0,U.useState)(!1),O=async()=>{if(!E){D(!0);try{await T.invalidateQueries(),await T.refetchQueries({type:`active`}),Z({message:`Refreshed all data from the daemon`,tone:`success`,duration:1500})}catch(e){Z({message:`Refresh failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}finally{D(!1)}}};return(0,W.jsxs)(`header`,{className:`flex items-center gap-5 px-5 py-3 border-b border-line bg-bg shrink-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:b,className:`flex items-center gap-2.5 text-left hover:opacity-80 transition-opacity`,title:`Home — back to project list`,"aria-label":`Go to home`,children:[(0,W.jsx)(`img`,{src:Ft,alt:``,className:`h-9 w-9 rounded-md shrink-0`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-base font-bold leading-none flex items-center gap-2`,children:(0,W.jsxs)(`span`,{children:[`Claude `,(0,W.jsx)(`span`,{className:`text-accent`,children:`Recall`})]})}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted mt-1`,children:`local · offline · yours`})]})]}),(0,W.jsx)(Ot,{}),(0,W.jsx)(Lt,{})]}),w&&(0,W.jsxs)(`div`,{className:`hidden md:flex items-center gap-5 text-xs text-fg-dim`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:gt(w.projects)}),` projects`]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:gt(w.sessions)}),` sessions`]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:gt(w.messages)}),` messages`]})]}),(0,W.jsxs)(`div`,{className:`flex-1 flex items-center justify-end gap-3`,children:[a&&e&&(0,W.jsxs)(`div`,{className:`flex items-center text-xs border border-line rounded-lg overflow-hidden`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(`all`),className:`px-3 py-1.5 transition-colors `+(r===`all`?`bg-accent text-bg font-medium`:`bg-bg-elevated text-fg-dim hover:text-fg`),children:`All projects`}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(`project`),className:`px-3 py-1.5 transition-colors border-l border-line `+(r===`project`?`bg-accent text-bg font-medium`:`bg-bg-elevated text-fg-dim hover:text-fg`),title:o?`search only within ${o}`:void 0,children:[`In `,o??`project`]})]}),(0,W.jsxs)(`div`,{className:`relative w-full max-w-xl`,children:[(0,W.jsx)(`input`,{type:`search`,placeholder:`Search every session…`,value:e,onChange:e=>t(e.target.value),className:`w-full bg-bg-elevated border border-line rounded-lg pl-10 pr-14 py-2 text-sm focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent placeholder:text-fg-muted`}),(0,W.jsxs)(`svg`,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-fg-muted`,fill:`none`,stroke:`currentColor`,strokeWidth:2,viewBox:`0 0 24 24`,children:[(0,W.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,W.jsx)(`path`,{d:`m21 21-4.3-4.3`})]}),!e&&(0,W.jsx)(`kbd`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-[10px] font-mono text-fg-muted border border-line rounded px-1.5 py-0.5`,children:`/`}),e&&n!=null&&(0,W.jsxs)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-xs text-fg-muted`,children:[n,` `,n===1?`match`:`matches`]})]}),C&&S&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>S(!x),className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(x?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Toggle semantic search — also matches sessions by AI-generated summary + keywords (v0.11)`,children:`Semantic`}),(0,W.jsx)(St,{}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void O(),disabled:E,className:`text-fg-muted hover:text-fg text-xs px-2 py-1 border border-line rounded-md disabled:opacity-60 disabled:cursor-wait`,title:`refresh all data from the daemon`,children:(0,W.jsx)(`span`,{className:`inline-block `+(E?`animate-spin`:`transition-transform`),"aria-hidden":`true`,children:`↻`})}),(0,W.jsx)(`button`,{type:`button`,onClick:d,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(f?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Threads — group sessions by intent (planning + children)`,children:`🧵 Threads`}),(0,W.jsx)(`button`,{type:`button`,onClick:p,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(m?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Cognitive Graph — Galaxy + Focus views over project sessions (v0.17)`,children:`🌌 Graph`}),h&&(0,W.jsx)(`button`,{type:`button`,onClick:h,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(g?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Suggestions Queue — review citation/skill/wiki suggestions inferred by L1–L4 (v0.18 Phase F)`,children:`📋 Queue`}),_&&(0,W.jsx)(`button`,{type:`button`,onClick:_,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(v?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Bug Patterns — recurring bugs across sessions, with linked fixes (v0.20 Phase H)`,children:`🐛 Patterns`}),(0,W.jsx)(`button`,{type:`button`,onClick:l,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(u?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Cost & token dashboard (v0.10a)`,children:`📊 Stats`}),(0,W.jsx)(wt,{}),y&&(0,W.jsx)(`button`,{type:`button`,onClick:y,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors text-fg-dim hover:text-fg border-line hover:border-accent/60`,title:`Share — pick what to share (Stats, Thread, Patterns, Session)`,children:`↗ Share`}),(0,W.jsx)(`button`,{type:`button`,onClick:s,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(c?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`open Command Center — docs, CLI reference, keyboard shortcuts (press ?)`,children:`Help`})]})]})}function Lt(){let{data:e}=K({queryKey:[`health`],queryFn:()=>X.health(),staleTime:300*1e3});return e?.version?(0,W.jsxs)(`span`,{className:`text-[10px] font-mono text-fg-muted border border-line rounded px-1.5 py-0.5 leading-none`,title:`Claude Recall daemon version`,children:[`v`,e.version]}):null}var Rt=[{kind:`stats`,emoji:`📊`,name:`Stats`,blurb:`Activity for a time range — cost, top model, top project, sessions.`,status:`live`},{kind:`thread`,emoji:`🧵`,name:`Thread`,blurb:`Multi-session story — N sessions, total cost, project, span.`,status:`live`},{kind:`patterns`,emoji:`🐛`,name:`Patterns`,blurb:`Recurring bug clusters — top 3 by occurrence, resolved rate.`,status:`live`},{kind:`graph`,emoji:`🌐`,name:`Cog-graph`,blurb:`Snapshot of your skill / topic graph. Only Claude Recall has this.`,status:`soon`},{kind:`session`,emoji:`🖥️`,name:`Session`,blurb:`One-session receipt — prompt, cost, files, model.`,status:`live`}];function zt({onPick:e,onClose:t}){return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[600px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted mb-4`,children:`Pick what to share. Each option produces a downloadable card with your handle and the Claude Recall mark.`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 gap-2`,children:Rt.map(t=>{let n=t.status!==`live`;return(0,W.jsxs)(`button`,{type:`button`,disabled:n,onClick:()=>e(t.kind),className:`flex items-start gap-3 text-left p-3 rounded border transition-colors `+(n?`border-line bg-bg/40 opacity-55 cursor-not-allowed`:`border-line hover:border-accent hover:bg-accent/5`),children:[(0,W.jsx)(`span`,{className:`text-2xl leading-none mt-0.5`,children:t.emoji}),(0,W.jsxs)(`span`,{className:`flex-1`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm font-semibold text-fg`,children:t.name}),n&&(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-widest text-fg-muted border border-line rounded px-1 py-0.5`,children:`coming soon`})]}),(0,W.jsx)(`span`,{className:`block text-xs text-fg-muted mt-0.5`,children:t.blurb})]})]},t.kind)})})]})})}async function Bt(e){let t=new File([e.blob],e.fileName,{type:`image/png`}),n=navigator;if(typeof navigator.share==`function`&&n.canShare?.({files:[t]}))try{return await navigator.share({title:e.title,text:e.text,url:e.url,files:[t]}),`shared`}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return`cancelled`}if(typeof URL.createObjectURL==`function`){let t=URL.createObjectURL(e.blob),n=document.createElement(`a`);return n.href=t,n.download=e.fileName,n.click(),URL.revokeObjectURL(t),`download`}return`unsupported`}function Vt(){return typeof navigator.share==`function`}function Ht(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}async function Ut(e){try{let t=window.ClipboardItem;if(!t||!navigator.clipboard?.write)return!1;let n=new t({"image/png":e});return await navigator.clipboard.write([n]),!0}catch{return!1}}var Wt=`https://clauderecall.com`;function Gt(){return typeof window<`u`&&window.RECALL_SHARE_API?window.RECALL_SHARE_API.replace(/\/+$/,``):Wt}async function Kt(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`blob → base64 failed`)),r.onload=()=>{let e=r.result;if(typeof e!=`string`){n(Error(`unexpected reader result`));return}let i=e.indexOf(`,`);t(i>=0?e.slice(i+1):e)},r.readAsDataURL(e)})}async function qt(e){let t=await Kt(e.blob),n=await fetch(`${Gt()}/api/cards`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:e.kind,title:e.title,description:e.description,width:e.width??1080,height:e.height??1350,pngBase64:t})});if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`upload failed (${n.status}): ${e||n.statusText}`)}let r=await n.json();return{id:r.id,url:r.url,imageUrl:r.image_url,expiresAt:r.expires_at}}function Jt(e,t,n){let r=encodeURIComponent(t),i=encodeURIComponent(n);switch(e){case`x`:return`https://twitter.com/intent/tweet?text=${i}&url=${r}`;case`linkedin`:return`https://www.linkedin.com/sharing/share-offsite/?url=${r}`;case`reddit`:return`https://www.reddit.com/submit?url=${r}&title=${i}`;case`facebook`:return`https://www.facebook.com/sharer/sharer.php?u=${r}`;case`threads`:return`https://www.threads.net/intent/post?text=${i}%20${r}`;case`whatsapp`:return`https://wa.me/?text=${i}%20${r}`}}var Yt=[{key:`x`,label:`X`,emoji:`𝕏`},{key:`linkedin`,label:`LinkedIn`,emoji:`in`},{key:`reddit`,label:`Reddit`,emoji:`r/`},{key:`facebook`,label:`Facebook`,emoji:`f`},{key:`threads`,label:`Threads`,emoji:`@`},{key:`whatsapp`,label:`WhatsApp`,emoji:`✉`}];function Xt({getBlob:e,kind:t,title:n,description:r,caption:i,disabled:a}){let[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(null),u=(0,U.useCallback)(async()=>{if(!o){s(!0);try{let i=await e();if(!i){Z({message:`Card not ready yet — wait for the preview.`,tone:`error`});return}let a=await qt({kind:t,title:n,description:r,blob:i});l(a);try{await navigator.clipboard.writeText(a.url),Z({message:`Link copied — preview ready on social platforms`,tone:`success`})}catch{Z({message:`Link ready (clipboard not available)`,tone:`info`})}}catch(e){console.error(`[SocialShareRow] upload failed:`,e),Z({message:`Could not create shareable link: `+(e instanceof Error?e.message:`unknown error`),tone:`error`})}finally{s(!1)}}},[e,t,n,r,o]),d=(0,U.useCallback)(async()=>{if(c)try{await navigator.clipboard.writeText(c.url),Z({message:`Link copied`,tone:`success`})}catch{Z({message:`Clipboard not available`,tone:`error`})}},[c]);return c?(0,W.jsxs)(`div`,{className:`mt-3 border border-line rounded p-3 bg-bg/40 space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] uppercase tracking-wider text-fg-muted`,children:[(0,W.jsx)(`span`,{children:`shareable link`}),(0,W.jsxs)(`span`,{className:`ml-auto text-fg-dim normal-case tracking-normal`,children:[`expires `,new Date(c.expiresAt).toLocaleDateString(`en-US`)]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void d(),className:`w-full text-left text-xs text-accent font-mono break-all hover:underline`,title:`Click to copy`,children:c.url}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2 pt-2`,children:Yt.map(e=>(0,W.jsxs)(`a`,{href:Jt(e.key,c.url,i),target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center justify-center gap-1.5 px-2 py-2 rounded border border-line text-fg-muted text-xs font-medium hover:text-fg hover:border-accent/60 transition-colors`,children:[(0,W.jsx)(`span`,{className:`text-sm leading-none`,children:e.emoji}),(0,W.jsx)(`span`,{children:e.label})]},e.key))}),(0,W.jsx)(`p`,{className:`text-[10px] text-fg-muted pt-1`,children:`TikTok and Instagram have no web share intent — use Save image and upload manually there.`})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>void u(),disabled:a||o,className:`w-full px-4 py-2 mt-3 rounded border border-line text-fg-muted text-xs font-medium hover:text-fg hover:border-accent/60 transition-colors disabled:opacity-50`,title:`Upload the card and get a public link with Open Graph preview`,children:o?`Generating link…`:`🔗 Get shareable link (with social preview)`})}var Zt=`modulepreload`,Qt=function(e,t){return new URL(e,t).href},$t={},en=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Qt(t,n),t in $t)return;$t[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Zt,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},tn=[{key:`7d`,label:`Last 7 days`},{key:`30d`,label:`Last 30 days`},{key:`all`,label:`All time`}],nn=[/^~\//,/^\/Users\//,/^\/home\//,/^[A-Za-z]:\\/];function rn(e){return e.replace(/\x1b\[[0-9;]*[A-Za-z]/g,``).replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,``).trim().slice(0,120)}function an(e){if(!e)return``;let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n>=0?t.slice(n+1):t}function on(e){return e===`7d`?`Last 7 days`:e===`30d`?`Last 30 days`:`All time`}function sn({initialRange:e=`30d`,onClose:t}){let[n,r]=(0,U.useState)(e),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(!0),[c,l]=(0,U.useState)(null),u=(0,U.useRef)(null),d=(0,U.useRef)(),f=K({queryKey:[`stats-overview`,n],queryFn:()=>X.getOverviewStats(n),staleTime:6e4}),p=(0,U.useMemo)(()=>{let e=f.data,t=e?.display?.dollars??`$—`,r=e?.totalSessions??0,a=(e?.inputTokens??0)+(e?.outputTokens??0),o=e?.cacheReadTokens??0,s=e?.byModel?.[0]?.modelLabel??null,c=null;if(e?.topRepos&&e.topRepos.length>0){let t=e.topRepos.reduce((e,t)=>e+(t.cost?.cents??0),0)||1,n=e.topRepos[0],r=an(n.project);c=nn.some(e=>e.test(r))?null:{name:r||`unknown`,sharePct:Math.round((n.cost?.cents??0)/t*100)}}let l=(e?.daily??[]).filter(e=>e.tokens>0).length;return{rangeLabel:on(n),scopeLabel:`All projects`,costDollars:t,totalSessions:r,workingTokens:a,cachedTokens:o,topModel:s,topProject:c,peakHours:null,activeDays:l,verdict:rn(i)}},[f.data,n,i]),m=(0,U.useCallback)(async()=>{s(!0),l(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-Dk6wV6ZU.js`);return{default:e}},[],import.meta.url)).default,t=await en(()=>import(`./stats-BSwqSiFU.js`),__vite__mapDeps([0,1]),import.meta.url),[n,r,i,a]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),o=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:r,weight:700,style:`normal`},{name:`JetBrains Mono`,data:i,weight:400,style:`normal`},{name:`JetBrains Mono`,data:a,weight:700,style:`normal`}],c=await e(t.render(p),{width:1080,height:1350,fonts:o}),d=u.current;if(!d)return;d.width=1080,d.height=1350;let f=d.getContext(`2d`);if(!f)return;let m=new Image;m.onload=()=>{f.drawImage(m,0,0),s(!1)},m.onerror=()=>{l(`Failed to render card image`),s(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(c)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[ShareWrappedModal] renderPreview failed:`,e),l(t),s(!1)}},[p]);(0,U.useEffect)(()=>(clearTimeout(d.current),d.current=setTimeout(m,300),()=>clearTimeout(d.current)),[m]);let h=`claude-recall-stats-${n}.png`,g=(0,U.useCallback)(e=>{let t=u.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),_=(0,U.useCallback)(()=>new Promise(e=>{let t=u.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),v=(0,U.useCallback)(()=>{g(async e=>{let t=await Bt({fileName:h,blob:e,title:`Claude Recall — stats`,text:`My Claude Code stats — ${on(n)} via Claude Recall`,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[g,h,n]),y=(0,U.useCallback)(()=>{g(e=>{Ht(e,h),Z({message:`Saved to Downloads`,tone:`success`})})},[g,h]),b=(0,U.useCallback)(()=>{g(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[g]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Stats`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:u,className:`w-full h-full`,style:{display:o||c?`none`:`block`}}),o&&!c&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),c&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:c})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`range`}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:tn.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.key),className:`text-xs px-2 py-1.5 rounded border transition-colors `+(n===e.key?`border-accent bg-accent/10 text-accent font-semibold`:`border-line text-fg-muted hover:text-fg`),children:e.label},e.key))})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:v,disabled:o,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:y,disabled:o,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:b,disabled:o,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:_,kind:`stats`,title:`Claude Code stats — ${on(n)}`,description:`${p.costDollars} on ${p.totalSessions.toLocaleString(`en-US`)} sessions in ${p.scopeLabel.toLowerCase()}.`,caption:`My Claude Code stats — ${p.costDollars} via Claude Recall`,disabled:o})]})})}var cn=[/^~\//,/^\/Users\//,/^\/home\//,/^[A-Za-z]:\\/];function ln(e){if(!e)return``;let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n>=0?t.slice(n+1):t}function un(e,t=80){if(!e)return null;let n=e.replace(/\x1b\[[0-9;]*[A-Za-z]/g,``).trim();if(!n||cn.some(e=>e.test(n)))return null;let r=n.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,``).replace(/\s+/g,` `).trim();return r?r.length<=t?r:r.slice(0,t-1).trimEnd()+`…`:null}function dn(e){for(let t of[e.alias,e.auto_title,e.first_user_message]){let e=un(t,70);if(e)return e}return e.session_id.slice(0,8)}function fn({threadId:e,onClose:t}){let[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(!0),[o,s]=(0,U.useState)(null),c=(0,U.useRef)(null),l=(0,U.useRef)(),u=K({queryKey:[`thread-detail`,e],queryFn:()=>X.getThread(e),staleTime:3e4}),d=at({queries:(0,U.useMemo)(()=>(u.data?.thread?.edges??[]).slice(0,24).map(e=>e.session_id),[u.data]).map(e=>({queryKey:[`session-stats`,e],queryFn:()=>X.getSessionStats(e),staleTime:6e4}))}).reduce((e,t)=>e+(t.data?.cost?.cents??0),0),f=d>0?`$${(d/100).toLocaleString(`en-US`,{minimumFractionDigits:2,maximumFractionDigits:2})}`:null,p=(0,U.useMemo)(()=>{let e=u.data?.thread,t=e?.edges??[],r=new Set,i=[];for(let e of t)r.has(e.session_id)||(r.add(e.session_id),i.push({id:e.session_id,title:dn(e),project:e.project?ln(e.project):null}));let a=t.filter(e=>!!e.parent_session_id).map(e=>({childId:e.session_id,parentId:e.parent_session_id})),o=t.filter(e=>e.role===`origin`||!e.parent_session_id).map(e=>e.session_id),s=un(e?.name)??`Untitled thread`,c=e?.session_count??i.length,l=[`${c.toLocaleString(`en-US`)} ${c===1?`session`:`sessions`}`];return f&&l.push(f),(e?.project_count??0)>1?l.push(`cross-project`):e?.project&&l.push(ln(e.project)),{threadName:s,metaLine:l.join(` · `),sessions:i,edges:a,rootIds:o,verdict:un(n,120)??``}},[u.data,f,n]),m=(0,U.useCallback)(async()=>{a(!0),s(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-Dk6wV6ZU.js`);return{default:e}},[],import.meta.url)).default,t=await en(()=>import(`./thread-D2AXyhOx.js`),__vite__mapDeps([2,1]),import.meta.url),[n,r,i,o]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),l=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:r,weight:700,style:`normal`},{name:`JetBrains Mono`,data:i,weight:400,style:`normal`},{name:`JetBrains Mono`,data:o,weight:700,style:`normal`}],u=await e(t.render(p),{width:1080,height:1350,fonts:l}),d=c.current;if(!d)return;d.width=1080*2,d.height=1350*2;let f=d.getContext(`2d`);if(!f)return;f.imageSmoothingEnabled=!0,f.imageSmoothingQuality=`high`;let m=new Image;m.onload=()=>{f.drawImage(m,0,0,d.width,d.height),a(!1)},m.onerror=()=>{s(`Failed to render card image`),a(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(u)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[ShareThreadModal] renderPreview failed:`,e),s(t),a(!1)}},[p]);(0,U.useEffect)(()=>(clearTimeout(l.current),l.current=setTimeout(m,300),()=>clearTimeout(l.current)),[m]);let h=`claude-recall-thread-${e.slice(0,8)}.png`,g=(0,U.useCallback)(e=>{let t=c.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),_=(0,U.useCallback)(()=>new Promise(e=>{let t=c.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),v=(0,U.useCallback)(()=>{g(async e=>{let t=await Bt({fileName:h,blob:e,title:`Claude Recall — thread`,text:`${p.threadName} · ${p.metaLine}`,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[g,h,p.threadName,p.metaLine]),y=(0,U.useCallback)(()=>{g(e=>{Ht(e,h),Z({message:`Saved to Downloads`,tone:`success`})})},[g,h]),b=(0,U.useCallback)(()=>{g(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[g]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Thread`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:c,className:`w-full h-full`,style:{display:i||o?`none`:`block`}}),i&&!o&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),o&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:o})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:v,disabled:i,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:y,disabled:i,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:b,disabled:i,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:_,kind:`thread`,title:p.threadName,description:p.metaLine,caption:`${p.threadName} — built with Claude Recall`,disabled:i})]})})}function pn({heroImage:e,scopeLabel:t,onClose:n}){let[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)(!0),[s,c]=(0,U.useState)(null),l=(0,U.useRef)(null),u=(0,U.useRef)(),d=K({queryKey:[`bug-patterns-graph`,`share`],queryFn:()=>X.bugPatternsGraph(void 0,!0),staleTime:6e4}),f=(0,U.useMemo)(()=>{let n=d.data?.totals,i=n?.recurring_count??d.data?.clusters?.length??0,a=n?.resolved_count??0,o=n?.session_count??0,s=e=>e.toLocaleString(`en-US`),c=[t];return c.push(`${s(i)} ${i===1?`pattern`:`patterns`}`),a>0&&c.push(`${s(a)} resolved`),o>0&&c.push(`${s(o)} ${o===1?`session`:`sessions`}`),{heroImage:e,metaLine:c.join(` · `),verdict:r.slice(0,120)}},[d.data,e,r,t]),p=(0,U.useCallback)(async()=>{o(!0),c(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-Dk6wV6ZU.js`);return{default:e}},[],import.meta.url)).default,t=await en(()=>import(`./patterns-BPeZb9N0.js`),__vite__mapDeps([3,1]),import.meta.url),[n,r,i,a]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),s=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:r,weight:700,style:`normal`},{name:`JetBrains Mono`,data:i,weight:400,style:`normal`},{name:`JetBrains Mono`,data:a,weight:700,style:`normal`}],u=await e(t.render(f),{width:1080,height:1350,fonts:s}),d=l.current;if(!d)return;d.width=1080*2,d.height=1350*2;let p=d.getContext(`2d`);if(!p)return;p.imageSmoothingEnabled=!0,p.imageSmoothingQuality=`high`;let m=new Image;m.onload=()=>{p.drawImage(m,0,0,d.width,d.height),o(!1)},m.onerror=()=>{c(`Failed to render card image`),o(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(u)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[SharePatternsModal] renderPreview failed:`,e),c(t),o(!1)}},[f]);(0,U.useEffect)(()=>(clearTimeout(u.current),u.current=setTimeout(p,300),()=>clearTimeout(u.current)),[p]);let m=`claude-recall-patterns.png`,h=(0,U.useCallback)(e=>{let t=l.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),g=(0,U.useCallback)(()=>new Promise(e=>{let t=l.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),_=(0,U.useCallback)(()=>{h(async e=>{let t=await Bt({fileName:m,blob:e,title:`Claude Recall — patterns`,text:f.metaLine,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[h,f.metaLine]),v=(0,U.useCallback)(()=>{h(e=>{Ht(e,m),Z({message:`Saved to Downloads`,tone:`success`})})},[h]),y=(0,U.useCallback)(()=>{h(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[h]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center`,onClick:n,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Patterns`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:l,className:`w-full h-full`,style:{display:a||s?`none`:`block`}}),a&&!s&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),s&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:s})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:r,onChange:e=>i(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:_,disabled:a,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:v,disabled:a,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:y,disabled:a,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:g,kind:`patterns`,title:`Recurring patterns`,description:f.metaLine,caption:`${f.metaLine} — tracked with Claude Recall`,disabled:a})]})})}function mn(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=mn(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Q(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=mn(e))&&(r&&(r+=` `),r+=t);return r}function hn(){return K({queryKey:[`tags`],queryFn:X.allTags,staleTime:1e4})}function gn(e){e.invalidateQueries({queryKey:[`tags`]}),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session`]}),e.invalidateQueries({queryKey:[`search`]})}function _n(){let e=G();return q({mutationFn:({sessionId:e,tag:t})=>X.addSessionTag(e,t),onSuccess:()=>gn(e)})}function vn(){let e=G();return q({mutationFn:({sessionId:e,tag:t})=>X.removeSessionTag(e,t),onSuccess:()=>gn(e)})}var yn=new Set;function bn(){for(let e of yn)e()}function xn(){let e=window.location.hash.replace(/^#/,``);if(!e)return{project:null,session:null,msg:null,q:``,view:null,helpSection:null,compareWith:null,col:null,thread:null};let t=new URLSearchParams(e),n=t.get(`view`);return{project:t.get(`p`),session:t.get(`s`),msg:t.get(`m`),q:t.get(`q`)??``,view:n===`help`?`help`:n===`stats`?`stats`:n===`auto-rules`?`auto-rules`:n===`threads`?`threads`:n===`graph`?`graph`:n===`suggestions`?`suggestions`:n===`patterns`?`patterns`:null,helpSection:t.get(`h`),compareWith:t.get(`cmp`),col:t.get(`col`),thread:t.get(`t`)}}function Sn(e){let t=new URLSearchParams;e.project&&t.set(`p`,e.project),e.session&&t.set(`s`,e.session),e.msg&&t.set(`m`,e.msg),e.q&&t.set(`q`,e.q),e.view&&t.set(`view`,e.view),e.helpSection&&t.set(`h`,e.helpSection),e.compareWith&&t.set(`cmp`,e.compareWith),e.col&&t.set(`col`,e.col),e.thread&&t.set(`t`,e.thread);let n=t.toString();return n?`#${n}`:``}function Cn(){let[e,t]=(0,U.useState)(xn);return(0,U.useEffect)(()=>{let e=()=>t(xn());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,U.useEffect)(()=>{let e=()=>t(xn());return yn.add(e),()=>{yn.delete(e)}},[]),[e,(0,U.useCallback)(e=>{let n={...xn(),...e},r=Sn(n);window.location.hash!==r&&window.history.replaceState(null,``,r||window.location.pathname),t(n),bn()},[])]}function wn(e){e.invalidateQueries({queryKey:[`collections`]}),e.invalidateQueries({queryKey:[`collection`]}),e.invalidateQueries({queryKey:[`sessionCollections`]}),e.invalidateQueries({queryKey:[`sessions`]})}function Tn(e=!1){return K({queryKey:[`collections`,{archived:e}],queryFn:()=>X.listCollections(e),staleTime:5e3})}function En(e){return K({queryKey:[`collection`,e],queryFn:()=>X.getCollection(e),enabled:!!e,staleTime:3e3})}function Dn(e){return K({queryKey:[`sessionCollections`,e],queryFn:()=>X.sessionCollections(e),enabled:!!e,staleTime:3e3})}function On(){let e=G();return q({mutationFn:e=>X.createCollection(e),onSuccess:()=>wn(e)})}function kn(){let e=G();return q({mutationFn:({id:e,patch:t})=>X.patchCollection(e,t),onSuccess:()=>wn(e)})}function An(){let e=G();return q({mutationFn:e=>X.archiveCollection(e),onSuccess:()=>wn(e)})}function jn(){let e=G();return q({mutationFn:e=>X.restoreCollection(e),onSuccess:()=>wn(e)})}function Mn(){let e=G();return q({mutationFn:({collectionId:e,sessionId:t,note:n})=>X.addSessionToCollection(e,t,n),onSuccess:()=>wn(e)})}function Nn(){let e=G();return q({mutationFn:({collectionId:e,sessionId:t})=>X.removeSessionFromCollection(e,t),onSuccess:()=>wn(e)})}function Pn(e){if(!e||e.length===0)return[];let t=new Map;for(let n of e)t.set(n.id,{...n,children:[],depth:0,total_session_count:n.session_count});let n=[];for(let e of t.values()){let r=e.parent_id?t.get(e.parent_id):null;r?r.children.push(e):n.push(e)}let r=(e,t)=>{e.sort((e,t)=>e.sort_key===t.sort_key?e.name.toLowerCase().localeCompare(t.name.toLowerCase()):e.sort_key.localeCompare(t.sort_key));for(let n of e)n.depth=t,r(n.children,t+1)};r(n,0);let i=e=>{let t=e.session_count;for(let n of e.children)t+=i(n);return e.total_session_count=t,t};for(let e of n)i(e);return n}function Fn(e,t){let n=[],r=e=>{for(let i of e)n.push(i),i.children.length>0&&t.has(i.id)&&r(i.children)};return r(e),n}function In(e=!1){let t=Tn(e),n=(0,U.useMemo)(()=>Pn(t.data?.collections),[t.data]);return{...t,tree:n}}function Ln(e){return[e.id,...e.children.flatMap(Ln)]}var Rn=[{value:``,label:`default`},{value:`#f97316`,label:`orange`},{value:`#eab308`,label:`yellow`},{value:`#10b981`,label:`green`},{value:`#06b6d4`,label:`cyan`},{value:`#3b82f6`,label:`blue`},{value:`#a855f7`,label:`purple`},{value:`#ec4899`,label:`pink`},{value:`#64748b`,label:`slate`}],zn=`📂.📁.🗂.📦.🗃.🛠.🔧.🧪.🔬.⚗️.🏗.🎨.🎯.🚀.🧩.🧠.💡.📝.📊.📈.🐛.🔒.🔑.⚡.🔥.❤️.⭐.✨.🌿.🏠`.split(`.`);function Bn({mode:e,existing:t,initialParentId:n,pinnedSessionId:r,onClose:i,onCreated:a,onUpdated:o}){let[s,c]=(0,U.useState)(t?.name??``),[l,u]=(0,U.useState)(t?.description??``),[d,f]=(0,U.useState)(t?.icon??`📂`),[p,m]=(0,U.useState)(t?.color??``),[h,g]=(0,U.useState)(e===`rename`?t?.parent_id??null:n??null),[_,v]=(0,U.useState)(null),y=(0,U.useRef)(null),b=In(!1),x=On(),S=kn();(0,U.useEffect)(()=>{requestAnimationFrame(()=>y.current?.focus())},[]),(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]);let C=(0,U.useMemo)(()=>{let n=new Set(b.tree.flatMap(Ln)),r=Fn(b.tree,n);if(e===`rename`&&t){let e=new Set,n=t=>{e.add(t);for(let e of r)e.parent_id===t&&n(e.id)};return n(t.id),r.filter(t=>!e.has(t.id))}return r},[b.tree,e,t]),w=async()=>{let n=s.trim();if(!n){v(`name required`);return}try{if(e===`create`){let e=await x.mutateAsync({name:n,description:l.trim()||null,icon:d||null,color:p||null,parent_id:h});if(r)try{await fetch(`/api/collections/${encodeURIComponent(e.id)}/members`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({session_id:r})})}catch{}a?.(e)}else if(t){let e=await S.mutateAsync({id:t.id,patch:{name:n,description:l.trim()||null,icon:d||null,color:p||null,parent_id:h}});o?.(e)}i()}catch(e){v(e.message)}};return(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:i,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[440px] max-w-[90vw] p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold`,children:e===`create`?`New collection`:`Rename collection`}),(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative flex items-center gap-2 px-3 py-2 mb-4 rounded border border-line bg-bg`,style:{background:p?`linear-gradient(90deg, ${p}1a 0%, transparent 50%)`:void 0},children:[p&&(0,W.jsx)(`span`,{className:`absolute top-1 bottom-1 left-0 w-[3px] rounded-full`,style:{background:p},"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`text-base`,children:d||`📂`}),(0,W.jsx)(`span`,{className:`text-sm text-fg truncate flex-1`,children:s.trim()||(0,W.jsx)(`span`,{className:`italic text-fg-muted`,children:`(name)`})}),(0,W.jsx)(`span`,{className:`text-[10px] font-medium`,style:{color:p||void 0},children:`preview`})]}),(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Name`}),(0,W.jsx)(`input`,{ref:y,type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&w()},maxLength:120,placeholder:`Pest Control — Scraping`,className:`w-full bg-bg border border-line rounded px-3 py-2 text-sm text-fg focus:outline-none focus:border-accent`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Description (optional)`}),(0,W.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),rows:2,maxLength:500,placeholder:`Short summary — shows on hover`,className:`w-full bg-bg border border-line rounded px-3 py-2 text-sm text-fg focus:outline-none focus:border-accent resize-none`})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Icon`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:zn.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(e),className:Q(`w-7 h-7 rounded flex items-center justify-center text-sm hover:bg-bg-hover`,d===e&&`bg-accent/20 border border-accent`),title:e,children:e},e))}),(0,W.jsx)(`input`,{type:`text`,value:d,onChange:e=>f(e.target.value.slice(0,4)),className:`mt-1 w-full bg-bg border border-line rounded px-2 py-1 text-sm text-fg focus:outline-none focus:border-accent`,placeholder:`or paste your own`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Color`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Rn.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(e.value),className:Q(`w-7 h-7 rounded border transition-colors`,p===e.value?`border-accent ring-2 ring-accent/40`:`border-line hover:border-fg-muted`),style:{background:e.value||`transparent`},title:e.label},e.value||`default`))})]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Parent collection`}),(0,W.jsxs)(`select`,{value:h??``,onChange:e=>g(e.target.value||null),className:`w-full bg-bg border border-line rounded px-2 py-2 text-sm text-fg focus:outline-none focus:border-accent`,children:[(0,W.jsx)(`option`,{value:``,children:`— no parent (root) —`}),C.map(e=>(0,W.jsxs)(`option`,{value:e.id,children:[` `.repeat(e.depth),e.icon??`📂`,` `,e.name]},e.id))]}),(0,W.jsx)(`p`,{className:`mt-1 text-[10px] text-fg-muted leading-snug`,children:C.length===0?`No other collections yet — this one will live at the root. Once you have two or more, you can nest them.`:`Parent = another collection, not a repo. Collections cut across projects — one collection can hold sessions from many repos.`})]}),_&&(0,W.jsx)(`div`,{className:`text-xs text-role-user bg-role-user/10 border border-role-user/30 rounded px-2 py-1.5`,children:_}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`px-3 py-1.5 text-sm text-fg-dim border border-line rounded hover:text-fg`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:w,disabled:!s.trim()||x.isPending||S.isPending,className:`px-4 py-1.5 text-sm bg-accent text-bg rounded font-medium hover:bg-accent/90 disabled:opacity-50`,children:e===`create`?`Create`:`Save`})]})]})]})})}function Vn(e){e.invalidateQueries({queryKey:[`autoRules`]}),e.invalidateQueries({queryKey:[`autoSuggestions`]}),e.invalidateQueries({queryKey:[`autoCollectionIds`]}),e.invalidateQueries({queryKey:[`collections`]}),e.invalidateQueries({queryKey:[`collection`]}),e.invalidateQueries({queryKey:[`sessionCollections`]}),e.invalidateQueries({queryKey:[`sessions`]})}function Hn(){return K({queryKey:[`autoRules`],queryFn:()=>X.listAutoRules(),staleTime:5e3})}function Un(e=!1){return K({queryKey:[`autoSuggestions`,{dismissed:e}],queryFn:()=>X.listAutoSuggestions(e),staleTime:3e4})}function Wn(){return K({queryKey:[`autoCollectionIds`],queryFn:()=>X.listAutoCollectionIds(),staleTime:3e4})}function Gn(){let e=G();return q({mutationFn:e=>X.createAutoRule(e),onSuccess:()=>Vn(e)})}function Kn(){let e=G();return q({mutationFn:({id:e,patch:t})=>X.patchAutoRule(e,t),onSuccess:()=>Vn(e)})}function qn(){let e=G();return q({mutationFn:e=>X.deleteAutoRule(e),onSuccess:()=>Vn(e)})}function Jn(){let e=G();return q({mutationFn:e=>X.acceptAutoSuggestion(e),onSuccess:()=>Vn(e)})}function Yn(){let e=G();return q({mutationFn:e=>X.dismissAutoSuggestion(e),onSuccess:()=>Vn(e)})}function Xn(){let e=G();return q({mutationFn:()=>X.detectAutoSuggestionsNow(),onSuccess:()=>Vn(e)})}function Zn(e,t=!0){return K({queryKey:[`autoSuggestionPreview`,e],queryFn:()=>X.previewAutoSuggestion(e,3),enabled:!!e&&t,staleTime:6e4})}function Qn(){let{data:e,isLoading:t}=Un(),[,n]=Cn(),r=e?.suggestions??[];return t||r.length===0?null:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n({view:`auto-rules`}),className:`mx-2 my-1 w-[calc(100%-1rem)] flex items-center justify-between gap-2 rounded border border-accent/30 bg-accent/5 px-2 py-1 text-[11px] text-fg-muted hover:bg-accent/10 hover:text-accent`,title:`Open Auto-rules to review suggestions`,children:[(0,W.jsxs)(`span`,{className:`truncate`,children:[`💡 `,r.length,` auto-collection`,` `,r.length===1?`suggestion`:`suggestions`,` pending`]}),(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`Review →`})]})}var $n=`application/x-recall-collection`,er=`application/x-recall-session`;function tr({selectedCollection:e,onSelect:t,onCreateCollection:n}){let[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(()=>{try{return localStorage.getItem(`recall.collectionsPaneOpen`)===`1`}catch{return!1}});(0,U.useEffect)(()=>{try{localStorage.setItem(`recall.collectionsPaneOpen`,a?`1`:`0`)}catch{}},[a]);let[s,c]=(0,U.useState)(()=>new Set),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),{tree:h,isLoading:g,isError:_,error:v,data:y}=In(r),b=An(),x=jn(),S=kn(),C=Mn(),[,w]=Cn(),T=Wn(),E=(0,U.useMemo)(()=>new Set(T.data?.auto_collection_ids??[]),[T.data]),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(null),j=(0,U.useRef)(new Map),M=(0,U.useCallback)(e=>{let t=j.current.get(e);t&&(window.clearTimeout(t),j.current.delete(e))},[]),ee=(0,U.useCallback)(e=>{if(s.has(e)||j.current.has(e))return;let t=window.setTimeout(()=>{c(t=>{let n=new Set(t);return n.add(e),n}),j.current.delete(e)},450);j.current.set(e,t)},[s]);(0,U.useEffect)(()=>()=>{for(let e of j.current.values())window.clearTimeout(e);j.current.clear()},[]);let N=(0,U.useRef)(!1);(0,U.useEffect)(()=>{if(!y||N.current)return;let e=new Set;for(let t of h)e.add(t.id);c(e),N.current=!0},[y,h]);let te=(0,U.useCallback)(e=>{c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),P=(0,U.useCallback)((e,t)=>{t.preventDefault(),m({id:e,x:t.clientX,y:t.clientY})},[]);(0,U.useEffect)(()=>{if(!p)return;let e=()=>m(null),t=e=>{e.key===`Escape`&&m(null)};return window.addEventListener(`click`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`click`,e),window.removeEventListener(`keydown`,t)}},[p]);let F=(0,U.useMemo)(()=>{let e=new Map,t=n=>{for(let r of n)e.set(r.id,r),t(r.children)};return t(h),e},[h]),I=e?F.get(e)??null:null,L=async(e,t)=>{if(!e||e===t)return;let n=F.get(e),r=F.get(t);if(!n||!r||n.parent_id!==r.parent_id)return;let i=n.parent_id?F.get(n.parent_id)?.children:h;if(!i)return;let a=[...i].sort((e,t)=>e.sort_key.localeCompare(t.sort_key)),o=a.findIndex(e=>e.id===t);if(o===-1)return;let s=a[o-1]?.sort_key??``,c=a[o].sort_key,l=ir(s,c);try{await S.mutateAsync({id:e,patch:{sort_key:l}})}catch(e){console.error(`reorder failed`,e)}},R=async(e,t)=>{let n=F.get(t);try{let r=await C.mutateAsync({collectionId:t,sessionId:e});c(e=>{let n=new Set(e);return n.add(t),n});let i=n?.name??`collection`;A(r.added?`Added session to "${i}"`:`Already in "${i}"`),window.setTimeout(()=>A(null),2600)}catch(e){console.error(`add session via drop failed`,e),A(`Failed: ${e.message.slice(0,80)}`),window.setTimeout(()=>A(null),3500)}},z=()=>w({view:`help`,helpSection:`taxonomy`});return(0,W.jsxs)(`div`,{className:`border-t border-line mt-2`,children:[(0,W.jsxs)(`div`,{className:`pane-header flex items-center justify-between`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`flex items-center gap-2 hover:text-accent`,title:a?`collapse Collections`:`expand Collections`,"aria-expanded":a,children:[(0,W.jsx)(`span`,{className:Q(`inline-block text-[10px] text-fg-muted transition-transform`,a?`rotate-90`:``),"aria-hidden":`true`,children:`▸`}),(0,W.jsx)(`span`,{children:`📂 Collections`}),(0,W.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),z()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),z())},className:`text-xs font-normal normal-case tracking-normal text-fg-muted/70 hover:text-accent cursor-pointer`,title:`Collection vs Tag vs Project — what's the difference?`,children:`(?)`})]}),(0,W.jsxs)(`span`,{className:Q(`flex items-center gap-1.5`,!a&&`hidden`),children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>w({view:`auto-rules`}),className:`text-xs font-medium normal-case tracking-normal px-2 py-1 rounded border border-line text-fg-muted hover:text-accent hover:border-accent/60 hover:bg-accent/5`,title:`Auto-collections — rules that group sessions automatically by repo / tag / plan file`,children:`⚙ Auto-rules`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs font-medium normal-case tracking-normal px-2 py-1 rounded bg-accent/10 text-accent hover:bg-accent/20`,title:`new collection (c)`,"data-collections-focus":!0,children:`+ New`})]})]}),a&&(0,W.jsx)(Qn,{}),(0,W.jsxs)(`div`,{className:Q(`px-2 pt-1 pb-2`,!a&&`hidden`),children:[g&&(0,W.jsx)(`div`,{className:`px-2 py-1 text-xs text-fg-muted`,children:`Loading…`}),_&&(0,W.jsxs)(`div`,{className:`px-2 py-1 text-xs text-role-user`,children:[`Failed: `,v?.message]}),y&&h.length===0&&(0,W.jsx)(`div`,{className:`px-2 py-1 text-xs text-fg-muted italic`,children:`No collections yet. Hit "+ new" to curate sessions that belong together.`}),h.map(n=>(0,W.jsx)(rr,{node:n,selected:e,expanded:s,onToggle:te,onSelect:e=>t(e),onContext:P,onReorder:L,onSessionDrop:R,dropTargetId:D,setDropTargetId:O,onDragEnter:ee,onDragLeaveRow:M,autoIds:E},n.id)),k&&(0,W.jsx)(`div`,{className:`fixed bottom-6 left-1/2 -translate-x-1/2 z-50 bg-accent text-bg text-sm font-medium px-4 py-2 rounded-full shadow-xl animate-in fade-in slide-in-from-bottom-2`,role:`status`,"aria-live":`polite`,children:k}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`w-full mt-2 text-xs text-fg-muted hover:text-fg text-left px-2 py-1`,children:r?`☑ hide archived`:`☐ show archived`})]}),p&&(()=>{let t=F.get(p.id);if(!t)return null;let n=!!t.archived_at;return(0,W.jsxs)(`div`,{className:`fixed z-40 bg-bg-elevated border border-line rounded-md shadow-lg py-1 min-w-[180px]`,style:{top:p.y,left:p.x},onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(nr,{label:`New child collection`,onClick:()=>{m(null),f(t.id)}}),(0,W.jsx)(nr,{label:`Rename / edit…`,onClick:()=>{m(null),u(t)}}),(0,W.jsx)(nr,{label:`Copy link to this collection`,onClick:()=>{m(null);let e=new URL(window.location.href),n=new URLSearchParams(e.hash.replace(/^#/,``));n.set(`col`,t.id),e.hash=`#${n.toString()}`,navigator.clipboard.writeText(e.toString())}}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),n?(0,W.jsx)(nr,{label:`Restore`,onClick:()=>{m(null),x.mutateAsync(t.id)}}):(0,W.jsx)(nr,{label:`Archive (soft-delete)`,onClick:()=>{m(null),b.mutateAsync(t.id),e===t.id&&w({col:null})}})]})})(),l&&(0,W.jsx)(Bn,{mode:`rename`,existing:l,onClose:()=>u(null),onUpdated:()=>u(null)}),d&&(0,W.jsx)(Bn,{mode:`create`,initialParentId:d,onClose:()=>f(null),onCreated:()=>f(null)}),I&&(0,W.jsxs)(`div`,{className:`px-4 py-2 text-[10px] text-fg-muted border-t border-line mt-2`,children:[(0,W.jsxs)(`span`,{className:`block truncate`,children:[`Filtering: `,(0,W.jsx)(`span`,{className:`text-fg`,children:I.name})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(null),className:`mt-1 text-accent hover:underline`,children:`clear collection filter`})]})]})}function nr({label:e,onClick:t}){return(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`block w-full text-left px-3 py-1.5 text-xs hover:bg-bg-hover`,children:e})}function rr({node:e,selected:t,expanded:n,onToggle:r,onSelect:i,onContext:a,onReorder:o,onSessionDrop:s,dropTargetId:c,setDropTargetId:l,onDragEnter:u,onDragLeaveRow:d,autoIds:f}){let p=n.has(e.id),m=e.children.length>0,h=!!e.archived_at,g=c===e.id,_=f.has(e.id);return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`relative group flex items-stretch`,onDragEnter:t=>{Array.from(t.dataTransfer.types).includes(`application/x-recall-session`)&&u(e.id)},onDragOver:t=>{let n=Array.from(t.dataTransfer.types),r=n.includes(er),i=n.includes($n);!r&&!i||(t.preventDefault(),t.dataTransfer.dropEffect=r?`copy`:`move`,c!==e.id&&l(e.id))},onDragLeave:t=>{let n=t.relatedTarget;(!n||!t.currentTarget.contains(n))&&(c===e.id&&l(null),d(e.id))},onDrop:t=>{t.preventDefault(),l(null),d(e.id);let n=t.dataTransfer.getData(er);if(n){s(n,e.id);return}let r=t.dataTransfer.getData($n);r&&r!==e.id&&o(r,e.id)},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),onContextMenu:t=>a(e.id,t),className:Q(`relative flex-1 min-w-0 flex items-center gap-1.5 py-1 pr-1 rounded text-sm text-left transition-colors`,t===e.id?`bg-accent/15 text-fg`:`hover:bg-bg-hover`,g&&`outline outline-2 outline-accent bg-accent/30 text-fg font-semibold shadow-[0_0_0_4px_rgba(249,115,22,0.15)]`,h&&`opacity-50 italic`),style:{paddingLeft:`${8+e.depth*12}px`,background:e.color?t===e.id?`linear-gradient(90deg, ${e.color}33 0%, transparent 40%)`:`linear-gradient(90deg, ${e.color}1a 0%, transparent 40%)`:void 0},title:e.description??e.name,children:[e.color&&(0,W.jsx)(`span`,{className:`absolute top-1 bottom-1 left-0 w-[3px] rounded-full`,style:{background:e.color},"aria-hidden":`true`}),m?(0,W.jsx)(`span`,{role:`button`,tabIndex:-1,onClick:t=>{t.stopPropagation(),r(e.id)},className:Q(`inline-block w-3 text-fg-muted text-[10px] transition-transform`,p&&`rotate-90`),"aria-hidden":`true`,children:`▸`}):(0,W.jsx)(`span`,{className:`inline-block w-3`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`shrink-0`,children:e.icon??`📂`}),(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:e.name}),g?(0,W.jsx)(`span`,{className:`text-[10px] shrink-0 font-semibold text-accent px-1.5 py-0.5 rounded-full bg-accent/20 whitespace-nowrap`,children:`← drop here`}):(0,W.jsxs)(W.Fragment,{children:[_&&(0,W.jsx)(`span`,{className:`text-[10px] shrink-0 text-fg-muted/70`,title:`auto-collection (rule-managed). Manual memberships are never overwritten.`,"aria-label":`auto-managed`,children:`⚙`}),(0,W.jsx)(`span`,{className:Q(`text-[10px] shrink-0 font-medium`,!e.color&&`text-fg-muted`),style:{color:e.color??void 0},children:e.total_session_count===e.session_count?e.session_count:`${e.session_count}/${e.total_session_count}`})]})]}),!h&&(0,W.jsx)(`span`,{draggable:!0,onDragStart:t=>{t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`application/x-recall-collection`,e.id),t.dataTransfer.setData(`text/plain`,`recall-collection:${e.id}`)},className:`shrink-0 px-1.5 flex items-center text-fg-muted/40 hover:text-fg-muted cursor-grab active:cursor-grabbing text-[11px] select-none opacity-0 group-hover:opacity-100 transition-opacity`,title:`drag to reorder this collection among its siblings`,"aria-label":`drag to reorder ${e.name}`,children:`⋮⋮`})]}),p&&m&&(0,W.jsx)(`div`,{children:e.children.map(e=>(0,W.jsx)(rr,{node:e,selected:t,expanded:n,onToggle:r,onSelect:i,onContext:a,onReorder:o,onSessionDrop:s,dropTargetId:c,setDropTargetId:l,onDragEnter:u,onDragLeaveRow:d,autoIds:f},e.id))})]})}function ir(e,t){return e?`${e}m`:`${t?t.charAt(0):`n`}0`}var ar=`claude-recall:foryou`;function or(e=new Date){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function sr(e){try{let t=window.localStorage.getItem(`${ar}:${e}`);if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>e===`rediscovered`||e===`expensive`||e===`authored`)):new Set}catch{return new Set}}function cr(e,t){try{window.localStorage.setItem(`${ar}:${e}`,JSON.stringify([...t]))}catch{}}function lr(){let[e,t]=(0,U.useState)(()=>or()),[n,r]=(0,U.useState)(()=>sr(or())),[i,a]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{a(!0)},[]),(0,U.useEffect)(()=>{let n=()=>{let n=or();n!==e&&(t(n),r(sr(n)))};return window.addEventListener(`focus`,n),document.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`focus`,n),document.removeEventListener(`visibilitychange`,n)}},[e]),{dismissed:n,dismiss:(0,U.useCallback)(t=>{r(n=>{if(n.has(t))return n;let r=new Set(n);return r.add(t),cr(e,r),r})},[e]),isReady:i}}function ur(e){return{id:`rediscovered`,icon:`✦`,label:`Rediscovered`,accent:`text-role-tool border-role-tool/40`,title:e.alias??mt(e.firstUserMessage,60)??e.sessionId.slice(0,8),subtitle:`${e.daysAgo} day${e.daysAgo===1?``:`s`} ago`+(e.project?` · ${e.project}`:``),trailing:e.matchedKeywords.length>0?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:e.matchedKeywords.slice(0,4).map(e=>(0,W.jsxs)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded bg-role-tool/10 text-role-tool text-[10px] border border-role-tool/30`,children:[`#`,e]},e))}):void 0,sessionId:e.sessionId}}function dr(e){return{id:`expensive`,icon:`$`,label:`Most expensive · 7d`,accent:`text-accent border-accent/40`,title:e.alias??mt(e.firstUserMessage,60)??e.sessionId.slice(0,8),subtitle:(e.project?`${e.project} · `:``)+`${e.costDisplay} · ${e.tokensDisplay} · ${e.primaryModelLabel}`+(e.startedAt?` · ${ht(e.startedAt)}`:``),sessionId:e.sessionId}}function fr(e){return{id:`authored`,icon:`⎇`,label:`Authored current HEAD`,accent:`text-role-assistant border-role-assistant/40`,title:e.alias??mt(e.firstUserMessage,60)??e.sessionId.slice(0,8),subtitle:`${e.shortSha} · `+(e.subject?mt(e.subject,50):`current HEAD`)+(e.committedAt?` · ${ht(e.committedAt)}`:``),sessionId:e.sessionId}}function pr({onSelectSession:e}){let t=K({queryKey:[`discover`,`today`],queryFn:()=>X.getDiscoverToday(),staleTime:300*1e3,refetchOnWindowFocus:!1,retry:1}),{dismissed:n,dismiss:r,isReady:i}=lr(),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(()=>{try{return localStorage.getItem(`recall.forYouPaneOpen`)===`1`}catch{return!1}});if((0,U.useEffect)(()=>{try{localStorage.setItem(`recall.forYouPaneOpen`,s?`1`:`0`)}catch{}},[s]),!i||!t.data)return null;let l=[];return t.data.rediscovered&&!n.has(`rediscovered`)&&l.push(ur(t.data.rediscovered)),t.data.expensive&&!n.has(`expensive`)&&l.push(dr(t.data.expensive)),t.data.authored&&!n.has(`authored`)&&l.push(fr(t.data.authored)),l.length===0?null:(0,W.jsxs)(`div`,{className:`border-b border-line`,children:[(0,W.jsxs)(`div`,{className:`pane-header`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:`flex items-center gap-2 hover:text-accent`,title:s?`collapse For you`:`expand For you`,"aria-expanded":s,children:[(0,W.jsx)(`span`,{className:Q(`inline-block text-[10px] text-fg-muted transition-transform`,s?`rotate-90`:``),"aria-hidden":`true`,children:`▸`}),(0,W.jsx)(`span`,{children:`For you`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:Q(`text-xs font-normal normal-case tracking-normal hover:text-accent`,a?`text-accent`:`text-fg-muted/70`),title:`What is For you?`,"aria-expanded":a,children:`(?)`})]}),(0,W.jsx)(`span`,{children:l.length})]}),a&&(0,W.jsxs)(`div`,{className:`px-4 py-2 text-[11px] text-fg-muted bg-bg-elevated/50 border-b border-line/50 leading-relaxed`,children:[`Suggested sessions for today, picked from your activity:`,(0,W.jsxs)(`ul`,{className:`mt-1 ml-4 list-disc space-y-0.5`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-accent`,children:`$ Most expensive · 7d`}),` — your highest-cost session in the last week.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-role-assistant`,children:`⎇ Authored current HEAD`}),` — the session that produced the commit you're on.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-role-tool`,children:`✦ Rediscovered`}),` — an older session matching your current keywords.`]})]}),(0,W.jsx)(`div`,{className:`mt-1`,children:`Click × on a card to dismiss it for the day; suggestions reset overnight.`})]}),(0,W.jsx)(`div`,{className:Q(`flex flex-col`,!s&&`hidden`),children:l.map(t=>(0,W.jsxs)(`div`,{className:Q(`group relative px-4 py-2.5 border-b border-line/50 hover:bg-bg-hover transition-colors cursor-pointer`),role:`button`,tabIndex:0,onClick:()=>e(t.sessionId),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(t.sessionId))},title:`Open ${t.title}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-0.5`,children:[(0,W.jsxs)(`span`,{className:Q(`inline-flex items-center gap-1.5 text-[10px] uppercase tracking-wider font-medium px-1.5 py-0.5 rounded border`,t.accent),children:[(0,W.jsx)(`span`,{"aria-hidden":!0,children:t.icon}),(0,W.jsx)(`span`,{children:t.label})]}),(0,W.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),r(t.id)},className:`opacity-0 group-hover:opacity-100 focus:opacity-100 text-fg-muted/70 hover:text-role-user transition-opacity text-sm leading-none px-1`,title:`Dismiss for today`,"aria-label":`Dismiss ${t.label} for today`,children:`×`})]}),(0,W.jsx)(`div`,{className:`text-sm font-medium text-fg truncate`,children:t.title}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted truncate mt-0.5`,children:t.subtitle}),t.trailing]},t.id))})]})}function mr(e){return e>=70?`text-green-500`:e>=40?`text-yellow-500`:`text-red-500`}function hr(e){return e>=70?`bg-green-500`:e>=40?`bg-yellow-500`:`bg-red-500`}function gr({projectId:e}){let t=K({queryKey:[`health`,e],queryFn:()=>X.healthScore(e),staleTime:3e4,refetchInterval:6e4,refetchIntervalInBackground:!1});if(!t.data)return null;let{score:n}=t.data;return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs ${mr(n)}`,title:`Memory health: ${n}/100`,children:[(0,W.jsx)(`span`,{className:`inline-block w-1.5 h-1.5 rounded-full ${hr(n)}`}),n]})}var _r=`sqlite3 ~/.recall/db.sqlite \\
10
+ `).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Z(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Z(e,``+r);break;case`className`:_t(e,`class`,r);break;case`tabIndex`:_t(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:_t(e,n,r);break;case`style`:Ft(e,r,o);break;case`data`:if(t!==`object`){_t(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=zt(``+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}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Md(e,t,`name`,a.name,a,null),Md(e,t,`formEncType`,a.formEncType,a,null),Md(e,t,`formMethod`,a.formMethod,a,null),Md(e,t,`formTarget`,a.formTarget,a,null)):(Md(e,t,`encType`,a.encType,a,null),Md(e,t,`method`,a.method,a,null),Md(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=zt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=Bt);break;case`onScroll`:r!=null&&vd(`scroll`,e);break;case`onScrollEnd`:r!=null&&vd(`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=zt(``+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`:vd(`beforetoggle`,e),vd(`toggle`,e),gt(e,`popover`,r);break;case`xlinkActuate`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:vt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:vt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:vt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:vt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:gt(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=Lt.get(n)||n,gt(e,n,r))}}function Nd(e,t,n,r,a,o){switch(n){case`style`:Ft(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`?Z(e,r):(typeof r==`number`||typeof r==`bigint`)&&Z(e,``+r);break;case`onScroll`:r!=null&&vd(`scroll`,e);break;case`onScrollEnd`:r!=null&&vd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=Bt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!Y.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[et]||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,``):gt(e,n,r)}}}function Pd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:vd(`error`,e),vd(`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:Md(e,t,o,s,n,null)}}a&&Md(e,t,`srcSet`,n.srcSet,n,null),r&&Md(e,t,`src`,n.src,n,null);return;case`input`:vd(`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:Md(e,t,r,d,n,null)}}Ot(e,o,c,l,u,s,a,!1);return;case`select`:for(a in vd(`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:Md(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&At(e,!!r,n,!0):At(e,!!r,t,!1);return;case`textarea`:for(s in vd(`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:Md(e,t,s,c,n,null)}Mt(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:Md(e,t,l,r,n,null)}return;case`dialog`:vd(`beforetoggle`,e),vd(`toggle`,e),vd(`cancel`,e),vd(`close`,e);break;case`iframe`:case`object`:vd(`load`,e);break;case`video`:case`audio`:for(r=0;r<hd.length;r++)vd(hd[r],e);break;case`image`:vd(`error`,e),vd(`load`,e);break;case`details`:vd(`toggle`,e);break;case`embed`:case`source`:case`link`:vd(`error`,e),vd(`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:Md(e,t,u,r,n,null)}return;default:if(It(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Nd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Md(e,t,c,r,n,null))}function Fd(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)||Md(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&&Md(e,t,p,m,r,f)}}Dt(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)||Md(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&&Md(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?At(e,!!n,n?[]:``,!1):At(e,!!n,t,!0)):At(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:Md(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&&Md(e,t,s,a,r,o)}jt(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:Md(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:Md(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)&&Md(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:Md(e,t,u,p,r,m)}return;default:if(It(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Nd(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||Nd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Md(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||Md(e,t,f,p,r,m)}function Id(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Ld(){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&&Id(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&&Id(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 Rd=null,zd=null;function Bd(e){return e.nodeType===9?e:e.ownerDocument}function Vd(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 Hd(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 Ud(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 Wd=null;function Gd(){var e=window.event;return e&&e.type===`popstate`?e===Wd?!1:(Wd=e,!0):(Wd=null,!1)}var Kd=typeof setTimeout==`function`?setTimeout:void 0,qd=typeof clearTimeout==`function`?clearTimeout:void 0,Jd=typeof Promise==`function`?Promise:void 0,Yd=typeof queueMicrotask==`function`?queueMicrotask:Jd===void 0?Kd:function(e){return Jd.resolve(null).then(e).catch(Xd)};function Xd(e){setTimeout(function(){throw e})}function Zd(e){return e===`head`}function Qd(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),Np(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)pf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,pf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[ot]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&pf(e.ownerDocument.body);n=i}while(n);Np(t)}function $d(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 ef(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`:ef(n),K(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function tf(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[ot])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=cf(e.nextSibling),e===null)break}return null}function nf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=cf(e.nextSibling),e===null))return null;return e}function rf(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=cf(e.nextSibling),e===null))return null;return e}function af(e){return e.data===`$?`||e.data===`$~`}function of(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function sf(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 cf(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 lf=null;function uf(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return cf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function df(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 ff(e,t,n){switch(t=Bd(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 pf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);K(e)}var mf=new Map,hf=new Set;function gf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var _f=F.d;F.d={f:vf,r:yf,D:Sf,C:Cf,L:wf,m:Tf,X:Df,S:Ef,M:Of};function vf(){var e=_f.f(),t=_u();return e||t}function yf(e){var t=st(e);t!==null&&t.tag===5&&t.type===`form`?gs(t):_f.r(e)}var bf=typeof document>`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Et(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),ut(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Et(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Et(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Et(n.imageSizes)+`"]`)):i+=`[href="`+Et(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),ut(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Et(r)+`"][href="`+Et(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),ut(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=lt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);ut(c),Pd(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,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=lt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=f({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),ut(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=lt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),ut(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ie.current)?gf(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=Af(n.href),n=lt(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=Af(n.href);var o=lt(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(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.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},mf.set(e,n),o||Nf(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=Pf(n),n=lt(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 Af(e){return`href="`+Et(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(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}),Pd(t,`link`,n),ut(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Et(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Et(n.href)+`"]`);if(r)return t.instance=r,ut(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),ut(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,ut(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),ut(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,ut(a),a):(r=n,(a=mf.get(o))&&(r=f({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),ut(a),Pd(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,Lf(r,n.precedence,e));return t.instance}function Lf(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 Rf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function zf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Bf=null;function Vf(e,t,n){if(Bf===null){var r=new Map,i=Bf=new Map;i.set(n,r)}else i=Bf,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[ot]||a[$e]||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 Hf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Uf(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 Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(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=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,ut(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),ut(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(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=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Kf===0&&(Kf=62500*Ld());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Xf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.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=Jf.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 Qf={$$typeof:C,Provider:null,Consumer:null,_currentValue:I,_currentValue2:I,_threadCount:0};function $f(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=U(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=U(0),this.hiddenUpdates=U(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 ep(e,t,n,r,i,a,o,s,c,l,u,d){return e=new $f(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=Jr(3,null,null,t),e.current=a,a.stateNode=e,t=Yi(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Oa(a),e}function tp(e){return e?(e=Kr,e):Kr}function np(e,t,n,r,i,a){i=tp(i),r.context===null?r.context=i:r.pendingContext=i,r=Aa(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=ja(e,r,t),n!==null&&(fu(n,e,t),Ma(n,e,t))}function rp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ip(e,t){rp(e,t),(e=e.alternate)&&rp(e,t)}function ap(e){if(e.tag===13||e.tag===31){var t=Ur(e,67108864);t!==null&&fu(t,e,67108864),ip(e,67108864)}}function op(e){if(e.tag===13||e.tag===31){var t=uu();t=Je(t);var n=Ur(e,t);n!==null&&fu(n,e,t),ip(e,t)}}var sp=!0;function cp(e,t,n,r){var i=P.T;P.T=null;var a=F.p;try{F.p=2,up(e,t,n,r)}finally{F.p=a,P.T=i}}function lp(e,t,n,r){var i=P.T;P.T=null;var a=F.p;try{F.p=8,up(e,t,n,r)}finally{F.p=a,P.T=i}}function up(e,t,n,r){if(sp){var i=dp(r);if(i===null)Cd(e,t,r,fp,n),Cp(e,r);else if(Tp(i,e,t,n,r))r.stopPropagation();else if(Cp(e,r),t&4&&-1<Sp.indexOf(e)){for(;i!==null;){var a=st(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-Ne(o);s.entanglements[1]|=c,o&=~c}td(a),!(jl&6)&&(Ql=xe()+500,nd(0,!1))}}break;case 31:case 13:s=Ur(a,2),s!==null&&fu(s,a,2),_u(),ip(a,2)}if(a=dp(r),a===null&&Cd(e,t,r,fp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Cd(e,t,r,null,n)}}function dp(e){return e=Ht(e),pp(e)}var fp=null;function pp(e){if(fp=null,e=q(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 fp=e,null}function mp(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(Se()){case Ce:return 2;case we:return 8;case Te:case Ee:return 32;case De:return 268435456;default:return 32}default:return 32}}var hp=!1,gp=null,_p=null,vp=null,yp=new Map,bp=new Map,xp=[],Sp=`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 Cp(e,t){switch(e){case`focusin`:case`focusout`:gp=null;break;case`dragenter`:case`dragleave`:_p=null;break;case`mouseover`:case`mouseout`:vp=null;break;case`pointerover`:case`pointerout`:yp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:bp.delete(t.pointerId)}}function wp(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=st(t),t!==null&&ap(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Tp(e,t,n,r,i){switch(t){case`focusin`:return gp=wp(gp,e,t,n,r,i),!0;case`dragenter`:return _p=wp(_p,e,t,n,r,i),!0;case`mouseover`:return vp=wp(vp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return yp.set(a,wp(yp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,bp.set(a,wp(bp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ep(e){var t=q(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,Ze(e.priority,function(){op(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,Ze(e.priority,function(){op(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 Dp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=dp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Vt=r,n.target.dispatchEvent(r),Vt=null}else return t=st(n),t!==null&&ap(t),e.blockedOn=n,!1;t.shift()}return!0}function Op(e,t,n){Dp(e)&&n.delete(t)}function kp(){hp=!1,gp!==null&&Dp(gp)&&(gp=null),_p!==null&&Dp(_p)&&(_p=null),vp!==null&&Dp(vp)&&(vp=null),yp.forEach(Op),bp.forEach(Op)}function Ap(e,n){e.blockedOn===n&&(e.blockedOn=null,hp||(hp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,kp)))}var jp=null;function Mp(e){jp!==e&&(jp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jp===e&&(jp=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(pp(r||n)===null)continue;break}var a=st(n);a!==null&&(e.splice(t,3),t-=3,ms(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Np(e){function t(t){return Ap(t,e)}gp!==null&&Ap(gp,e),_p!==null&&Ap(_p,e),vp!==null&&Ap(vp,e),yp.forEach(t),bp.forEach(t);for(var n=0;n<xp.length;n++){var r=xp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<xp.length&&(n=xp[0],n.blockedOn===null);)Ep(n),n.blockedOn===null&&xp.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[et]||null;if(typeof a==`function`)o||Mp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[et]||null)s=o.formAction;else if(pp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Mp(n)}}}function Pp(){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 Fp(e){this._internalRoot=e}Ip.prototype.render=Fp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;np(n,uu(),e,t,null,null)},Ip.prototype.unmount=Fp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;np(e.current,2,null,e,null,null),_u(),t[tt]=null}};function Ip(e){this._internalRoot=e}Ip.prototype.unstable_scheduleHydration=function(e){if(e){var t=Xe();e={blockedOn:null,target:e,priority:t};for(var n=0;n<xp.length&&t!==0&&t<xp[n].priority;n++);xp.splice(n,0,e),n===0&&Ep(e)}};var Lp=n.version;if(Lp!==`19.2.6`)throw Error(i(527,Lp,`19.2.6`));F.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=u(t),e=e===null?null:d(e),e=e===null?null:e.stateNode,e};var Rp={bundleType:0,version:`19.2.6`,rendererPackageName:`react-dom`,currentDispatcherRef:P,reconcilerVersion:`19.2.6`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var zp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zp.isDisabled&&zp.supportsFiber)try{Ae=zp.inject(Rp),je=zp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Ls,s=Rs,c=zs;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=ep(e,1,!1,null,null,n,r,null,o,s,c,Pp),e[tt]=t.current,xd(e),new Fp(t)}})),y=s(((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=v()})),b=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},x=new class extends b{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},S={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},C=new class{#e=S;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function w(e){setTimeout(e,0)}var T=typeof window>`u`||`Deno`in globalThis;function E(){}function D(e,t){return typeof e==`function`?e(t):e}function O(e){return typeof e==`number`&&e>=0&&e!==1/0}function k(e,t){return Math.max(e+(t||0)-Date.now(),0)}function A(e,t){return typeof e==`function`?e(t):e}function j(e,t){return typeof e==`function`?e(t):e}function M(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==N(o,t.options))return!1}else if(!P(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function ee(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(te(t.options.mutationKey)!==te(a))return!1}else if(!P(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function N(e,t){return(t?.queryKeyHashFn||te)(e)}function te(e){return JSON.stringify(e,(e,t)=>z(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function P(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>P(e[n],t[n])):!1}var F=Object.prototype.hasOwnProperty;function I(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=R(e)&&R(t);if(!r&&!(z(e)&&z(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:F.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=I(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function L(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function R(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function z(e){if(!B(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!B(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function B(e){return Object.prototype.toString.call(e)===`[object Object]`}function V(e){return new Promise(t=>{C.setTimeout(t,e)})}function ne(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:I(e,t)}function re(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function ie(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var H=Symbol();function ae(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===H?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function oe(e,t){return typeof e==`function`?e(...t):!!e}function se(e,t,n){let r=!1,i;return Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var ce=(()=>{let e=()=>T;return{isServer(){return e()},setIsServer(t){e=t}}})();function le(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var ue=w;function de(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=ue,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var fe=de(),pe=new class extends b{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function me(e){return Math.min(1e3*2**e,3e4)}function he(e){return(e??`online`)===`online`?pe.isOnline():!0}var ge=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function _e(e){let t=!1,n=0,r,i=le(),a=()=>i.status!==`pending`,o=t=>{if(!a()){let n=new ge(t);f(n),e.onCancel?.(n)}},s=()=>{t=!0},c=()=>{t=!1},l=()=>x.isFocused()&&(e.networkMode===`always`||pe.isOnline())&&e.canRun(),u=()=>he(e.networkMode)&&e.canRun(),d=e=>{a()||(r?.(),i.resolve(e))},f=e=>{a()||(r?.(),i.reject(e))},p=()=>new Promise(t=>{r=e=>{(a()||l())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,a()||e.onContinue?.()}),m=()=>{if(a())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(d).catch(r=>{if(a())return;let i=e.retry??(ce.isServer()?0:3),o=e.retryDelay??me,s=typeof o==`function`?o(n,r):o,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){f(r);return}n++,e.onFail?.(n,r),V(s).then(()=>l()?void 0:p()).then(()=>{t?f(r):m()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(r?.(),i),cancelRetry:s,continueRetry:c,canStart:u,start:()=>(u()?m():p().then(m),i)}}var ve=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),O(this.gcTime)&&(this.#e=C.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(ce.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(C.clearTimeout(this.#e),this.#e=void 0)}};function ye(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{se(e,()=>t.signal,()=>n=!0)},u=ae(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?ie:re;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?xe:be,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:be(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.options.persister?t.fetchFn=()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function be(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function xe(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Se=class extends ve{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=Te(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=Te(this.options);e.data!==void 0&&(this.setState(we(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=ne(this.state.data,e,this.options);return this.#l({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#l({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(E).catch(E):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>j(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===H||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>A(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!k(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#a&&(this.#s||this.#c()?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}#c(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}invalidate(){this.state.isInvalidated||this.#l({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=ae(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?ye(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#l({type:`fetch`,meta:a.fetchOptions?.meta}),this.#a=_e({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof ge&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#l({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#l({type:`pause`})},onContinue:()=>{this.#l({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#a.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof ge){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#l({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#l(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Ce(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...we(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),fe.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Ce(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:he(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function we(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function Te(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Ee=class extends b{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=le(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),Oe(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ke(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ke(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof j(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!L(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&Ae(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||j(this.options.enabled,this.#t)!==j(t.enabled,this.#t)||A(this.options.staleTime,this.#t)!==A(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||j(this.options.enabled,this.#t)!==j(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return Me(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(E)),t}#g(){this.#b();let e=A(this.options.staleTime,this.#t);if(ce.isServer()||this.#r.isStale||!O(e))return;let t=k(this.#r.dataUpdatedAt,e)+1;this.#d=C.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(ce.isServer()||j(this.options.enabled,this.#t)===!1||!O(this.#p)||this.#p===0)&&(this.#f=C.setInterval(()=>{(this.options.refetchIntervalInBackground||x.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(C.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(C.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Oe(e,t),o=i&&Ae(e,n,t,r);(a||o)&&(l={...l,...Ce(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(m=`success`,d=ne(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h)if(i&&d===a?.data&&t.select===this.#c)d=this.#l;else try{this.#c=t.select,d=t.select(d),d=ne(i?.data,d,t),this.#l=d,this.#s=null}catch(e){this.#s=e}this.#s&&(f=this.#s,d=this.#l,p=Date.now(),m=`error`);let g=l.fetchStatus===`fetching`,_=m===`pending`,v=m===`error`,y=_&&g,b=d!==void 0,x={status:m,fetchStatus:l.fetchStatus,isPending:_,isSuccess:m===`success`,isError:v,isInitialLoading:y,isLoading:y,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!_,isLoadingError:v&&!b,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:v&&b,isStale:je(e,t),refetch:this.refetch,promise:this.#o,isEnabled:j(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=x.data!==void 0,r=x.status===`error`&&!t,i=e=>{r?e.reject(x.error):t&&e.resolve(x.data)},a=()=>{i(this.#o=x.promise=le())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||x.data!==o.value)&&a();break;case`rejected`:(!r||x.error!==o.reason)&&a();break}}return x}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!L(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){fe.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function De(e,t){return j(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&j(t.retryOnMount,e)===!1)}function Oe(e,t){return De(e,t)||e.state.data!==void 0&&ke(e,t,t.refetchOnMount)}function ke(e,t,n){if(j(t.enabled,e)!==!1&&A(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&je(e,t)}return!1}function Ae(e,t,n,r){return(e!==t||j(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&je(e,n)}function je(e,t){return j(t.enabled,e)!==!1&&e.isStaleByTime(A(t.staleTime,e))}function Me(e,t){return!L(e.getCurrentResult(),t)}var Ne=class extends ve{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||Pe(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=_e({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),fe.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function Pe(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var Fe=class extends b{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new Ne({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=Ie(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=Ie(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=Ie(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=Ie(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){fe.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ee(t,e))}findAll(e={}){return this.getAll().filter(t=>ee(e,t))}notify(e){fe.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return fe.batch(()=>Promise.all(e.map(e=>e.continue().catch(E))))}};function Ie(e){return e.options.scope?.id}var Le=class extends b{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),L(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&te(t.mutationKey)!==te(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??Pe();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){fe.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}};function Re(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function ze(e,t,n){let r=e.slice(0);return r[t]=n,r}var Be=class extends b{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,fe.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!L(e,n)});!o&&!s||(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(Re(e,n).forEach(e=>{e.destroy()}),Re(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){return t.map((n,r)=>{let i=e[r];return n.defaultedQueryOptions.notifyOnChangeProps?i:n.observer.trackResult(i,e=>{t.forEach(t=>{t.observer.trackProp(e)})})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(!this.#a||this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=I(this.#a,t(e))),this.#a}return e}#f(){return this.#r?.combine!==void 0&&this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new Ee(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=ze(this.#t,n,t),this.#h())}#h(){if(this.hasListeners()){let e=this.#u(this.#t,this.#l),t=this.#f(),n=this.#a,r=t?n:this.#d(e,this.#r?.combine);(t||n!==r)&&fe.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},Ve=class extends b{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??N(r,t),a=this.get(i);return a||(a=new Se({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){fe.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>M(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>M(e,t)):t}notify(e){fe.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){fe.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){fe.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},He=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Ve,this.#t=e.mutationCache||new Fe,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=x.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=pe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(A(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=D(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return fe.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;fe.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return fe.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=fe.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(E).catch(E)}invalidateQueries(e,t={}){return fe.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=fe.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(E)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(E)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(A(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(E).catch(E)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(E).catch(E)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return pe.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(te(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{P(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(te(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{P(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=N(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===H&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},Ue=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),We=s(((e,t)=>{t.exports=Ue()})),U=u(p(),1),W=We(),Ge=U.createContext(void 0),G=e=>{let t=U.useContext(Ge);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},Ke=({client:e,children:t})=>(U.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,W.jsx)(Ge.Provider,{value:e,children:t})),qe=U.createContext(!1),Je=()=>U.useContext(qe);qe.Provider;function Ye(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Xe=U.createContext(Ye()),Ze=()=>U.useContext(Xe),Qe=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?oe(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},$e=e=>{U.useEffect(()=>{e.clearReset()},[e])},et=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||oe(n,[e.error,r])),tt=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},nt=(e,t)=>e.isLoading&&e.isFetching&&!t,rt=(e,t)=>e?.suspense&&t.isPending,it=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function at({queries:e,...t},n){let r=G(n),i=Je(),a=Ze(),o=U.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:`optimistic`,t}),[e,r,i]);o.forEach(e=>{tt(e),Qe(e,a,r.getQueryCache().get(e.queryHash))}),$e(a);let[s]=U.useState(()=>new Be(r,o,t)),[c,l,u]=s.getOptimisticResult(o,t.combine),d=!i&&t.subscribed!==!1;U.useSyncExternalStore(U.useCallback(e=>d?s.subscribe(fe.batchCalls(e)):E,[s,d]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),U.useEffect(()=>{s.setQueries(o,t)},[o,t,s]);let f=c.some((e,t)=>rt(o[t],e))?c.flatMap((e,t)=>{let n=o[t];return n&&rt(n,e)?it(n,new Ee(r,n),a):[]}):[];if(f.length>0)throw Promise.all(f);let p=c.find((e,t)=>{let n=o[t];return n&&et({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(p?.error)throw p.error;return l(u())}function ot(e,t,n){let r=Je(),i=Ze(),a=G(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,tt(o),Qe(o,i,s),$e(i);let c=!a.getQueryCache().get(o.queryHash),[l]=U.useState(()=>new t(a,o)),u=l.getOptimisticResult(o),d=!r&&e.subscribed!==!1;if(U.useSyncExternalStore(U.useCallback(e=>{let t=d?l.subscribe(fe.batchCalls(e)):E;return l.updateResult(),t},[l,d]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),U.useEffect(()=>{l.setOptions(o)},[o,l]),rt(o,u))throw it(o,l,i);if(et({result:u,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw u.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,u),o.experimental_prefetchInRender&&!ce.isServer()&&nt(u,r)&&(c?it(o,l,i):s?.promise)?.catch(E).finally(()=>{l.updateResult()}),o.notifyOnChangeProps?u:l.trackResult(u)}function K(e,t){return ot(e,Ee,t)}function q(e,t){let n=G(t),[r]=U.useState(()=>new Le(n,e));U.useEffect(()=>{r.setOptions(e)},[r,e]);let i=U.useSyncExternalStore(U.useCallback(e=>r.subscribe(fe.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=U.useCallback((e,t)=>{r.mutate(e,t).catch(E)},[r]);if(i.error&&oe(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var st=u(y(),1),ct=(typeof document<`u`?document.querySelector(`meta[name="recall-token"]`)?.getAttribute(`content`):null)??``;function lt(){return ct}function ut(e){let t=lt(),n={...e};return t&&(n[`x-recall-token`]=t),n}async function J(e){let t=await fetch(e,{headers:ut()});if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`${t.status} ${t.statusText}: ${e.slice(0,200)}`)}return await t.json()}async function Y(e,t,n){let r=await fetch(t,{method:e,headers:ut(n===void 0?void 0:{"content-type":`application/json`}),body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`${r.status} ${r.statusText}: ${e.slice(0,200)}`)}return await r.json()}var X={stats:()=>J(`/api/stats`),health:()=>J(`/api/health`),neighborhood:(e,t={})=>{let n=new URLSearchParams;t.budget&&n.set(`budget`,String(t.budget)),t.scoring&&n.set(`scoring`,t.scoring);let r=n.toString();return J(`/api/neighborhood/${encodeURIComponent(e)}${r?`?${r}`:``}`)},projects:()=>J(`/api/projects`),sessions:(e={})=>{let t=new URLSearchParams({limit:String(e.limit??200)});return e.projectName&&t.set(`project`,e.projectName),e.since&&t.set(`since`,e.since),e.until&&t.set(`until`,e.until),e.collectionId&&t.set(`collection`,e.collectionId),J(`/api/sessions?${t}`)},session:e=>J(`/api/sessions/${encodeURIComponent(e)}`),graph:e=>J(`/api/graph/${encodeURIComponent(e)}`),search:(e,t=40,n,r)=>{let i=new URLSearchParams({q:e,limit:String(t)});return n&&i.set(`project`,n),r&&i.set(`mode`,r),J(`/api/search?${i}`)},allTags:()=>J(`/api/tags`),sessionTags:e=>J(`/api/sessions/${encodeURIComponent(e)}/tags`),addSessionTag:async(e,t)=>{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/tags`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({tag:t})});if(!n.ok)throw Error(`${n.status}: ${await n.text()}`);return await n.json()},removeSessionTag:async(e,t)=>{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/tags/${encodeURIComponent(t)}`,{method:`DELETE`});if(!n.ok)throw Error(`${n.status}: ${await n.text()}`);return await n.json()},shareStats:e=>J(`/api/sessions/${encodeURIComponent(e)}/share-stats`),listCollections:(e=!1)=>{let t=new URLSearchParams;e&&t.set(`archived`,`1`);let n=t.toString();return J(`/api/collections${n?`?${n}`:``}`)},getCollection:e=>J(`/api/collections/${encodeURIComponent(e)}`),createCollection:e=>Y(`POST`,`/api/collections`,e),patchCollection:(e,t)=>Y(`PATCH`,`/api/collections/${encodeURIComponent(e)}`,t),archiveCollection:e=>Y(`POST`,`/api/collections/${encodeURIComponent(e)}/archive`),restoreCollection:e=>Y(`POST`,`/api/collections/${encodeURIComponent(e)}/restore`),addSessionToCollection:(e,t,n)=>Y(`POST`,`/api/collections/${encodeURIComponent(e)}/members`,{session_id:t,note:n??null}),removeSessionFromCollection:(e,t)=>Y(`DELETE`,`/api/collections/${encodeURIComponent(e)}/members/${encodeURIComponent(t)}`),sessionCollections:e=>J(`/api/sessions/${encodeURIComponent(e)}/collections`),getAutoTagConfig:()=>J(`/api/config/auto-tag`),putAutoTagConfig:e=>Y(`PUT`,`/api/config/auto-tag`,e),startScan:e=>Y(`POST`,`/api/tags/scan`,{scope:e}),getScan:e=>J(`/api/tags/scan/${encodeURIComponent(e)}`),applyScan:(e,t)=>Y(`POST`,`/api/tags/scan/${encodeURIComponent(e)}/apply`,{selection:t}),cancelScan:e=>Y(`DELETE`,`/api/tags/scan/${encodeURIComponent(e)}`),getMcpInstallStatus:()=>J(`/api/config/mcp-install`),installMcp:()=>Y(`POST`,`/api/config/mcp-install`),uninstallMcp:()=>Y(`DELETE`,`/api/config/mcp-install`),getAutopilotStatus:()=>J(`/api/autopilot/status`),kickAutopilot:()=>Y(`POST`,`/api/autopilot/kick`),runClaudeCliScan:(e,t={})=>Y(`POST`,`/api/tags/scan/claude-cli`,t.scanId?{scope:e,scanId:t.scanId}:{scope:e}),subscribeToScanProgress:e=>new EventSource(`/api/claude-cli/scan/${encodeURIComponent(e)}/progress`),listPrompts:()=>J(`/api/prompts`),runPrompt:(e,t)=>Y(`POST`,`/api/prompts/run`,{name:e,args:t}),getSemanticStatus:()=>J(`/api/semantic/status`),setSemanticEnabled:e=>Y(`PUT`,`/api/semantic/config`,{enabled:e}),triggerSemanticBackfill:(e=200)=>Y(`POST`,`/api/semantic/backfill`,{limit:e}),getSessionStats:e=>J(`/api/stats/session/${encodeURIComponent(e)}`),getProjectStats:e=>J(`/api/stats/project/${encodeURIComponent(e)}`),getOverviewStats:(e=`all`)=>J(`/api/stats/overview?range=${e}`),triggerStatsBackfill:e=>Y(`POST`,`/api/stats/backfill`,e?{limit:e}:{}),getOnboarding:()=>J(`/api/onboarding`),patchOnboarding:e=>Y(`PUT`,`/api/onboarding`,e),resetOnboarding:()=>Y(`POST`,`/api/onboarding/reset`),getSessionCommits:e=>J(`/api/sessions/${encodeURIComponent(e)}/commits`),refreshSessionCommits:e=>J(`/api/sessions/${encodeURIComponent(e)}/commits?refresh=1`),getCommitSessions:e=>J(`/api/commits/${encodeURIComponent(e)}/session`),getDiscoverToday:()=>J(`/api/discover/today`),getAutoTitleConfig:()=>J(`/api/config/auto-title`),putAutoTitleConfig:e=>Y(`PUT`,`/api/config/auto-title`,e),generateAutoTitle:e=>Y(`POST`,`/api/sessions/${encodeURIComponent(e)}/auto-title`),regenerateTitle:(e,t={})=>Y(`POST`,`/api/sessions/${encodeURIComponent(e)}/regenerate-title`,t),revertAutoTitle:e=>Y(`POST`,`/api/sessions/${encodeURIComponent(e)}/auto-title/revert`),listAutoRules:()=>J(`/api/auto-collections/rules`),createAutoRule:e=>Y(`POST`,`/api/auto-collections/rules`,e),patchAutoRule:(e,t)=>Y(`PATCH`,`/api/auto-collections/rules/${encodeURIComponent(e)}`,t),deleteAutoRule:e=>Y(`DELETE`,`/api/auto-collections/rules/${encodeURIComponent(e)}`),listAutoSuggestions:(e=!1)=>J(`/api/auto-collections/suggestions${e?`?dismissed=1`:``}`),acceptAutoSuggestion:e=>Y(`POST`,`/api/auto-collections/suggestions/${encodeURIComponent(e)}/accept`),dismissAutoSuggestion:e=>Y(`POST`,`/api/auto-collections/suggestions/${encodeURIComponent(e)}/dismiss`),detectAutoSuggestionsNow:()=>Y(`POST`,`/api/auto-collections/detect`),previewAutoSuggestion:(e,t=3)=>J(`/api/auto-collections/suggestions/${encodeURIComponent(e)}/preview?limit=${t}`),listAutoCollectionIds:()=>J(`/api/auto-collections/parents`),healthScores:()=>J(`/api/stats/health`),healthScore:e=>J(`/api/stats/health/${e}`),getVerificationConfig:()=>J(`/api/config/verification`),setVerificationConfig:e=>Y(`PUT`,`/api/config/verification`,{enabled:e}),getVerificationDetail:e=>J(`/api/sessions/${encodeURIComponent(e)}/verification`),listThreads:(e=!1)=>J(`/api/threads${e?`?archived=1`:``}`),getThread:e=>J(`/api/threads/${encodeURIComponent(e)}`),createThread:e=>Y(`POST`,`/api/threads`,e),patchThread:(e,t)=>Y(`PATCH`,`/api/threads/${encodeURIComponent(e)}`,t),listThreadFolders:()=>J(`/api/thread-folders`),createThreadFolder:e=>Y(`POST`,`/api/thread-folders`,{name:e.name,parent_folder_id:e.parentFolderId??null,project_scope:e.projectScope??null}),patchThreadFolder:(e,t)=>Y(`PATCH`,`/api/thread-folders/${encodeURIComponent(e)}`,t),deleteThreadFolder:e=>Y(`DELETE`,`/api/thread-folders/${encodeURIComponent(e)}`),reorderThreadFolders:e=>Y(`POST`,`/api/thread-folders/reorder`,{parent_folder_id:e.parentFolderId,project_scope:e.projectScope,ordered_ids:e.orderedIds}),addSessionToThread:(e,t)=>Y(`POST`,`/api/threads/${encodeURIComponent(e)}/sessions`,t),removeSessionFromThread:(e,t)=>Y(`DELETE`,`/api/threads/${encodeURIComponent(e)}/sessions/${encodeURIComponent(t)}`),setThreadSessionParent:(e,t,n)=>Y(`PATCH`,`/api/threads/${encodeURIComponent(e)}/sessions/${encodeURIComponent(t)}`,{parentSessionId:n}),threadsForSession:e=>J(`/api/sessions/${encodeURIComponent(e)}/threads`),threadTitlesPreflight:e=>J(`/api/threads/${encodeURIComponent(e)}/titles/preflight`),startThreadTitlesJob:(e,t)=>Y(`POST`,`/api/threads/${encodeURIComponent(e)}/titles/generate`,{force:t}),cancelJob:e=>Y(`DELETE`,`/api/jobs/${encodeURIComponent(e)}`),listSuggestions:(e={})=>{let t=new URLSearchParams;e.status&&t.set(`status`,e.status),e.linkType&&t.set(`type`,e.linkType),e.inferredBy&&t.set(`inferred_by`,e.inferredBy),e.sourceSessionId&&t.set(`source_id`,e.sourceSessionId),e.targetSessionId&&t.set(`target_id`,e.targetSessionId),typeof e.limit==`number`&&t.set(`limit`,String(e.limit));let n=t.toString();return J(n?`/api/links/suggestions?${n}`:`/api/links/suggestions`)},decideSuggestion:(e,t)=>Y(`PATCH`,`/api/links/suggestions/${e}`,{status:t}),bulkDecideSuggestions:(e,t)=>Y(`POST`,`/api/links/suggestions/bulk-decide`,{ids:e,status:t}),sessionLinks:e=>J(`/api/sessions/${encodeURIComponent(e)}/links?type=wiki_link`),createWikiLink:(e,t,n={created_via:`context_menu`})=>Y(`POST`,`/api/links`,{source_session_id:e,target_session_id:t,link_type:`wiki_link`,evidence:n}),removeLink:e=>Y(`DELETE`,`/api/links/${e}`),listBugPatterns:(e={})=>{let t=new URLSearchParams;typeof e.minCount==`number`&&t.set(`min_count`,String(e.minCount)),e.status&&t.set(`status`,e.status),e.project&&t.set(`project`,e.project),typeof e.limit==`number`&&t.set(`limit`,String(e.limit)),typeof e.offset==`number`&&t.set(`offset`,String(e.offset));let n=t.toString();return J(n?`/api/bug-patterns?${n}`:`/api/bug-patterns`)},getBugPattern:e=>J(`/api/bug-patterns/${encodeURIComponent(e)}`),resolveBugPattern:(e,t,n)=>Y(`POST`,`/api/bug-patterns/${encodeURIComponent(e)}/resolve`,{resolved_in_session_id:t,fix_summary:n}),splitBugPattern:(e,t)=>Y(`POST`,`/api/bug-patterns/${encodeURIComponent(e)}/split`,{member_session_ids:t}),getBugPatternsSetupStatus:()=>J(`/api/bug-patterns/setup-status`),bugSignatures:(e,t=100)=>{let n=new URLSearchParams;return e&&n.set(`project`,e),n.set(`limit`,String(t)),J(`/api/bug-signatures?${n.toString()}`)},resolveBugSignature:(e,t)=>Y(`POST`,`/api/bug-signatures/${encodeURIComponent(e)}/resolve`,t),unresolveBugSignature:e=>Y(`POST`,`/api/bug-signatures/${encodeURIComponent(e)}/unresolve`),bugPatternsGraph:(e,t=!0)=>{let n=new URLSearchParams;e&&n.set(`project`,e),t||n.set(`include_resolved`,`0`);let r=n.toString();return J(`/api/bug-patterns/graph${r?`?${r}`:``}`)},extractOutputsPreflight:e=>dt(`/api/extract-outputs/preflight`,e),extractOutputsRun:e=>dt(`/api/extract-outputs/run`,{preflight_token:e}),extractOutputsCancel:e=>ft(`/api/extract-outputs/jobs/${encodeURIComponent(e)}`),extractOutputsJobSnapshot:e=>J(`/api/extract-outputs/jobs/${encodeURIComponent(e)}`),launcherBudget:()=>J(`/api/extract-outputs/budget`),synthesizePreflight:e=>dt(`/api/bug-patterns/synthesize/preflight`,e),synthesizeRun:e=>dt(`/api/bug-patterns/synthesize/run`,{preflight_token:e}),synthesizeJobSnapshot:e=>J(`/api/bug-patterns/synthesize/jobs/${encodeURIComponent(e)}`),synthesizeCancel:e=>ft(`/api/bug-patterns/synthesize/jobs/${encodeURIComponent(e)}`),threadScanPreflight:e=>dt(`/api/threads/scan/preflight`,e),threadScanApply:e=>dt(`/api/threads/scan/apply`,e),threadScanJobSnapshot:e=>J(`/api/threads/scan/jobs/${encodeURIComponent(e)}`),threadScanCancel:e=>ft(`/api/threads/scan/jobs/${encodeURIComponent(e)}`),syncActivePreflight:e=>Y(`POST`,`/api/threads/sync-active`,{...e,mode:`preflight`}),syncActiveApply:e=>Y(`POST`,`/api/threads/sync-active`,{...e,mode:`apply`}),listMacroRepos:()=>J(`/api/macro-repos`),createMacroRepo:e=>Y(`POST`,`/api/macro-repos`,e),patchMacroRepo:(e,t)=>Y(`PATCH`,`/api/macro-repos/${e}`,t),deleteMacroRepo:e=>Y(`DELETE`,`/api/macro-repos/${e}`),addMacroRepoMember:(e,t)=>Y(`POST`,`/api/macro-repos/${e}/members`,{project_id:t}),removeMacroRepoMember:(e,t)=>Y(`DELETE`,`/api/macro-repos/${e}/members/${t}`),listBugSynthesisResults:e=>{let t=new URLSearchParams;e?.scope&&t.set(`scope`,e.scope),e?.target_id&&t.set(`target_id`,e.target_id),e?.limit&&t.set(`limit`,String(e.limit));let n=t.toString();return J(`/api/bug-synthesis${n?`?${n}`:``}`)},bugSynthesisCounts:e=>J(`/api/bug-synthesis/counts?scope=${e}`),getBugSynthesisResult:e=>J(`/api/bug-synthesis/${e}`),deleteBugSynthesisResult:e=>Y(`DELETE`,`/api/bug-synthesis/${e}`)};async function dt(e,t){let n=await fetch(e,{method:`POST`,headers:ut({"content-type":`application/json`,"x-recall-launcher":`1`}),body:JSON.stringify(t)});if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`${n.status} ${n.statusText}: ${e.slice(0,300)}`)}return await n.json()}async function ft(e){let t=await fetch(e,{method:`DELETE`,headers:ut({"x-recall-launcher":`1`})});if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`${t.status} ${t.statusText}: ${e.slice(0,300)}`)}return await t.json()}function pt(e){return e?e.slice(0,8):``}function mt(e,t){if(!e)return``;let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:n.slice(0,t-1)+`…`}function ht(e){if(!e)return``;let t=new Date(e).getTime();if(Number.isNaN(t))return``;let n=Date.now()-t,r=Math.floor(n/1e3);if(r<60)return`${r}s ago`;let i=Math.floor(r/60);if(i<60)return`${i}m ago`;let a=Math.floor(i/60);if(a<24)return`${a}h ago`;let o=Math.floor(a/24);if(o<30)return`${o}d ago`;let s=Math.floor(o/30);return s<12?`${s}mo ago`:`${Math.floor(o/365)}y ago`}function gt(e){return e==null?`0`:e.toLocaleString()}function _t(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function vt(e){let t=e.split(/\s+/).filter(e=>e.length>1).map(_t);return t.length===0?null:RegExp(`(${t.join(`|`)})`,`gi`)}function yt(){let[e,t]=(0,U.useState)(null),n=(0,U.useRef)(null);return(0,U.useEffect)(()=>{let e=new EventSource(`/api/autopilot/events`);return n.current=e,e.addEventListener(`state`,e=>{try{t(JSON.parse(e.data))}catch(e){console.error(`autopilot state parse failed`,e)}}),e.onerror=()=>{},()=>e.close()},[]),e}function bt(){return K({queryKey:[`auto-tag-config`],queryFn:()=>X.getAutoTagConfig()})}function xt(){let e=G();return q({mutationFn:e=>X.putAutoTagConfig(e),onSuccess:()=>void e.invalidateQueries({queryKey:[`auto-tag-config`]})})}function St(){let e=bt(),t=yt();return!e.data?.autopilot||!t||t.status===`idle`?null:t.status===`error`?(0,W.jsx)(`div`,{className:`text-[11px] px-2 py-1 rounded-full border border-role-user/40 bg-role-user/10 text-role-user`,title:t.lastError??`autopilot error`,children:`⚠ autopilot error`}):(0,W.jsxs)(`div`,{className:`text-[11px] px-2 py-1 rounded-full border border-accent/40 bg-accent/10 text-accent flex items-center gap-1.5`,title:`Autopilot is tagging untagged sessions in the background.`,children:[(0,W.jsx)(`span`,{className:`inline-block w-1.5 h-1.5 rounded-full bg-accent animate-pulse`}),`tagging `,t.processed,`/`,t.total]})}var Ct=[{value:1,label:`bad`,emoji:`😡`},{value:2,label:`meh`,emoji:`😕`},{value:3,label:`ok`,emoji:`😐`},{value:4,label:`good`,emoji:`🙂`},{value:5,label:`great`,emoji:`🤩`}];function wt(){let[e,t]=(0,U.useState)(!1),[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(`idle`),[c,l]=(0,U.useState)(null);(0,U.useEffect)(()=>{function n(n){n.key===`Escape`&&e&&t(!1)}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e]);function u(){r(null),a(``),s(`idle`),l(null)}async function d(){if(n!==null){s(`sending`),l(null);try{let e=await fetch(`/api/feedback`,{method:`POST`,headers:{"Content-Type":`application/json`,...ut()},body:JSON.stringify({score:n,comment:i.trim()||null,trigger_kind:`manual`})});if(e.ok){s(`sent`),setTimeout(()=>{t(!1),u()},1400);return}let r=await e.json().catch(()=>({}));e.status===429?l(r.detail??`You sent feedback recently. Try again later.`):l(r.detail??r.error??`Failed (${e.status})`),s(`error`)}catch(e){l(e instanceof Error?e.message:`network error`),s(`error`)}}}return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors text-accent border-accent/40 hover:bg-accent hover:text-bg hover:border-accent`,"aria-label":`Send feedback`,title:`Send feedback to the Claude Recall team`,children:`💬 Feedback`}),e&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-end justify-center bg-black/40 p-4 backdrop-blur-sm sm:items-center`,onClick:()=>{t(!1),u()},children:(0,W.jsxs)(`div`,{className:`w-full max-w-md rounded-2xl bg-white p-5 shadow-2xl dark:bg-neutral-900`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`mb-3 flex items-start justify-between`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-neutral-900 dark:text-neutral-100`,children:`Tell us how it's going`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-neutral-500 dark:text-neutral-400`,children:`Sent to the Claude Recall team. Pro users are attributed automatically.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{t(!1),u()},className:`text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-200`,"aria-label":`Close`,children:`×`})]}),(0,W.jsx)(`div`,{className:`mb-3 flex justify-between gap-1`,children:Ct.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e.value),className:`flex flex-1 flex-col items-center rounded-lg border px-2 py-2 text-xs transition ${n===e.value?`border-accent bg-accent/15 text-accent`:`border-line text-fg-dim hover:border-accent/60`}`,"aria-pressed":n===e.value,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:e.emoji}),(0,W.jsx)(`span`,{className:`mt-1`,children:e.label})]},e.value))}),(0,W.jsx)(`textarea`,{value:i,onChange:e=>a(e.target.value),placeholder:n!==null&&n<=2?`What is the biggest pain point?`:`Anything you'd add? (optional)`,maxLength:2e3,rows:4,className:`w-full resize-none rounded-lg border border-line bg-bg-elevated px-3 py-2 text-sm text-fg placeholder-fg-muted focus:border-accent focus:outline-none focus:ring-1 focus:ring-accent`}),c&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-red-600 dark:text-red-400`,children:c}),o===`sent`&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-emerald-600 dark:text-emerald-400`,children:`Thanks. Your feedback landed.`}),(0,W.jsxs)(`div`,{className:`mt-3 flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-xs text-neutral-400`,children:[i.length,`/2000`]}),(0,W.jsx)(`button`,{type:`button`,onClick:d,disabled:n===null||o===`sending`||o===`sent`,className:`rounded-lg bg-accent px-4 py-2 text-sm font-medium text-bg shadow-sm hover:brightness-110 disabled:cursor-not-allowed disabled:opacity-50`,children:o===`sending`?`Sending…`:o===`sent`?`Sent`:`Send feedback`})]})]})})]})}function Tt(){return K({queryKey:[`license-status`],queryFn:async()=>{let e=await fetch(`/api/license/status`,{headers:ut()});if(!e.ok)throw Error(`${e.status}: ${await e.text()}`);return await e.json()},staleTime:6e4})}var Et=`https://clauderecall.com/pricing`;function Dt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function Ot(){let{data:e,isLoading:t}=Tt(),[n,r]=(0,U.useState)(!1),i=(0,U.useRef)(null);if((0,U.useEffect)(()=>{if(!n)return;let e=e=>{i.current&&(i.current.contains(e.target)||r(!1))},t=e=>{e.key===`Escape`&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[n]),t||!e)return null;if(e.tier===`pro`){let t=Dt(e.activated_at);return(0,W.jsxs)(`div`,{className:`relative`,ref:i,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`text-[11px] font-bold tracking-wide px-2 py-0.5 rounded-md bg-accent text-bg hover:brightness-110 transition`,title:`Pro license active. Click for details.`,"aria-haspopup":`dialog`,"aria-expanded":n,children:[`PRO`,e.test_mode&&(0,W.jsx)(`span`,{className:`ml-1 font-medium opacity-80`,children:`· TEST`})]}),n&&(0,W.jsxs)(`div`,{role:`dialog`,className:`absolute right-0 top-full mt-2 w-72 z-50 rounded-lg border border-line bg-bg-elevated shadow-lg p-3 text-xs`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsx)(`div`,{className:`text-[11px] font-bold tracking-wide px-1.5 py-0.5 rounded bg-accent text-bg`,children:`PRO`}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Lifetime`})]}),(0,W.jsxs)(`dl`,{className:`space-y-1.5`,children:[e.key_short&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Key`}),(0,W.jsx)(`dd`,{className:`font-mono text-fg truncate`,children:e.key_short})]}),e.customer_email&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Email`}),(0,W.jsx)(`dd`,{className:`text-fg truncate`,children:e.customer_email})]}),t&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Activated`}),(0,W.jsx)(`dd`,{className:`text-fg`,children:t})]}),e.test_mode&&(0,W.jsxs)(`div`,{className:`flex justify-between gap-2`,children:[(0,W.jsx)(`dt`,{className:`text-fg-muted`,children:`Mode`}),(0,W.jsx)(`dd`,{className:`text-accent`,children:`Test mode`})]})]})]})]})}return(0,W.jsxs)(`a`,{href:Et,target:`_blank`,rel:`noreferrer noopener`,className:`text-[11px] font-medium px-2 py-0.5 rounded-md border border-line text-fg-dim hover:text-fg hover:border-accent/60 transition`,title:`Free tier. Click to view Pro pricing.`,children:[`Free `,(0,W.jsx)(`span`,{className:`text-accent`,children:`· Upgrade`})]})}var kt=new Set,At=[],jt=1;function Mt(){for(let e of kt)e([...At])}function Z(e){let t=e.id??`t-${jt++}`,n={id:t,message:e.message,tone:e.tone??`info`,duration:e.duration??4e3,action:e.action};return At=[...At.filter(e=>e.id!==t),n],Mt(),n.duration>0&&setTimeout(()=>Nt(t),n.duration),t}function Nt(e){At=At.filter(t=>t.id!==e),Mt()}function Pt(){let[e,t]=(0,U.useState)([]);return(0,U.useEffect)(()=>(kt.add(t),()=>{kt.delete(t)}),[]),e.length===0?null:(0,W.jsx)(`div`,{className:`fixed bottom-4 right-4 z-50 flex flex-col gap-2 items-end max-w-[calc(100vw-2rem)]`,children:e.map(e=>(0,W.jsxs)(`div`,{className:`min-w-[260px] max-w-[420px] rounded-lg border shadow-lg px-3 py-2 text-xs flex items-start gap-3 ${e.tone===`error`?`bg-bg-elevated border-role-user/60 text-fg`:e.tone===`success`?`bg-bg-elevated border-accent/60 text-fg`:`bg-bg-elevated border-line text-fg`}`,children:[(0,W.jsx)(`div`,{className:`flex-1 break-words`,children:e.message}),e.action&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{e.action.onClick(),Nt(e.id)},className:`text-accent hover:underline whitespace-nowrap`,children:e.action.label}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>Nt(e.id),className:`text-fg-muted hover:text-fg leading-none`,title:`dismiss`,children:`×`})]},e.id))})}var Ft=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20width='64'%20height='64'%20role='img'%20aria-label='Claude%20Recall'%3e%3ctitle%3eClaude%20Recall%20—%20Scrollback%20mark%20(dark%20bg)%3c/title%3e%3cg%20stroke='%23e7e9ee'%20stroke-width='3'%20stroke-linecap='round'%20fill='none'%3e%3cline%20x1='14'%20y1='16'%20x2='46'%20y2='16'/%3e%3cline%20x1='14'%20y1='24'%20x2='38'%20y2='24'/%3e%3c/g%3e%3cline%20x1='10'%20y1='32'%20x2='54'%20y2='32'%20stroke='%23f97316'%20stroke-width='5'%20stroke-linecap='round'/%3e%3cg%20stroke='%23e7e9ee'%20stroke-width='3'%20stroke-linecap='round'%20fill='none'%3e%3cline%20x1='14'%20y1='40'%20x2='42'%20y2='40'/%3e%3cline%20x1='14'%20y1='48'%20x2='36'%20y2='48'/%3e%3c/g%3e%3c/svg%3e`;function It({query:e,onQueryChange:t,matchCount:n,scope:r,onScopeChange:i,canScope:a,projectName:o,onOpenHelp:s,helpActive:c,onOpenStats:l,statsActive:u,onOpenThreads:d,threadsActive:f,onOpenGraph:p,graphActive:m,onOpenSuggestions:h,suggestionsActive:g,onOpenPatterns:_,patternsActive:v,onOpenShare:y,onGoHome:b,semanticMode:x,onSemanticModeChange:S,semanticAvailable:C}){let w=K({queryKey:[`stats`],queryFn:X.stats,refetchInterval:3e4,refetchIntervalInBackground:!1,staleTime:1e4}).data,T=G(),[E,D]=(0,U.useState)(!1),O=async()=>{if(!E){D(!0);try{await T.invalidateQueries(),await T.refetchQueries({type:`active`}),Z({message:`Refreshed all data from the daemon`,tone:`success`,duration:1500})}catch(e){Z({message:`Refresh failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}finally{D(!1)}}};return(0,W.jsxs)(`header`,{className:`flex items-center gap-5 px-5 py-3 border-b border-line bg-bg shrink-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:b,className:`flex items-center gap-2.5 text-left hover:opacity-80 transition-opacity`,title:`Home — back to project list`,"aria-label":`Go to home`,children:[(0,W.jsx)(`img`,{src:Ft,alt:``,className:`h-9 w-9 rounded-md shrink-0`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-base font-bold leading-none flex items-center gap-2`,children:(0,W.jsxs)(`span`,{children:[`Claude `,(0,W.jsx)(`span`,{className:`text-accent`,children:`Recall`})]})}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted mt-1`,children:`local · offline · yours`})]})]}),(0,W.jsx)(Ot,{}),(0,W.jsx)(Lt,{})]}),w&&(0,W.jsxs)(`div`,{className:`hidden md:flex items-center gap-5 text-xs text-fg-dim`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:gt(w.projects)}),` projects`]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:gt(w.sessions)}),` sessions`]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:gt(w.messages)}),` messages`]})]}),(0,W.jsxs)(`div`,{className:`flex-1 flex items-center justify-end gap-3`,children:[a&&e&&(0,W.jsxs)(`div`,{className:`flex items-center text-xs border border-line rounded-lg overflow-hidden`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(`all`),className:`px-3 py-1.5 transition-colors `+(r===`all`?`bg-accent text-bg font-medium`:`bg-bg-elevated text-fg-dim hover:text-fg`),children:`All projects`}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(`project`),className:`px-3 py-1.5 transition-colors border-l border-line `+(r===`project`?`bg-accent text-bg font-medium`:`bg-bg-elevated text-fg-dim hover:text-fg`),title:o?`search only within ${o}`:void 0,children:[`In `,o??`project`]})]}),(0,W.jsxs)(`div`,{className:`relative w-full max-w-xl`,children:[(0,W.jsx)(`input`,{type:`search`,placeholder:`Search every session…`,value:e,onChange:e=>t(e.target.value),className:`w-full bg-bg-elevated border border-line rounded-lg pl-10 pr-14 py-2 text-sm focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent placeholder:text-fg-muted`}),(0,W.jsxs)(`svg`,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-fg-muted`,fill:`none`,stroke:`currentColor`,strokeWidth:2,viewBox:`0 0 24 24`,children:[(0,W.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,W.jsx)(`path`,{d:`m21 21-4.3-4.3`})]}),!e&&(0,W.jsx)(`kbd`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-[10px] font-mono text-fg-muted border border-line rounded px-1.5 py-0.5`,children:`/`}),e&&n!=null&&(0,W.jsxs)(`div`,{className:`absolute right-3 top-1/2 -translate-y-1/2 text-xs text-fg-muted`,children:[n,` `,n===1?`match`:`matches`]})]}),C&&S&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>S(!x),className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(x?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Toggle semantic search — also matches sessions by AI-generated summary + keywords (v0.11)`,children:`Semantic`}),(0,W.jsx)(St,{}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void O(),disabled:E,className:`text-fg-muted hover:text-fg text-xs px-2 py-1 border border-line rounded-md disabled:opacity-60 disabled:cursor-wait`,title:`refresh all data from the daemon`,children:(0,W.jsx)(`span`,{className:`inline-block `+(E?`animate-spin`:`transition-transform`),"aria-hidden":`true`,children:`↻`})}),(0,W.jsx)(`button`,{type:`button`,onClick:d,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(f?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Threads — group sessions by intent (planning + children)`,children:`🧵 Threads`}),(0,W.jsx)(`button`,{type:`button`,onClick:p,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(m?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Cognitive Graph — Galaxy + Focus views over project sessions (v0.17)`,children:`🌌 Graph`}),h&&(0,W.jsx)(`button`,{type:`button`,onClick:h,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(g?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Suggestions Queue — review citation/skill/wiki suggestions inferred by L1–L4 (v0.18 Phase F)`,children:`📋 Queue`}),_&&(0,W.jsx)(`button`,{type:`button`,onClick:_,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(v?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Bug Patterns — recurring bugs across sessions, with linked fixes (v0.20 Phase H)`,children:`🐛 Patterns`}),(0,W.jsx)(`button`,{type:`button`,onClick:l,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(u?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`Cost & token dashboard (v0.10a)`,children:`📊 Stats`}),(0,W.jsx)(wt,{}),y&&(0,W.jsx)(`button`,{type:`button`,onClick:y,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors text-fg-dim hover:text-fg border-line hover:border-accent/60`,title:`Share — pick what to share (Stats, Thread, Patterns, Session)`,children:`↗ Share`}),(0,W.jsx)(`button`,{type:`button`,onClick:s,className:`text-xs px-2.5 py-1 border rounded-md font-medium transition-colors `+(c?`bg-accent text-bg border-accent`:`text-fg-dim hover:text-fg border-line hover:border-accent/60`),title:`open Command Center — docs, CLI reference, keyboard shortcuts (press ?)`,children:`Help`})]})]})}function Lt(){let{data:e}=K({queryKey:[`health`],queryFn:()=>X.health(),staleTime:300*1e3});return e?.version?(0,W.jsxs)(`span`,{className:`text-[10px] font-mono text-fg-muted border border-line rounded px-1.5 py-0.5 leading-none`,title:`Claude Recall daemon version`,children:[`v`,e.version]}):null}var Rt=[{kind:`stats`,emoji:`📊`,name:`Stats`,blurb:`Activity for a time range — cost, top model, top project, sessions.`,status:`live`},{kind:`thread`,emoji:`🧵`,name:`Thread`,blurb:`Multi-session story — N sessions, total cost, project, span.`,status:`live`},{kind:`patterns`,emoji:`🐛`,name:`Patterns`,blurb:`Recurring bug clusters — top 3 by occurrence, resolved rate.`,status:`live`},{kind:`graph`,emoji:`🌐`,name:`Cog-graph`,blurb:`Snapshot of your skill / topic graph. Only Claude Recall has this.`,status:`soon`},{kind:`session`,emoji:`🖥️`,name:`Session`,blurb:`One-session receipt — prompt, cost, files, model.`,status:`live`}];function zt({onPick:e,onClose:t}){return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[600px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted mb-4`,children:`Pick what to share. Each option produces a downloadable card with your handle and the Claude Recall mark.`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 gap-2`,children:Rt.map(t=>{let n=t.status!==`live`;return(0,W.jsxs)(`button`,{type:`button`,disabled:n,onClick:()=>e(t.kind),className:`flex items-start gap-3 text-left p-3 rounded border transition-colors `+(n?`border-line bg-bg/40 opacity-55 cursor-not-allowed`:`border-line hover:border-accent hover:bg-accent/5`),children:[(0,W.jsx)(`span`,{className:`text-2xl leading-none mt-0.5`,children:t.emoji}),(0,W.jsxs)(`span`,{className:`flex-1`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm font-semibold text-fg`,children:t.name}),n&&(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-widest text-fg-muted border border-line rounded px-1 py-0.5`,children:`coming soon`})]}),(0,W.jsx)(`span`,{className:`block text-xs text-fg-muted mt-0.5`,children:t.blurb})]})]},t.kind)})})]})})}async function Bt(e){let t=new File([e.blob],e.fileName,{type:`image/png`}),n=navigator;if(typeof navigator.share==`function`&&n.canShare?.({files:[t]}))try{return await navigator.share({title:e.title,text:e.text,url:e.url,files:[t]}),`shared`}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return`cancelled`}if(typeof URL.createObjectURL==`function`){let t=URL.createObjectURL(e.blob),n=document.createElement(`a`);return n.href=t,n.download=e.fileName,n.click(),URL.revokeObjectURL(t),`download`}return`unsupported`}function Vt(){return typeof navigator.share==`function`}function Ht(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}async function Ut(e){try{let t=window.ClipboardItem;if(!t||!navigator.clipboard?.write)return!1;let n=new t({"image/png":e});return await navigator.clipboard.write([n]),!0}catch{return!1}}var Wt=`https://clauderecall.com`;function Gt(){return typeof window<`u`&&window.RECALL_SHARE_API?window.RECALL_SHARE_API.replace(/\/+$/,``):Wt}async function Kt(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`blob → base64 failed`)),r.onload=()=>{let e=r.result;if(typeof e!=`string`){n(Error(`unexpected reader result`));return}let i=e.indexOf(`,`);t(i>=0?e.slice(i+1):e)},r.readAsDataURL(e)})}async function qt(e){let t=await Kt(e.blob),n=await fetch(`${Gt()}/api/cards`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:e.kind,title:e.title,description:e.description,width:e.width??1080,height:e.height??1350,pngBase64:t})});if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`upload failed (${n.status}): ${e||n.statusText}`)}let r=await n.json();return{id:r.id,url:r.url,imageUrl:r.image_url,expiresAt:r.expires_at}}function Jt(e,t,n){let r=encodeURIComponent(t),i=encodeURIComponent(n);switch(e){case`x`:return`https://twitter.com/intent/tweet?text=${i}&url=${r}`;case`linkedin`:return`https://www.linkedin.com/sharing/share-offsite/?url=${r}`;case`reddit`:return`https://www.reddit.com/submit?url=${r}&title=${i}`;case`facebook`:return`https://www.facebook.com/sharer/sharer.php?u=${r}`;case`threads`:return`https://www.threads.net/intent/post?text=${i}%20${r}`;case`whatsapp`:return`https://wa.me/?text=${i}%20${r}`}}var Yt=[{key:`x`,label:`X`,emoji:`𝕏`},{key:`linkedin`,label:`LinkedIn`,emoji:`in`},{key:`reddit`,label:`Reddit`,emoji:`r/`},{key:`facebook`,label:`Facebook`,emoji:`f`},{key:`threads`,label:`Threads`,emoji:`@`},{key:`whatsapp`,label:`WhatsApp`,emoji:`✉`}];function Xt({getBlob:e,kind:t,title:n,description:r,caption:i,disabled:a}){let[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(null),u=(0,U.useCallback)(async()=>{if(!o){s(!0);try{let i=await e();if(!i){Z({message:`Card not ready yet — wait for the preview.`,tone:`error`});return}let a=await qt({kind:t,title:n,description:r,blob:i});l(a);try{await navigator.clipboard.writeText(a.url),Z({message:`Link copied — preview ready on social platforms`,tone:`success`})}catch{Z({message:`Link ready (clipboard not available)`,tone:`info`})}}catch(e){console.error(`[SocialShareRow] upload failed:`,e),Z({message:`Could not create shareable link: `+(e instanceof Error?e.message:`unknown error`),tone:`error`})}finally{s(!1)}}},[e,t,n,r,o]),d=(0,U.useCallback)(async()=>{if(c)try{await navigator.clipboard.writeText(c.url),Z({message:`Link copied`,tone:`success`})}catch{Z({message:`Clipboard not available`,tone:`error`})}},[c]);return c?(0,W.jsxs)(`div`,{className:`mt-3 border border-line rounded p-3 bg-bg/40 space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] uppercase tracking-wider text-fg-muted`,children:[(0,W.jsx)(`span`,{children:`shareable link`}),(0,W.jsxs)(`span`,{className:`ml-auto text-fg-dim normal-case tracking-normal`,children:[`expires `,new Date(c.expiresAt).toLocaleDateString(`en-US`)]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void d(),className:`w-full text-left text-xs text-accent font-mono break-all hover:underline`,title:`Click to copy`,children:c.url}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2 pt-2`,children:Yt.map(e=>(0,W.jsxs)(`a`,{href:Jt(e.key,c.url,i),target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center justify-center gap-1.5 px-2 py-2 rounded border border-line text-fg-muted text-xs font-medium hover:text-fg hover:border-accent/60 transition-colors`,children:[(0,W.jsx)(`span`,{className:`text-sm leading-none`,children:e.emoji}),(0,W.jsx)(`span`,{children:e.label})]},e.key))}),(0,W.jsx)(`p`,{className:`text-[10px] text-fg-muted pt-1`,children:`TikTok and Instagram have no web share intent — use Save image and upload manually there.`})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>void u(),disabled:a||o,className:`w-full px-4 py-2 mt-3 rounded border border-line text-fg-muted text-xs font-medium hover:text-fg hover:border-accent/60 transition-colors disabled:opacity-50`,title:`Upload the card and get a public link with Open Graph preview`,children:o?`Generating link…`:`🔗 Get shareable link (with social preview)`})}var Zt=`modulepreload`,Qt=function(e,t){return new URL(e,t).href},$t={},en=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Qt(t,n),t in $t)return;$t[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Zt,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},tn=[{key:`7d`,label:`Last 7 days`},{key:`30d`,label:`Last 30 days`},{key:`all`,label:`All time`}],nn=[/^~\//,/^\/Users\//,/^\/home\//,/^[A-Za-z]:\\/];function rn(e){return e.replace(/\x1b\[[0-9;]*[A-Za-z]/g,``).replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,``).trim().slice(0,120)}function an(e){if(!e)return``;let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n>=0?t.slice(n+1):t}function on(e){return e===`7d`?`Last 7 days`:e===`30d`?`Last 30 days`:`All time`}function sn({initialRange:e=`30d`,onClose:t}){let[n,r]=(0,U.useState)(e),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(!0),[c,l]=(0,U.useState)(null),u=(0,U.useRef)(null),d=(0,U.useRef)(),f=K({queryKey:[`stats-overview`,n],queryFn:()=>X.getOverviewStats(n),staleTime:6e4}),p=(0,U.useMemo)(()=>{let e=f.data,t=e?.display?.dollars??`$—`,r=e?.totalSessions??0,a=(e?.inputTokens??0)+(e?.outputTokens??0),o=e?.cacheReadTokens??0,s=e?.byModel?.[0]?.modelLabel??null,c=null;if(e?.topRepos&&e.topRepos.length>0){let t=e.topRepos.reduce((e,t)=>e+(t.cost?.cents??0),0)||1,n=e.topRepos[0],r=an(n.project);c=nn.some(e=>e.test(r))?null:{name:r||`unknown`,sharePct:Math.round((n.cost?.cents??0)/t*100)}}let l=(e?.daily??[]).filter(e=>e.tokens>0).length;return{rangeLabel:on(n),scopeLabel:`All projects`,costDollars:t,totalSessions:r,workingTokens:a,cachedTokens:o,topModel:s,topProject:c,peakHours:null,activeDays:l,verdict:rn(i)}},[f.data,n,i]),m=(0,U.useCallback)(async()=>{s(!0),l(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-DTdthDvG.js`);return{default:e}},[],import.meta.url)).default,t=await en(()=>import(`./stats-BSwqSiFU.js`),__vite__mapDeps([0,1]),import.meta.url),[n,r,i,a]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),o=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:r,weight:700,style:`normal`},{name:`JetBrains Mono`,data:i,weight:400,style:`normal`},{name:`JetBrains Mono`,data:a,weight:700,style:`normal`}],c=await e(t.render(p),{width:1080,height:1350,fonts:o}),d=u.current;if(!d)return;d.width=1080,d.height=1350;let f=d.getContext(`2d`);if(!f)return;let m=new Image;m.onload=()=>{f.drawImage(m,0,0),s(!1)},m.onerror=()=>{l(`Failed to render card image`),s(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(c)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[ShareWrappedModal] renderPreview failed:`,e),l(t),s(!1)}},[p]);(0,U.useEffect)(()=>(clearTimeout(d.current),d.current=setTimeout(m,300),()=>clearTimeout(d.current)),[m]);let h=`claude-recall-stats-${n}.png`,g=(0,U.useCallback)(e=>{let t=u.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),_=(0,U.useCallback)(()=>new Promise(e=>{let t=u.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),v=(0,U.useCallback)(()=>{g(async e=>{let t=await Bt({fileName:h,blob:e,title:`Claude Recall — stats`,text:`My Claude Code stats — ${on(n)} via Claude Recall`,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[g,h,n]),y=(0,U.useCallback)(()=>{g(e=>{Ht(e,h),Z({message:`Saved to Downloads`,tone:`success`})})},[g,h]),b=(0,U.useCallback)(()=>{g(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[g]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Stats`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:u,className:`w-full h-full`,style:{display:o||c?`none`:`block`}}),o&&!c&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),c&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:c})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`range`}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:tn.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.key),className:`text-xs px-2 py-1.5 rounded border transition-colors `+(n===e.key?`border-accent bg-accent/10 text-accent font-semibold`:`border-line text-fg-muted hover:text-fg`),children:e.label},e.key))})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:v,disabled:o,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:y,disabled:o,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:b,disabled:o,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:_,kind:`stats`,title:`Claude Code stats — ${on(n)}`,description:`${p.costDollars} on ${p.totalSessions.toLocaleString(`en-US`)} sessions in ${p.scopeLabel.toLowerCase()}.`,caption:`My Claude Code stats — ${p.costDollars} via Claude Recall`,disabled:o})]})})}var cn=[/^~\//,/^\/Users\//,/^\/home\//,/^[A-Za-z]:\\/];function ln(e){if(!e)return``;let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n>=0?t.slice(n+1):t}function un(e,t=80){if(!e)return null;let n=e.replace(/\x1b\[[0-9;]*[A-Za-z]/g,``).trim();if(!n||cn.some(e=>e.test(n)))return null;let r=n.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,``).replace(/\s+/g,` `).trim();return r?r.length<=t?r:r.slice(0,t-1).trimEnd()+`…`:null}function dn(e){for(let t of[e.alias,e.auto_title,e.first_user_message]){let e=un(t,70);if(e)return e}return e.session_id.slice(0,8)}function fn({threadId:e,onClose:t}){let[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(!0),[o,s]=(0,U.useState)(null),c=(0,U.useRef)(null),l=(0,U.useRef)(),u=K({queryKey:[`thread-detail`,e],queryFn:()=>X.getThread(e),staleTime:3e4}),d=at({queries:(0,U.useMemo)(()=>(u.data?.thread?.edges??[]).slice(0,24).map(e=>e.session_id),[u.data]).map(e=>({queryKey:[`session-stats`,e],queryFn:()=>X.getSessionStats(e),staleTime:6e4}))}).reduce((e,t)=>e+(t.data?.cost?.cents??0),0),f=d>0?`$${(d/100).toLocaleString(`en-US`,{minimumFractionDigits:2,maximumFractionDigits:2})}`:null,p=(0,U.useMemo)(()=>{let e=u.data?.thread,t=e?.edges??[],r=new Set,i=[];for(let e of t)r.has(e.session_id)||(r.add(e.session_id),i.push({id:e.session_id,title:dn(e),project:e.project?ln(e.project):null}));let a=t.filter(e=>!!e.parent_session_id).map(e=>({childId:e.session_id,parentId:e.parent_session_id})),o=t.filter(e=>e.role===`origin`||!e.parent_session_id).map(e=>e.session_id),s=un(e?.name)??`Untitled thread`,c=e?.session_count??i.length,l=[`${c.toLocaleString(`en-US`)} ${c===1?`session`:`sessions`}`];return f&&l.push(f),(e?.project_count??0)>1?l.push(`cross-project`):e?.project&&l.push(ln(e.project)),{threadName:s,metaLine:l.join(` · `),sessions:i,edges:a,rootIds:o,verdict:un(n,120)??``}},[u.data,f,n]),m=(0,U.useCallback)(async()=>{a(!0),s(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-DTdthDvG.js`);return{default:e}},[],import.meta.url)).default,t=await en(()=>import(`./thread-D2AXyhOx.js`),__vite__mapDeps([2,1]),import.meta.url),[n,r,i,o]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),l=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:r,weight:700,style:`normal`},{name:`JetBrains Mono`,data:i,weight:400,style:`normal`},{name:`JetBrains Mono`,data:o,weight:700,style:`normal`}],u=await e(t.render(p),{width:1080,height:1350,fonts:l}),d=c.current;if(!d)return;d.width=1080*2,d.height=1350*2;let f=d.getContext(`2d`);if(!f)return;f.imageSmoothingEnabled=!0,f.imageSmoothingQuality=`high`;let m=new Image;m.onload=()=>{f.drawImage(m,0,0,d.width,d.height),a(!1)},m.onerror=()=>{s(`Failed to render card image`),a(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(u)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[ShareThreadModal] renderPreview failed:`,e),s(t),a(!1)}},[p]);(0,U.useEffect)(()=>(clearTimeout(l.current),l.current=setTimeout(m,300),()=>clearTimeout(l.current)),[m]);let h=`claude-recall-thread-${e.slice(0,8)}.png`,g=(0,U.useCallback)(e=>{let t=c.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),_=(0,U.useCallback)(()=>new Promise(e=>{let t=c.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),v=(0,U.useCallback)(()=>{g(async e=>{let t=await Bt({fileName:h,blob:e,title:`Claude Recall — thread`,text:`${p.threadName} · ${p.metaLine}`,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[g,h,p.threadName,p.metaLine]),y=(0,U.useCallback)(()=>{g(e=>{Ht(e,h),Z({message:`Saved to Downloads`,tone:`success`})})},[g,h]),b=(0,U.useCallback)(()=>{g(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[g]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Thread`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:c,className:`w-full h-full`,style:{display:i||o?`none`:`block`}}),i&&!o&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),o&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:o})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:v,disabled:i,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:y,disabled:i,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:b,disabled:i,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:_,kind:`thread`,title:p.threadName,description:p.metaLine,caption:`${p.threadName} — built with Claude Recall`,disabled:i})]})})}function pn({heroImage:e,scopeLabel:t,onClose:n}){let[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)(!0),[s,c]=(0,U.useState)(null),l=(0,U.useRef)(null),u=(0,U.useRef)(),d=K({queryKey:[`bug-patterns-graph`,`share`],queryFn:()=>X.bugPatternsGraph(void 0,!0),staleTime:6e4}),f=(0,U.useMemo)(()=>{let n=d.data?.totals,i=n?.recurring_count??d.data?.clusters?.length??0,a=n?.resolved_count??0,o=n?.session_count??0,s=e=>e.toLocaleString(`en-US`),c=[t];return c.push(`${s(i)} ${i===1?`pattern`:`patterns`}`),a>0&&c.push(`${s(a)} resolved`),o>0&&c.push(`${s(o)} ${o===1?`session`:`sessions`}`),{heroImage:e,metaLine:c.join(` · `),verdict:r.slice(0,120)}},[d.data,e,r,t]),p=(0,U.useCallback)(async()=>{o(!0),c(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-DTdthDvG.js`);return{default:e}},[],import.meta.url)).default,t=await en(()=>import(`./patterns-BPeZb9N0.js`),__vite__mapDeps([3,1]),import.meta.url),[n,r,i,a]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),s=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:r,weight:700,style:`normal`},{name:`JetBrains Mono`,data:i,weight:400,style:`normal`},{name:`JetBrains Mono`,data:a,weight:700,style:`normal`}],u=await e(t.render(f),{width:1080,height:1350,fonts:s}),d=l.current;if(!d)return;d.width=1080*2,d.height=1350*2;let p=d.getContext(`2d`);if(!p)return;p.imageSmoothingEnabled=!0,p.imageSmoothingQuality=`high`;let m=new Image;m.onload=()=>{p.drawImage(m,0,0,d.width,d.height),o(!1)},m.onerror=()=>{c(`Failed to render card image`),o(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(u)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[SharePatternsModal] renderPreview failed:`,e),c(t),o(!1)}},[f]);(0,U.useEffect)(()=>(clearTimeout(u.current),u.current=setTimeout(p,300),()=>clearTimeout(u.current)),[p]);let m=`claude-recall-patterns.png`,h=(0,U.useCallback)(e=>{let t=l.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),g=(0,U.useCallback)(()=>new Promise(e=>{let t=l.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),_=(0,U.useCallback)(()=>{h(async e=>{let t=await Bt({fileName:m,blob:e,title:`Claude Recall — patterns`,text:f.metaLine,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[h,f.metaLine]),v=(0,U.useCallback)(()=>{h(e=>{Ht(e,m),Z({message:`Saved to Downloads`,tone:`success`})})},[h]),y=(0,U.useCallback)(()=>{h(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[h]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center`,onClick:n,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Patterns`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:l,className:`w-full h-full`,style:{display:a||s?`none`:`block`}}),a&&!s&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),s&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:s})]}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:r,onChange:e=>i(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:_,disabled:a,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:v,disabled:a,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:y,disabled:a,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:g,kind:`patterns`,title:`Recurring patterns`,description:f.metaLine,caption:`${f.metaLine} — tracked with Claude Recall`,disabled:a})]})})}function mn(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=mn(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Q(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=mn(e))&&(r&&(r+=` `),r+=t);return r}function hn(){return K({queryKey:[`tags`],queryFn:X.allTags,staleTime:1e4})}function gn(e){e.invalidateQueries({queryKey:[`tags`]}),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session`]}),e.invalidateQueries({queryKey:[`search`]})}function _n(){let e=G();return q({mutationFn:({sessionId:e,tag:t})=>X.addSessionTag(e,t),onSuccess:()=>gn(e)})}function vn(){let e=G();return q({mutationFn:({sessionId:e,tag:t})=>X.removeSessionTag(e,t),onSuccess:()=>gn(e)})}var yn=new Set;function bn(){for(let e of yn)e()}function xn(){let e=window.location.hash.replace(/^#/,``);if(!e)return{project:null,session:null,msg:null,q:``,view:null,helpSection:null,compareWith:null,col:null,thread:null};let t=new URLSearchParams(e),n=t.get(`view`);return{project:t.get(`p`),session:t.get(`s`),msg:t.get(`m`),q:t.get(`q`)??``,view:n===`help`?`help`:n===`stats`?`stats`:n===`auto-rules`?`auto-rules`:n===`threads`?`threads`:n===`graph`?`graph`:n===`suggestions`?`suggestions`:n===`patterns`?`patterns`:null,helpSection:t.get(`h`),compareWith:t.get(`cmp`),col:t.get(`col`),thread:t.get(`t`)}}function Sn(e){let t=new URLSearchParams;e.project&&t.set(`p`,e.project),e.session&&t.set(`s`,e.session),e.msg&&t.set(`m`,e.msg),e.q&&t.set(`q`,e.q),e.view&&t.set(`view`,e.view),e.helpSection&&t.set(`h`,e.helpSection),e.compareWith&&t.set(`cmp`,e.compareWith),e.col&&t.set(`col`,e.col),e.thread&&t.set(`t`,e.thread);let n=t.toString();return n?`#${n}`:``}function Cn(){let[e,t]=(0,U.useState)(xn);return(0,U.useEffect)(()=>{let e=()=>t(xn());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,U.useEffect)(()=>{let e=()=>t(xn());return yn.add(e),()=>{yn.delete(e)}},[]),[e,(0,U.useCallback)(e=>{let n={...xn(),...e},r=Sn(n);window.location.hash!==r&&window.history.replaceState(null,``,r||window.location.pathname),t(n),bn()},[])]}function wn(e){e.invalidateQueries({queryKey:[`collections`]}),e.invalidateQueries({queryKey:[`collection`]}),e.invalidateQueries({queryKey:[`sessionCollections`]}),e.invalidateQueries({queryKey:[`sessions`]})}function Tn(e=!1){return K({queryKey:[`collections`,{archived:e}],queryFn:()=>X.listCollections(e),staleTime:5e3})}function En(e){return K({queryKey:[`collection`,e],queryFn:()=>X.getCollection(e),enabled:!!e,staleTime:3e3})}function Dn(e){return K({queryKey:[`sessionCollections`,e],queryFn:()=>X.sessionCollections(e),enabled:!!e,staleTime:3e3})}function On(){let e=G();return q({mutationFn:e=>X.createCollection(e),onSuccess:()=>wn(e)})}function kn(){let e=G();return q({mutationFn:({id:e,patch:t})=>X.patchCollection(e,t),onSuccess:()=>wn(e)})}function An(){let e=G();return q({mutationFn:e=>X.archiveCollection(e),onSuccess:()=>wn(e)})}function jn(){let e=G();return q({mutationFn:e=>X.restoreCollection(e),onSuccess:()=>wn(e)})}function Mn(){let e=G();return q({mutationFn:({collectionId:e,sessionId:t,note:n})=>X.addSessionToCollection(e,t,n),onSuccess:()=>wn(e)})}function Nn(){let e=G();return q({mutationFn:({collectionId:e,sessionId:t})=>X.removeSessionFromCollection(e,t),onSuccess:()=>wn(e)})}function Pn(e){if(!e||e.length===0)return[];let t=new Map;for(let n of e)t.set(n.id,{...n,children:[],depth:0,total_session_count:n.session_count});let n=[];for(let e of t.values()){let r=e.parent_id?t.get(e.parent_id):null;r?r.children.push(e):n.push(e)}let r=(e,t)=>{e.sort((e,t)=>e.sort_key===t.sort_key?e.name.toLowerCase().localeCompare(t.name.toLowerCase()):e.sort_key.localeCompare(t.sort_key));for(let n of e)n.depth=t,r(n.children,t+1)};r(n,0);let i=e=>{let t=e.session_count;for(let n of e.children)t+=i(n);return e.total_session_count=t,t};for(let e of n)i(e);return n}function Fn(e,t){let n=[],r=e=>{for(let i of e)n.push(i),i.children.length>0&&t.has(i.id)&&r(i.children)};return r(e),n}function In(e=!1){let t=Tn(e),n=(0,U.useMemo)(()=>Pn(t.data?.collections),[t.data]);return{...t,tree:n}}function Ln(e){return[e.id,...e.children.flatMap(Ln)]}var Rn=[{value:``,label:`default`},{value:`#f97316`,label:`orange`},{value:`#eab308`,label:`yellow`},{value:`#10b981`,label:`green`},{value:`#06b6d4`,label:`cyan`},{value:`#3b82f6`,label:`blue`},{value:`#a855f7`,label:`purple`},{value:`#ec4899`,label:`pink`},{value:`#64748b`,label:`slate`}],zn=`📂.📁.🗂.📦.🗃.🛠.🔧.🧪.🔬.⚗️.🏗.🎨.🎯.🚀.🧩.🧠.💡.📝.📊.📈.🐛.🔒.🔑.⚡.🔥.❤️.⭐.✨.🌿.🏠`.split(`.`);function Bn({mode:e,existing:t,initialParentId:n,pinnedSessionId:r,onClose:i,onCreated:a,onUpdated:o}){let[s,c]=(0,U.useState)(t?.name??``),[l,u]=(0,U.useState)(t?.description??``),[d,f]=(0,U.useState)(t?.icon??`📂`),[p,m]=(0,U.useState)(t?.color??``),[h,g]=(0,U.useState)(e===`rename`?t?.parent_id??null:n??null),[_,v]=(0,U.useState)(null),y=(0,U.useRef)(null),b=In(!1),x=On(),S=kn();(0,U.useEffect)(()=>{requestAnimationFrame(()=>y.current?.focus())},[]),(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]);let C=(0,U.useMemo)(()=>{let n=new Set(b.tree.flatMap(Ln)),r=Fn(b.tree,n);if(e===`rename`&&t){let e=new Set,n=t=>{e.add(t);for(let e of r)e.parent_id===t&&n(e.id)};return n(t.id),r.filter(t=>!e.has(t.id))}return r},[b.tree,e,t]),w=async()=>{let n=s.trim();if(!n){v(`name required`);return}try{if(e===`create`){let e=await x.mutateAsync({name:n,description:l.trim()||null,icon:d||null,color:p||null,parent_id:h});if(r)try{await fetch(`/api/collections/${encodeURIComponent(e.id)}/members`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({session_id:r})})}catch{}a?.(e)}else if(t){let e=await S.mutateAsync({id:t.id,patch:{name:n,description:l.trim()||null,icon:d||null,color:p||null,parent_id:h}});o?.(e)}i()}catch(e){v(e.message)}};return(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:i,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[440px] max-w-[90vw] p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold`,children:e===`create`?`New collection`:`Rename collection`}),(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative flex items-center gap-2 px-3 py-2 mb-4 rounded border border-line bg-bg`,style:{background:p?`linear-gradient(90deg, ${p}1a 0%, transparent 50%)`:void 0},children:[p&&(0,W.jsx)(`span`,{className:`absolute top-1 bottom-1 left-0 w-[3px] rounded-full`,style:{background:p},"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`text-base`,children:d||`📂`}),(0,W.jsx)(`span`,{className:`text-sm text-fg truncate flex-1`,children:s.trim()||(0,W.jsx)(`span`,{className:`italic text-fg-muted`,children:`(name)`})}),(0,W.jsx)(`span`,{className:`text-[10px] font-medium`,style:{color:p||void 0},children:`preview`})]}),(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Name`}),(0,W.jsx)(`input`,{ref:y,type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&w()},maxLength:120,placeholder:`Pest Control — Scraping`,className:`w-full bg-bg border border-line rounded px-3 py-2 text-sm text-fg focus:outline-none focus:border-accent`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Description (optional)`}),(0,W.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),rows:2,maxLength:500,placeholder:`Short summary — shows on hover`,className:`w-full bg-bg border border-line rounded px-3 py-2 text-sm text-fg focus:outline-none focus:border-accent resize-none`})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Icon`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:zn.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(e),className:Q(`w-7 h-7 rounded flex items-center justify-center text-sm hover:bg-bg-hover`,d===e&&`bg-accent/20 border border-accent`),title:e,children:e},e))}),(0,W.jsx)(`input`,{type:`text`,value:d,onChange:e=>f(e.target.value.slice(0,4)),className:`mt-1 w-full bg-bg border border-line rounded px-2 py-1 text-sm text-fg focus:outline-none focus:border-accent`,placeholder:`or paste your own`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Color`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Rn.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(e.value),className:Q(`w-7 h-7 rounded border transition-colors`,p===e.value?`border-accent ring-2 ring-accent/40`:`border-line hover:border-fg-muted`),style:{background:e.value||`transparent`},title:e.label},e.value||`default`))})]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-fg-muted mb-1`,children:`Parent collection`}),(0,W.jsxs)(`select`,{value:h??``,onChange:e=>g(e.target.value||null),className:`w-full bg-bg border border-line rounded px-2 py-2 text-sm text-fg focus:outline-none focus:border-accent`,children:[(0,W.jsx)(`option`,{value:``,children:`— no parent (root) —`}),C.map(e=>(0,W.jsxs)(`option`,{value:e.id,children:[` `.repeat(e.depth),e.icon??`📂`,` `,e.name]},e.id))]}),(0,W.jsx)(`p`,{className:`mt-1 text-[10px] text-fg-muted leading-snug`,children:C.length===0?`No other collections yet — this one will live at the root. Once you have two or more, you can nest them.`:`Parent = another collection, not a repo. Collections cut across projects — one collection can hold sessions from many repos.`})]}),_&&(0,W.jsx)(`div`,{className:`text-xs text-role-user bg-role-user/10 border border-role-user/30 rounded px-2 py-1.5`,children:_}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`px-3 py-1.5 text-sm text-fg-dim border border-line rounded hover:text-fg`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:w,disabled:!s.trim()||x.isPending||S.isPending,className:`px-4 py-1.5 text-sm bg-accent text-bg rounded font-medium hover:bg-accent/90 disabled:opacity-50`,children:e===`create`?`Create`:`Save`})]})]})]})})}function Vn(e){e.invalidateQueries({queryKey:[`autoRules`]}),e.invalidateQueries({queryKey:[`autoSuggestions`]}),e.invalidateQueries({queryKey:[`autoCollectionIds`]}),e.invalidateQueries({queryKey:[`collections`]}),e.invalidateQueries({queryKey:[`collection`]}),e.invalidateQueries({queryKey:[`sessionCollections`]}),e.invalidateQueries({queryKey:[`sessions`]})}function Hn(){return K({queryKey:[`autoRules`],queryFn:()=>X.listAutoRules(),staleTime:5e3})}function Un(e=!1){return K({queryKey:[`autoSuggestions`,{dismissed:e}],queryFn:()=>X.listAutoSuggestions(e),staleTime:3e4})}function Wn(){return K({queryKey:[`autoCollectionIds`],queryFn:()=>X.listAutoCollectionIds(),staleTime:3e4})}function Gn(){let e=G();return q({mutationFn:e=>X.createAutoRule(e),onSuccess:()=>Vn(e)})}function Kn(){let e=G();return q({mutationFn:({id:e,patch:t})=>X.patchAutoRule(e,t),onSuccess:()=>Vn(e)})}function qn(){let e=G();return q({mutationFn:e=>X.deleteAutoRule(e),onSuccess:()=>Vn(e)})}function Jn(){let e=G();return q({mutationFn:e=>X.acceptAutoSuggestion(e),onSuccess:()=>Vn(e)})}function Yn(){let e=G();return q({mutationFn:e=>X.dismissAutoSuggestion(e),onSuccess:()=>Vn(e)})}function Xn(){let e=G();return q({mutationFn:()=>X.detectAutoSuggestionsNow(),onSuccess:()=>Vn(e)})}function Zn(e,t=!0){return K({queryKey:[`autoSuggestionPreview`,e],queryFn:()=>X.previewAutoSuggestion(e,3),enabled:!!e&&t,staleTime:6e4})}function Qn(){let{data:e,isLoading:t}=Un(),[,n]=Cn(),r=e?.suggestions??[];return t||r.length===0?null:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n({view:`auto-rules`}),className:`mx-2 my-1 w-[calc(100%-1rem)] flex items-center justify-between gap-2 rounded border border-accent/30 bg-accent/5 px-2 py-1 text-[11px] text-fg-muted hover:bg-accent/10 hover:text-accent`,title:`Open Auto-rules to review suggestions`,children:[(0,W.jsxs)(`span`,{className:`truncate`,children:[`💡 `,r.length,` auto-collection`,` `,r.length===1?`suggestion`:`suggestions`,` pending`]}),(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`Review →`})]})}var $n=`application/x-recall-collection`,er=`application/x-recall-session`;function tr({selectedCollection:e,onSelect:t,onCreateCollection:n}){let[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(()=>{try{return localStorage.getItem(`recall.collectionsPaneOpen`)===`1`}catch{return!1}});(0,U.useEffect)(()=>{try{localStorage.setItem(`recall.collectionsPaneOpen`,a?`1`:`0`)}catch{}},[a]);let[s,c]=(0,U.useState)(()=>new Set),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),{tree:h,isLoading:g,isError:_,error:v,data:y}=In(r),b=An(),x=jn(),S=kn(),C=Mn(),[,w]=Cn(),T=Wn(),E=(0,U.useMemo)(()=>new Set(T.data?.auto_collection_ids??[]),[T.data]),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(null),j=(0,U.useRef)(new Map),M=(0,U.useCallback)(e=>{let t=j.current.get(e);t&&(window.clearTimeout(t),j.current.delete(e))},[]),ee=(0,U.useCallback)(e=>{if(s.has(e)||j.current.has(e))return;let t=window.setTimeout(()=>{c(t=>{let n=new Set(t);return n.add(e),n}),j.current.delete(e)},450);j.current.set(e,t)},[s]);(0,U.useEffect)(()=>()=>{for(let e of j.current.values())window.clearTimeout(e);j.current.clear()},[]);let N=(0,U.useRef)(!1);(0,U.useEffect)(()=>{if(!y||N.current)return;let e=new Set;for(let t of h)e.add(t.id);c(e),N.current=!0},[y,h]);let te=(0,U.useCallback)(e=>{c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),P=(0,U.useCallback)((e,t)=>{t.preventDefault(),m({id:e,x:t.clientX,y:t.clientY})},[]);(0,U.useEffect)(()=>{if(!p)return;let e=()=>m(null),t=e=>{e.key===`Escape`&&m(null)};return window.addEventListener(`click`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`click`,e),window.removeEventListener(`keydown`,t)}},[p]);let F=(0,U.useMemo)(()=>{let e=new Map,t=n=>{for(let r of n)e.set(r.id,r),t(r.children)};return t(h),e},[h]),I=e?F.get(e)??null:null,L=async(e,t)=>{if(!e||e===t)return;let n=F.get(e),r=F.get(t);if(!n||!r||n.parent_id!==r.parent_id)return;let i=n.parent_id?F.get(n.parent_id)?.children:h;if(!i)return;let a=[...i].sort((e,t)=>e.sort_key.localeCompare(t.sort_key)),o=a.findIndex(e=>e.id===t);if(o===-1)return;let s=a[o-1]?.sort_key??``,c=a[o].sort_key,l=ir(s,c);try{await S.mutateAsync({id:e,patch:{sort_key:l}})}catch(e){console.error(`reorder failed`,e)}},R=async(e,t)=>{let n=F.get(t);try{let r=await C.mutateAsync({collectionId:t,sessionId:e});c(e=>{let n=new Set(e);return n.add(t),n});let i=n?.name??`collection`;A(r.added?`Added session to "${i}"`:`Already in "${i}"`),window.setTimeout(()=>A(null),2600)}catch(e){console.error(`add session via drop failed`,e),A(`Failed: ${e.message.slice(0,80)}`),window.setTimeout(()=>A(null),3500)}},z=()=>w({view:`help`,helpSection:`taxonomy`});return(0,W.jsxs)(`div`,{className:`border-t border-line mt-2`,children:[(0,W.jsxs)(`div`,{className:`pane-header flex items-center justify-between`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`flex items-center gap-2 hover:text-accent`,title:a?`collapse Collections`:`expand Collections`,"aria-expanded":a,children:[(0,W.jsx)(`span`,{className:Q(`inline-block text-[10px] text-fg-muted transition-transform`,a?`rotate-90`:``),"aria-hidden":`true`,children:`▸`}),(0,W.jsx)(`span`,{children:`📂 Collections`}),(0,W.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),z()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),z())},className:`text-xs font-normal normal-case tracking-normal text-fg-muted/70 hover:text-accent cursor-pointer`,title:`Collection vs Tag vs Project — what's the difference?`,children:`(?)`})]}),(0,W.jsxs)(`span`,{className:Q(`flex items-center gap-1.5`,!a&&`hidden`),children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>w({view:`auto-rules`}),className:`text-xs font-medium normal-case tracking-normal px-2 py-1 rounded border border-line text-fg-muted hover:text-accent hover:border-accent/60 hover:bg-accent/5`,title:`Auto-collections — rules that group sessions automatically by repo / tag / plan file`,children:`⚙ Auto-rules`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs font-medium normal-case tracking-normal px-2 py-1 rounded bg-accent/10 text-accent hover:bg-accent/20`,title:`new collection (c)`,"data-collections-focus":!0,children:`+ New`})]})]}),a&&(0,W.jsx)(Qn,{}),(0,W.jsxs)(`div`,{className:Q(`px-2 pt-1 pb-2`,!a&&`hidden`),children:[g&&(0,W.jsx)(`div`,{className:`px-2 py-1 text-xs text-fg-muted`,children:`Loading…`}),_&&(0,W.jsxs)(`div`,{className:`px-2 py-1 text-xs text-role-user`,children:[`Failed: `,v?.message]}),y&&h.length===0&&(0,W.jsx)(`div`,{className:`px-2 py-1 text-xs text-fg-muted italic`,children:`No collections yet. Hit "+ new" to curate sessions that belong together.`}),h.map(n=>(0,W.jsx)(rr,{node:n,selected:e,expanded:s,onToggle:te,onSelect:e=>t(e),onContext:P,onReorder:L,onSessionDrop:R,dropTargetId:D,setDropTargetId:O,onDragEnter:ee,onDragLeaveRow:M,autoIds:E},n.id)),k&&(0,W.jsx)(`div`,{className:`fixed bottom-6 left-1/2 -translate-x-1/2 z-50 bg-accent text-bg text-sm font-medium px-4 py-2 rounded-full shadow-xl animate-in fade-in slide-in-from-bottom-2`,role:`status`,"aria-live":`polite`,children:k}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`w-full mt-2 text-xs text-fg-muted hover:text-fg text-left px-2 py-1`,children:r?`☑ hide archived`:`☐ show archived`})]}),p&&(()=>{let t=F.get(p.id);if(!t)return null;let n=!!t.archived_at;return(0,W.jsxs)(`div`,{className:`fixed z-40 bg-bg-elevated border border-line rounded-md shadow-lg py-1 min-w-[180px]`,style:{top:p.y,left:p.x},onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(nr,{label:`New child collection`,onClick:()=>{m(null),f(t.id)}}),(0,W.jsx)(nr,{label:`Rename / edit…`,onClick:()=>{m(null),u(t)}}),(0,W.jsx)(nr,{label:`Copy link to this collection`,onClick:()=>{m(null);let e=new URL(window.location.href),n=new URLSearchParams(e.hash.replace(/^#/,``));n.set(`col`,t.id),e.hash=`#${n.toString()}`,navigator.clipboard.writeText(e.toString())}}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),n?(0,W.jsx)(nr,{label:`Restore`,onClick:()=>{m(null),x.mutateAsync(t.id)}}):(0,W.jsx)(nr,{label:`Archive (soft-delete)`,onClick:()=>{m(null),b.mutateAsync(t.id),e===t.id&&w({col:null})}})]})})(),l&&(0,W.jsx)(Bn,{mode:`rename`,existing:l,onClose:()=>u(null),onUpdated:()=>u(null)}),d&&(0,W.jsx)(Bn,{mode:`create`,initialParentId:d,onClose:()=>f(null),onCreated:()=>f(null)}),I&&(0,W.jsxs)(`div`,{className:`px-4 py-2 text-[10px] text-fg-muted border-t border-line mt-2`,children:[(0,W.jsxs)(`span`,{className:`block truncate`,children:[`Filtering: `,(0,W.jsx)(`span`,{className:`text-fg`,children:I.name})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(null),className:`mt-1 text-accent hover:underline`,children:`clear collection filter`})]})]})}function nr({label:e,onClick:t}){return(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`block w-full text-left px-3 py-1.5 text-xs hover:bg-bg-hover`,children:e})}function rr({node:e,selected:t,expanded:n,onToggle:r,onSelect:i,onContext:a,onReorder:o,onSessionDrop:s,dropTargetId:c,setDropTargetId:l,onDragEnter:u,onDragLeaveRow:d,autoIds:f}){let p=n.has(e.id),m=e.children.length>0,h=!!e.archived_at,g=c===e.id,_=f.has(e.id);return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`relative group flex items-stretch`,onDragEnter:t=>{Array.from(t.dataTransfer.types).includes(`application/x-recall-session`)&&u(e.id)},onDragOver:t=>{let n=Array.from(t.dataTransfer.types),r=n.includes(er),i=n.includes($n);!r&&!i||(t.preventDefault(),t.dataTransfer.dropEffect=r?`copy`:`move`,c!==e.id&&l(e.id))},onDragLeave:t=>{let n=t.relatedTarget;(!n||!t.currentTarget.contains(n))&&(c===e.id&&l(null),d(e.id))},onDrop:t=>{t.preventDefault(),l(null),d(e.id);let n=t.dataTransfer.getData(er);if(n){s(n,e.id);return}let r=t.dataTransfer.getData($n);r&&r!==e.id&&o(r,e.id)},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),onContextMenu:t=>a(e.id,t),className:Q(`relative flex-1 min-w-0 flex items-center gap-1.5 py-1 pr-1 rounded text-sm text-left transition-colors`,t===e.id?`bg-accent/15 text-fg`:`hover:bg-bg-hover`,g&&`outline outline-2 outline-accent bg-accent/30 text-fg font-semibold shadow-[0_0_0_4px_rgba(249,115,22,0.15)]`,h&&`opacity-50 italic`),style:{paddingLeft:`${8+e.depth*12}px`,background:e.color?t===e.id?`linear-gradient(90deg, ${e.color}33 0%, transparent 40%)`:`linear-gradient(90deg, ${e.color}1a 0%, transparent 40%)`:void 0},title:e.description??e.name,children:[e.color&&(0,W.jsx)(`span`,{className:`absolute top-1 bottom-1 left-0 w-[3px] rounded-full`,style:{background:e.color},"aria-hidden":`true`}),m?(0,W.jsx)(`span`,{role:`button`,tabIndex:-1,onClick:t=>{t.stopPropagation(),r(e.id)},className:Q(`inline-block w-3 text-fg-muted text-[10px] transition-transform`,p&&`rotate-90`),"aria-hidden":`true`,children:`▸`}):(0,W.jsx)(`span`,{className:`inline-block w-3`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`shrink-0`,children:e.icon??`📂`}),(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:e.name}),g?(0,W.jsx)(`span`,{className:`text-[10px] shrink-0 font-semibold text-accent px-1.5 py-0.5 rounded-full bg-accent/20 whitespace-nowrap`,children:`← drop here`}):(0,W.jsxs)(W.Fragment,{children:[_&&(0,W.jsx)(`span`,{className:`text-[10px] shrink-0 text-fg-muted/70`,title:`auto-collection (rule-managed). Manual memberships are never overwritten.`,"aria-label":`auto-managed`,children:`⚙`}),(0,W.jsx)(`span`,{className:Q(`text-[10px] shrink-0 font-medium`,!e.color&&`text-fg-muted`),style:{color:e.color??void 0},children:e.total_session_count===e.session_count?e.session_count:`${e.session_count}/${e.total_session_count}`})]})]}),!h&&(0,W.jsx)(`span`,{draggable:!0,onDragStart:t=>{t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`application/x-recall-collection`,e.id),t.dataTransfer.setData(`text/plain`,`recall-collection:${e.id}`)},className:`shrink-0 px-1.5 flex items-center text-fg-muted/40 hover:text-fg-muted cursor-grab active:cursor-grabbing text-[11px] select-none opacity-0 group-hover:opacity-100 transition-opacity`,title:`drag to reorder this collection among its siblings`,"aria-label":`drag to reorder ${e.name}`,children:`⋮⋮`})]}),p&&m&&(0,W.jsx)(`div`,{children:e.children.map(e=>(0,W.jsx)(rr,{node:e,selected:t,expanded:n,onToggle:r,onSelect:i,onContext:a,onReorder:o,onSessionDrop:s,dropTargetId:c,setDropTargetId:l,onDragEnter:u,onDragLeaveRow:d,autoIds:f},e.id))})]})}function ir(e,t){return e?`${e}m`:`${t?t.charAt(0):`n`}0`}var ar=`claude-recall:foryou`;function or(e=new Date){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function sr(e){try{let t=window.localStorage.getItem(`${ar}:${e}`);if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>e===`rediscovered`||e===`expensive`||e===`authored`)):new Set}catch{return new Set}}function cr(e,t){try{window.localStorage.setItem(`${ar}:${e}`,JSON.stringify([...t]))}catch{}}function lr(){let[e,t]=(0,U.useState)(()=>or()),[n,r]=(0,U.useState)(()=>sr(or())),[i,a]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{a(!0)},[]),(0,U.useEffect)(()=>{let n=()=>{let n=or();n!==e&&(t(n),r(sr(n)))};return window.addEventListener(`focus`,n),document.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`focus`,n),document.removeEventListener(`visibilitychange`,n)}},[e]),{dismissed:n,dismiss:(0,U.useCallback)(t=>{r(n=>{if(n.has(t))return n;let r=new Set(n);return r.add(t),cr(e,r),r})},[e]),isReady:i}}function ur(e){return{id:`rediscovered`,icon:`✦`,label:`Rediscovered`,accent:`text-role-tool border-role-tool/40`,title:e.alias??mt(e.firstUserMessage,60)??e.sessionId.slice(0,8),subtitle:`${e.daysAgo} day${e.daysAgo===1?``:`s`} ago`+(e.project?` · ${e.project}`:``),trailing:e.matchedKeywords.length>0?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:e.matchedKeywords.slice(0,4).map(e=>(0,W.jsxs)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded bg-role-tool/10 text-role-tool text-[10px] border border-role-tool/30`,children:[`#`,e]},e))}):void 0,sessionId:e.sessionId}}function dr(e){return{id:`expensive`,icon:`$`,label:`Most expensive · 7d`,accent:`text-accent border-accent/40`,title:e.alias??mt(e.firstUserMessage,60)??e.sessionId.slice(0,8),subtitle:(e.project?`${e.project} · `:``)+`${e.costDisplay} · ${e.tokensDisplay} · ${e.primaryModelLabel}`+(e.startedAt?` · ${ht(e.startedAt)}`:``),sessionId:e.sessionId}}function fr(e){return{id:`authored`,icon:`⎇`,label:`Authored current HEAD`,accent:`text-role-assistant border-role-assistant/40`,title:e.alias??mt(e.firstUserMessage,60)??e.sessionId.slice(0,8),subtitle:`${e.shortSha} · `+(e.subject?mt(e.subject,50):`current HEAD`)+(e.committedAt?` · ${ht(e.committedAt)}`:``),sessionId:e.sessionId}}function pr({onSelectSession:e}){let t=K({queryKey:[`discover`,`today`],queryFn:()=>X.getDiscoverToday(),staleTime:300*1e3,refetchOnWindowFocus:!1,retry:1}),{dismissed:n,dismiss:r,isReady:i}=lr(),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(()=>{try{return localStorage.getItem(`recall.forYouPaneOpen`)===`1`}catch{return!1}});if((0,U.useEffect)(()=>{try{localStorage.setItem(`recall.forYouPaneOpen`,s?`1`:`0`)}catch{}},[s]),!i||!t.data)return null;let l=[];return t.data.rediscovered&&!n.has(`rediscovered`)&&l.push(ur(t.data.rediscovered)),t.data.expensive&&!n.has(`expensive`)&&l.push(dr(t.data.expensive)),t.data.authored&&!n.has(`authored`)&&l.push(fr(t.data.authored)),l.length===0?null:(0,W.jsxs)(`div`,{className:`border-b border-line`,children:[(0,W.jsxs)(`div`,{className:`pane-header`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:`flex items-center gap-2 hover:text-accent`,title:s?`collapse For you`:`expand For you`,"aria-expanded":s,children:[(0,W.jsx)(`span`,{className:Q(`inline-block text-[10px] text-fg-muted transition-transform`,s?`rotate-90`:``),"aria-hidden":`true`,children:`▸`}),(0,W.jsx)(`span`,{children:`For you`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:Q(`text-xs font-normal normal-case tracking-normal hover:text-accent`,a?`text-accent`:`text-fg-muted/70`),title:`What is For you?`,"aria-expanded":a,children:`(?)`})]}),(0,W.jsx)(`span`,{children:l.length})]}),a&&(0,W.jsxs)(`div`,{className:`px-4 py-2 text-[11px] text-fg-muted bg-bg-elevated/50 border-b border-line/50 leading-relaxed`,children:[`Suggested sessions for today, picked from your activity:`,(0,W.jsxs)(`ul`,{className:`mt-1 ml-4 list-disc space-y-0.5`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-accent`,children:`$ Most expensive · 7d`}),` — your highest-cost session in the last week.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-role-assistant`,children:`⎇ Authored current HEAD`}),` — the session that produced the commit you're on.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-role-tool`,children:`✦ Rediscovered`}),` — an older session matching your current keywords.`]})]}),(0,W.jsx)(`div`,{className:`mt-1`,children:`Click × on a card to dismiss it for the day; suggestions reset overnight.`})]}),(0,W.jsx)(`div`,{className:Q(`flex flex-col`,!s&&`hidden`),children:l.map(t=>(0,W.jsxs)(`div`,{className:Q(`group relative px-4 py-2.5 border-b border-line/50 hover:bg-bg-hover transition-colors cursor-pointer`),role:`button`,tabIndex:0,onClick:()=>e(t.sessionId),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(t.sessionId))},title:`Open ${t.title}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-0.5`,children:[(0,W.jsxs)(`span`,{className:Q(`inline-flex items-center gap-1.5 text-[10px] uppercase tracking-wider font-medium px-1.5 py-0.5 rounded border`,t.accent),children:[(0,W.jsx)(`span`,{"aria-hidden":!0,children:t.icon}),(0,W.jsx)(`span`,{children:t.label})]}),(0,W.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),r(t.id)},className:`opacity-0 group-hover:opacity-100 focus:opacity-100 text-fg-muted/70 hover:text-role-user transition-opacity text-sm leading-none px-1`,title:`Dismiss for today`,"aria-label":`Dismiss ${t.label} for today`,children:`×`})]}),(0,W.jsx)(`div`,{className:`text-sm font-medium text-fg truncate`,children:t.title}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted truncate mt-0.5`,children:t.subtitle}),t.trailing]},t.id))})]})}function mr(e){return e>=70?`text-green-500`:e>=40?`text-yellow-500`:`text-red-500`}function hr(e){return e>=70?`bg-green-500`:e>=40?`bg-yellow-500`:`bg-red-500`}function gr({projectId:e}){let t=K({queryKey:[`health`,e],queryFn:()=>X.healthScore(e),staleTime:3e4,refetchInterval:6e4,refetchIntervalInBackground:!1});if(!t.data)return null;let{score:n}=t.data;return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs ${mr(n)}`,title:`Memory health: ${n}/100`,children:[(0,W.jsx)(`span`,{className:`inline-block w-1.5 h-1.5 rounded-full ${hr(n)}`}),n]})}var _r=`sqlite3 ~/.recall/db.sqlite \\
11
11
  "DELETE FROM thread_edges WHERE source='auto-scan-v1';
12
12
  DELETE FROM threads WHERE id LIKE 'auto-scan-%';"`,vr=[{value:`claude-haiku-4-5-20251001`,label:`Haiku 4.5`,note:`fastest, cheapest, plenty smart for short titles. Recommended.`},{value:`claude-sonnet-4-6`,label:`Sonnet 4.6`,note:`slightly nicer phrasing, but ~3x the cost of Haiku for the same task.`},{value:`claude-opus-4-7`,label:`Opus 4.7`,note:`overkill for naming. Costs ~15x Haiku and burns ~10x more of your 5-hour window.`}];function yr({project:e,onClose:t,onOpenThreadsPage:n}){let r=G(),[i,a]=(0,U.useState)(`preflighting`),[o,s]=(0,U.useState)(.7),[c,l]=(0,U.useState)(!0),[u,d]=(0,U.useState)(vr[0].value),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(.4),[g,_]=(0,U.useState)(.7),[v,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(null),[S,C]=(0,U.useState)(null),[w,T]=(0,U.useState)(null),[E,D]=(0,U.useState)([]),O=(0,U.useRef)(null);(0,U.useEffect)(()=>{let t=!1;return a(`preflighting`),x(null),(async()=>{try{let n=f?{enabled:!0,band_lo:m,band_hi:g,model:`claude-haiku-4-5-20251001`}:void 0,r=await X.threadScanPreflight({project:e,threshold:o,model:u,llm_rescore:n});if(t)return;y(r),a(`preview`)}catch(e){if(t)return;x(e instanceof Error?e.message:String(e)),a(`preview`)}})(),()=>{t=!0}},[e,o,u,f,m,g]),(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&i!==`launching`&&t()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i,t]),(0,U.useEffect)(()=>{if(!S)return;let e=new EventSource(`/api/threads/scan/jobs/${encodeURIComponent(S)}/stream`);return O.current=e,e.addEventListener(`progress`,e=>{try{let t=JSON.parse(e.data);t.phase===`naming`&&t.thread_name&&t.total&&D(e=>[...e,{current:t.current??0,total:t.total??0,thread_name:t.thread_name}].slice(-8))}catch{}}),e.addEventListener(`done`,t=>{try{let e=JSON.parse(t.data);T(e),e.status===`failed`?(x(e.error),a(`failed`)):e.status===`cancelled`?a(`cancelled`):a(`done`)}catch{a(`done`)}e.close(),r.invalidateQueries({queryKey:[`threads`]}),r.invalidateQueries({queryKey:[`thread-folders`]})}),e.addEventListener(`error`,()=>{x(`Stream disconnected`),a(`failed`),e.close()}),()=>{e.close(),O.current=null}},[S,r]);async function k(){x(null),D([]),a(`launching`);try{let t=f?{enabled:!0,band_lo:m,band_hi:g,model:`claude-haiku-4-5-20251001`}:void 0,{jobId:n,reused:r}=await X.threadScanApply({project:e,threshold:o,llm_names:c,model:u,llm_rescore:t});C(n),a(`running`),r&&Z({message:`A scan for ${e} was already running. Attached.`,tone:`info`})}catch(e){x(e instanceof Error?e.message:String(e)),a(`preview`)}}async function A(){if(S)try{await X.threadScanCancel(S),Z({message:`Cancellation requested`,tone:`info`})}catch(e){Z({message:`Cancel failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}function j(){navigator.clipboard?.writeText(_r),Z({message:`Rollback command copied`,tone:`info`})}let M=i===`preview`&&v!==null&&v.eligible_sessions>0&&v.proposed_edges>0;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:e=>{e.target===e.currentTarget&&i!==`launching`&&t()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-line`,children:[(0,W.jsxs)(`div`,{className:`text-sm font-semibold text-fg`,children:[`🧵 Detect threads in `,e]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,disabled:i===`launching`,className:`text-xs text-fg-muted hover:text-fg disabled:opacity-40 disabled:cursor-not-allowed`,children:i===`running`?`run in background ↗`:`close`})]}),(0,W.jsxs)(`div`,{className:`p-5 space-y-4 text-xs`,children:[(i===`preflighting`||i===`preview`)&&(0,W.jsx)(br,{loading:i===`preflighting`,preflight:v,threshold:o,onThresholdChange:s,llmNames:c,onLlmNamesChange:l,model:u,onModelChange:d,rescoreEnabled:f,onRescoreEnabledChange:p,rescoreLo:m,rescoreHi:g,onRescoreBandChange:(e,t)=>{h(e),_(t)}}),(i===`launching`||i===`running`||i===`cancelled`)&&(0,W.jsx)(Dr,{project:e,snapshot:w,recentNames:E,estimatedThreads:v?.estimated_threads??0,cancelled:i===`cancelled`}),i===`done`&&w&&(0,W.jsx)(Or,{project:e,snapshot:w,onOpenThreadsPage:n,onCopyRollback:j}),i===`failed`&&(0,W.jsxs)(`div`,{className:`p-3 rounded border border-role-user/40 bg-role-user/10 text-role-user`,children:[(0,W.jsx)(`div`,{className:`font-semibold mb-1`,children:`Scan failed`}),(0,W.jsx)(`div`,{children:b??`Unknown error`})]}),b&&i===`preview`&&(0,W.jsx)(`div`,{className:`p-3 rounded border border-role-user/40 bg-role-user/10 text-role-user`,children:b})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-line`,children:[i===`preview`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-xs px-3 py-1.5 rounded border border-line hover:bg-bg-hover`,children:`Cancel`}),(0,W.jsxs)(`button`,{type:`button`,onClick:k,disabled:!M,className:`text-xs px-3 py-1.5 rounded bg-accent text-white disabled:opacity-40 disabled:cursor-not-allowed hover:bg-accent/80`,children:[`Apply (`,v?.estimated_threads??0,` thread`,v?.estimated_threads===1?``:`s`,`)`]})]}),i===`running`&&(0,W.jsx)(`button`,{type:`button`,onClick:A,className:`text-xs px-3 py-1.5 rounded border border-role-user/40 text-role-user hover:bg-role-user/10`,children:`Cancel scan`}),(i===`done`||i===`cancelled`||i===`failed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-xs px-3 py-1.5 rounded bg-accent text-white hover:bg-accent/80`,children:`Close`})]})]})})}function br({loading:e,preflight:t,threshold:n,onThresholdChange:r,llmNames:i,onLlmNamesChange:a,model:o,onModelChange:s,rescoreEnabled:c,onRescoreEnabledChange:l,rescoreLo:u,rescoreHi:d,onRescoreBandChange:f}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(kr,{label:`What is a thread?`,children:(0,W.jsxs)(`div`,{className:`space-y-2 leading-relaxed`,children:[(0,W.jsxs)(`p`,{children:[`A `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`thread`}),` is a chain of past sessions in this project that belong to one workflow. You closed one session, opened another, kept going.`]}),(0,W.jsx)(`p`,{children:`Six signals decide whether two sessions belong together. All run locally on your machine. None of them spend tokens.`}),(0,W.jsxs)(`ul`,{className:`space-y-1`,children:[(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`•`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Time proximity.`}),` `,`Did the next session start soon after the last one ended?`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`•`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Continuation cues.`}),` `,`We scan the first 7 user messages for phrases like "let's commit", "next step", "continuing from". Catches openings that start with banter and pivot in a few prompts.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`•`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`File overlap.`}),` `,`Did both sessions touch the same files?`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`•`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Semantic similarity.`}),` `,`Three views of the same local embeddings: full-session means, parent ending vs child opening, and the single best chunk-to-chunk match. Tool-output chunks (file dumps, command listings) are filtered out so they do not muddy the signal.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`•`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Cluster prior.`}),` `,`If both sessions land in the same workflow cluster (computed from the same embeddings, no extra cost), small bonus.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`•`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Shared brand.`}),` `,`Same skill or brand marker. Weak tiebreaker.`]})]})]})]})}),(0,W.jsx)(Cr,{threadCount:t?.estimated_threads??0,sessionCount:t?.eligible_sessions??0,edgeCount:t?.proposed_edges??0,model:o,llmNames:i}),(0,W.jsx)(Sr,{value:n,onChange:r}),(0,W.jsx)(wr,{value:o,onChange:s,disabled:!i}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!i,onChange:e=>a(!e.target.checked),className:`mt-0.5`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg`,children:`Skip LLM thread-naming (free, uses root session text)`}),(0,W.jsx)(`div`,{className:`text-fg-muted/70`,children:`Less polished names, but zero token cost and zero plan-window use.`})]})]}),(0,W.jsx)(xr,{enabled:c,onEnabledChange:l,lo:u,hi:d,onBandChange:f,preflight:t}),e&&(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30 flex items-center gap-3 text-fg-muted`,children:[(0,W.jsx)(`div`,{className:`h-3 w-3 rounded-full border-2 border-accent border-t-transparent animate-spin`}),(0,W.jsx)(`span`,{children:`Counting eligible sessions and proposed edges…`})]}),!e&&t&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(Tr,{preflight:t,llmNames:i}),i&&t.estimated_threads>0&&(0,W.jsx)(Er,{estimate:t.plan_window_estimate,llmCalls:t.estimated_llm_calls}),i&&(0,W.jsxs)(kr,{label:`Token + USD detail (for API-key users on ${vr.find(e=>e.value===t.model)?.label??`this model`})`,children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1.5 mb-3`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Input tokens (max)`}),(0,W.jsx)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:t.estimated_input_tokens_max.toLocaleString()}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Output tokens (max)`}),(0,W.jsx)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:t.estimated_output_tokens_max.toLocaleString()}),(0,W.jsx)(`div`,{className:`text-fg font-medium`,children:`Estimated cost (max)`}),(0,W.jsxs)(`div`,{className:`text-accent font-mono tabular-nums text-right font-semibold`,children:[`$`,t.estimated_cost_usd_max.toFixed(4)]})]}),(0,W.jsx)(`div`,{className:`text-fg-muted leading-relaxed`,children:`These numbers only apply if you pay Anthropic directly through your own API key. On Claude Pro or Max, ignore the dollar amount. Your real cost is the 5-hour window slice shown in the bars above.`})]}),(0,W.jsx)(kr,{label:`How accurate is this estimate?`,children:(0,W.jsxs)(`ul`,{className:`space-y-2 leading-relaxed`,children:[(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`●`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Session, edge, and thread counts are exact.`}),` `,`We compute them by running the same graph algorithm the scan itself uses. They will not change between this preview and the actual run.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-role-tool shrink-0`,children:`●`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Token, cost, and window numbers are an upper bound.`}),` `,`Each thread triggers one short Haiku 4.5 call (about`,` `,`500 input + 30 output tokens). Bigger threads make slightly bigger prompts, so real usage is typically within plus or minus 20% of what you see here.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`●`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Your session content stays local.`}),` `,`Only short session titles or first-message snippets are sent to Anthropic for naming. Your JSONL transcripts never leave your machine.`]})]})]})}),t.existing_auto_scan_threads>0&&(0,W.jsxs)(`div`,{className:`p-2 rounded border border-role-tool/40 bg-role-tool/10 text-role-tool`,children:[`⚠ This project already has`,` `,t.existing_auto_scan_threads,` auto-scan thread`,t.existing_auto_scan_threads===1?``:`s`,`. Running again creates new threads alongside the old ones. Use the rollback command (shown on the done panel) to clear the previous scan first if you want a clean rerun.`]}),t.proposed_edges===0&&(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`No edges above threshold. Lower the slider or accept that this project has no detectable workflow chains at the current setting.`})]})]})}function xr({enabled:e,onEnabledChange:t,lo:n,hi:r,onBandChange:i,preflight:a}){let o=a?.llm_rescore??null;return(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/20 space-y-2`,children:[(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>t(e.target.checked),className:`mt-0.5`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`LLM re-score on borderline pairs`}),(0,W.jsx)(`div`,{className:`text-fg-muted/70`,children:`Spend a small Haiku 4.5 call on each pair whose deterministic confidence falls inside the band below. Promotes confirmed continuations, demotes false positives, leaves uncertain pairs alone. Pairs outside the band are decided by the free 6-signal stack.`})]})]}),e&&(0,W.jsxs)(`div`,{className:`pl-6 space-y-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,W.jsx)(`span`,{className:`text-fg`,children:`Borderline band`}),(0,W.jsxs)(`span`,{className:`font-mono text-fg-muted tabular-nums`,children:[n.toFixed(2),` – `,r.toFixed(2)]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted text-[10px]`,children:`low`}),(0,W.jsx)(`input`,{type:`range`,min:0,max:1,step:.05,value:n,onChange:e=>{let t=Number(e.target.value);i(Math.min(t,r),r)},className:`w-full accent-accent`})]}),(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted text-[10px]`,children:`high`}),(0,W.jsx)(`input`,{type:`range`,min:0,max:1,step:.05,value:r,onChange:e=>{let t=Number(e.target.value);i(n,Math.max(t,n))},className:`w-full accent-accent`})]})]})]}),o&&(0,W.jsxs)(`div`,{className:`border border-line/60 rounded p-2 text-fg-muted`,children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1 mb-1`,children:[(0,W.jsx)(`div`,{children:`Borderline pairs`}),(0,W.jsx)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:o.estimated_borderline_pairs}),(0,W.jsx)(`div`,{children:`LLM input tokens (max)`}),(0,W.jsx)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:o.estimated_input_tokens_max.toLocaleString()}),(0,W.jsx)(`div`,{children:`LLM output tokens (max)`}),(0,W.jsx)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:o.estimated_output_tokens_max.toLocaleString()}),(0,W.jsx)(`div`,{className:`text-fg font-medium`,children:`Estimated cost (max)`}),(0,W.jsxs)(`div`,{className:`text-accent font-mono tabular-nums text-right font-semibold`,children:[`$`,o.estimated_cost_usd_max.toFixed(4)]})]}),o.exceeds_cap&&(0,W.jsxs)(`div`,{className:`text-role-user mt-1`,children:[`⚠ `,o.estimated_borderline_pairs,` pairs exceeds the cap of `,o.cap,`. Tighten the band or scan a smaller project — the rescore step will be skipped at this size.`]}),o.estimated_borderline_pairs===0&&(0,W.jsx)(`div`,{children:`No borderline pairs at this band. The deterministic scorer already decided every proposal — rescore is a no-op.`})]})]})]})}function Sr({value:e,onChange:t}){let n=``,r=`text-fg-muted`;return e<=.6?(n=`Loose: catches more chains, more false positives`,r=`text-role-tool`):e<=.75?(n=`Balanced (recommended): drops file-only coincidences`,r=`text-accent`):e<=.9?(n=`Strict: requires multiple strong signals`,r=`text-fg`):(n=`Very strict: only near-certain chains`,r=`text-fg`),(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,W.jsx)(`span`,{className:`text-fg`,children:`Confidence threshold`}),(0,W.jsx)(`span`,{className:`font-mono text-fg-muted tabular-nums`,children:e.toFixed(2)})]}),(0,W.jsx)(`input`,{type:`range`,min:.5,max:1,step:.05,value:e,onChange:e=>t(Number(e.target.value)),className:`w-full accent-accent`}),(0,W.jsx)(`div`,{className:`mt-1.5 font-medium ${r}`,children:n}),(0,W.jsx)(`div`,{className:`text-fg-muted mt-2 leading-relaxed`,children:`Every pair of sessions gets a confidence score from 0 to 1. The higher you set this slider, the more sure we have to be that two sessions belong to the same workflow before we link them. 0.7 is a good middle ground, and it's what the CLI uses by default.`})]})}function Cr({threadCount:e,sessionCount:t,edgeCount:n,model:r,llmNames:i}){let a=vr.find(e=>e.value===r)?.label??`Haiku 4.5`,o=r.includes(`opus`)?8:r.includes(`sonnet`)?5:3,s=i?e*o:0,c=Math.max(1,Math.round(s/60));return(0,W.jsx)(kr,{label:`How does this work, technically?`,children:(0,W.jsxs)(`div`,{className:`space-y-3 leading-relaxed`,children:[(0,W.jsx)(`p`,{children:`The scan runs in two steps inside Claude Recall. Only the second step talks to Claude.`}),(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2 mb-2`,children:[(0,W.jsx)(`span`,{className:`text-accent font-semibold`,children:`Step 1`}),(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Find the connections (stays on your machine)`}),(0,W.jsx)(`span`,{className:`text-fg-muted text-[10px]`,children:`no Claude, no internet, no subprocess`})]}),(0,W.jsx)(`p`,{className:`text-fg-muted mb-2`,children:`For every pair of sessions, we score how likely they belong to the same workflow. Six signals, real session data, not just titles. All local, zero tokens.`}),(0,W.jsxs)(`ul`,{className:`space-y-1.5 ml-1`,children:[(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`1.`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Files they touched.`}),` `,`Every Read, Edit, Write, and Bash file path from each session's JSONL. Two sessions editing the same files are very likely one workflow. Strongest signal.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`2.`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`How the next session opens.`}),` `,`We scan up to the first 7 user messages for cues like "let's commit", "next step", "continuing from". Catches openings that start with banter and pivot a few prompts in.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`3.`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Time gap.`}),` `,`Closing one session and starting another within an hour scores way higher than two days apart.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`4.`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Semantic similarity.`}),` `,`Three views of the same local embeddings, we take the strongest match: full-session means, parent ending vs child opening, and the single best chunk-to-chunk pair. Tool-output chunks (file dumps, command listings) are filtered out before pooling. Skipped silently for any session that has no embedding yet.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`5.`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Cluster prior.`}),` `,`Quick connected-components clustering over the same embeddings groups sessions that talk about the same workflow. Pairs that land in the same cluster get a small bonus.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0`,children:`6.`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Shared brand or skill.`}),` `,`Small bonus when both sessions share a skill prefix or brand marker.`]})]})]}),(0,W.jsxs)(`p`,{className:`text-fg-muted mt-2`,children:[`Pairs at or above your threshold become edges. Edges group into chains. Each chain is one thread.`,` `,t>0&&(0,W.jsxs)(`span`,{className:`text-fg`,children:[`Right now: `,t,` session`,t===1?``:`s`,`, `,n,` edge`,n===1?``:`s`,`, `,e,` thread`,e===1?``:`s`,`.`]})]}),(0,W.jsx)(`div`,{className:`text-fg-muted/70 mt-2 text-[10px] leading-relaxed`,children:`Step 1 finishes in seconds even on huge projects, and the numbers are exact, not a sample. We deliberately do not send full transcripts to a model here. For hundreds of sessions that would be slow, costly, and prone to false connections. The six signals above catch the obvious cases for free.`})]}),(0,W.jsxs)(`div`,{className:`border rounded p-3 ${i?`border-accent/40 bg-accent/5`:`border-line bg-bg-hover/30 opacity-60`}`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2 mb-2`,children:[(0,W.jsx)(`span`,{className:`text-accent font-semibold`,children:`Step 2`}),(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:i?`Name each thread (one ${a} call per thread)`:`Name each thread (skipped, free)`})]}),i?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`text-fg-muted mb-2`,children:[`Step 1 already decided which sessions belong together. Now we give each chain one short workflow name like "Remotion Dependency Update and Inspection".`,` `,(0,W.jsx)(`span`,{className:`text-fg`,children:`Your session titles stay exactly as they are. The new name is for the thread itself, not the sessions inside it.`})]}),(0,W.jsxs)(`ol`,{className:`space-y-1.5 ml-1`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`1.`}),` For each thread, the daemon spawns one short`,` `,(0,W.jsx)(`code`,{className:`text-fg bg-bg px-1 rounded text-[10px]`,children:`claude -p`}),` `,`subprocess running `,a,`.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`2.`}),` The prompt is the chronological list of that thread's session labels (alias, auto-title, or first-message snippet). About 500 input tokens. No transcripts here, because the job is just "produce a 6-word title". The decision about which sessions belong together was already made in Step 1.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`3.`}),` Claude returns a 4–8 word workflow name (about 30 output tokens). The daemon writes the thread row, then moves to the next thread.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`4.`}),` Calls run`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`sequentially`}),`, one at a time. No parallel agents, no background terminals, no fan-out.`]})]}),(0,W.jsxs)(`div`,{className:`mt-2 grid grid-cols-2 gap-x-3 gap-y-1 text-[10px]`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Subprocesses spawned:`}),(0,W.jsxs)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:[e,` (sequential, ~`,o,`s each)`]}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Estimated wall time:`}),(0,W.jsxs)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:[`~`,c,` min`]}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Concurrent Claude calls:`}),(0,W.jsx)(`div`,{className:`text-fg font-mono tabular-nums text-right`,children:`1 at any moment`})]})]}):(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`You opted out of LLM naming. Each thread takes its name from the root session's alias or auto-title. Zero subprocesses, zero token cost, zero plan-window use.`})]}),(0,W.jsxs)(`div`,{className:`border border-role-tool/30 rounded p-3 bg-role-tool/5`,children:[(0,W.jsx)(`div`,{className:`text-fg font-medium mb-1.5`,children:`What does NOT happen`}),(0,W.jsxs)(`ul`,{className:`space-y-1`,children:[(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-role-tool shrink-0`,children:`✗`}),(0,W.jsxs)(`span`,{children:[`We do`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`not`}),` spawn one agent per session. The naming runs at the thread level, not the session level.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-role-tool shrink-0`,children:`✗`}),(0,W.jsxs)(`span`,{children:[`We do`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`not`}),` send transcript content, code, tool outputs, or file contents to Claude. Only short titles.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-role-tool shrink-0`,children:`✗`}),(0,W.jsxs)(`span`,{children:[`We do`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`not`}),` open a terminal, run claude in interactive mode, or leave anything running in the background after the scan finishes.`]})]}),(0,W.jsxs)(`li`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`text-role-tool shrink-0`,children:`✗`}),(0,W.jsxs)(`span`,{children:[`We do`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`not`}),` fan out to parallel sub-agents. Switching to Sonnet or Opus does not buy you more concurrency, only different per-call quality and cost.`]})]})]})]}),(0,W.jsxs)(`div`,{className:`text-fg-muted/80 text-[10px]`,children:[`Source files if you want to read it: graph algorithm in`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`src/utils/threadScan.ts`}),`, naming subprocess in`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`src/commands/thread-scan.ts`}),`, job runtime in`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`src/daemon/thread-scan-jobs.ts`}),`.`]})]})})}function wr({value:e,onChange:t,disabled:n}){let r=vr.find(t=>t.value===e);return(0,W.jsxs)(`label`,{className:`block ${n?`opacity-50`:``}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,W.jsx)(`span`,{className:`text-fg`,children:`Naming model`}),r&&(0,W.jsx)(`span`,{className:`text-fg-muted text-[10px]`,children:r.note})]}),(0,W.jsx)(`select`,{value:e,onChange:e=>t(e.target.value),disabled:n,className:`w-full bg-bg border border-line rounded px-2 py-1.5 text-xs text-fg focus:border-accent focus:outline-none disabled:cursor-not-allowed`,children:vr.map(e=>(0,W.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,W.jsx)(`div`,{className:`text-fg-muted/70 mt-1 leading-relaxed`,children:`Picks the model used to generate each thread name. Cost and the 5-hour window bars below update as you change this.`})]})}function Tr({preflight:e,llmNames:t}){return(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 space-y-1.5 bg-bg-hover/30`,children:[(0,W.jsx)(Ar,{label:`Eligible sessions in project`,value:e.eligible_sessions.toString(),hint:`Excludes [meta], [output-index], and [skill] infra sessions.`}),(0,W.jsx)(Ar,{label:`Proposed parent-child edges`,value:e.proposed_edges.toString(),hint:`Pairs scoring at or above your threshold.`}),(0,W.jsx)(Ar,{label:`Resulting threads`,value:e.estimated_threads.toString(),hint:`Connected components in the edge graph (one thread per chain).`}),(0,W.jsx)(Ar,{label:`LLM naming calls`,value:t?`${e.estimated_llm_calls} (${vr.find(t=>t.value===e.model)?.label??e.model})`:`0 (skipped)`,hint:t?`One short call per thread to generate a 4-8 word workflow name.`:`Thread names will fall back to the root session label.`})]})}function Er({estimate:e,llmCalls:t}){let n={pro:`Pro`,"max-5x":`Max 5x`,"max-20x":`Max 20x`};return(0,W.jsxs)(`div`,{className:`border border-accent/30 rounded p-3 space-y-2 bg-accent/5`,children:[(0,W.jsxs)(`div`,{className:`text-fg`,children:[(0,W.jsx)(`strong`,{children:`Claude Code 5-hour window impact`}),` `,(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`(`,t,` Haiku call`,t===1?``:`s`,`, multiplier`,` `,e.model_multiplier,`x)`]})]}),(0,W.jsx)(`div`,{className:`text-fg-muted leading-relaxed`,children:`If you're on Pro/Max (not your own API key), each thread-naming call burns a slice of your 5-hour message window. Bars show how much of one window this scan consumes per plan tier.`}),(0,W.jsx)(`div`,{className:`space-y-1`,children:e.per_plan.map(e=>{let t=e.would_exhaust_window,r=!t&&e.fraction>.5,i=Math.min(100,e.pct);return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted w-16 shrink-0`,children:n[e.plan]}),(0,W.jsx)(`div`,{className:`flex-1 h-2 bg-line rounded-full overflow-hidden`,children:(0,W.jsx)(`div`,{className:t?`h-full bg-role-user`:r?`h-full bg-role-tool`:`h-full bg-accent`,style:{width:`${i}%`}})}),(0,W.jsxs)(`span`,{className:`tabular-nums w-16 text-right `+(t?`text-role-user font-semibold`:`text-fg`),children:[e.pct>=1e3?`>1000`:e.pct.toFixed(1),`%`]})]},e.plan)})}),(0,W.jsxs)(`div`,{className:`text-fg-muted/80 text-[10px] leading-relaxed`,children:[`ⓘ `,e.caveat]})]})}function Dr({project:e,snapshot:t,recentNames:n,estimatedThreads:r,cancelled:i}){let a=t?.total_threads??r,o=t?.threads_named??0;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`text-fg-muted`,children:i?`Cancellation requested for ${e}. Already-written threads kept.`:`Linking edges for ${e}…`}),(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsxs)(`span`,{className:`text-fg`,children:[`Naming thread `,o,` of `,a]}),t?.current_thread_name&&(0,W.jsx)(`span`,{className:`text-fg-muted truncate ml-3`,children:t.current_thread_name})]}),(0,W.jsx)(`div`,{className:`h-1.5 bg-line rounded overflow-hidden`,children:(0,W.jsx)(`div`,{className:`h-full bg-accent transition-all`,style:{width:a>0?`${Math.min(100,o/a*100)}%`:`0%`}})})]}),n.length>0&&(0,W.jsx)(`ul`,{className:`space-y-1 text-fg-muted`,children:n.map((e,t)=>(0,W.jsxs)(`li`,{className:`font-mono text-[11px]`,children:[(0,W.jsxs)(`span`,{className:`text-fg-muted/60`,children:[`[`,e.current,`/`,e.total,`]`]}),` `,e.thread_name]},t))})]})}function Or({project:e,snapshot:t,onOpenThreadsPage:n,onCopyRollback:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`p-3 rounded border border-accent/40 bg-accent/10 text-fg`,children:[`Created `,t.threads_created,` thread`,t.threads_created===1?``:`s`,` with `,t.edges_written,` `,`edges in `,e,`.`]}),n&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(e),className:`text-accent hover:underline`,children:`Open Threads page →`}),(0,W.jsxs)(`details`,{className:`border border-line rounded p-3 bg-bg-hover/30`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-fg-muted`,children:`Rollback this scan`}),(0,W.jsx)(`pre`,{className:`mt-2 text-[10px] font-mono text-fg-muted whitespace-pre-wrap`,children:_r}),(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`mt-2 text-[11px] px-2 py-1 rounded border border-line hover:bg-bg-hover`,children:`Copy command`})]})]})}function kr({label:e,children:t}){return(0,W.jsxs)(`details`,{className:`group border border-line rounded bg-bg-hover/20 overflow-hidden`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer select-none flex items-center justify-between px-3 py-2 text-fg-muted hover:text-fg hover:bg-bg-hover/40 transition-colors`,children:[(0,W.jsx)(`span`,{children:e}),(0,W.jsx)(`span`,{className:`transition-transform group-open:rotate-90 text-fg-muted/60`,children:`▸`})]}),(0,W.jsx)(`div`,{className:`px-3 py-3 border-t border-line/60 text-fg-muted`,children:t})]})}function Ar({label:e,value:t,hint:n}){return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:e}),(0,W.jsx)(`span`,{className:`font-mono text-fg tabular-nums`,children:t})]}),n&&(0,W.jsx)(`div`,{className:`text-fg-muted/70 text-[10px] mt-0.5`,children:n})]})}function jr({selected:e,selectedCollection:t,onSelect:n,onCreateCollection:r,onSelectSession:i}){let a=K({queryKey:[`projects`],queryFn:X.projects,refetchInterval:15e3,refetchIntervalInBackground:!1,staleTime:6e3}),o=hn(),[,s]=Cn(),[c,l]=(0,U.useState)(!0),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(()=>{if(typeof window>`u`)return 256;let e=window.localStorage.getItem(`claude-recall:projects-pane-width`),t=e?Number(e):NaN;return Number.isFinite(t)&&t>=200&&t<=600?t:256}),m=(0,U.useRef)(null),h=(0,U.useCallback)(e=>{e.preventDefault(),e.currentTarget.setPointerCapture?.(e.pointerId),m.current={startX:e.clientX,startW:f}},[f]),g=(0,U.useCallback)(e=>{let t=m.current;t&&p(Math.max(200,Math.min(600,t.startW+(e.clientX-t.startX))))},[]),_=(0,U.useCallback)(e=>{m.current&&(m.current=null,e.currentTarget.releasePointerCapture?.(e.pointerId))},[]);return(0,U.useEffect)(()=>{window.localStorage.setItem(`claude-recall:projects-pane-width`,String(f))},[f]),(0,W.jsxs)(`aside`,{className:`pane shrink-0 relative`,style:{width:f},children:[(0,W.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize projects pane`,onPointerDown:h,onPointerMove:g,onPointerUp:_,onPointerCancel:_,onDoubleClick:()=>p(256),className:`absolute top-0 right-0 bottom-0 w-1.5 cursor-col-resize hover:bg-accent/40 active:bg-accent/60 z-10`,title:`Drag to resize · double-click to reset`}),(0,W.jsxs)(`div`,{className:`pane-header`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{children:`Projects`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>s({view:`help`,helpSection:`taxonomy`}),className:`text-[10px] font-normal normal-case tracking-normal text-fg-muted/70 hover:text-accent`,title:`Project vs Collection vs Tag vs Pin vs Alias vs Note — what's the difference?`,children:`(?)`})]}),a.data&&(0,W.jsx)(`span`,{children:a.data.length})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[(0,W.jsx)(pr,{onSelectSession:i}),(0,W.jsx)(tr,{selectedCollection:t,onSelect:e=>{s({col:e,project:null,session:null,msg:null})},onCreateCollection:r}),(0,W.jsxs)(`button`,{type:`button`,"data-testid":`all-sessions`,onClick:()=>n(null),className:Q(`list-item text-sm flex items-center justify-between gap-2`,e===null&&!t&&`list-item-active`),children:[(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`All sessions`}),(0,W.jsx)(`span`,{className:`text-xs text-fg-muted`,children:a.data?a.data.reduce((e,t)=>e+t.session_count,0):`—`})]}),a.isLoading&&(0,W.jsx)(`div`,{className:`px-4 py-6 text-xs text-fg-muted`,children:`Loading…`}),a.isError&&(0,W.jsxs)(`div`,{className:`px-4 py-6 text-xs text-role-user`,children:[`Failed to load: `,a.error.message]}),a.data?.map(t=>(0,W.jsxs)(`div`,{className:Q(`list-item group relative`,e===t.name&&`list-item-active`),title:t.decoded_path,children:[(0,W.jsxs)(`button`,{type:`button`,"data-testid":`project-row`,onClick:()=>n(t.name),className:`block w-full text-left`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-1`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium truncate`,children:t.name}),(0,W.jsxs)(`span`,{className:`flex items-center gap-2 text-xs text-fg-muted shrink-0`,children:[(0,W.jsx)(gr,{projectId:t.id}),gt(t.session_count)]})]}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted truncate font-mono`,children:mt(t.decoded_path,44)}),t.latest&&(0,W.jsx)(`div`,{className:`text-xs text-fg-muted mt-1`,children:ht(t.latest)})]}),(0,W.jsxs)(`div`,{className:`absolute right-2 bottom-2 group/scan`,children:[(0,W.jsx)(`button`,{type:`button`,"data-testid":`thread-scan-button`,onClick:e=>{e.stopPropagation(),d(t.name)},className:`text-[10px] px-1.5 py-0.5 rounded border border-line bg-bg-hover/60 text-fg-muted hover:text-accent hover:border-accent/40 transition-colors`,children:`🧵 Scan threads`}),(0,W.jsxs)(`div`,{role:`tooltip`,className:`pointer-events-none absolute right-0 bottom-full mb-1.5 w-64 z-20 opacity-0 group-hover/scan:opacity-100 transition-opacity rounded-md border border-accent/40 bg-bg shadow-lg px-3 py-2 text-[11px] leading-snug text-fg`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-accent mb-1`,children:`Detect workflow threads`}),(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`Opens a preflight modal for `,(0,W.jsx)(`span`,{className:`text-fg`,children:t.name}),`: shows eligible session count, proposed parent-child edges, estimated threads, and max LLM cost in USD before you commit. Nothing is written until you click Apply.`]}),(0,W.jsx)(`div`,{className:`absolute right-3 top-full -mt-px h-2 w-2 rotate-45 border-r border-b border-accent/40 bg-bg`})]})]})]},t.id)),o.data&&o.data.length>0&&(0,W.jsxs)(`div`,{className:`border-t border-line mt-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`w-full pane-header hover:bg-bg-hover`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:Q(`transition-transform`,c&&`rotate-90`),children:`▸`}),`Tags`]}),(0,W.jsx)(`span`,{children:o.data.length})]}),c&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 px-4 py-2`,children:o.data.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s({q:`#${e.tag}`,session:null,msg:null}),className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-role-tool/10 text-role-tool text-xs border border-role-tool/30 hover:bg-role-tool/20 transition-colors`,title:`filter to ${e.count} session${e.count===1?``:`s`} tagged #${e.tag}`,children:[(0,W.jsxs)(`span`,{children:[`#`,e.tag]}),(0,W.jsx)(`span`,{className:`text-fg-muted/60 text-[10px]`,children:e.count})]},e.tag))})]})]}),u&&(0,W.jsx)(yr,{project:u,onClose:()=>d(null),onOpenThreadsPage:e=>{d(null),s({view:`threads`,project:e,session:null,msg:null})}})]})}var Mr=`claude-recall:pinned-sessions:v1`;function Nr(){try{let e=localStorage.getItem(Mr);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function Pr(e){try{localStorage.setItem(Mr,JSON.stringify(e))}catch{}}var Fr=new Set;function Ir(){for(let e of Fr)e()}function Lr(){let[e,t]=(0,U.useState)(()=>Nr());return(0,U.useEffect)(()=>{let e=()=>t(Nr());return Fr.add(e),()=>{Fr.delete(e)}},[]),(0,U.useEffect)(()=>{let e=e=>{e.key===Mr&&t(Nr())};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),{pinned:e,isPinned:(0,U.useCallback)(t=>e.includes(t),[e]),togglePin:(0,U.useCallback)(e=>{let t=Nr();Pr(t.includes(e)?t.filter(t=>t!==e):[...t,e]),Ir()},[])}}function Rr(e,t,n){return Math.max(t,Math.min(n,e))}function zr(e,t){try{let n=localStorage.getItem(e);if(n==null)return t;let r=Number(n);return Number.isFinite(r)?r:t}catch{return t}}function Br(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}var Vr=new Map;function Hr(e){Vr.get(e)?.forEach(e=>e())}function Ur(e){let t=e.minWidth??240,n=e.maxWidth??640,r=e.collapsedWidth??36,i=`${e.storageKey}:width`,a=`${e.storageKey}:collapsed`,[o,s]=(0,U.useState)(()=>Rr(zr(i,e.defaultWidth),t,n)),[c,l]=(0,U.useState)(()=>Br(a));(0,U.useEffect)(()=>{let r=Vr.get(e.storageKey);r||(r=new Set,Vr.set(e.storageKey,r));let o=()=>{s(Rr(zr(i,e.defaultWidth),t,n)),l(Br(a))};return r.add(o),()=>{r?.delete(o)}},[e.storageKey,i,a,e.defaultWidth,t,n]),(0,U.useEffect)(()=>{let t=t=>{(t.key===i||t.key===a)&&Hr(e.storageKey)};return window.addEventListener(`storage`,t),()=>window.removeEventListener(`storage`,t)},[i,a,e.storageKey]);let u=(0,U.useCallback)(r=>{let a=Rr(r,t,n);s(a);try{localStorage.setItem(i,String(a))}catch{}Hr(e.storageKey)},[t,n,i,e.storageKey]),d=(0,U.useCallback)(t=>{l(t);try{localStorage.setItem(a,t?`1`:`0`)}catch{}Hr(e.storageKey)},[a,e.storageKey]),f=(0,U.useCallback)((e,t)=>{let n=n=>{u(t+(n.clientX-e))},r=()=>{window.removeEventListener(`mousemove`,n),window.removeEventListener(`mouseup`,r),document.body.style.cursor=``,document.body.style.userSelect=``};window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},[u]),p=(0,U.useCallback)(()=>{d(!c)},[d,c]);return{width:o,effectiveWidth:c?r:o,collapsed:c,minWidth:t,maxWidth:n,collapsedWidth:r,setWidth:u,setCollapsed:d,toggleCollapsed:p,beginResize:f}}function Wr({status:e}){return!e||e===`neutral`?null:e===`verified`?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-[10px] text-green-500`,title:`Verified: completion claim backed by 2+ evidence categories`,children:[(0,W.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 16 16`,fill:`none`,className:`shrink-0`,children:(0,W.jsx)(`path`,{d:`M6 10.8L3.2 8l-.9.9L6 12.6l8-8-.9-.9L6 10.8z`,fill:`currentColor`})}),`verified`]}):(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-[10px] text-yellow-500`,title:`Unverified: completion claimed but insufficient evidence`,children:[(0,W.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 16 16`,fill:`none`,className:`shrink-0`,children:(0,W.jsx)(`path`,{d:`M8 1L1 14h14L8 1zm0 3.5l4.9 8.5H3.1L8 4.5zM7.25 7v3h1.5V7h-1.5zm0 4v1.5h1.5V11h-1.5z`,fill:`currentColor`})}),`unverified`]})}function Gr(e){return e.trim().toLowerCase().replace(/^#+/,``).replace(/[\s/\\]+/g,`-`).replace(/[^a-z0-9\-._]/g,``).slice(0,40)}function Kr({sessionId:e,existingTags:t,onDone:n,variant:r=`bar`,placeholder:i=`tag-name`}){let[a,o]=(0,U.useState)(``),s=(0,U.useRef)(null),c=(0,U.useRef)(null),l=_n(),u=hn();(0,U.useEffect)(()=>{requestAnimationFrame(()=>s.current?.focus())},[]),(0,U.useEffect)(()=>{let e=e=>{c.current&&!c.current.contains(e.target)&&n()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[n]);let d=Gr(a),f=u.data?d?u.data.filter(e=>!t.includes(e.tag)&&e.tag.includes(d)).slice(0,8):u.data.filter(e=>!t.includes(e.tag)).slice(0,8):[],p=async t=>{let r=Gr(t);if(r)try{await l.mutateAsync({sessionId:e,tag:r}),n()}catch(e){console.error(`add tag failed`,e)}},m=r===`row`?`w-48 text-[10px] px-2`:`w-56 text-xs px-3`,h=r===`row`?`text-[10px]`:`text-xs`,g=i===`tag-name`?`type new tag + Enter`:i,_=d.length>0;return(0,W.jsxs)(`div`,{ref:c,className:`relative inline-flex`,children:[(0,W.jsx)(`input`,{ref:s,type:`text`,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),p(a)):e.key===`Escape`?(e.preventDefault(),n()):e.key===`Tab`&&f.length>0&&(e.preventDefault(),o(f[0].tag))},placeholder:g,maxLength:40,className:`bg-bg-elevated border border-accent rounded-full py-0.5 text-fg focus:outline-none placeholder:text-fg-muted ${m}`}),(0,W.jsxs)(`div`,{className:`absolute left-0 top-full mt-1 min-w-full w-56 bg-bg-elevated border border-line rounded-lg shadow-lg py-1 z-30 ${h}`,children:[(0,W.jsx)(`div`,{className:`px-3 py-1 text-fg-muted text-[10px] uppercase tracking-wider border-b border-line/50 mb-1`,children:_?(0,W.jsxs)(W.Fragment,{children:[`Press `,(0,W.jsx)(`span`,{className:`font-mono text-accent`,children:`Enter`}),` to create`,` `,(0,W.jsxs)(`span`,{className:`text-role-tool`,children:[`#`,d]})]}):(0,W.jsx)(W.Fragment,{children:`Type to create, or pick existing:`})}),f.length>0?f.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>void p(e.tag),className:`block w-full text-left px-3 py-1 hover:bg-bg-hover`,children:[(0,W.jsxs)(`span`,{className:`text-role-tool`,children:[`#`,e.tag]}),(0,W.jsx)(`span`,{className:`text-fg-muted ml-2`,children:e.count})]},e.tag)):(0,W.jsx)(`div`,{className:`px-3 py-1 text-fg-muted italic`,children:_?`no matches — hit Enter to create`:`no tags yet — type one above`})]})]})}function qr(){let[e,t]=(0,U.useState)({id:null,snapshot:null,error:null}),n=(0,U.useRef)(null),r=async e=>{try{let{scanId:n}=await X.startScan(e);return t({id:n,snapshot:{id:n,status:`running`,createdAt:new Date().toISOString(),finishedAt:null,total:0,completed:0,results:[],error:null},error:null}),i(n),n}catch(e){return t(t=>({...t,error:e instanceof Error?e.message:String(e)})),null}},i=e=>{n.current&&n.current.close();let r=new EventSource(`/api/tags/scan/${encodeURIComponent(e)}/events`);n.current=r,r.addEventListener(`state`,e=>{let n=JSON.parse(e.data);t(e=>e.snapshot?{...e,snapshot:{...e.snapshot,...n}}:e)}),r.addEventListener(`result`,e=>{let n=JSON.parse(e.data);t(e=>e.snapshot?{...e,snapshot:{...e.snapshot,results:[...e.snapshot.results,n]}}:e)}),r.addEventListener(`progress`,e=>{let{completed:n,total:r}=JSON.parse(e.data);t(e=>e.snapshot?{...e,snapshot:{...e.snapshot,completed:n,total:r}}:e)}),r.addEventListener(`status`,e=>{let{status:n}=JSON.parse(e.data);t(e=>e.snapshot?{...e,snapshot:{...e.snapshot,status:n}}:e)}),r.addEventListener(`done`,()=>{t(e=>e.snapshot?{...e,snapshot:{...e.snapshot,status:`completed`,finishedAt:new Date().toISOString()}}:e),r.close()}),r.onerror=()=>{r.close()}},a=async t=>e.id?X.applyScan(e.id,t):null,o=async()=>{e.id&&(await X.cancelScan(e.id),n.current?.close())},s=()=>{n.current?.close(),t({id:null,snapshot:null,error:null})};return(0,U.useEffect)(()=>()=>n.current?.close(),[]),{...e,start:r,apply:a,cancel:o,reset:s}}function Jr(e,t){(0,U.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&(e.stopPropagation(),t())};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t])}var Yr=[{id:`claude-opus-4-7`,label:`Opus 4.7 (recommended for quality)`},{id:`claude-sonnet-4-6`,label:`Sonnet 4.6 (balanced)`},{id:`claude-haiku-4-5-20251001`,label:`Haiku 4.5 (fast, cheap)`}];function Xr({open:e,onClose:t}){let n=bt(),r=xt(),i=G();Jr(e,t);let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(`api`),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(`claude-opus-4-7`),[p,m]=(0,U.useState)([2,4]),[h,g]=(0,U.useState)(!1),_=n.data&&!n.data.enabled&&!n.data.hasApiKey,v=K({queryKey:[`mcp-install-status`],queryFn:()=>X.getMcpInstallStatus(),enabled:e&&s===`mcp`});if((0,U.useEffect)(()=>{n.data&&(o(n.data.enabled),c(n.data.backend),f(n.data.model),m([n.data.minTagsPerSession,n.data.maxTagsPerSession]),g(n.data.autopilot))},[n.data]),!e)return null;let y=async()=>{await r.mutateAsync({enabled:a,backend:s,model:d,minTagsPerSession:p[0],maxTagsPerSession:p[1],autopilot:h,...l?{apiKey:l}:{}}),t()},b=async()=>{try{await X.installMcp(),await i.invalidateQueries({queryKey:[`mcp-install-status`]}),Z({message:`Claude Recall MCP installed. Restart Claude Code to load it.`,tone:`success`,duration:8e3})}catch(e){Z({message:`Install failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}},x=async()=>{try{await X.uninstallMcp(),await i.invalidateQueries({queryKey:[`mcp-install-status`]}),Z({message:`MCP entry removed from Claude Code config.`,tone:`info`})}catch(e){Z({message:`Uninstall failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}},S=a&&s===`api`&&(l.length>0||!!n.data?.hasApiKey);return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-lg w-[560px] max-w-[calc(100vw-2rem)] max-h-[calc(100vh-4rem)] overflow-y-auto shadow-xl`,children:[(0,W.jsxs)(`div`,{className:`px-5 py-4 border-b border-line flex items-center justify-between sticky top-0 bg-bg`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Auto-tagging settings`}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg text-lg leading-none`,children:`×`})]}),(0,W.jsxs)(`div`,{className:`px-5 py-4 space-y-4 text-xs`,children:[_&&(0,W.jsxs)(`div`,{className:`rounded border border-accent/40 bg-accent/10 px-3 py-2 text-[11px] leading-relaxed text-fg`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-accent mb-1`,children:`First time here?`}),`Auto-tag picks 2–4 tags per session using an LLM. Two ways to run it: pay Anthropic per scan (API key) or use your existing Claude Code agent (MCP, free). Both are opt-in. Turn on `,(0,W.jsx)(`strong`,{children:`Autopilot`}),` `,`to let the daemon tag every session automatically in the background — then forget this dialog exists.`]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:a,onChange:e=>o(e.target.checked)}),(0,W.jsx)(`span`,{className:`text-fg`,children:`Enable auto-tagging`})]}),(0,W.jsx)(`p`,{className:`text-fg-muted text-[11px] leading-relaxed`,children:`When enabled, scanning sends session content (first message + sampled messages) to your chosen backend. Nothing is sent automatically — every scan is user-triggered. (Unless you turn on Autopilot below.)`}),(0,W.jsxs)(`fieldset`,{className:`border border-line rounded p-3 space-y-2`,children:[(0,W.jsx)(`legend`,{className:`px-1 text-fg-muted`,children:`Backend`}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`input`,{type:`radio`,name:`backend`,checked:s===`api`,onChange:()=>c(`api`)}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Anthropic API key`}),(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px]`,children:`Recall calls Anthropic directly. You pay per scan. Works with Autopilot.`})]})]}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`input`,{type:`radio`,name:`backend`,checked:s===`mcp`,onChange:()=>c(`mcp`)}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Claude Code (via MCP)`}),(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px]`,children:`Use your existing Claude Code agent. Zero extra cost. Manual trigger only (no Autopilot).`})]})]})]}),s===`api`&&(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted mb-1`,children:`Anthropic API key`}),(0,W.jsx)(`input`,{type:`password`,value:l,onChange:e=>u(e.target.value),placeholder:n.data?.hasApiKey?`sk-ant-… (key on file, leave blank to keep)`:`sk-ant-…`,className:`w-full bg-bg-elevated border border-line rounded px-2 py-1 text-fg`})]}),s===`mcp`&&(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 space-y-2`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px]`,children:"Install Claude Recall into your Claude Code MCP config (`~/.claude.json`) with one click — no copy-paste required."}),v.isLoading?(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px]`,children:`Checking install status…`}):v.data?.installed?(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`text-accent text-[11px]`,children:[`✓ Installed in `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:v.data.configPath.replace(/^.*\//,`~/…/`)}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Restart Claude Code if it's running.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void x(),className:`text-[11px] text-fg-muted hover:text-role-user px-2 py-1`,children:`Uninstall`})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`bg-accent text-bg rounded px-3 py-1 text-xs font-medium hover:opacity-90`,children:`Install in Claude Code`})]}),(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted mb-1`,children:[`Model`,(0,W.jsx)(`span`,{className:`text-[10px] ml-2 font-normal`,children:`— used for both API-key scans and the MCP one-click run`})]}),(0,W.jsx)(`select`,{value:d,onChange:e=>f(e.target.value),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1 text-fg`,children:Yr.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted mb-1`,children:`Min tags / session`}),(0,W.jsx)(`input`,{type:`number`,min:1,max:10,value:p[0],onChange:e=>m([Math.max(1,Number(e.target.value)),Math.max(Number(e.target.value),p[1])]),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1 text-fg`})]}),(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted mb-1`,children:`Max tags / session`}),(0,W.jsx)(`input`,{type:`number`,min:1,max:10,value:p[1],onChange:e=>m([Math.min(p[0],Number(e.target.value)),Number(e.target.value)]),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1 text-fg`})]})]}),(0,W.jsxs)(`fieldset`,{className:`border rounded p-3 ${S?`border-accent/50`:`border-line opacity-60`}`,children:[(0,W.jsx)(`legend`,{className:`px-1 text-fg-muted`,children:`Autopilot`}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:h,disabled:!S,onChange:e=>g(e.target.checked)}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Tag sessions automatically in the background`}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] leading-relaxed`,children:[`When on, the daemon scans every untagged session (existing + new) and applies tags without a review step. You can still × any tag on any session. Costs ~$0.01–0.05 per session at Opus pricing. `,S?``:`Requires backend = Anthropic API key + a saved key.`]})]})]})]})]}),(0,W.jsxs)(`div`,{className:`px-5 py-3 border-t border-line flex items-center justify-end gap-2 sticky bottom-0 bg-bg`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void y(),disabled:r.isPending,className:`bg-accent text-bg rounded px-3 py-1 text-xs font-medium hover:opacity-90 disabled:opacity-50`,children:r.isPending?`Saving…`:`Save`})]})]})})}function Zr({open:e,snapshot:t,onApply:n,onCancel:r,onClose:i,onRetryFailed:a}){let[o,s]=(0,U.useState)({}),[c,l]=(0,U.useState)(!1);Jr(e,i),(0,U.useEffect)(()=>{t&&s(e=>{let n={...e};for(let e of t.results)n[e.sessionId]||(n[e.sessionId]={enabled:!!e.suggestion,rejected:new Set});return n})},[t?.results.length,t]);let u=(0,U.useMemo)(()=>t?t.results.map(e=>{let t=o[e.sessionId];if(!t||!t.enabled||!e.suggestion)return null;let n=e.suggestion.tags.filter(e=>!t.rejected.has(e));return n.length===0?null:{sessionId:e.sessionId,tags:n}}).filter(e=>e!==null):[],[t,o]);if(!e||!t)return null;let d=e=>{s(t=>{let n=t[e]??{enabled:!1,rejected:new Set};return{...t,[e]:{...n,enabled:!n.enabled}}})},f=(e,t)=>{s(n=>{let r=n[e]??{enabled:!0,rejected:new Set},i=new Set(r.rejected);return i.has(t)?i.delete(t):i.add(t),{...n,[e]:{...r,rejected:i}}})},p=async()=>{l(!0);try{await n(u)&&i()}finally{l(!1)}},m=t.status===`running`||t.status===`pending`,h=t.results.filter(e=>e.error).length;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-lg w-[900px] max-w-[calc(100vw-2rem)] max-h-[85vh] flex flex-col shadow-xl`,children:[(0,W.jsxs)(`div`,{className:`px-5 py-4 border-b border-line flex items-center justify-between`,children:[(0,W.jsxs)(`h2`,{className:`text-sm font-semibold text-fg`,children:[`Auto-tag review — `,t.completed,`/`,t.total,m&&(0,W.jsx)(`span`,{className:`ml-2 text-fg-muted text-xs`,children:`(scanning…)`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`text-fg-muted hover:text-fg text-lg leading-none`,children:`×`})]}),(0,W.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,W.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,W.jsx)(`thead`,{className:`sticky top-0 bg-bg border-b border-line`,children:(0,W.jsxs)(`tr`,{className:`text-left text-fg-muted`,children:[(0,W.jsx)(`th`,{className:`px-3 py-2 w-8`}),(0,W.jsx)(`th`,{className:`px-3 py-2`,children:`Session`}),(0,W.jsx)(`th`,{className:`px-3 py-2`,children:`Current`}),(0,W.jsx)(`th`,{className:`px-3 py-2`,children:`Suggested`}),(0,W.jsx)(`th`,{className:`px-3 py-2 w-20 text-right`,children:`Confidence`})]})}),(0,W.jsxs)(`tbody`,{children:[t.results.map(e=>(0,W.jsx)(Qr,{r:e,enabled:o[e.sessionId]?.enabled??!1,rejected:o[e.sessionId]?.rejected??new Set,onToggleRow:()=>d(e.sessionId),onToggleTag:t=>f(e.sessionId,t)},e.sessionId)),m&&t.results.length<t.total&&(0,W.jsx)(`tr`,{children:(0,W.jsxs)(`td`,{colSpan:5,className:`px-3 py-3 text-center text-fg-muted italic`,children:[`scanning `,t.total-t.results.length,` more…`]})})]})]})}),(0,W.jsxs)(`div`,{className:`px-5 py-3 border-t border-line flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted text-xs`,children:[u.length,` session`,u.length===1?``:`s`,` selected`,` `,`(`,(0,W.jsxs)(`span`,{children:[u.reduce((e,t)=>e+t.tags.length,0),` tags`]}),`)`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[m&&(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`text-role-user hover:text-role-user/80 text-xs px-3 py-1`,children:`Cancel scan`}),!m&&h>0&&a&&(0,W.jsxs)(`button`,{type:`button`,onClick:a,className:`text-xs border border-role-user/40 text-role-user hover:bg-role-user/10 rounded px-3 py-1`,title:`re-run the ${h} session${h===1?``:`s`} that failed`,children:[`Retry `,h,` failed`]}),(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Close`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void p(),disabled:u.length===0||c,className:`bg-accent text-bg rounded px-3 py-1 text-xs font-medium hover:opacity-90 disabled:opacity-40`,children:c?`Applying…`:`Apply ${u.length}`})]})]})]})})}function Qr({r:e,enabled:t,rejected:n,onToggleRow:r,onToggleTag:i}){let a=!!e.error;return(0,W.jsxs)(`tr`,{className:Q(`border-b border-line/50`,a&&`opacity-60`),children:[(0,W.jsx)(`td`,{className:`px-3 py-2`,children:(0,W.jsx)(`input`,{type:`checkbox`,checked:t,onChange:r,disabled:a||!e.suggestion})}),(0,W.jsxs)(`td`,{className:`px-3 py-2`,children:[(0,W.jsx)(`div`,{className:`text-fg font-medium truncate max-w-[280px]`,title:e.first_user_message,children:e.alias||e.first_user_message.slice(0,60)||`(no prompt)`}),(0,W.jsxs)(`div`,{className:`font-mono text-[10px] text-fg-muted`,children:[e.sessionId.slice(0,8),` · `,e.project]})]}),(0,W.jsx)(`td`,{className:`px-3 py-2`,children:e.current_tags.length===0?(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`—`}):(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.current_tags.map(e=>(0,W.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded-full bg-role-tool/15 text-role-tool text-[10px]`,children:[`#`,e]},e))})}),(0,W.jsx)(`td`,{className:`px-3 py-2`,children:a?(0,W.jsxs)(`span`,{className:`text-role-user text-[11px]`,children:[`⚠ `,e.error]}):e.suggestion?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.suggestion.tags.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(e),className:Q(`px-1.5 py-0.5 rounded-full text-[10px] border transition-colors`,n.has(e)?`line-through text-fg-muted border-line bg-transparent`:`bg-accent/10 text-accent border-accent/40 hover:bg-accent/20`),title:n.has(e)?`click to re-include`:`click to reject`,children:[`#`,e]},e))}):(0,W.jsx)(`span`,{className:`text-fg-muted italic`,children:`pending…`})}),(0,W.jsx)(`td`,{className:`px-3 py-2 text-right font-mono text-[10px] text-fg-muted`,children:e.suggestion?e.suggestion.confidence.toFixed(2):`—`})]})}function $r({open:e,sessionId:t,projectName:n,onClose:r,onOpenSettings:i}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(null),h=G();Jr(e,r),(0,U.useEffect)(()=>{if(!s||l===null)return;let e=setInterval(()=>f(Date.now()-l),250);return()=>clearInterval(e)},[s,l]);let g=K({queryKey:[`mcp-install-status`],queryFn:()=>X.getMcpInstallStatus(),enabled:e}),_=!!g.data?.claudeCliAvailable,v=async()=>{c(!0),m(null);let e=Date.now();u(e),f(0);try{let r=t?{sessionIds:[t]}:n?{project:n,untaggedOnly:!0}:{untaggedOnly:!0},i=await X.runClaudeCliScan(r);m({success:i.success,tagsAdded:i.tagsAdded,stderrTail:i.stderrTail,elapsedMs:Date.now()-e}),h.invalidateQueries({queryKey:[`sessions`]}),h.invalidateQueries({queryKey:[`tags`]}),t&&h.invalidateQueries({queryKey:[`session`,t]}),Z({message:i.success?`Auto-tag complete — ${i.tagsAdded} new tag${i.tagsAdded===1?``:`s`} written.`:`Auto-tag finished with errors (exit ${i.exitCode}). See dialog for details.`,tone:i.success?`success`:`error`,duration:8e3})}catch(e){Z({message:`Run failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}finally{c(!1)}};if(!e)return null;let y=t?`Using my Recall MCP tools, auto-tag session ${t}. First call list_tags to see existing tags I already use (prefer those for consistency). Then call list_sessions_to_tag with limit 1 and match the session. Pick 2–4 tags based on the content. Finally call apply_tags to write them.`:`Using my Recall MCP tools, scan and tag my sessions. First call list_tags to see existing tags (prefer those for consistency). Then call list_sessions_to_tag with untaggedOnly: true. For each session, pick 2–4 tags based on the content. Finally call apply_tags for each session to write them.`,b=async()=>{try{await navigator.clipboard.writeText(y),o(!0),setTimeout(()=>o(!1),1800)}catch(e){console.error(`copy failed`,e)}},x=async()=>{try{await X.installMcp(),await h.invalidateQueries({queryKey:[`mcp-install-status`]}),Z({message:`Claude Recall MCP installed. Restart Claude Code to load it.`,tone:`success`,duration:8e3})}catch(e){Z({message:`Install failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}};return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-lg w-[600px] max-w-[calc(100vw-2rem)] max-h-[calc(100vh-4rem)] overflow-y-auto shadow-xl`,children:[(0,W.jsxs)(`div`,{className:`px-5 py-4 border-b border-line flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`MCP-mode auto-tagging`}),(0,W.jsx)(`p`,{className:`text-fg-muted text-[11px] mt-1`,children:`You're set to use your Claude Code agent (no Anthropic key needed). The web UI can't call your agent directly — you trigger it from Claude Code.`})]}),i&&(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`text-[11px] text-fg-muted hover:text-fg px-2 py-1 shrink-0`,title:`change auto-tagging settings`,children:`⚙ Settings`})]}),(0,W.jsxs)(`div`,{className:`px-5 py-4 space-y-4 text-xs`,children:[(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 space-y-2`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px] font-semibold uppercase tracking-wider`,children:`Step 1 — install Recall in Claude Code`}),g.isLoading?(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px]`,children:`Checking…`}):g.data?.installed?(0,W.jsxs)(`div`,{className:`text-accent text-[11px]`,children:[`✓ Installed in `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`~/.claude.json`}),`. If you haven't already, restart Claude Code to load it.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px]`,children:[`One click — no copy-paste JSON. Writes `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`{ "mcpServers": { "recall": … } }`}),` into your Claude Code config at `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`~/.claude.json`}),`, preserving every other key you already have.`]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void x(),className:`bg-accent text-bg rounded px-3 py-1 text-xs font-medium hover:opacity-90`,children:`Install in Claude Code`})]})]}),g.data?.installed&&_&&(0,W.jsxs)(`div`,{className:`border border-accent/50 bg-accent/5 rounded p-3 space-y-2`,children:[(0,W.jsx)(`div`,{className:`text-accent text-[11px] font-semibold uppercase tracking-wider`,children:`Step 2 — one click (recommended)`}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] leading-relaxed`,children:[`Recall will spawn your local `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`claude`}),` CLI in the background and have it tag `,t?`this session`:n?(0,W.jsxs)(W.Fragment,{children:[`every untagged session in `,(0,W.jsx)(`span`,{className:`text-fg`,children:n})]}):`every untagged session`,` via the Recall MCP tools. Uses your Claude Code subscription — `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`no API key, no copy-paste`}),`.`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>void v(),disabled:s,className:`bg-accent text-bg rounded px-3 py-1 text-xs font-medium hover:opacity-90 disabled:opacity-50 disabled:cursor-wait inline-flex items-center gap-2`,children:[s&&(0,W.jsx)(`span`,{className:`inline-block w-3 h-3 border-2 border-bg border-t-transparent rounded-full animate-spin`}),s?`Running…`:`🏷 Auto-run via Claude Code`]}),s&&(0,W.jsxs)(`span`,{className:`text-[11px] text-fg-muted font-mono tabular-nums`,children:[ei(d),` elapsed · typical 30s–3min`]})]}),p&&(0,W.jsx)(`div`,{className:`text-[11px] mt-2 p-2 rounded border ${p.success?`border-accent/40 bg-accent/10 text-accent`:`border-role-user/40 bg-role-user/10 text-role-user`}`,children:p.success?(0,W.jsxs)(W.Fragment,{children:[`✓ Done in `,ei(p.elapsedMs),` — `,p.tagsAdded,` new tag`,p.tagsAdded===1?``:`s`,` written.`]}):(0,W.jsxs)(W.Fragment,{children:[`Exit with errors after `,ei(p.elapsedMs),`. Tail of stderr:`,(0,W.jsx)(`pre`,{className:`mt-1 font-mono text-[10px] whitespace-pre-wrap overflow-auto max-h-40`,children:p.stderrTail||`(empty)`})]})})]}),(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 space-y-2`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px] font-semibold uppercase tracking-wider`,children:g.data?.installed&&_?`Or — paste the prompt into an open Claude Code session`:`Step 2 — ask your agent (in Claude Code)`}),!_&&g.data?.installed&&(0,W.jsxs)(`div`,{className:`text-role-user text-[11px]`,children:[`⚠ `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`claude`}),` CLI not found on PATH, so one-click auto-run isn't available. Install Claude Code locally to enable it, or use the copy-paste path below.`]}),(0,W.jsx)(`pre`,{className:`bg-bg-elevated border border-line rounded p-2 text-[11px] whitespace-pre-wrap`,children:y}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`text-[11px] bg-accent/10 text-accent hover:bg-accent hover:text-bg border border-accent/40 rounded px-2 py-1`,children:a?`✓ copied`:`📋 copy prompt`})]}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px]`,children:[`Your agent will use the `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`list_tags`}),`,`,` `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`list_sessions_to_tag`}),`, and`,` `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`apply_tags`}),` MCP tools. Tags appear in Recall on the next poll (≤4 seconds).`]}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] pt-2 border-t border-line`,children:[`Want hands-off tagging that doesn't need Claude Code running?`,` `,i?(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`text-accent hover:underline`,children:`Switch to API-key mode + enable Autopilot`}):(0,W.jsx)(`span`,{children:`Switch backend to API key in settings and enable Autopilot.`}),`.`]})]}),(0,W.jsx)(`div`,{className:`px-5 py-3 border-t border-line flex items-center justify-end gap-2`,children:(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Close`})})]})})}function ei(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;return n===0?`${r}s`:`${n}m ${String(r).padStart(2,`0`)}s`}function ti({projectName:e,collectionId:t}){let n=bt(),r=qr(),i=G(),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(`untagged`);Jr(s,()=>c(!1)),Jr(!!r.error,()=>r.reset());let p=()=>{let e=n.data;if(!e||!e.enabled){o(!0);return}if(e.backend===`api`&&!e.hasApiKey){o(!0);return}if(e.backend===`mcp`){u(!0);return}c(!0)},m=async()=>{let n={};d===`untagged`&&(n.untaggedOnly=!0),d===`project`&&e&&(n.project=e),d===`collection`&&t&&(n.collectionId=t),c(!1),await r.start(n)},h=()=>{i.invalidateQueries({queryKey:[`sessions`]}),i.invalidateQueries({queryKey:[`tags`]}),i.invalidateQueries({queryKey:[`session`]})},g=async e=>{let t=await r.apply(e);if(t&&t.applied>0){h();let n=e.reduce((e,t)=>e+t.tags.length,0);Z({message:`Applied ${t.applied} tag${t.applied===1?``:`s`} across ${e.length} session${e.length===1?``:`s`}.`,tone:`success`,duration:1e4,action:{label:`Undo`,onClick:()=>{_(e,n)}}})}else t&&Z({message:`Nothing to apply — all selected tags were already on those sessions.`,tone:`info`});return t},_=async(e,t)=>{let n=0;for(let t of e)for(let e of t.tags)try{await X.removeSessionTag(t.sessionId,e),n+=1}catch(n){console.error(`undo: remove failed`,t.sessionId,e,n)}h(),Z({message:`Undone — removed ${n} of ${t} tag${t===1?``:`s`}.`,tone:`info`})},v=async()=>{if(!r.snapshot)return;let e=r.snapshot.results.filter(e=>e.error).map(e=>e.sessionId);e.length!==0&&(r.reset(),await r.start({sessionIds:e}))};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center rounded border border-accent/40 bg-accent/10 overflow-hidden`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:p,className:`text-xs text-accent hover:bg-accent hover:text-bg px-2 py-1 font-medium border-r border-accent/40`,title:n.data?.enabled?`auto-tag sessions with an LLM`:`configure auto-tagging`,children:`🏷 auto-tag`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(!0),className:`text-xs text-accent hover:bg-accent hover:text-bg px-1.5 py-1`,title:`auto-tag settings (enable autopilot, install MCP, change model, paste API key)`,"aria-label":`auto-tag settings`,children:`⚙`})]}),(0,W.jsx)(Xr,{open:a,onClose:()=>o(!1)}),(0,W.jsx)($r,{open:l,projectName:e,onClose:()=>{u(!1),Z({message:`MCP scan triggered. New tags will appear here as your Claude Code agent writes them.`,tone:`info`,duration:8e3})},onOpenSettings:()=>{u(!1),o(!0)}}),r.error&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-role-user/60 rounded-lg w-[440px] shadow-xl p-4 text-xs`,children:[(0,W.jsx)(`div`,{className:`text-role-user font-semibold mb-2`,children:`Scan failed`}),(0,W.jsx)(`div`,{className:`text-fg-muted mb-3 break-words`,children:r.error}),(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>r.reset(),className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Close`})})]})}),s&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-lg w-[480px] shadow-xl`,children:[(0,W.jsxs)(`div`,{className:`px-5 py-4 border-b border-line`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Auto-tag sessions`}),(0,W.jsx)(`p`,{className:`text-fg-muted text-[11px] mt-1`,children:`Pick how many sessions to send to the LLM. Each session is one model call.`})]}),(0,W.jsxs)(`div`,{className:`px-5 py-4 space-y-3 text-xs`,children:[[{id:`untagged`,label:`Untagged sessions only`,desc:`Every session with zero tags, across ALL projects. Usually what you want for the first run.`,available:!0},{id:`all`,label:`All sessions`,desc:`Every indexed session, across ALL projects. Includes sessions that already have tags (new tags will merge, never replace).`,available:!0},{id:`project`,label:`Current project${e?` — ${e}`:``}`,desc:e?`Only sessions in "${e}".`:`Not available — click a project in the left pane first.`,available:!!e},{id:`collection`,label:`Current collection`,desc:t?`Only sessions in the collection you are currently viewing.`:`Not available — open a collection in the left pane first.`,available:!!t}].map(e=>(0,W.jsxs)(`label`,{className:`flex items-start gap-2 ${e.available?`cursor-pointer`:`opacity-40`}`,children:[(0,W.jsx)(`input`,{type:`radio`,name:`scope`,className:`mt-0.5`,checked:d===e.id,disabled:!e.available,onChange:()=>f(e.id)}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-fg`,children:e.label}),(0,W.jsx)(`div`,{className:`text-fg-muted text-[11px]`,children:e.desc})]})]},e.id)),(0,W.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-line text-[11px] text-fg-muted space-y-1`,children:[(0,W.jsxs)(`div`,{children:[`• Capped at `,(0,W.jsx)(`span`,{className:`text-fg`,children:`500 sessions per scan`}),` (safety rail).`]}),(0,W.jsxs)(`div`,{children:[`• Uses model `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:n.data?.model??`claude-opus-4-7`}),`.`,n.data?.backend===`api`&&(0,W.jsxs)(W.Fragment,{children:[` API-key mode: roughly `,(0,W.jsx)(`span`,{className:`text-fg`,children:`$0.01–0.05`}),` per session at Opus pricing.`]}),n.data?.backend===`mcp`&&(0,W.jsx)(W.Fragment,{children:` MCP mode: uses your Claude Code subscription, no extra cost.`})]}),(0,W.jsx)(`div`,{children:`• Nothing is written until you Apply in the review step.`}),(0,W.jsxs)(`div`,{children:[`• Press `,(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`Esc`}),` to cancel any dialog.`]})]})]}),(0,W.jsxs)(`div`,{className:`px-5 py-3 border-t border-line flex items-center justify-end gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(!1),className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void m(),className:`bg-accent text-bg rounded px-3 py-1 text-xs font-medium hover:opacity-90`,children:`Start scan`})]})]})}),(0,W.jsx)(Zr,{open:!!r.id&&!r.error,snapshot:r.snapshot,onApply:g,onCancel:()=>void r.cancel(),onClose:()=>r.reset(),onRetryFailed:()=>void v()})]})}var ni=new Set([`low_signal`,`recursive_meta`,`programmatic`]);function ri({sessionId:e,x:t,y:n,pinned:r,recallPromptsAvailable:i,titleQuality:a,onClose:o,onTogglePin:s,onAddToCollection:c,onCompareWith:l,onOpen:u,onLinkToSession:d,onRegenerateTitle:f,onRunPrompt:p}){let m=!!f&&!!a&&ni.has(a),h=(0,U.useRef)(null);(0,U.useEffect)(()=>{let e=e=>{h.current&&!h.current.contains(e.target)&&o()},t=e=>{e.key===`Escape`&&o()};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[o]);let g=Math.min(t,window.innerWidth-240-8),_=Math.min(n,window.innerHeight-300-8),v=()=>{navigator.clipboard.writeText(e),Z({message:`Session ID copied: ${e.slice(0,8)}…`,tone:`info`}),o()},y=async t=>{o();try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/context?mode=${t}`);if(!n.ok)throw Error(`${n.status} ${n.statusText}`);let r=await n.text();await navigator.clipboard.writeText(r),Z({message:`Copied ${r.length.toLocaleString()} chars (${t}). Paste into a new Claude session.`,tone:`success`,duration:6e3})}catch(e){Z({message:`Copy failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}};return(0,W.jsxs)(`div`,{ref:h,role:`menu`,"aria-label":`session actions`,className:`fixed z-50 bg-bg-elevated border border-line rounded-lg shadow-xl py-1 text-xs`,style:{left:g,top:_,width:240},children:[(0,W.jsx)(ii,{label:`Open session`,hint:`jump to transcript`,onClick:()=>{o(),u()}}),(0,W.jsx)(ii,{label:r?`★ Unpin`:`☆ Pin to top`,onClick:()=>{o(),s()}}),(0,W.jsx)(ai,{}),(0,W.jsx)(ii,{label:`Copy session ID`,hint:`${e.slice(0,8)}…`,onClick:v}),(0,W.jsx)(ii,{label:`📋 Copy as context`,hint:`condensed markdown, paste into new Claude`,onClick:()=>void y(`condensed`)}),(0,W.jsx)(ii,{label:`📋 Copy full markdown`,hint:`uncondensed transcript with tool I/O`,onClick:()=>void y(`full`)}),(0,W.jsx)(ai,{}),(0,W.jsx)(ii,{label:`📂 Add to collection…`,onClick:()=>{o(),c()}}),(0,W.jsx)(ii,{label:`⇄ Compare with another session`,onClick:()=>{o(),l()}}),(0,W.jsx)(ii,{label:`🔗 Link to session…`,hint:`manual wiki-link, surfaces under both sessions' Linked panel`,onClick:()=>{o(),d()}}),m&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ai,{}),(0,W.jsx)(ii,{label:`✨ Regenerate title from context`,hint:`uses parent / child / cited sessions to mint a new title`,onClick:()=>{o(),f?.()}})]}),p&&i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ai,{}),(0,W.jsx)(`div`,{className:`px-3 pt-1 pb-0.5 text-[10px] uppercase tracking-wider text-fg-muted`,children:`Ask Claude Code (via MCP)`}),(0,W.jsx)(ii,{label:`📝 Summarize this session`,hint:`3–5 bullets of what shipped / was tried / is open`,onClick:()=>{o(),p(`summarize_session`,`Summarize this session`,{sessionId:e})}}),(0,W.jsx)(ii,{label:`🎯 Extract decisions`,hint:`architectural / product decisions with why + alternatives`,onClick:()=>{o(),p(`extract_decisions`,`Extract decisions`,{sessionId:e})}}),(0,W.jsx)(ii,{label:`🔍 Find similar sessions`,hint:`5 sessions that touched the same topic, with reasons`,onClick:()=>{o(),p(`find_similar_sessions`,`Find similar sessions`,{sessionId:e})}})]})]})}function ii({label:e,hint:t,onClick:n}){return(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:n,className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:e}),t&&(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:t})]})}function ai(){return(0,W.jsx)(`div`,{className:`border-t border-line my-1`})}function oi({sessionIds:e,x:t,y:n,onClose:r,onClearSelection:i}){let a=(0,U.useRef)(null),o=e.length;(0,U.useEffect)(()=>{let e=e=>{a.current&&!a.current.contains(e.target)&&r()},t=e=>{e.key===`Escape`&&r()};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[r]);let s=Math.min(t,window.innerWidth-260-8),c=Math.min(n,window.innerHeight-180-8),l=async(e,t)=>{try{await navigator.clipboard.writeText(e),Z({message:`Copied ${o} session ID${o===1?``:`s`} (${t})`,tone:`success`})}catch(e){Z({message:`Copy failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}};return(0,W.jsxs)(`div`,{ref:a,role:`menu`,"aria-label":`multi-select session actions`,className:`fixed z-50 bg-bg-elevated border border-line rounded-lg shadow-xl py-1 text-xs`,style:{left:s,top:c,width:260},children:[(0,W.jsxs)(`div`,{className:`px-3 pt-1 pb-1 text-[10px] uppercase tracking-wider text-fg-muted`,children:[o,` session`,o===1?``:`s`,` selected`]}),(0,W.jsx)(ci,{}),(0,W.jsx)(si,{label:`Copy session IDs`,hint:`one per line`,onClick:()=>{r(),l(e.join(`
13
13
  `),`one per line`)}}),(0,W.jsx)(si,{label:`Copy IDs (space-separated)`,hint:`ready to paste into a prompt`,onClick:()=>{r(),l(e.join(` `),`space-separated`)}}),(0,W.jsx)(si,{label:`Copy IDs (comma-separated)`,hint:`for CSV / lists`,onClick:()=>{r(),l(e.join(`, `),`comma-separated`)}}),(0,W.jsx)(ci,{}),(0,W.jsx)(si,{label:`Clear selection`,hint:`esc`,onClick:()=>{r(),i()}})]})}function si({label:e,hint:t,onClick:n}){return(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:n,className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:e}),t&&(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:t})]})}function ci(){return(0,W.jsx)(`div`,{className:`border-t border-line my-1`})}function li({sessionId:e,onClose:t,anchor:n=`center`,position:r=null}){let[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(!1),c=(0,U.useRef)(null),l=In(!1),u=Dn(e),d=Mn();(0,U.useEffect)(()=>{requestAnimationFrame(()=>c.current?.focus())},[]),(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let f=(0,U.useMemo)(()=>{let e=Fn(l.tree,new Set(l.tree.flatMap(e=>ui(e)))),t=i.trim().toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)):e},[l.tree,i]),p=(0,U.useMemo)(()=>new Set((u.data?.collections??[]).map(e=>e.id)),[u.data]),m=async n=>{try{await d.mutateAsync({collectionId:n,sessionId:e})}catch(e){console.error(`add to collection failed`,e)}t()},h=(0,W.jsxs)(`div`,{className:Q(`bg-bg-elevated border border-line rounded-lg shadow-xl overflow-hidden`,n===`center`?`w-[400px] max-w-[90vw]`:`w-[320px]`),onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2.5 border-b border-line`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`📂`}),(0,W.jsx)(`input`,{ref:c,type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`Search collections…`,className:`flex-1 bg-transparent text-sm text-fg placeholder:text-fg-muted focus:outline-none`}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg text-xs`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`max-h-72 overflow-y-auto`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s(!0),className:`w-full px-3 py-2 text-left text-sm text-accent hover:bg-bg-hover flex items-center gap-2 border-b border-line`,children:[(0,W.jsx)(`span`,{children:`+`}),(0,W.jsx)(`span`,{children:`Create new collection…`})]}),l.isLoading&&(0,W.jsx)(`div`,{className:`px-3 py-4 text-xs text-fg-muted`,children:`Loading…`}),l.data&&f.length===0&&(0,W.jsx)(`div`,{className:`px-3 py-4 text-xs text-fg-muted`,children:`No collections match. Try "Create new collection".`}),f.map(e=>{let t=p.has(e.id);return(0,W.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>m(e.id),className:Q(`w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors`,t?`text-fg-muted cursor-not-allowed opacity-70`:`text-fg hover:bg-bg-hover`),style:{paddingLeft:`${12+e.depth*16}px`},title:t?`already in this collection`:void 0,children:[(0,W.jsx)(`span`,{children:e.icon??`📂`}),(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:e.name}),t&&(0,W.jsx)(`span`,{className:`text-xs text-accent`,children:`✓`}),!t&&(0,W.jsx)(`span`,{className:`text-xs text-fg-muted`,children:e.session_count})]},e.id)})]})]});return n===`center`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/40 flex items-center justify-center`,onClick:t,children:h}),o&&(0,W.jsx)(Bn,{mode:`create`,pinnedSessionId:e,onClose:()=>s(!1),onCreated:()=>{s(!1),t()}})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-30`,onClick:t,"aria-hidden":`true`}),(0,W.jsx)(`div`,{className:`fixed z-40`,style:{top:r?.top??100,left:r?.left??100},children:h}),o&&(0,W.jsx)(Bn,{mode:`create`,pinnedSessionId:e,onClose:()=>s(!1),onCreated:()=>{s(!1),t()}})]})}function ui(e){return[e.id,...e.children.flatMap(e=>ui(e))]}function di(e){return K({queryKey:[`note`,e],queryFn:async()=>{if(!e)return null;let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/notes`,{headers:ut()});if(t.status===204)return null;if(!t.ok)throw Error(`${t.status}: ${await t.text()}`);return await t.json()},enabled:!!e,staleTime:2e3})}function fi(){let e=G();return q({mutationFn:async({sessionId:e,content:t})=>{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/notes`,{method:`PUT`,headers:ut({"content-type":`application/json`}),body:JSON.stringify({content:t})});if(!n.ok)throw Error(`${n.status}: ${await n.text()}`);return await n.json()},onSuccess:t=>{e.setQueryData([`note`,t.session_id],t),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session`]})}})}function pi(){let e=G();return q({mutationFn:async e=>{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/generate-note`,{method:`POST`,headers:ut()});if(!t.ok){let e=await t.text();throw Error(`${t.status}: ${e}`)}return await t.json()},onSuccess:t=>{e.setQueryData([`note`,t.session_id],t),e.invalidateQueries({queryKey:[`sessions`]})}})}function mi(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var hi=mi();function gi(e){hi=e}var _i={exec:()=>null};function vi(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(bi.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var yi=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),bi={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},xi=/^(?:[ \t]*(?:\n|$))+/,Si=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ci=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,wi=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Ti=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ei=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Di=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Oi=vi(Di).replace(/bull/g,Ei).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ki=vi(Di).replace(/bull/g,Ei).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ai=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ji=/^[^\n]+/,Mi=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ni=vi(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Mi).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Pi=vi(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ei).getRegex(),Fi=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,Ii=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Li=vi(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,Ii).replace(`tag`,Fi).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ri=vi(Ai).replace(`hr`,wi).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fi).getRegex(),zi={blockquote:vi(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Ri).getRegex(),code:Si,def:Ni,fences:Ci,heading:Ti,hr:wi,html:Li,lheading:Oi,list:Pi,newline:xi,paragraph:Ri,table:_i,text:ji},Bi=vi(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,wi).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fi).getRegex(),Vi={...zi,lheading:ki,table:Bi,paragraph:vi(Ai).replace(`hr`,wi).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Bi).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fi).getRegex()},Hi={...zi,html:vi(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,Ii).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:_i,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:vi(Ai).replace(`hr`,wi).replace(`heading`,` *#{1,6} *[^
@@ -91,7 +91,7 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(
91
91
  title="copy this code block to clipboard">copy</button>
92
92
  ${t}
93
93
  </div>`)}function Kc(e,t){let n=vt(t);return n?e.replace(/(>)([^<]+)(<)/g,(e,t,r,i)=>t+r.replace(n,e=>`<mark>${qc(e)}</mark>`)+i):e}function qc(e){return e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}var Jc=(0,U.forwardRef)(function({message:e,searchQuery:t,sessionId:n,isMatch:r,isActiveMatch:i,activationTick:a,collapseDefault:o=!1},s){let[c,l]=(0,U.useState)(`pretty`),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(o);(0,U.useEffect)(()=>{p(o)},[o]);let m=(0,U.useMemo)(()=>Lc(e.content_text??``),[e.content_text]),h=(0,U.useMemo)(()=>{let t=e.content_text??``;if(!t)return{html:``,strippedCount:0,rawLen:0};if(c===`raw`)return{html:`<pre>${qc(t)}</pre>`,strippedCount:0,rawLen:t.length};let{cleaned:n,stripped:r}=c===`include-system`?{cleaned:t,stripped:0}:Bc(t);return{html:Wc(n||`_(content was entirely system-only)_`),strippedCount:r,rawLen:t.length}},[e.content_text,c]),g=(0,U.useMemo)(()=>h.html?c===`raw`?h.html:t?Kc(h.html,t):h.html:``,[h.html,t,c]),_=h.strippedCount,v=h.rawLen,y=e.role===`user`?`text-role-user border-role-user/40`:e.role===`assistant`?`text-role-assistant border-role-assistant/40`:`text-fg-dim border-line`,b=e.role===`user`?`user`:e.role===`assistant`?`assistant`:e.type,x=e.tool_names?e.tool_names.split(`,`).filter(Boolean):[],S=(e.content_text??``).slice(0,64),C=e.role===`user`&&(S.startsWith(`**Tool result**`)||S.startsWith(`_(tool result was empty`)),w=x.length>0||C,T=v>6e3,E=T&&!u&&c!==`raw`&&!f;return(0,W.jsxs)(`article`,{ref:s,className:Q(`border-l-2 pl-4 py-3 group scroll-mt-4`,y,e.is_sidechain&&`opacity-70`,r&&`match-highlight-border rounded`,i&&`match-flash`),children:[(0,W.jsxs)(`header`,{className:`flex items-center gap-2 text-xs mb-2 flex-wrap`,children:[(0,W.jsx)(`span`,{className:Q(`font-semibold uppercase tracking-wider`,y),children:b}),e.is_sidechain===1&&(0,W.jsx)(`span`,{className:`badge bg-bg-active text-fg-muted`,children:`subagent`}),e.timestamp&&(0,W.jsx)(`span`,{className:`text-fg-muted font-mono`,children:new Date(e.timestamp).toLocaleTimeString()}),x.length>0&&(0,W.jsxs)(`span`,{className:`badge bg-role-tool/15 text-role-tool`,children:[`⚡ `,x.join(`, `)]}),_>0&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(e=>e===`include-system`?`pretty`:`include-system`),className:`badge bg-bg-active text-fg-muted hover:text-fg`,title:`some system-injected content was hidden — click to toggle`,children:c===`include-system`?`— hide system`:`+ ${_} system`}),w&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>p(e=>!e),className:`text-fg-muted hover:text-fg text-xs border border-line rounded px-1.5 py-0.5`,title:f?`expand this tool message`:`collapse this tool message`,"aria-expanded":!f,children:f?`▸ expand`:`▾ collapse`}),(0,W.jsxs)(`div`,{className:`ml-auto flex items-center gap-2 text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>{e.content_text&&navigator.clipboard.writeText(e.content_text)},className:`hover:text-fg-dim text-xs`,title:`copy message content`,children:`copy`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(e=>e===`raw`?`pretty`:`raw`),className:`hover:text-fg-dim text-xs`,title:`toggle raw plain-text view`,children:c===`raw`?`rendered`:`raw`})]})]}),f?(0,W.jsxs)(`div`,{className:`text-xs italic text-fg-muted`,children:[`(collapsed`,v?` · ${v.toLocaleString()} chars`:``,` — click expand to view)`]}):m&&c!==`raw`?(0,W.jsx)(Fc,{sessionId:n,messageUuid:e.uuid,pasteNumber:m.pasteNumber,lineCount:m.lineCount,filePath:m.filePath}):g?(0,W.jsx)(`div`,{className:Q(`prose-message relative`,E&&`max-h-72 overflow-hidden`),onClick:e=>{let t=e.target;if(t.dataset?.copyCode!==`1`)return;e.preventDefault(),e.stopPropagation();let n=t.closest(`.recall-code-block`);if(!n)return;let r=n.querySelector(`code`)?.textContent??``;navigator.clipboard.writeText(r).then(()=>{let e=t.textContent;t.textContent=`copied!`,t.classList.add(`!text-accent`),setTimeout(()=>{t.textContent=e,t.classList.remove(`!text-accent`)},1200)})},dangerouslySetInnerHTML:{__html:g}}):(0,W.jsx)(`div`,{className:`text-xs italic text-fg-muted`,children:`(empty message)`}),E&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>d(!0),className:`mt-2 text-xs text-accent hover:underline`,children:[`expand full message (`,v.toLocaleString(),` chars)`]}),T&&u&&c!==`raw`&&!f&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>d(!1),className:`mt-2 text-xs text-fg-muted hover:text-fg-dim`,children:`collapse`})]},a??0)}),Yc=(0,U.memo)(Jc,(e,t)=>e.message===t.message&&e.searchQuery===t.searchQuery&&e.sessionId===t.sessionId&&e.isMatch===t.isMatch&&e.isActiveMatch===t.isActiveMatch&&e.activationTick===t.activationTick&&e.collapseDefault===t.collapseDefault);function Xc(){let e=G();return q({mutationFn:async({sessionId:e,alias:t})=>{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/alias`,{method:`PUT`,headers:ut({"content-type":`application/json`}),body:JSON.stringify({alias:t})});if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`${n.status}: ${e.slice(0,200)}`)}return n.json()},onSuccess:()=>{e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session`]}),e.invalidateQueries({queryKey:[`search`]}),e.invalidateQueries({queryKey:[`searchCount`]}),e.invalidateQueries({queryKey:[`thread`]}),e.invalidateQueries({queryKey:[`sessionThreads`]})}})}function Zc(){let e=G();return q({mutationFn:async e=>{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/alias`,{method:`DELETE`,headers:ut()});if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`${t.status}: ${e.slice(0,200)}`)}},onSuccess:()=>{e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session`]}),e.invalidateQueries({queryKey:[`search`]}),e.invalidateQueries({queryKey:[`searchCount`]}),e.invalidateQueries({queryKey:[`thread`]}),e.invalidateQueries({queryKey:[`sessionThreads`]})}})}function Qc(e){return K({queryKey:[`linked-terminal`,e],queryFn:async()=>{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/linked-terminal`,{headers:ut()});if(!t.ok)throw Error(`${t.status}`);return t.json()},enabled:!!e,staleTime:5e3})}function $c(e){return K({queryKey:[`terminal-registry`],queryFn:async()=>{let e=await fetch(`/api/terminal/registry`,{headers:ut()});if(!e.ok)throw Error(`${e.status}`);return e.json()},enabled:e,refetchInterval:e?5e3:!1,staleTime:2500})}function el(){let e=G();return q({mutationFn:async e=>{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/auto-relink`,{method:`POST`,headers:ut()});if(!t.ok)throw Error(`${t.status}`);return t.json()},onSuccess:(t,n)=>{t.applied&&(e.invalidateQueries({queryKey:[`linked-terminal`,n]}),e.invalidateQueries({queryKey:[`session`,n]}),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`search`]}),e.invalidateQueries({queryKey:[`thread`]}),e.invalidateQueries({queryKey:[`sessionThreads`]}))}})}function tl(){let e=G();return q({mutationFn:async({sessionId:e,shell_pid:t,clear:n})=>{let r=await fetch(`/api/sessions/${encodeURIComponent(e)}/relink`,{method:`POST`,headers:ut({"content-type":`application/json`}),body:JSON.stringify(n?{clear:!0}:{shell_pid:t})});if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`${r.status}: ${e.slice(0,200)}`)}return r.json()},onSuccess:(t,n)=>{e.invalidateQueries({queryKey:[`linked-terminal`,n.sessionId]}),e.invalidateQueries({queryKey:[`session`,n.sessionId]}),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`search`]}),e.invalidateQueries({queryKey:[`thread`]}),e.invalidateQueries({queryKey:[`sessionThreads`]})}})}function nl(){return K({queryKey:[`auto-title-config`],queryFn:()=>X.getAutoTitleConfig()})}function rl(){let e=G();return q({mutationFn:e=>X.putAutoTitleConfig(e),onSuccess:()=>void e.invalidateQueries({queryKey:[`auto-title-config`]})})}function il({sessionId:e}){let t=di(e),n=fi(),r=pi(),i=t.data,a=i?.content??``,o=a.length>0,s=i?.auto_synopsis??null,c=i?.auto_synopsis_generated_at??null,l=!!s&&s.length>0,u=o||l,[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(!1);(0,U.useEffect)(()=>{v(!1)},[e]);let y=(0,U.useRef)(null);(0,U.useEffect)(()=>{m(!1),f(u),g(a)},[e,u,a]),(0,U.useEffect)(()=>{p&&(g(a),requestAnimationFrame(()=>{y.current?.focus();let e=y.current;e&&(e.selectionStart=e.selectionEnd=e.value.length)}))},[p,a]);let b=async()=>{try{await n.mutateAsync({sessionId:e,content:h}),m(!1)}catch(e){console.error(`note save failed`,e)}},x=()=>{g(a),m(!1)},S=async()=>{try{await r.mutateAsync(e),Z({message:`Synopsis generated`,tone:`success`,duration:4e3})}catch(e){let t=e?.message??`unknown error`;Z({message:/403/.test(t)?`Agent generation disabled — open a session and click ✨ on the title bar to enable`:`Synopsis generation failed: ${t}`,tone:`error`,duration:6e3})}},C=h!==a,w=i?.updated_at?new Date(i.updated_at):null,T=c?new Date(c):null;return(0,W.jsxs)(`div`,{className:`border-b border-line bg-bg/30`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>f(e=>!e),className:`w-full flex items-center justify-between px-5 py-2 text-xs text-fg-dim hover:text-fg transition-colors`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:Q(`transition-transform`,d&&`rotate-90`),children:`▸`}),(0,W.jsx)(`span`,{className:`font-medium uppercase tracking-wider`,children:`📝 Notes`}),o&&!d&&(0,W.jsx)(`span`,{className:`text-fg-muted normal-case tracking-normal truncate max-w-lg`,children:a.split(`
94
- `)[0].slice(0,120)}),!o&&!d&&(0,W.jsx)(`span`,{className:`text-fg-muted normal-case tracking-normal italic`,children:`none yet — click to add`})]}),w&&o&&(0,W.jsxs)(`span`,{className:`text-fg-muted normal-case tracking-normal font-mono`,children:[`updated `,w.toLocaleString()]})]}),d&&(0,W.jsx)(`div`,{className:`px-5 pb-3`,children:p?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`textarea`,{ref:y,value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`?(e.preventDefault(),b()):e.key===`Escape`&&(e.preventDefault(),x())},placeholder:`Your markdown notes for this session…\\n\\nCmd/Ctrl+Enter saves. Esc cancels.`,rows:8,className:`w-full bg-bg-elevated border border-line rounded p-3 text-sm text-fg font-mono leading-relaxed focus:outline-none focus:border-accent placeholder:text-fg-muted resize-y`,spellCheck:!0}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between mt-2 text-xs`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[h.length.toLocaleString(),` chars`,C&&(0,W.jsx)(`span`,{className:`text-accent ml-2`,children:`· unsaved`}),(0,W.jsxs)(`span`,{className:`ml-3 text-fg-muted`,children:[`mirrored to `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[`~/.recall/notes/`,e.slice(0,8),`.md`]})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:x,className:`px-3 py-1 text-fg-muted hover:text-fg`,children:`cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:b,disabled:!C||n.isPending,className:`px-3 py-1 rounded border border-accent bg-accent/10 text-accent font-medium hover:bg-accent hover:text-bg disabled:opacity-50 disabled:cursor-not-allowed`,children:n.isPending?`saving…`:`save`})]})]})]}):(0,W.jsxs)(W.Fragment,{children:[o?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`bg-bg-elevated border border-line rounded p-3 max-h-72 overflow-y-auto`,children:(0,W.jsx)(as,{text:a})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-3 mt-2`,children:[(0,W.jsx)(al,{hasSynopsis:l,pending:r.isPending,onClick:S}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(!0),className:`text-xs text-accent hover:underline`,children:`✎ edit`})]})]}):(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(!0),className:`w-full border border-dashed border-line rounded p-4 text-sm text-fg-muted hover:border-accent hover:text-fg-dim transition-colors`,children:`+ add a note for this session`}),(0,W.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,W.jsx)(al,{hasSynopsis:l,pending:r.isPending,onClick:S})})]}),l&&(0,W.jsxs)(`div`,{className:`mt-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 text-xs`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`flex items-center gap-1.5 text-fg-muted hover:text-fg transition-colors`,title:_?`expand auto-synopsis`:`collapse auto-synopsis`,"aria-expanded":!_,children:[(0,W.jsx)(`span`,{className:Q(`transition-transform`,!_&&`rotate-90`),"aria-hidden":`true`,children:`▸`}),(0,W.jsx)(`span`,{className:`text-accent`,"aria-hidden":`true`,children:`✨`}),(0,W.jsx)(`span`,{className:`font-medium uppercase tracking-wider`,children:`Auto-synopsis`}),T&&(0,W.jsxs)(`span`,{className:`text-fg-muted normal-case tracking-normal font-mono`,children:[`· generated `,T.toLocaleString()]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`text-xs text-fg-muted hover:text-fg`,title:_?`expand auto-synopsis`:`collapse auto-synopsis`,children:_?`▸ expand`:`▾ collapse`}),(0,W.jsx)(`button`,{type:`button`,onClick:S,disabled:r.isPending,className:`text-xs text-accent hover:underline disabled:opacity-50`,title:`run claude -p again over the latest transcript`,children:r.isPending?`regenerating…`:`↻ regenerate`})]})]}),!_&&(0,W.jsx)(`div`,{className:`bg-bg-elevated border border-accent/40 rounded p-3 border-l-2 max-h-96 overflow-y-auto`,children:(0,W.jsx)(as,{text:s??``})})]})]})})]})}function al({hasSynopsis:e,pending:t,onClick:n}){return e?null:(0,W.jsx)(`button`,{type:`button`,onClick:n,disabled:t,className:`text-xs text-accent hover:underline disabled:opacity-50`,title:`reads this session's transcript and writes a markdown synopsis below your note`,children:t?`generating…`:`✨ generate synopsis`})}function ol({sessionId:e,tags:t}){let[n,r]=(0,U.useState)(!1),i=vn(),[,a]=Cn();return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 normal-case tracking-normal`,children:[t.map(t=>(0,W.jsxs)(`span`,{className:`group inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-role-tool/15 text-role-tool text-xs font-medium border border-role-tool/30`,children:[(0,W.jsxs)(`span`,{children:[`#`,t]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i.mutate({sessionId:e,tag:t}),className:`opacity-60 hover:opacity-100 transition-opacity`,title:`remove #${t}`,children:`×`})]},t)),n?(0,W.jsx)(Kr,{sessionId:e,existingTags:t,onDone:()=>r(!1),variant:`bar`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(!0),className:Q(`inline-flex items-center gap-1 px-2 py-0.5 rounded-full border border-dashed text-xs transition-colors`,t.length===0?`border-line text-fg-muted hover:text-fg hover:border-accent`:`border-line/50 text-fg-muted opacity-60 hover:opacity-100 hover:text-fg`),title:`add a tag — typing #tagname in the search box also filters by tag`,children:`+ tag`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>a({view:`help`,helpSection:`taxonomy`}),className:`inline-flex items-center justify-center w-4 h-4 rounded-full text-[10px] text-fg-muted/70 hover:text-accent hover:bg-accent/10 transition-colors`,title:`Tag vs Collection vs Alias vs Note — what's the difference?`,"aria-label":`Tag vs other organizers — what's the difference?`,children:`?`})]})}function sl({sessionId:e}){let t=bt(),n=qr(),r=G(),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1);Jr(!!n.error,()=>n.reset());let c=()=>{let r=t.data;if(!r||!r.enabled){a(!0);return}if(r.backend===`api`&&!r.hasApiKey){a(!0);return}if(r.backend===`mcp`){s(!0);return}n.start({sessionIds:[e]})},l=()=>{r.invalidateQueries({queryKey:[`sessions`]}),r.invalidateQueries({queryKey:[`session`,e]}),r.invalidateQueries({queryKey:[`tags`]})},u=async e=>{let t=await n.apply(e);if(t&&t.applied>0){l();let n=e.reduce((e,t)=>e+t.tags.length,0);Z({message:`Applied ${t.applied} tag${t.applied===1?``:`s`} to this session.`,tone:`success`,duration:1e4,action:{label:`Undo`,onClick:()=>{d(e,n)}}})}else t&&Z({message:`Nothing to apply — all selected tags were already present.`,tone:`info`});return t},d=async(e,t)=>{let n=0;for(let t of e)for(let e of t.tags)try{await X.removeSessionTag(t.sessionId,e),n+=1}catch(n){console.error(`undo: remove failed`,t.sessionId,e,n)}l(),Z({message:`Undone — removed ${n} of ${t} tag${t===1?``:`s`}.`,tone:`info`})},f=async()=>{if(!n.snapshot)return;let e=n.snapshot.results.filter(e=>e.error).map(e=>e.sessionId);e.length!==0&&(n.reset(),await n.start({sessionIds:e}))};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center rounded border border-accent/40 bg-accent/10 overflow-hidden`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:c,disabled:!!n.id,className:`text-xs text-accent hover:bg-accent hover:text-bg px-2 py-1 font-medium border-r border-accent/40 disabled:opacity-50 disabled:cursor-wait`,title:t.data?.enabled?`auto-tag this session with an LLM`:`configure auto-tagging`,children:n.id?`🏷 scanning…`:`🏷 auto-tag`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(!0),className:`text-xs text-accent hover:bg-accent hover:text-bg px-1.5 py-1`,title:`auto-tag settings (enable autopilot, install MCP, change model, paste API key)`,"aria-label":`auto-tag settings`,children:`⚙`})]}),(0,W.jsx)(Xr,{open:i,onClose:()=>a(!1)}),(0,W.jsx)($r,{open:o,sessionId:e,onClose:()=>{s(!1),Z({message:`MCP scan triggered. New tags will appear on this session as your Claude Code agent writes them.`,tone:`info`,duration:8e3})},onOpenSettings:()=>{s(!1),a(!0)}}),n.error&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-role-user/60 rounded-lg w-[440px] shadow-xl p-4 text-xs`,children:[(0,W.jsx)(`div`,{className:`text-role-user font-semibold mb-2`,children:`Scan failed`}),(0,W.jsx)(`div`,{className:`text-fg-muted mb-3 break-words`,children:n.error}),(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>n.reset(),className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Close`})})]})}),(0,W.jsx)(Zr,{open:!!n.id&&!n.error,snapshot:n.snapshot,onApply:u,onCancel:()=>void n.cancel(),onClose:()=>n.reset(),onRetryFailed:()=>void f()})]})}function cl({sessionId:e}){let t=K({queryKey:[`sessionStats`,e],queryFn:()=>X.getSessionStats(e),staleTime:3e4}).data;return!t||t.totalTokens===0?null:(0,W.jsxs)(`a`,{href:`#/stats`,className:`normal-case tracking-normal shrink-0 inline-flex items-center gap-1.5 text-[11px] font-medium text-fg-dim hover:text-accent border border-line hover:border-accent/60 rounded px-2 py-0.5 transition-colors`,title:`session cost — derived from token counts (pricing may change)\n\ninput: ${t.inputTokens.toLocaleString()}\noutput: ${t.outputTokens.toLocaleString()}\ncache write: ${t.cacheCreateTokens.toLocaleString()}\ncache read: ${t.cacheReadTokens.toLocaleString()}\ntotal: ${t.totalTokens.toLocaleString()}\n\nmodel: ${t.primaryModelLabel}${t.primaryModel?` (${t.primaryModel})`:``}`+(t.byModel.length>1?`\n\n${t.byModel.length} models used — click to view dashboard`:``),children:[(0,W.jsx)(`span`,{className:`text-accent font-semibold`,children:t.display.dollars}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`·`}),(0,W.jsxs)(`span`,{children:[t.display.tokens,` tok`]}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`·`}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:t.primaryModelLabel})]})}function ll({sessionId:e}){let[t,n]=(0,U.useState)(!1),r=K({queryKey:[`sessionCommits`,e],queryFn:()=>X.getSessionCommits(e),staleTime:3e4}).data?.commits??[];if(r.length===0)return null;let i=`${r.length} commit${r.length===1?``:`s`}`;return(0,W.jsxs)(`div`,{className:`px-5 py-2 border-b border-line bg-bg/60 normal-case tracking-normal text-xs`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex items-center gap-1.5 text-fg-muted hover:text-fg`,title:`commits authored during this session`,children:[(0,W.jsx)(`span`,{className:`text-[10px]`,children:t?`▾`:`▸`}),(0,W.jsx)(`span`,{className:`font-medium text-fg-dim`,children:`⎇`}),(0,W.jsxs)(`span`,{children:[i,` authored during this session`]})]}),t&&(0,W.jsx)(`ul`,{className:`mt-2 space-y-1.5 pl-5`,children:r.map(e=>(0,W.jsxs)(`li`,{className:`flex items-start gap-2 text-[11px]`,children:[(0,W.jsx)(`code`,{className:`font-mono text-accent shrink-0`,title:e.commit_sha,children:e.commit_sha.slice(0,8)}),(0,W.jsx)(`span`,{className:`text-fg truncate min-w-0 flex-1`,children:e.subject??(0,W.jsx)(`span`,{className:`italic text-fg-muted`,children:`(no subject)`})}),e.committed_at&&(0,W.jsx)(`time`,{className:`text-fg-muted shrink-0 font-mono`,children:e.committed_at.replace(`T`,` `).slice(0,19)})]},e.commit_sha))})]})}function ul(e,t){e.invalidateQueries({queryKey:[`threads`]}),t&&e.invalidateQueries({queryKey:[`thread`,t]}),e.invalidateQueries({queryKey:[`sessionThreads`]})}function dl(e=!1){return K({queryKey:[`threads`,{archived:e}],queryFn:()=>X.listThreads(e),staleTime:1e4})}function fl(e){return K({queryKey:[`thread`,e],queryFn:()=>X.getThread(e),enabled:!!e,staleTime:1e4})}function pl(e){return K({queryKey:[`sessionThreads`,e],queryFn:()=>X.threadsForSession(e),enabled:!!e,staleTime:3e4})}function ml(){let e=G();return q({mutationFn:e=>X.createThread(e),onSuccess:t=>ul(e,t.thread.id)})}function hl(){let e=G();return q({mutationFn:({id:e,patch:t})=>X.patchThread(e,t),onSuccess:t=>ul(e,t.thread.id)})}function gl(){return K({queryKey:[`thread-folders`],queryFn:()=>X.listThreadFolders(),staleTime:3e4})}function _l(){let e=G();return q({mutationFn:e=>X.createThreadFolder(e),onSuccess:()=>e.invalidateQueries({queryKey:[`thread-folders`]})})}function vl(){let e=G();return q({mutationFn:e=>X.deleteThreadFolder(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`thread-folders`]}),e.invalidateQueries({queryKey:[`threads`]})}})}function yl(){let e=G();return q({mutationFn:e=>X.reorderThreadFolders(e),onSuccess:()=>e.invalidateQueries({queryKey:[`thread-folders`]})})}function bl(){let e=G();return q({mutationFn:({threadId:e,sessionId:t,parentSessionId:n,role:r})=>X.addSessionToThread(e,{sessionId:t,parentSessionId:n,role:r}),onSuccess:(t,n)=>ul(e,n.threadId)})}function xl(){let e=G();return q({mutationFn:({threadId:e,sessionId:t})=>X.removeSessionFromThread(e,t),onSuccess:(t,n)=>ul(e,n.threadId)})}function Sl(){let e=G();return q({mutationFn:({threadId:e,sessionId:t,parentSessionId:n})=>X.setThreadSessionParent(e,t,n),onSuccess:(t,n)=>ul(e,n.threadId)})}function Cl(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.name.toLowerCase().includes(n)):[...e]}function wl({sessionId:e}){let[,t]=Cn(),n=pl(e),r=dl(),i=ml(),a=bl(),o=xl(),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(``),d=n.data?.threads??[],f=new Set(d.map(e=>e.id)),p=(r.data?.threads??[]).filter(e=>!f.has(e.id));return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start gap-1.5 px-5 py-2 border-b border-line bg-bg/60 normal-case tracking-normal`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mr-1 pt-0.5`,title:`Threads group a session with related sessions (for example, a planning session plus the execution sessions it spawned).`,children:`🧵 Threads`}),d.map(n=>(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-xs border border-accent/30`,title:`${n.session_count} session${n.session_count===1?``:`s`} in this thread`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({view:`threads`,thread:n.id}),className:`hover:underline`,title:`open the "${n.name}" thread graph`,children:n.name}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o.mutate({threadId:n.id,sessionId:e}),className:`text-fg-muted hover:text-role-user text-[11px]`,title:`unlink this session from the thread (thread keeps existing)`,children:`✕`})]},n.id)),s?(0,W.jsx)(Tl,{sessionId:e,available:p,activeCount:d.length,newName:l,setNewName:u,creating:i.isPending,adding:a.isPending,onPickExisting:t=>{a.mutate({threadId:t,sessionId:e},{onSuccess:()=>c(!1)})},onCreate:()=>{let t=l.trim();t&&i.mutate({name:t,originSessionId:e},{onSuccess:()=>{u(``),c(!1)}})},onCancel:()=>{c(!1),u(``)}}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(!0),className:`text-xs text-accent hover:underline`,title:`Link this session into an existing thread, or create a new one with this session as the origin (reverse path is + Add session from the thread detail page).`,children:`+ Add to thread`})]})}function Tl({available:e,activeCount:t,newName:n,setNewName:r,creating:i,adding:a,onPickExisting:o,onCreate:s,onCancel:c}){let[l,u]=(0,U.useState)(``),d=(0,U.useMemo)(()=>Cl(e,l),[e,l]),f=l.trim().length>0;return(0,W.jsxs)(`div`,{className:`w-full mt-1 rounded border border-line bg-bg-elevated p-2 space-y-2 border-l-2 border-l-accent/60`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`text-[11px] uppercase tracking-wider font-medium text-fg-muted`,children:`Link to a thread`}),(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`text-[11px] text-fg-muted hover:text-fg`,title:`Close the picker without linking this session to any thread.`,children:`cancel`})]}),e.length>0&&(0,W.jsx)(`input`,{autoFocus:!0,type:`text`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d.length===1?(e.preventDefault(),o(d[0].id)):e.key===`Escape`&&(e.preventDefault(),l?u(``):c())},placeholder:`search threads by name`,"aria-label":`Search threads by name`,className:`w-full text-xs bg-bg border border-line rounded px-2 py-1`}),e.length>0?d.length>0?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] text-fg-muted mb-1`,children:f?`${d.length} match${d.length===1?``:`es`}: click to link this session.`:`Click an existing thread to link this session into it:`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:d.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e.id),disabled:a,className:`inline-flex items-center gap-1 px-2 py-1 rounded-full border border-line hover:border-accent hover:bg-accent/10 text-xs disabled:opacity-50`,title:`Link this session into "${e.name}" (${e.session_count} session${e.session_count===1?``:`s`}, ${e.closed_at?`closed`:`open`})`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:e.session_count})]},e.id))})]}):(0,W.jsxs)(`div`,{className:`text-[11px] text-fg-muted italic`,children:[`No threads match "`,l.trim(),`". Create a new one below.`]}):(0,W.jsx)(`div`,{className:`text-[11px] text-fg-muted italic`,children:t>0?`No other threads available. Create a new one below.`:`No threads exist yet. Create the first one below.`}),(0,W.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),s()},className:`flex items-center gap-1.5 pt-1 border-t border-line`,children:[(0,W.jsx)(`span`,{className:`text-[11px] text-fg-muted`,title:`Creating a new thread with this session as the first member (origin)`,children:`Or create new:`}),(0,W.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),placeholder:`thread name (this session becomes the origin)`,className:`flex-1 text-xs bg-bg border border-line rounded px-2 py-1`}),(0,W.jsx)(`button`,{type:`submit`,disabled:!n.trim()||i,className:`text-xs px-2 py-1 rounded bg-accent text-bg font-medium disabled:opacity-50`,title:`Create a new thread with this session set as the origin`,children:`Create`})]})]})}function El({content:e,children:t,side:n=`bottom`,delayMs:r=300,maxWidth:i=300}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(null),l=(0,U.useRef)(null),u=(0,U.useRef)(null),d=(0,U.useRef)(null);(0,U.useEffect)(()=>()=>{d.current!==null&&window.clearTimeout(d.current)},[]);let f=()=>{d.current!==null&&window.clearTimeout(d.current),d.current=window.setTimeout(()=>o(!0),r)},p=()=>{d.current!==null&&window.clearTimeout(d.current),d.current=null,o(!1),c(null)};return(0,U.useLayoutEffect)(()=>{if(!a)return;let e=l.current,t=u.current;if(!e||!t)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),o=n,s=window.innerHeight-r.bottom,d=r.top;o===`bottom`&&s<i.height+8&&d>s?o=`top`:o===`top`&&d<i.height+8&&s>d&&(o=`bottom`);let f=o===`bottom`?r.bottom+8:r.top-i.height-8,p=r.left+r.width/2,m=p-i.width/2;m=Math.max(8,Math.min(m,window.innerWidth-i.width-8));let h=p-m;c({top:f,left:m,arrowLeft:h,side:o})},[a,n,e]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{ref:l,className:`relative inline-flex`,onMouseEnter:f,onMouseLeave:p,onFocus:f,onBlur:p,children:t}),a&&(0,js.createPortal)((0,W.jsxs)(`div`,{ref:u,role:`tooltip`,style:{position:`fixed`,top:s?.top??-9999,left:s?.left??-9999,width:i,visibility:s?`visible`:`hidden`,zIndex:9999},className:`pointer-events-none px-3 py-2 rounded-md bg-bg-elevated border border-accent/50 shadow-[0_8px_24px_-8px_rgba(138,120,255,0.45),0_2px_8px_rgba(0,0,0,0.4)] text-[11px] leading-snug text-fg-muted normal-case tracking-normal whitespace-normal text-left`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`absolute left-0 top-1.5 bottom-1.5 w-[2px] rounded-full bg-accent/70`}),(0,W.jsx)(`div`,{className:`pl-1.5`,children:e}),s&&(0,W.jsx)(`span`,{"aria-hidden":`true`,style:{position:`absolute`,left:s.arrowLeft-5,...s.side===`bottom`?{top:-5}:{bottom:-5}},className:`w-2.5 h-2.5 rotate-45 bg-bg-elevated border border-accent/50 `+(s.side===`bottom`?`border-r-0 border-b-0`:`border-l-0 border-t-0`)})]}),document.body)]})}function Dl(e,t){return e.length<=t?{visible:e.slice(),overflow:0}:{visible:e.slice(0,t),overflow:e.length-t}}var Ol=12;function kl({sessionId:e}){let[,t]=Cn(),n=G(),[r,i]=(0,U.useState)(!1),a=K({queryKey:[`session-links`,e,`wiki_link`],queryFn:()=>X.sessionLinks(e),enabled:!!e}),o=q({mutationFn:e=>X.removeLink(e),onSuccess:()=>{n.invalidateQueries({queryKey:[`session-links`,e,`wiki_link`]})},onError:e=>{Z({message:`Unlink failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}),s=a.data?.links??[];if(a.isLoading||s.length===0)return null;let{visible:c,overflow:l}=r?{visible:s,overflow:0}:Dl(s,Ol);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start gap-1.5 px-5 py-2 border-b border-line bg-bg/60 normal-case tracking-normal`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mr-1 pt-0.5`,title:`Wiki-style links between sessions. Right-click any session in the list to add one.`,children:`🔗 Linked`}),(0,W.jsxs)(`span`,{className:`text-[10px] text-fg-muted pt-0.5`,children:[s.length,` `,s.length===1?`session`:`sessions`]}),c.map(e=>(0,W.jsx)(Al,{link:e,onNavigate:()=>t({session:e.otherSessionId,msg:null}),onUnlink:()=>o.mutate(e.linkId)},e.linkId)),l>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(!0),className:`inline-flex items-center px-2 py-0.5 rounded-full border border-dashed border-line/60 text-[10px] text-fg-muted hover:text-fg hover:border-accent`,title:`Show ${l} more linked session${l===1?``:`s`}`,children:[`+`,l,` more`]})]})}function Al({link:e,onNavigate:t,onUnlink:n}){let r=e.direction===`outbound`?`→`:`←`;return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-xs border border-accent/30`,title:e.direction===`outbound`?`${e.title} (this session links to it)`:`${e.title} (this session is linked from it)`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`text-[10px] text-accent/70`,children:r}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`hover:underline truncate max-w-[18rem]`,title:`open ${e.title}`,children:e.title}),e.project&&(0,W.jsx)(`span`,{className:`text-[10px] text-fg-muted/80 italic truncate max-w-[8rem]`,children:e.project}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-fg-muted hover:text-role-user text-[10px]`,title:`unlink from "${e.title}"`,"aria-label":`unlink from ${e.title}`,children:`✕`})]})}function jl({sessionId:e}){let[t,n]=(0,U.useState)(!1),r=K({queryKey:[`neighborhood`,e],queryFn:()=>X.neighborhood(e,{budget:4e3,scoring:`hybrid`}),enabled:t,staleTime:60*1e3});function i(){r.data?.bundle&&(navigator.clipboard?.writeText(r.data.bundle),Z({message:`Neighborhood bundle copied — paste into Claude`,tone:`info`}))}return(0,W.jsxs)(`section`,{className:`border-b border-line`,children:[(0,W.jsxs)(`header`,{className:`flex items-center gap-3 px-5 py-3 cursor-pointer hover:bg-bg-hover/40`,onClick:()=>n(e=>!e),children:[(0,W.jsx)(`span`,{className:`text-fg-muted text-[10px] uppercase tracking-wider w-3`,children:t?`▾`:`▸`}),(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Neighborhood`}),(0,W.jsx)(`span`,{className:`text-fg-muted text-xs`,children:`parents · children · citations · similar (bundle for piping into Claude)`}),r.data&&(0,W.jsxs)(`span`,{className:`ml-auto text-fg-muted text-xs font-mono tabular-nums`,children:[r.data.budgetUsed,` / `,r.data.budgetUsed+r.data.budgetRemaining,` tokens`]})]}),t&&(0,W.jsxs)(`div`,{className:`px-5 pb-4 space-y-3`,children:[r.isLoading&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-xs flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`h-3 w-3 rounded-full border-2 border-accent border-t-transparent animate-spin`}),`Assembling neighborhood…`]}),r.isError&&(0,W.jsxs)(`div`,{className:`p-3 rounded border border-role-user/40 bg-role-user/10 text-role-user text-xs`,children:[`Failed to load neighborhood:`,` `,r.error instanceof Error?r.error.message:`unknown error`]}),r.data&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`px-2.5 py-1 rounded border border-line hover:bg-bg-hover`,title:`Copy the markdown bundle. Paste into a fresh Claude chat to seed it with the related context.`,children:`Copy bundle`}),(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`Or in your terminal: `,(0,W.jsxs)(`code`,{className:`text-fg`,children:[`recall neighborhood `,e.slice(0,8),` | claude`]})]})]}),r.data.truncated.length>0&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px]`,children:[r.data.truncated.length,` ref(s) didn't fit the budget. Increase the budget on the CLI for the full bundle.`]}),(0,W.jsx)(`pre`,{className:`bg-bg-elevated border border-line rounded p-3 text-xs leading-relaxed text-fg whitespace-pre-wrap break-words max-h-96 overflow-y-auto`,children:r.data.bundle||"(empty bundle — this session has no inferred neighborhood yet. Run `recall infer-l1` or `recall infer-citations` for this project.)"})]})]})]})}function Ml({sessionId:e}){let t=K({queryKey:[`verification-detail`,e],queryFn:()=>X.getVerificationDetail(e),staleTime:6e4});if(!t.data||t.data.status===`neutral`)return null;let{status:n,evidence:r}=t.data,i=[[`File writes`,r.fileWrites],[`Test runs`,r.testRuns],[`Git commits`,r.commits],[`Build success`,r.buildSuccess]];return(0,W.jsxs)(`div`,{className:`mt-3 p-3 rounded-lg bg-surface-2 text-xs`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,W.jsx)(`span`,{className:`font-medium ${n===`verified`?`text-green-500`:`text-yellow-500`}`,children:n===`verified`?`Verified`:`Unverified`}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`completion evidence`})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-1`,children:i.map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:t?`text-green-500`:`text-fg-muted/40`,children:t?`✓`:`✗`}),(0,W.jsx)(`span`,{className:t?`text-fg`:`text-fg-muted`,children:e})]},e))})]})}var Nl=[{key:`A`,name:`Minimal`,swatch:`#1a1b1e`},{key:`B`,name:`Terminal`,swatch:`#0d0d0f`},{key:`C`,name:`Gradient`,swatch:`linear-gradient(135deg,#b1370f,#fbbf24)`},{key:`D`,name:`Dashboard`,swatch:`#f6f7f9`}],Pl=[/^~\//,/^\/Users\//,/^\/home\//,/^[A-Za-z]:\\/];function Fl(e,t=80){if(!e)return null;let n=e.replace(/\x1b\[[0-9;]*[A-Za-z]/g,``).trim();if(!n||Pl.some(e=>e.test(n)))return null;let r=n.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,``).replace(/\s+/g,` `).trim();return r?r.length<=t?r:r.slice(0,t-1).trimEnd()+`…`:null}function Il(e){for(let t of[e.alias,e.auto_title,e.first_user_message]){let e=Fl(t);if(e)return e}return e.id.slice(0,8)}function Ll(e,t){if(!e||!t)return null;let n=new Date(t).getTime()-new Date(e).getTime();if(!Number.isFinite(n)||n<=0)return null;let r=Math.round(n/6e4);if(r<1)return`< 1 min`;if(r<60)return`${r} min`;let i=Math.floor(r/60),a=r%60;return a===0?`${i}h`:`${i}h ${a}m`}function Rl({session:e,onClose:t}){let n=(0,U.useMemo)(()=>Fl(e.first_user_message,120)??``,[e.first_user_message]),[r,i]=(0,U.useState)(`A`),[a,o]=(0,U.useState)(n),[s,c]=(0,U.useState)(!0),[l,u]=(0,U.useState)(null),d=(0,U.useRef)(null),f=(0,U.useRef)(),p=K({queryKey:[`share-stats`,e.id],queryFn:()=>X.shareStats(e.id),staleTime:6e4}),m=K({queryKey:[`session-stats`,e.id],queryFn:()=>X.getSessionStats(e.id),staleTime:6e4}),h=(0,U.useMemo)(()=>Il(e),[e]),g=(0,U.useMemo)(()=>Ll(e.started_at,e.ended_at),[e.started_at,e.ended_at]),_=(0,U.useMemo)(()=>({sessionTitle:h,sessionDate:e.started_at??new Date().toISOString(),recallDate:new Date().toISOString(),costDollars:m.data?.display.dollars??`$—`,durationLabel:g,model:m.data?.primaryModelLabel??null,cachedTokens:m.data?.cacheReadTokens??0,messageCount:e.message_count,filesReferenced:p.data?.filesReferenced??0,toolCallCount:p.data?.toolCallCount??0,verdict:a}),[h,e.started_at,g,m.data,e.message_count,p.data,a]),v=(0,U.useCallback)(async()=>{c(!0),u(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-Dk6wV6ZU.js`);return{default:e}},[],import.meta.url)).default,t=await en(r===`A`?()=>import(`./card-a-minimal-ujNERzX7.js`):r===`B`?()=>import(`./card-b-terminal-DpJ_tVpg.js`):r===`C`?()=>import(`./card-c-gradient-CZXVGuNd.js`):()=>import(`./card-d-dashboard-CHKD-PnB.js`),__vite__mapDeps([7,1]),import.meta.url),[n,i,a,o]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),s=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:i,weight:700,style:`normal`},{name:`JetBrains Mono`,data:a,weight:400,style:`normal`},{name:`JetBrains Mono`,data:o,weight:700,style:`normal`}],l=await e(t.render(_),{width:1080,height:1350,fonts:s}),f=d.current;if(!f)return;f.width=1080,f.height=1350;let p=f.getContext(`2d`);if(!p)return;let m=new Image;m.onload=()=>{p.drawImage(m,0,0),c(!1)},m.onerror=()=>{u(`Failed to render card image`),c(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(l)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[ShareModal] renderPreview failed:`,e),u(t),c(!1)}},[r,_]);(0,U.useEffect)(()=>(clearTimeout(f.current),f.current=setTimeout(v,300),()=>clearTimeout(f.current)),[v]);let y=`claude-recall-session-${e.id.slice(0,8)}.png`,b=(0,U.useCallback)(e=>{let t=d.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),x=(0,U.useCallback)(()=>new Promise(e=>{let t=d.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),S=(0,U.useCallback)(()=>{b(async e=>{let t=await Bt({fileName:y,blob:e,title:`Claude Recall — session`,text:`${h} via Claude Recall`,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[b,y,h]),C=(0,U.useCallback)(()=>{b(e=>{Ht(e,y),Z({message:`Saved to Downloads`,tone:`success`})})},[b,y]),w=(0,U.useCallback)(()=>{b(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[b]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Receipt`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:d,className:`w-full h-full`,style:{display:s||l?`none`:`block`}}),s&&!l&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),l&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:l})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-4 gap-2 mb-3`,children:Nl.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(e.key),className:`flex flex-col items-center gap-1 rounded border p-1.5 transition-colors ${r===e.key?`border-accent bg-accent/10`:`border-line hover:border-fg-muted`}`,title:e.name,children:[(0,W.jsx)(`span`,{className:`w-full h-8 rounded`,style:{background:e.swatch},"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`text-[11px] ${r===e.key?`text-accent font-semibold`:`text-fg-muted`}`,children:e.name})]},e.key))}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 mb-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:S,disabled:s,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:C,disabled:s,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:w,disabled:s,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:x,kind:`session`,title:h,description:`Built with Claude Recall — ${_.costDollars??``}`.trim(),caption:`${h} — built with Claude Recall`,disabled:s})]})})}function zl({size:e=16}){return(0,W.jsxs)(`svg`,{"aria-hidden":`true`,className:`${e===24?`h-6 w-6`:`h-4 w-4`} animate-spin`,viewBox:`0 0 24 24`,fill:`none`,children:[(0,W.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeOpacity:`0.25`,strokeWidth:`3`}),(0,W.jsx)(`path`,{d:`M12 2a10 10 0 0 1 10 10`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`})]})}var Bl=150;function Vl({label:e,hint:t,onClick:n}){return(0,W.jsxs)(`button`,{type:`button`,onClick:n,className:`block w-full text-left px-3 py-1.5 text-xs hover:bg-bg-hover transition-colors`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:e}),t&&(0,W.jsx)(`div`,{className:`text-fg-muted text-[10px] mt-0.5 font-mono truncate`,children:t})]})}function Hl({sessionId:e,currentAlias:t,aliasSource:n,autoTitle:r,autoTitleSource:i}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(``),l=Xc(),u=Zc(),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{a&&(c(t??``),requestAnimationFrame(()=>d.current?.select()))},[a,t]);let f=async()=>{let n=s.trim();try{n?n!==t&&await l.mutateAsync({sessionId:e,alias:n}):t&&await u.mutateAsync(e)}catch(e){console.error(`alias save failed`,e)}finally{o(!1)}};if(a)return(0,W.jsx)(`input`,{ref:d,type:`text`,value:s,onChange:e=>c(e.target.value),onBlur:f,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),f()):e.key===`Escape`&&(e.preventDefault(),o(!1))},placeholder:`give this session a name…`,className:`bg-bg-elevated border border-accent rounded px-2 py-0.5 text-sm text-fg normal-case tracking-normal min-w-[14rem] focus:outline-none`,maxLength:80});let p=n===`auto`,m=t||r||null,h=m===r&&i===`agent`&&!!r,g=m??`Click to name this session`,_=(()=>{if(m===r&&r){let e=i??`heuristic`;return t?`${e} title · overriding ${p?`auto-alias`:`manual alias`} "${t}" — click to set a custom alias`:`auto-generated title (${e}) — click to override with a custom alias`}return t?`click to rename this session`:`give this session a custom name — click to edit`})();return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(!0),className:`group flex items-center gap-1.5 normal-case tracking-normal text-left min-w-0 px-2 py-0.5 rounded border border-dashed hover:border-accent transition-colors `+(m?`text-fg font-semibold border-transparent hover:bg-bg-hover`:`text-fg-muted italic border-line hover:text-fg hover:bg-bg-hover`),title:_,children:[h&&(0,W.jsx)(`span`,{className:`text-accent text-xs shrink-0`,"aria-hidden":`true`,children:`✨`}),(0,W.jsx)(`span`,{className:`truncate`,children:g}),(0,W.jsx)(`span`,{className:`text-xs shrink-0 `+(m?`text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity`:`text-accent`),children:`✎`})]})}function Ul({sessionId:e,currentSource:t}){let n=G(),r=nl(),i=rl(),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null),c=(0,U.useRef)(null),[l,u]=(0,U.useState)(null),d=q({mutationFn:()=>X.generateAutoTitle(e),onSuccess:t=>{n.invalidateQueries({queryKey:[`session`,e]}),n.invalidateQueries({queryKey:[`sessions`]}),Z({message:t?.auto_title?`Generated title: "${t.auto_title}"`:`Title generated`,tone:`success`,duration:4e3})},onError:e=>{let t=e?.message??`unknown error`;Z({message:/403/.test(t)?`Agent titles disabled — click ✨ to enable`:`Title generation failed: ${t}`,tone:`error`,duration:6e3})}}),f=(0,U.useCallback)(()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect();u({top:t.bottom+4,right:Math.max(8,window.innerWidth-t.right)})},[]);if((0,U.useLayoutEffect)(()=>{if(!a){u(null);return}f()},[a,f]),(0,U.useEffect)(()=>{if(!a)return;let e=()=>f(),t=()=>f(),n=e=>{let t=e.target;c.current&&!c.current.contains(t)&&s.current&&!s.current.contains(t)&&o(!1)},r=e=>{e.key===`Escape`&&o(!1)};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,t,!0),window.addEventListener(`mousedown`,n),window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`mousedown`,n),window.removeEventListener(`keydown`,r)}},[a,f]),t===`agent`&&!d.isError)return null;let p=r.data?.agentEnabled??!1,m=d.isError&&/403/.test(d.error?.message??``),h=()=>{if(!p){o(e=>!e);return}d.mutate()},g=async()=>{try{await i.mutateAsync({agentEnabled:!0}),o(!1),d.mutate()}catch{}},_=d.isPending||i.isPending;return(0,W.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,W.jsx)(`button`,{ref:s,type:`button`,onClick:h,disabled:_||r.isLoading,className:`flex items-center gap-1 text-xs bg-accent/10 text-accent hover:bg-accent hover:text-bg border border-accent/40 rounded px-2 py-1 font-medium disabled:opacity-60 disabled:cursor-not-allowed normal-case tracking-normal`,title:p?`Generate a descriptive title with claude -p (uses your Claude Code subscription)`:`Enable agent-generated titles (requires confirmation) and generate one now`,children:_?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(zl,{size:16}),(0,W.jsx)(`span`,{className:`hidden md:inline`,children:`generating…`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`✨`}),(0,W.jsx)(`span`,{className:`hidden md:inline`,children:`Generate title`})]})}),a&&l&&(0,js.createPortal)((0,W.jsxs)(`div`,{ref:c,className:`fixed w-72 bg-bg-elevated border border-line rounded shadow-xl p-3 z-50 normal-case tracking-normal`,style:{top:l.top,right:l.right},role:`dialog`,"aria-label":`Enable agent-generated titles`,children:[(0,W.jsx)(`p`,{className:`text-xs text-fg mb-2 font-medium`,children:`Enable agent-generated titles?`}),(0,W.jsxs)(`p`,{className:`text-[11px] text-fg-dim leading-snug mb-3`,children:[`This shells out to your local `,(0,W.jsx)(`code`,{className:`text-fg`,children:`claude`}),` `,`CLI and uses your Claude Code subscription to summarise the first 20 user messages. Runs only when you click ✨. You can flip it off later via the`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`autoTitle.agentEnabled`}),` key in`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`$RECALL_HOME/config.json`}),`.`]}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(!1),disabled:_,className:`text-[11px] text-fg-dim hover:text-fg px-2 py-1 rounded disabled:opacity-60`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:g,disabled:_,className:`text-[11px] bg-accent text-bg hover:bg-accent/90 px-2 py-1 rounded font-medium disabled:opacity-60`,children:i.isPending?`Enabling…`:`Enable and generate`})]}),i.isError&&(0,W.jsxs)(`p`,{className:`mt-2 text-[10px] text-role-user`,role:`alert`,children:[`Failed to enable: `,i.error.message]})]}),document.body),d.isError&&!a&&(0,W.jsx)(`div`,{className:`absolute top-full right-0 mt-1 text-[10px] text-role-user bg-bg-elevated border border-role-user/40 rounded px-2 py-1 shadow-lg z-20 whitespace-nowrap`,role:`alert`,children:m?`Agent titles disabled — click ✨ to enable`:`title generation failed`})]})}function Wl({sessionId:e,sessionCwd:t}){let n=Qc(e),[r,i]=(0,U.useState)(!1),a=$c(r),o=tl(),s=(0,U.useRef)(null),c=(0,U.useRef)(null),[l,u]=(0,U.useState)(null),d=n.data?.linked??null,f=n.data?.suggested??[],p=new Set(f.map(e=>e.shell_pid)),[m,h]=(0,U.useState)(``),g=(0,U.useRef)(null),_=(0,U.useCallback)(()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect();u({top:t.bottom+4,right:Math.max(8,window.innerWidth-t.right)})},[]);(0,U.useLayoutEffect)(()=>{if(!r){u(null),h(``);return}_(),requestAnimationFrame(()=>g.current?.focus())},[r,_]),(0,U.useEffect)(()=>{if(!r)return;let e=()=>_(),t=()=>_(),n=e=>{let t=e.target;c.current&&!c.current.contains(t)&&s.current&&!s.current.contains(t)&&i(!1)},a=e=>{e.key===`Escape`&&i(!1)};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,t,!0),window.addEventListener(`mousedown`,n),window.addEventListener(`keydown`,a),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`mousedown`,n),window.removeEventListener(`keydown`,a)}},[r,_]);let v=async t=>{try{await o.mutateAsync(t?{sessionId:e,shell_pid:t.shell_pid}:{sessionId:e,clear:!0}),i(!1),Z({message:t?`Linked to terminal "${t.tab_name}"`:`Terminal link cleared`,tone:`success`,duration:3500})}catch(e){Z({message:`Relink failed: ${e?.message??`unknown error`}`,tone:`error`,duration:5e3})}},y=d?`🔗 ${d.tab_name}`:n.isLoading?`🔗 …`:f.length>0?`🔗 ${f.length} suggested`:`🔗 unlinked`,b=d?`Currently linked to terminal "${d.tab_name}" (pid ${d.shell_pid}). Click to fix or unlink.`:f.length>0?`${f.length} terminals were open in this cwd when the session started. Click to pick one.`:`No terminal linked to this session. Click to pick one.`,x=a.data?.terminals??[],S=(t??``).replace(/\/+$/,``),C=e=>{if(!S||!e)return!1;let t=e.replace(/\/+$/,``);return t===S?!0:t.startsWith(S+`/`)||S.startsWith(t+`/`)},w=x.filter(e=>C(e.cwd)),T=m.toLowerCase().split(/\s+/).filter(Boolean),E=e=>{if(T.length===0)return!0;let t=e.toLowerCase();return T.every(e=>t.includes(e))},D=[...w].filter(e=>E(e.tab_name)).sort((e,t)=>{let n=S&&e.cwd&&e.cwd.replace(/\/+$/,``)===S?1:0,r=S&&t.cwd&&t.cwd.replace(/\/+$/,``)===S?1:0;return n===r?Date.parse(t.last_seen_at)-Date.parse(e.last_seen_at):r-n});return(0,W.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,W.jsx)(`button`,{ref:s,type:`button`,onClick:()=>i(e=>!e),className:`flex items-center gap-1 text-[11px] border rounded px-2 py-0.5 normal-case tracking-normal transition-colors `+(d?`border-line/60 text-fg-dim hover:text-fg hover:border-accent/40`:`border-dashed border-line text-fg-muted hover:text-fg hover:border-accent/40`),title:b,children:(0,W.jsx)(`span`,{className:`truncate max-w-[10rem]`,children:y})}),r&&l&&(0,js.createPortal)((0,W.jsxs)(`div`,{ref:c,className:`fixed w-[30rem] max-w-[calc(100vw-2rem)] bg-bg-elevated border border-line rounded shadow-xl z-50 normal-case tracking-normal`,style:{top:l.top,right:l.right},role:`dialog`,"aria-label":`Pick the right terminal for this session`,children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line`,children:[(0,W.jsx)(`div`,{className:`text-[11px] font-semibold text-fg`,children:`Linked terminal`}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-dim leading-snug mt-0.5 mb-2`,children:[d?`Currently: ${d.tab_name} (pid ${d.shell_pid})`:`No terminal linked.`,` `,`Pick a terminal to copy its name as this session's title.`]}),(0,W.jsx)(`input`,{ref:g,type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`Search ${w.length} terminals in this project…`,className:`w-full text-[11px] bg-bg border border-line rounded px-2 py-1 focus:outline-none focus:border-accent normal-case tracking-normal`})]}),(0,W.jsxs)(`div`,{className:`max-h-72 overflow-y-auto`,children:[a.isLoading&&(0,W.jsx)(`div`,{className:`px-3 py-3 text-[11px] text-fg-dim italic`,children:`Loading terminals…`}),!a.isLoading&&D.length===0&&(0,W.jsx)(`div`,{className:`px-3 py-3 text-[11px] text-fg-dim italic`,children:x.length===0?(0,W.jsxs)(W.Fragment,{children:[`No terminals registered. Open a terminal and run `,(0,W.jsx)(`code`,{className:`text-fg`,children:`claude`}),`, or install the VS Code extension.`]}):w.length===0?(0,W.jsxs)(W.Fragment,{children:[`No terminals registered for this project. `,x.length,` terminal`,x.length===1?``:`s`,` `,x.length===1?`is`:`are`,` open elsewhere on your machine.`]}):(0,W.jsx)(W.Fragment,{children:`No terminals match your search.`})}),f.length>0&&!d&&(0,W.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] text-accent uppercase tracking-wider border-b border-accent/30 bg-accent/5`,children:`Suggested (open during session)`}),!d&&f.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>v({shell_pid:e.shell_pid,tab_name:e.tab_name,cwd:e.cwd,opened_at:e.opened_at,last_seen_at:e.last_seen_at}),disabled:o.isPending,className:`block w-full text-left px-3 py-1.5 text-[11px] hover:bg-bg-hover transition-colors disabled:opacity-60 bg-accent/5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,W.jsx)(`span`,{className:`truncate text-fg font-medium`,children:e.tab_name||`(unnamed)`}),(0,W.jsx)(`span`,{className:`text-[9px] text-accent shrink-0`,children:`time match`})]}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-muted font-mono truncate mt-0.5`,children:[`pid `,e.shell_pid,` · open since `,new Date(e.opened_at).toISOString().slice(5,16).replace(`T`,` `)]})]},`sug-${e.shell_pid}`)),f.length>0&&!d&&D.length>0&&(0,W.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] text-fg-dim uppercase tracking-wider border-y border-line bg-bg-hover/30`,children:`All registered terminals`}),D.filter(e=>!p.has(e.shell_pid)||d).map(e=>{let t=S&&e.cwd&&e.cwd.replace(/\/+$/,``)===S,n=d?.shell_pid===e.shell_pid;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>v(e),disabled:o.isPending,className:`block w-full text-left px-3 py-1.5 text-[11px] hover:bg-bg-hover transition-colors disabled:opacity-60 `+(n?`bg-accent/10`:``),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,W.jsx)(`span`,{className:`truncate text-fg font-medium`,children:e.tab_name||`(unnamed)`}),t&&(0,W.jsx)(`span`,{className:`text-[9px] text-accent shrink-0`,children:`same cwd`}),n&&(0,W.jsx)(`span`,{className:`text-[9px] text-accent shrink-0`,children:`✓ linked`})]}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-muted font-mono truncate mt-0.5`,children:[`pid `,e.shell_pid,` · `,e.cwd??`(no cwd)`]})]},e.shell_pid)})]}),(0,W.jsxs)(`div`,{className:`border-t border-line px-3 py-2 flex items-center justify-between gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>v(null),disabled:o.isPending||!d,className:`text-[10px] text-fg-dim hover:text-role-user disabled:opacity-40 disabled:hover:text-fg-dim`,children:`Unlink`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(!1),disabled:o.isPending,className:`text-[10px] text-fg-dim hover:text-fg`,children:`Close`})]})]}),document.body)]})}function Gl(e,t){if(!e.content_text||t.length===0)return!1;let n=e.content_text.toLowerCase();return t.every(e=>n.includes(e))}function Kl(e){return e.toLowerCase().split(/\s+/).filter(e=>e.length>1)}function ql(e){return e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function Jl(e){if(!e)return!1;let t=e.slice(0,64);return t.startsWith(`**Tool result**`)||t.startsWith(`_(tool result was empty`)}var Yl=`recall:collapseToolCalls`,Xl=`recall:collapseToolResults`;function Zl(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function Ql(e,t){try{localStorage.setItem(e,t?`1`:`0`)}catch{}}function $l({sessionId:e,targetMessageUuid:t,onTargetChange:n,searchQuery:r,isCompareLeft:i=!1,isCompareRight:a=!1,onExitCompare:o}){let[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(!0),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(!1),[,C]=Cn(),[w,T]=(0,U.useState)(()=>Zl(Yl)),[E,D]=(0,U.useState)(()=>Zl(Xl));(0,U.useEffect)(()=>{Ql(Yl,w)},[w]),(0,U.useEffect)(()=>{Ql(Xl,E)},[E]);let O=Dn(e),k=Nn(),A=(0,U.useRef)(null),j=(0,U.useRef)(new Map),M=(0,U.useRef)(null),{isPinned:ee,togglePin:N}=Lr();(0,U.useEffect)(()=>{if(!p)return;let e=e=>{M.current&&!M.current.contains(e.target)&&m(!1)},t=e=>{e.key===`Escape`&&m(!1)};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[p]);let te=K({queryKey:[`session`,e],queryFn:()=>X.session(e),enabled:!!e,refetchInterval:5e3,refetchIntervalInBackground:!1,staleTime:2e3});(0,U.useEffect)(()=>{u(!1),A.current&&(A.current.scrollTop=0),j.current.clear()},[e]);let P=el(),F=(0,U.useRef)(new Set);(0,U.useEffect)(()=>{if(!e)return;let t=te.data;t&&(F.current.has(e)||t.session.alias||(F.current.add(e),P.mutateAsync(e).then(e=>{e.applied&&e.linked_tab_name&&Z({message:`Auto-linked to terminal "${e.linked_tab_name}"`,tone:`success`,duration:4e3})}).catch(()=>{})))},[e,te.data]);let I=(0,U.useMemo)(()=>te.data?te.data.messages.filter(e=>{if(!s&&e.is_sidechain===1)return!1;let t=!!(e.content_text&&e.content_text.trim()),n=!!(e.tool_names&&e.tool_names.length>0);return!(!t&&!n)}):[],[te.data,s]),L=(0,U.useMemo)(()=>Kl(r),[r]),R=(0,U.useMemo)(()=>{if(L.length===0)return[];let e=[];for(let t of I)Gl(t,L)&&e.push(t.uuid);return e},[I,L]),z=(0,U.useMemo)(()=>l?I:I.slice(0,Bl),[I,l]),B=Xs({count:z.length,getScrollElement:()=>A.current,estimateSize:()=>220,overscan:6,getItemKey:e=>z[e]?.uuid??e});(0,U.useEffect)(()=>{t&&I.findIndex(e=>e.uuid===t)>=Bl&&u(!0)},[t,I]),(0,U.useEffect)(()=>{if(!t)return;let e=z.findIndex(e=>e.uuid===t);if(e<0)return;let n=requestAnimationFrame(()=>{B.scrollToIndex(e,{align:`center`,behavior:`smooth`}),f(e=>e+1)});return()=>cancelAnimationFrame(n)},[t,z,B,l]),(0,U.useEffect)(()=>{let e=A.current;if(!e)return;let t=()=>{v(e.scrollHeight-(e.scrollTop+e.clientHeight)<120)};return t(),e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[e,z.length]);let V=(0,U.useCallback)(()=>{z.length!==0&&(!l&&I.length>z.length&&u(!0),B.scrollToIndex(z.length-1,{align:`end`,behavior:`smooth`}))},[z.length,B,l,I.length]),ne=(0,U.useCallback)(()=>{A.current&&A.current.scrollTo({top:0,behavior:`smooth`})},[]);(0,U.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.key===`End`?(e.preventDefault(),V()):e.key===`Home`&&(e.preventDefault(),ne()))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,V,ne]);let re=t&&R.includes(t)?R.indexOf(t):-1,ie=(0,U.useCallback)(e=>{R.length!==0&&n(R[((re===-1?e===1?-1:0:re)+e+R.length)%R.length])},[re,R,n]);if((0,U.useEffect)(()=>{if(R.length===0)return;let e=e=>{let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.key===`n`?(e.preventDefault(),ie(e.shiftKey?-1:1)):e.key===`p`&&(e.preventDefault(),ie(-1)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ie,R.length]),!e)return(0,W.jsx)(`section`,{className:`pane flex-1 border-r-0`,children:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-center px-8`,children:(0,W.jsxs)(`div`,{className:`max-w-sm`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted text-sm mb-2`,children:`No session selected`}),(0,W.jsx)(`div`,{className:`text-fg-muted text-xs`,children:`Pick a project on the left, then a session from the middle. Or type in the search box above — your data never leaves this machine.`})]})})});if(te.isLoading)return(0,W.jsx)(`section`,{className:`pane flex-1 border-r-0`,children:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-fg-muted text-sm`,children:`Loading session…`})});if(te.isError)return(0,W.jsx)(`section`,{className:`pane flex-1 border-r-0`,children:(0,W.jsxs)(`div`,{className:`flex-1 flex items-center justify-center text-role-user text-sm`,children:[`Failed: `,te.error.message]})});let{session:H,messages:ae}=te.data,oe=ee(H.id),se=()=>{let e=[];e.push(`# Claude Code session · ${H.project_name}`),e.push(``),e.push(`- session id: \`${H.id}\``),H.started_at&&e.push(`- started: ${H.started_at}`),H.git_branch&&e.push(`- branch: \`${H.git_branch}\``),e.push(`- messages: ${ae.length}`),e.push(``),e.push(`---`),e.push(``);for(let t of I){let n=t.role??t.type,r=t.timestamp?` \`${t.timestamp}\``:``;e.push(`## ${n}${r}`),t.tool_names&&e.push(`\n_tools: ${t.tool_names}_\n`),t.content_text&&e.push(t.content_text),e.push(``)}navigator.clipboard.writeText(e.join(`
94
+ `)[0].slice(0,120)}),!o&&!d&&(0,W.jsx)(`span`,{className:`text-fg-muted normal-case tracking-normal italic`,children:`none yet — click to add`})]}),w&&o&&(0,W.jsxs)(`span`,{className:`text-fg-muted normal-case tracking-normal font-mono`,children:[`updated `,w.toLocaleString()]})]}),d&&(0,W.jsx)(`div`,{className:`px-5 pb-3`,children:p?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`textarea`,{ref:y,value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`?(e.preventDefault(),b()):e.key===`Escape`&&(e.preventDefault(),x())},placeholder:`Your markdown notes for this session…\\n\\nCmd/Ctrl+Enter saves. Esc cancels.`,rows:8,className:`w-full bg-bg-elevated border border-line rounded p-3 text-sm text-fg font-mono leading-relaxed focus:outline-none focus:border-accent placeholder:text-fg-muted resize-y`,spellCheck:!0}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between mt-2 text-xs`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[h.length.toLocaleString(),` chars`,C&&(0,W.jsx)(`span`,{className:`text-accent ml-2`,children:`· unsaved`}),(0,W.jsxs)(`span`,{className:`ml-3 text-fg-muted`,children:[`mirrored to `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[`~/.recall/notes/`,e.slice(0,8),`.md`]})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:x,className:`px-3 py-1 text-fg-muted hover:text-fg`,children:`cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:b,disabled:!C||n.isPending,className:`px-3 py-1 rounded border border-accent bg-accent/10 text-accent font-medium hover:bg-accent hover:text-bg disabled:opacity-50 disabled:cursor-not-allowed`,children:n.isPending?`saving…`:`save`})]})]})]}):(0,W.jsxs)(W.Fragment,{children:[o?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`bg-bg-elevated border border-line rounded p-3 max-h-72 overflow-y-auto`,children:(0,W.jsx)(as,{text:a})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-3 mt-2`,children:[(0,W.jsx)(al,{hasSynopsis:l,pending:r.isPending,onClick:S}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(!0),className:`text-xs text-accent hover:underline`,children:`✎ edit`})]})]}):(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(!0),className:`w-full border border-dashed border-line rounded p-4 text-sm text-fg-muted hover:border-accent hover:text-fg-dim transition-colors`,children:`+ add a note for this session`}),(0,W.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,W.jsx)(al,{hasSynopsis:l,pending:r.isPending,onClick:S})})]}),l&&(0,W.jsxs)(`div`,{className:`mt-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 text-xs`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`flex items-center gap-1.5 text-fg-muted hover:text-fg transition-colors`,title:_?`expand auto-synopsis`:`collapse auto-synopsis`,"aria-expanded":!_,children:[(0,W.jsx)(`span`,{className:Q(`transition-transform`,!_&&`rotate-90`),"aria-hidden":`true`,children:`▸`}),(0,W.jsx)(`span`,{className:`text-accent`,"aria-hidden":`true`,children:`✨`}),(0,W.jsx)(`span`,{className:`font-medium uppercase tracking-wider`,children:`Auto-synopsis`}),T&&(0,W.jsxs)(`span`,{className:`text-fg-muted normal-case tracking-normal font-mono`,children:[`· generated `,T.toLocaleString()]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`text-xs text-fg-muted hover:text-fg`,title:_?`expand auto-synopsis`:`collapse auto-synopsis`,children:_?`▸ expand`:`▾ collapse`}),(0,W.jsx)(`button`,{type:`button`,onClick:S,disabled:r.isPending,className:`text-xs text-accent hover:underline disabled:opacity-50`,title:`run claude -p again over the latest transcript`,children:r.isPending?`regenerating…`:`↻ regenerate`})]})]}),!_&&(0,W.jsx)(`div`,{className:`bg-bg-elevated border border-accent/40 rounded p-3 border-l-2 max-h-96 overflow-y-auto`,children:(0,W.jsx)(as,{text:s??``})})]})]})})]})}function al({hasSynopsis:e,pending:t,onClick:n}){return e?null:(0,W.jsx)(`button`,{type:`button`,onClick:n,disabled:t,className:`text-xs text-accent hover:underline disabled:opacity-50`,title:`reads this session's transcript and writes a markdown synopsis below your note`,children:t?`generating…`:`✨ generate synopsis`})}function ol({sessionId:e,tags:t}){let[n,r]=(0,U.useState)(!1),i=vn(),[,a]=Cn();return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 normal-case tracking-normal`,children:[t.map(t=>(0,W.jsxs)(`span`,{className:`group inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-role-tool/15 text-role-tool text-xs font-medium border border-role-tool/30`,children:[(0,W.jsxs)(`span`,{children:[`#`,t]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i.mutate({sessionId:e,tag:t}),className:`opacity-60 hover:opacity-100 transition-opacity`,title:`remove #${t}`,children:`×`})]},t)),n?(0,W.jsx)(Kr,{sessionId:e,existingTags:t,onDone:()=>r(!1),variant:`bar`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(!0),className:Q(`inline-flex items-center gap-1 px-2 py-0.5 rounded-full border border-dashed text-xs transition-colors`,t.length===0?`border-line text-fg-muted hover:text-fg hover:border-accent`:`border-line/50 text-fg-muted opacity-60 hover:opacity-100 hover:text-fg`),title:`add a tag — typing #tagname in the search box also filters by tag`,children:`+ tag`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>a({view:`help`,helpSection:`taxonomy`}),className:`inline-flex items-center justify-center w-4 h-4 rounded-full text-[10px] text-fg-muted/70 hover:text-accent hover:bg-accent/10 transition-colors`,title:`Tag vs Collection vs Alias vs Note — what's the difference?`,"aria-label":`Tag vs other organizers — what's the difference?`,children:`?`})]})}function sl({sessionId:e}){let t=bt(),n=qr(),r=G(),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1);Jr(!!n.error,()=>n.reset());let c=()=>{let r=t.data;if(!r||!r.enabled){a(!0);return}if(r.backend===`api`&&!r.hasApiKey){a(!0);return}if(r.backend===`mcp`){s(!0);return}n.start({sessionIds:[e]})},l=()=>{r.invalidateQueries({queryKey:[`sessions`]}),r.invalidateQueries({queryKey:[`session`,e]}),r.invalidateQueries({queryKey:[`tags`]})},u=async e=>{let t=await n.apply(e);if(t&&t.applied>0){l();let n=e.reduce((e,t)=>e+t.tags.length,0);Z({message:`Applied ${t.applied} tag${t.applied===1?``:`s`} to this session.`,tone:`success`,duration:1e4,action:{label:`Undo`,onClick:()=>{d(e,n)}}})}else t&&Z({message:`Nothing to apply — all selected tags were already present.`,tone:`info`});return t},d=async(e,t)=>{let n=0;for(let t of e)for(let e of t.tags)try{await X.removeSessionTag(t.sessionId,e),n+=1}catch(n){console.error(`undo: remove failed`,t.sessionId,e,n)}l(),Z({message:`Undone — removed ${n} of ${t} tag${t===1?``:`s`}.`,tone:`info`})},f=async()=>{if(!n.snapshot)return;let e=n.snapshot.results.filter(e=>e.error).map(e=>e.sessionId);e.length!==0&&(n.reset(),await n.start({sessionIds:e}))};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center rounded border border-accent/40 bg-accent/10 overflow-hidden`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:c,disabled:!!n.id,className:`text-xs text-accent hover:bg-accent hover:text-bg px-2 py-1 font-medium border-r border-accent/40 disabled:opacity-50 disabled:cursor-wait`,title:t.data?.enabled?`auto-tag this session with an LLM`:`configure auto-tagging`,children:n.id?`🏷 scanning…`:`🏷 auto-tag`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(!0),className:`text-xs text-accent hover:bg-accent hover:text-bg px-1.5 py-1`,title:`auto-tag settings (enable autopilot, install MCP, change model, paste API key)`,"aria-label":`auto-tag settings`,children:`⚙`})]}),(0,W.jsx)(Xr,{open:i,onClose:()=>a(!1)}),(0,W.jsx)($r,{open:o,sessionId:e,onClose:()=>{s(!1),Z({message:`MCP scan triggered. New tags will appear on this session as your Claude Code agent writes them.`,tone:`info`,duration:8e3})},onOpenSettings:()=>{s(!1),a(!0)}}),n.error&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/40 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`bg-bg border border-role-user/60 rounded-lg w-[440px] shadow-xl p-4 text-xs`,children:[(0,W.jsx)(`div`,{className:`text-role-user font-semibold mb-2`,children:`Scan failed`}),(0,W.jsx)(`div`,{className:`text-fg-muted mb-3 break-words`,children:n.error}),(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>n.reset(),className:`text-fg-muted hover:text-fg text-xs px-3 py-1`,children:`Close`})})]})}),(0,W.jsx)(Zr,{open:!!n.id&&!n.error,snapshot:n.snapshot,onApply:u,onCancel:()=>void n.cancel(),onClose:()=>n.reset(),onRetryFailed:()=>void f()})]})}function cl({sessionId:e}){let t=K({queryKey:[`sessionStats`,e],queryFn:()=>X.getSessionStats(e),staleTime:3e4}).data;return!t||t.totalTokens===0?null:(0,W.jsxs)(`a`,{href:`#/stats`,className:`normal-case tracking-normal shrink-0 inline-flex items-center gap-1.5 text-[11px] font-medium text-fg-dim hover:text-accent border border-line hover:border-accent/60 rounded px-2 py-0.5 transition-colors`,title:`session cost — derived from token counts (pricing may change)\n\ninput: ${t.inputTokens.toLocaleString()}\noutput: ${t.outputTokens.toLocaleString()}\ncache write: ${t.cacheCreateTokens.toLocaleString()}\ncache read: ${t.cacheReadTokens.toLocaleString()}\ntotal: ${t.totalTokens.toLocaleString()}\n\nmodel: ${t.primaryModelLabel}${t.primaryModel?` (${t.primaryModel})`:``}`+(t.byModel.length>1?`\n\n${t.byModel.length} models used — click to view dashboard`:``),children:[(0,W.jsx)(`span`,{className:`text-accent font-semibold`,children:t.display.dollars}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`·`}),(0,W.jsxs)(`span`,{children:[t.display.tokens,` tok`]}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`·`}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:t.primaryModelLabel})]})}function ll({sessionId:e}){let[t,n]=(0,U.useState)(!1),r=K({queryKey:[`sessionCommits`,e],queryFn:()=>X.getSessionCommits(e),staleTime:3e4}).data?.commits??[];if(r.length===0)return null;let i=`${r.length} commit${r.length===1?``:`s`}`;return(0,W.jsxs)(`div`,{className:`px-5 py-2 border-b border-line bg-bg/60 normal-case tracking-normal text-xs`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex items-center gap-1.5 text-fg-muted hover:text-fg`,title:`commits authored during this session`,children:[(0,W.jsx)(`span`,{className:`text-[10px]`,children:t?`▾`:`▸`}),(0,W.jsx)(`span`,{className:`font-medium text-fg-dim`,children:`⎇`}),(0,W.jsxs)(`span`,{children:[i,` authored during this session`]})]}),t&&(0,W.jsx)(`ul`,{className:`mt-2 space-y-1.5 pl-5`,children:r.map(e=>(0,W.jsxs)(`li`,{className:`flex items-start gap-2 text-[11px]`,children:[(0,W.jsx)(`code`,{className:`font-mono text-accent shrink-0`,title:e.commit_sha,children:e.commit_sha.slice(0,8)}),(0,W.jsx)(`span`,{className:`text-fg truncate min-w-0 flex-1`,children:e.subject??(0,W.jsx)(`span`,{className:`italic text-fg-muted`,children:`(no subject)`})}),e.committed_at&&(0,W.jsx)(`time`,{className:`text-fg-muted shrink-0 font-mono`,children:e.committed_at.replace(`T`,` `).slice(0,19)})]},e.commit_sha))})]})}function ul(e,t){e.invalidateQueries({queryKey:[`threads`]}),t&&e.invalidateQueries({queryKey:[`thread`,t]}),e.invalidateQueries({queryKey:[`sessionThreads`]})}function dl(e=!1){return K({queryKey:[`threads`,{archived:e}],queryFn:()=>X.listThreads(e),staleTime:1e4})}function fl(e){return K({queryKey:[`thread`,e],queryFn:()=>X.getThread(e),enabled:!!e,staleTime:1e4})}function pl(e){return K({queryKey:[`sessionThreads`,e],queryFn:()=>X.threadsForSession(e),enabled:!!e,staleTime:3e4})}function ml(){let e=G();return q({mutationFn:e=>X.createThread(e),onSuccess:t=>ul(e,t.thread.id)})}function hl(){let e=G();return q({mutationFn:({id:e,patch:t})=>X.patchThread(e,t),onSuccess:t=>ul(e,t.thread.id)})}function gl(){return K({queryKey:[`thread-folders`],queryFn:()=>X.listThreadFolders(),staleTime:3e4})}function _l(){let e=G();return q({mutationFn:e=>X.createThreadFolder(e),onSuccess:()=>e.invalidateQueries({queryKey:[`thread-folders`]})})}function vl(){let e=G();return q({mutationFn:e=>X.deleteThreadFolder(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`thread-folders`]}),e.invalidateQueries({queryKey:[`threads`]})}})}function yl(){let e=G();return q({mutationFn:e=>X.reorderThreadFolders(e),onSuccess:()=>e.invalidateQueries({queryKey:[`thread-folders`]})})}function bl(){let e=G();return q({mutationFn:({threadId:e,sessionId:t,parentSessionId:n,role:r})=>X.addSessionToThread(e,{sessionId:t,parentSessionId:n,role:r}),onSuccess:(t,n)=>ul(e,n.threadId)})}function xl(){let e=G();return q({mutationFn:({threadId:e,sessionId:t})=>X.removeSessionFromThread(e,t),onSuccess:(t,n)=>ul(e,n.threadId)})}function Sl(){let e=G();return q({mutationFn:({threadId:e,sessionId:t,parentSessionId:n})=>X.setThreadSessionParent(e,t,n),onSuccess:(t,n)=>ul(e,n.threadId)})}function Cl(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>e.name.toLowerCase().includes(n)):[...e]}function wl({sessionId:e}){let[,t]=Cn(),n=pl(e),r=dl(),i=ml(),a=bl(),o=xl(),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(``),d=n.data?.threads??[],f=new Set(d.map(e=>e.id)),p=(r.data?.threads??[]).filter(e=>!f.has(e.id));return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start gap-1.5 px-5 py-2 border-b border-line bg-bg/60 normal-case tracking-normal`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mr-1 pt-0.5`,title:`Threads group a session with related sessions (for example, a planning session plus the execution sessions it spawned).`,children:`🧵 Threads`}),d.map(n=>(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-xs border border-accent/30`,title:`${n.session_count} session${n.session_count===1?``:`s`} in this thread`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({view:`threads`,thread:n.id}),className:`hover:underline`,title:`open the "${n.name}" thread graph`,children:n.name}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>o.mutate({threadId:n.id,sessionId:e}),className:`text-fg-muted hover:text-role-user text-[11px]`,title:`unlink this session from the thread (thread keeps existing)`,children:`✕`})]},n.id)),s?(0,W.jsx)(Tl,{sessionId:e,available:p,activeCount:d.length,newName:l,setNewName:u,creating:i.isPending,adding:a.isPending,onPickExisting:t=>{a.mutate({threadId:t,sessionId:e},{onSuccess:()=>c(!1)})},onCreate:()=>{let t=l.trim();t&&i.mutate({name:t,originSessionId:e},{onSuccess:()=>{u(``),c(!1)}})},onCancel:()=>{c(!1),u(``)}}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(!0),className:`text-xs text-accent hover:underline`,title:`Link this session into an existing thread, or create a new one with this session as the origin (reverse path is + Add session from the thread detail page).`,children:`+ Add to thread`})]})}function Tl({available:e,activeCount:t,newName:n,setNewName:r,creating:i,adding:a,onPickExisting:o,onCreate:s,onCancel:c}){let[l,u]=(0,U.useState)(``),d=(0,U.useMemo)(()=>Cl(e,l),[e,l]),f=l.trim().length>0;return(0,W.jsxs)(`div`,{className:`w-full mt-1 rounded border border-line bg-bg-elevated p-2 space-y-2 border-l-2 border-l-accent/60`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`text-[11px] uppercase tracking-wider font-medium text-fg-muted`,children:`Link to a thread`}),(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`text-[11px] text-fg-muted hover:text-fg`,title:`Close the picker without linking this session to any thread.`,children:`cancel`})]}),e.length>0&&(0,W.jsx)(`input`,{autoFocus:!0,type:`text`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d.length===1?(e.preventDefault(),o(d[0].id)):e.key===`Escape`&&(e.preventDefault(),l?u(``):c())},placeholder:`search threads by name`,"aria-label":`Search threads by name`,className:`w-full text-xs bg-bg border border-line rounded px-2 py-1`}),e.length>0?d.length>0?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-[11px] text-fg-muted mb-1`,children:f?`${d.length} match${d.length===1?``:`es`}: click to link this session.`:`Click an existing thread to link this session into it:`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:d.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e.id),disabled:a,className:`inline-flex items-center gap-1 px-2 py-1 rounded-full border border-line hover:border-accent hover:bg-accent/10 text-xs disabled:opacity-50`,title:`Link this session into "${e.name}" (${e.session_count} session${e.session_count===1?``:`s`}, ${e.closed_at?`closed`:`open`})`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:e.session_count})]},e.id))})]}):(0,W.jsxs)(`div`,{className:`text-[11px] text-fg-muted italic`,children:[`No threads match "`,l.trim(),`". Create a new one below.`]}):(0,W.jsx)(`div`,{className:`text-[11px] text-fg-muted italic`,children:t>0?`No other threads available. Create a new one below.`:`No threads exist yet. Create the first one below.`}),(0,W.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),s()},className:`flex items-center gap-1.5 pt-1 border-t border-line`,children:[(0,W.jsx)(`span`,{className:`text-[11px] text-fg-muted`,title:`Creating a new thread with this session as the first member (origin)`,children:`Or create new:`}),(0,W.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),placeholder:`thread name (this session becomes the origin)`,className:`flex-1 text-xs bg-bg border border-line rounded px-2 py-1`}),(0,W.jsx)(`button`,{type:`submit`,disabled:!n.trim()||i,className:`text-xs px-2 py-1 rounded bg-accent text-bg font-medium disabled:opacity-50`,title:`Create a new thread with this session set as the origin`,children:`Create`})]})]})}function El({content:e,children:t,side:n=`bottom`,delayMs:r=300,maxWidth:i=300}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(null),l=(0,U.useRef)(null),u=(0,U.useRef)(null),d=(0,U.useRef)(null);(0,U.useEffect)(()=>()=>{d.current!==null&&window.clearTimeout(d.current)},[]);let f=()=>{d.current!==null&&window.clearTimeout(d.current),d.current=window.setTimeout(()=>o(!0),r)},p=()=>{d.current!==null&&window.clearTimeout(d.current),d.current=null,o(!1),c(null)};return(0,U.useLayoutEffect)(()=>{if(!a)return;let e=l.current,t=u.current;if(!e||!t)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),o=n,s=window.innerHeight-r.bottom,d=r.top;o===`bottom`&&s<i.height+8&&d>s?o=`top`:o===`top`&&d<i.height+8&&s>d&&(o=`bottom`);let f=o===`bottom`?r.bottom+8:r.top-i.height-8,p=r.left+r.width/2,m=p-i.width/2;m=Math.max(8,Math.min(m,window.innerWidth-i.width-8));let h=p-m;c({top:f,left:m,arrowLeft:h,side:o})},[a,n,e]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{ref:l,className:`relative inline-flex`,onMouseEnter:f,onMouseLeave:p,onFocus:f,onBlur:p,children:t}),a&&(0,js.createPortal)((0,W.jsxs)(`div`,{ref:u,role:`tooltip`,style:{position:`fixed`,top:s?.top??-9999,left:s?.left??-9999,width:i,visibility:s?`visible`:`hidden`,zIndex:9999},className:`pointer-events-none px-3 py-2 rounded-md bg-bg-elevated border border-accent/50 shadow-[0_8px_24px_-8px_rgba(138,120,255,0.45),0_2px_8px_rgba(0,0,0,0.4)] text-[11px] leading-snug text-fg-muted normal-case tracking-normal whitespace-normal text-left`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`absolute left-0 top-1.5 bottom-1.5 w-[2px] rounded-full bg-accent/70`}),(0,W.jsx)(`div`,{className:`pl-1.5`,children:e}),s&&(0,W.jsx)(`span`,{"aria-hidden":`true`,style:{position:`absolute`,left:s.arrowLeft-5,...s.side===`bottom`?{top:-5}:{bottom:-5}},className:`w-2.5 h-2.5 rotate-45 bg-bg-elevated border border-accent/50 `+(s.side===`bottom`?`border-r-0 border-b-0`:`border-l-0 border-t-0`)})]}),document.body)]})}function Dl(e,t){return e.length<=t?{visible:e.slice(),overflow:0}:{visible:e.slice(0,t),overflow:e.length-t}}var Ol=12;function kl({sessionId:e}){let[,t]=Cn(),n=G(),[r,i]=(0,U.useState)(!1),a=K({queryKey:[`session-links`,e,`wiki_link`],queryFn:()=>X.sessionLinks(e),enabled:!!e}),o=q({mutationFn:e=>X.removeLink(e),onSuccess:()=>{n.invalidateQueries({queryKey:[`session-links`,e,`wiki_link`]})},onError:e=>{Z({message:`Unlink failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}),s=a.data?.links??[];if(a.isLoading||s.length===0)return null;let{visible:c,overflow:l}=r?{visible:s,overflow:0}:Dl(s,Ol);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start gap-1.5 px-5 py-2 border-b border-line bg-bg/60 normal-case tracking-normal`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mr-1 pt-0.5`,title:`Wiki-style links between sessions. Right-click any session in the list to add one.`,children:`🔗 Linked`}),(0,W.jsxs)(`span`,{className:`text-[10px] text-fg-muted pt-0.5`,children:[s.length,` `,s.length===1?`session`:`sessions`]}),c.map(e=>(0,W.jsx)(Al,{link:e,onNavigate:()=>t({session:e.otherSessionId,msg:null}),onUnlink:()=>o.mutate(e.linkId)},e.linkId)),l>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(!0),className:`inline-flex items-center px-2 py-0.5 rounded-full border border-dashed border-line/60 text-[10px] text-fg-muted hover:text-fg hover:border-accent`,title:`Show ${l} more linked session${l===1?``:`s`}`,children:[`+`,l,` more`]})]})}function Al({link:e,onNavigate:t,onUnlink:n}){let r=e.direction===`outbound`?`→`:`←`;return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-xs border border-accent/30`,title:e.direction===`outbound`?`${e.title} (this session links to it)`:`${e.title} (this session is linked from it)`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`text-[10px] text-accent/70`,children:r}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`hover:underline truncate max-w-[18rem]`,title:`open ${e.title}`,children:e.title}),e.project&&(0,W.jsx)(`span`,{className:`text-[10px] text-fg-muted/80 italic truncate max-w-[8rem]`,children:e.project}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-fg-muted hover:text-role-user text-[10px]`,title:`unlink from "${e.title}"`,"aria-label":`unlink from ${e.title}`,children:`✕`})]})}function jl({sessionId:e}){let[t,n]=(0,U.useState)(!1),r=K({queryKey:[`neighborhood`,e],queryFn:()=>X.neighborhood(e,{budget:4e3,scoring:`hybrid`}),enabled:t,staleTime:60*1e3});function i(){r.data?.bundle&&(navigator.clipboard?.writeText(r.data.bundle),Z({message:`Neighborhood bundle copied — paste into Claude`,tone:`info`}))}return(0,W.jsxs)(`section`,{className:`border-b border-line`,children:[(0,W.jsxs)(`header`,{className:`flex items-center gap-3 px-5 py-3 cursor-pointer hover:bg-bg-hover/40`,onClick:()=>n(e=>!e),children:[(0,W.jsx)(`span`,{className:`text-fg-muted text-[10px] uppercase tracking-wider w-3`,children:t?`▾`:`▸`}),(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`Neighborhood`}),(0,W.jsx)(`span`,{className:`text-fg-muted text-xs`,children:`parents · children · citations · similar (bundle for piping into Claude)`}),r.data&&(0,W.jsxs)(`span`,{className:`ml-auto text-fg-muted text-xs font-mono tabular-nums`,children:[r.data.budgetUsed,` / `,r.data.budgetUsed+r.data.budgetRemaining,` tokens`]})]}),t&&(0,W.jsxs)(`div`,{className:`px-5 pb-4 space-y-3`,children:[r.isLoading&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-xs flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`h-3 w-3 rounded-full border-2 border-accent border-t-transparent animate-spin`}),`Assembling neighborhood…`]}),r.isError&&(0,W.jsxs)(`div`,{className:`p-3 rounded border border-role-user/40 bg-role-user/10 text-role-user text-xs`,children:[`Failed to load neighborhood:`,` `,r.error instanceof Error?r.error.message:`unknown error`]}),r.data&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:i,className:`px-2.5 py-1 rounded border border-line hover:bg-bg-hover`,title:`Copy the markdown bundle. Paste into a fresh Claude chat to seed it with the related context.`,children:`Copy bundle`}),(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`Or in your terminal: `,(0,W.jsxs)(`code`,{className:`text-fg`,children:[`recall neighborhood `,e.slice(0,8),` | claude`]})]})]}),r.data.truncated.length>0&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px]`,children:[r.data.truncated.length,` ref(s) didn't fit the budget. Increase the budget on the CLI for the full bundle.`]}),(0,W.jsx)(`pre`,{className:`bg-bg-elevated border border-line rounded p-3 text-xs leading-relaxed text-fg whitespace-pre-wrap break-words max-h-96 overflow-y-auto`,children:r.data.bundle||"(empty bundle — this session has no inferred neighborhood yet. Run `recall infer-l1` or `recall infer-citations` for this project.)"})]})]})]})}function Ml({sessionId:e}){let t=K({queryKey:[`verification-detail`,e],queryFn:()=>X.getVerificationDetail(e),staleTime:6e4});if(!t.data||t.data.status===`neutral`)return null;let{status:n,evidence:r}=t.data,i=[[`File writes`,r.fileWrites],[`Test runs`,r.testRuns],[`Git commits`,r.commits],[`Build success`,r.buildSuccess]];return(0,W.jsxs)(`div`,{className:`mt-3 p-3 rounded-lg bg-surface-2 text-xs`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,W.jsx)(`span`,{className:`font-medium ${n===`verified`?`text-green-500`:`text-yellow-500`}`,children:n===`verified`?`Verified`:`Unverified`}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`completion evidence`})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-1`,children:i.map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:t?`text-green-500`:`text-fg-muted/40`,children:t?`✓`:`✗`}),(0,W.jsx)(`span`,{className:t?`text-fg`:`text-fg-muted`,children:e})]},e))})]})}var Nl=[{key:`A`,name:`Minimal`,swatch:`#1a1b1e`},{key:`B`,name:`Terminal`,swatch:`#0d0d0f`},{key:`C`,name:`Gradient`,swatch:`linear-gradient(135deg,#b1370f,#fbbf24)`},{key:`D`,name:`Dashboard`,swatch:`#f6f7f9`}],Pl=[/^~\//,/^\/Users\//,/^\/home\//,/^[A-Za-z]:\\/];function Fl(e,t=80){if(!e)return null;let n=e.replace(/\x1b\[[0-9;]*[A-Za-z]/g,``).trim();if(!n||Pl.some(e=>e.test(n)))return null;let r=n.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,``).replace(/\s+/g,` `).trim();return r?r.length<=t?r:r.slice(0,t-1).trimEnd()+`…`:null}function Il(e){for(let t of[e.alias,e.auto_title,e.first_user_message]){let e=Fl(t);if(e)return e}return e.id.slice(0,8)}function Ll(e,t){if(!e||!t)return null;let n=new Date(t).getTime()-new Date(e).getTime();if(!Number.isFinite(n)||n<=0)return null;let r=Math.round(n/6e4);if(r<1)return`< 1 min`;if(r<60)return`${r} min`;let i=Math.floor(r/60),a=r%60;return a===0?`${i}h`:`${i}h ${a}m`}function Rl({session:e,onClose:t}){let n=(0,U.useMemo)(()=>Fl(e.first_user_message,120)??``,[e.first_user_message]),[r,i]=(0,U.useState)(`A`),[a,o]=(0,U.useState)(n),[s,c]=(0,U.useState)(!0),[l,u]=(0,U.useState)(null),d=(0,U.useRef)(null),f=(0,U.useRef)(),p=K({queryKey:[`share-stats`,e.id],queryFn:()=>X.shareStats(e.id),staleTime:6e4}),m=K({queryKey:[`session-stats`,e.id],queryFn:()=>X.getSessionStats(e.id),staleTime:6e4}),h=(0,U.useMemo)(()=>Il(e),[e]),g=(0,U.useMemo)(()=>Ll(e.started_at,e.ended_at),[e.started_at,e.ended_at]),_=(0,U.useMemo)(()=>({sessionTitle:h,sessionDate:e.started_at??new Date().toISOString(),recallDate:new Date().toISOString(),costDollars:m.data?.display.dollars??`$—`,durationLabel:g,model:m.data?.primaryModelLabel??null,cachedTokens:m.data?.cacheReadTokens??0,messageCount:e.message_count,filesReferenced:p.data?.filesReferenced??0,toolCallCount:p.data?.toolCallCount??0,verdict:a}),[h,e.started_at,g,m.data,e.message_count,p.data,a]),v=(0,U.useCallback)(async()=>{c(!0),u(null);try{let e=(await en(async()=>{let{default:e}=await import(`./dist-DTdthDvG.js`);return{default:e}},[],import.meta.url)).default,t=await en(r===`A`?()=>import(`./card-a-minimal-ujNERzX7.js`):r===`B`?()=>import(`./card-b-terminal-DpJ_tVpg.js`):r===`C`?()=>import(`./card-c-gradient-CZXVGuNd.js`):()=>import(`./card-d-dashboard-CHKD-PnB.js`),__vite__mapDeps([7,1]),import.meta.url),[n,i,a,o]=await Promise.all([fetch(new URL(``+new URL(`inter-latin-400-normal-CyCys3Eg.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`inter-latin-700-normal-BLAVimhd.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-400-normal-6-qcROiO.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer()),fetch(new URL(``+new URL(`jetbrains-mono-latin-700-normal-D3wTyLJW.woff`,import.meta.url).href,``+import.meta.url).href).then(e=>e.arrayBuffer())]),s=[{name:`Inter`,data:n,weight:400,style:`normal`},{name:`Inter`,data:i,weight:700,style:`normal`},{name:`JetBrains Mono`,data:a,weight:400,style:`normal`},{name:`JetBrains Mono`,data:o,weight:700,style:`normal`}],l=await e(t.render(_),{width:1080,height:1350,fonts:s}),f=d.current;if(!f)return;f.width=1080,f.height=1350;let p=f.getContext(`2d`);if(!p)return;let m=new Image;m.onload=()=>{p.drawImage(m,0,0),c(!1)},m.onerror=()=>{u(`Failed to render card image`),c(!1)},m.src=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(l)))}`}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[ShareModal] renderPreview failed:`,e),u(t),c(!1)}},[r,_]);(0,U.useEffect)(()=>(clearTimeout(f.current),f.current=setTimeout(v,300),()=>clearTimeout(f.current)),[v]);let y=`claude-recall-session-${e.id.slice(0,8)}.png`,b=(0,U.useCallback)(e=>{let t=d.current;t&&t.toBlob(t=>{t&&e(t)},`image/png`)},[]),x=(0,U.useCallback)(()=>new Promise(e=>{let t=d.current;if(!t)return e(null);t.toBlob(t=>e(t??null),`image/png`)}),[]),S=(0,U.useCallback)(()=>{b(async e=>{let t=await Bt({fileName:y,blob:e,title:`Claude Recall — session`,text:`${h} via Claude Recall`,url:`https://clauderecall.com`});t===`shared`?Z({message:`Shared`,tone:`success`}):t===`download`?Z({message:`Card downloaded`,tone:`success`}):t===`cancelled`||Z({message:`Sharing not supported in this browser`,tone:`error`})})},[b,y,h]),C=(0,U.useCallback)(()=>{b(e=>{Ht(e,y),Z({message:`Saved to Downloads`,tone:`success`})})},[b,y]),w=(0,U.useCallback)(()=>{b(async e=>{let t=await Ut(e);Z({message:t?`Image copied — paste anywhere`:`Clipboard not available; use Save instead`,tone:t?`success`:`error`})})},[b]);return(0,U.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),(0,W.jsx)(`div`,{className:`fixed inset-0 z-30 bg-black/50 flex items-center justify-center`,onClick:t,children:(0,W.jsxs)(`div`,{className:`bg-bg-elevated border border-line rounded-lg shadow-xl w-[520px] max-w-[95vw] max-h-[92vh] overflow-y-auto p-5`,onClick:e=>e.stopPropagation(),role:`dialog`,"aria-modal":`true`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-fg-muted uppercase tracking-wider`,children:`Share Receipt`}),(0,W.jsx)(`span`,{className:`text-[9px] font-bold uppercase tracking-widest px-1.5 py-0.5 rounded bg-accent/15 text-accent border border-accent/30`,children:`beta`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-fg`,"aria-label":`close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`relative mb-4 rounded-lg overflow-hidden border border-line bg-bg`,style:{aspectRatio:`1080/1350`},children:[(0,W.jsx)(`canvas`,{ref:d,className:`w-full h-full`,style:{display:s||l?`none`:`block`}}),s&&!l&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-muted text-sm`,children:`Rendering…`}),l&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-red-400 text-xs px-4 text-center`,children:l})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-4 gap-2 mb-3`,children:Nl.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(e.key),className:`flex flex-col items-center gap-1 rounded border p-1.5 transition-colors ${r===e.key?`border-accent bg-accent/10`:`border-line hover:border-fg-muted`}`,title:e.name,children:[(0,W.jsx)(`span`,{className:`w-full h-8 rounded`,style:{background:e.swatch},"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`text-[11px] ${r===e.key?`text-accent font-semibold`:`text-fg-muted`}`,children:e.name})]},e.key))}),(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`label`,{className:`block text-[10px] uppercase tracking-wider text-fg-muted mb-1`,children:`verdict (optional, ≤120 chars)`}),(0,W.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`add your take…`,className:`w-full px-3 py-2 rounded border border-line bg-bg text-fg text-sm focus:outline-none focus:ring-2 focus:ring-accent/60`,maxLength:120})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 mb-2`,children:[Vt()&&(0,W.jsx)(`button`,{type:`button`,onClick:S,disabled:s,className:`w-full px-4 py-2.5 rounded bg-accent text-white text-sm font-semibold hover:bg-accent/90 transition-colors disabled:opacity-50`,children:`↗ Share…`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:C,disabled:s,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`⬇ Save image`}),(0,W.jsx)(`button`,{type:`button`,onClick:w,disabled:s,className:`px-4 py-2 rounded border border-line text-fg text-xs font-medium hover:bg-bg hover:border-accent/60 transition-colors disabled:opacity-50`,children:`📋 Copy image`})]})]}),(0,W.jsx)(Xt,{getBlob:x,kind:`session`,title:h,description:`Built with Claude Recall — ${_.costDollars??``}`.trim(),caption:`${h} — built with Claude Recall`,disabled:s})]})})}function zl({size:e=16}){return(0,W.jsxs)(`svg`,{"aria-hidden":`true`,className:`${e===24?`h-6 w-6`:`h-4 w-4`} animate-spin`,viewBox:`0 0 24 24`,fill:`none`,children:[(0,W.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeOpacity:`0.25`,strokeWidth:`3`}),(0,W.jsx)(`path`,{d:`M12 2a10 10 0 0 1 10 10`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`})]})}var Bl=150;function Vl({label:e,hint:t,onClick:n}){return(0,W.jsxs)(`button`,{type:`button`,onClick:n,className:`block w-full text-left px-3 py-1.5 text-xs hover:bg-bg-hover transition-colors`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:e}),t&&(0,W.jsx)(`div`,{className:`text-fg-muted text-[10px] mt-0.5 font-mono truncate`,children:t})]})}function Hl({sessionId:e,currentAlias:t,aliasSource:n,autoTitle:r,autoTitleSource:i}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(``),l=Xc(),u=Zc(),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{a&&(c(t??``),requestAnimationFrame(()=>d.current?.select()))},[a,t]);let f=async()=>{let n=s.trim();try{n?n!==t&&await l.mutateAsync({sessionId:e,alias:n}):t&&await u.mutateAsync(e)}catch(e){console.error(`alias save failed`,e)}finally{o(!1)}};if(a)return(0,W.jsx)(`input`,{ref:d,type:`text`,value:s,onChange:e=>c(e.target.value),onBlur:f,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),f()):e.key===`Escape`&&(e.preventDefault(),o(!1))},placeholder:`give this session a name…`,className:`bg-bg-elevated border border-accent rounded px-2 py-0.5 text-sm text-fg normal-case tracking-normal min-w-[14rem] focus:outline-none`,maxLength:80});let p=n===`auto`,m=t||r||null,h=m===r&&i===`agent`&&!!r,g=m??`Click to name this session`,_=(()=>{if(m===r&&r){let e=i??`heuristic`;return t?`${e} title · overriding ${p?`auto-alias`:`manual alias`} "${t}" — click to set a custom alias`:`auto-generated title (${e}) — click to override with a custom alias`}return t?`click to rename this session`:`give this session a custom name — click to edit`})();return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(!0),className:`group flex items-center gap-1.5 normal-case tracking-normal text-left min-w-0 px-2 py-0.5 rounded border border-dashed hover:border-accent transition-colors `+(m?`text-fg font-semibold border-transparent hover:bg-bg-hover`:`text-fg-muted italic border-line hover:text-fg hover:bg-bg-hover`),title:_,children:[h&&(0,W.jsx)(`span`,{className:`text-accent text-xs shrink-0`,"aria-hidden":`true`,children:`✨`}),(0,W.jsx)(`span`,{className:`truncate`,children:g}),(0,W.jsx)(`span`,{className:`text-xs shrink-0 `+(m?`text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity`:`text-accent`),children:`✎`})]})}function Ul({sessionId:e,currentSource:t}){let n=G(),r=nl(),i=rl(),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null),c=(0,U.useRef)(null),[l,u]=(0,U.useState)(null),d=q({mutationFn:()=>X.generateAutoTitle(e),onSuccess:t=>{n.invalidateQueries({queryKey:[`session`,e]}),n.invalidateQueries({queryKey:[`sessions`]}),Z({message:t?.auto_title?`Generated title: "${t.auto_title}"`:`Title generated`,tone:`success`,duration:4e3})},onError:e=>{let t=e?.message??`unknown error`;Z({message:/403/.test(t)?`Agent titles disabled — click ✨ to enable`:`Title generation failed: ${t}`,tone:`error`,duration:6e3})}}),f=(0,U.useCallback)(()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect();u({top:t.bottom+4,right:Math.max(8,window.innerWidth-t.right)})},[]);if((0,U.useLayoutEffect)(()=>{if(!a){u(null);return}f()},[a,f]),(0,U.useEffect)(()=>{if(!a)return;let e=()=>f(),t=()=>f(),n=e=>{let t=e.target;c.current&&!c.current.contains(t)&&s.current&&!s.current.contains(t)&&o(!1)},r=e=>{e.key===`Escape`&&o(!1)};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,t,!0),window.addEventListener(`mousedown`,n),window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`mousedown`,n),window.removeEventListener(`keydown`,r)}},[a,f]),t===`agent`&&!d.isError)return null;let p=r.data?.agentEnabled??!1,m=d.isError&&/403/.test(d.error?.message??``),h=()=>{if(!p){o(e=>!e);return}d.mutate()},g=async()=>{try{await i.mutateAsync({agentEnabled:!0}),o(!1),d.mutate()}catch{}},_=d.isPending||i.isPending;return(0,W.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,W.jsx)(`button`,{ref:s,type:`button`,onClick:h,disabled:_||r.isLoading,className:`flex items-center gap-1 text-xs bg-accent/10 text-accent hover:bg-accent hover:text-bg border border-accent/40 rounded px-2 py-1 font-medium disabled:opacity-60 disabled:cursor-not-allowed normal-case tracking-normal`,title:p?`Generate a descriptive title with claude -p (uses your Claude Code subscription)`:`Enable agent-generated titles (requires confirmation) and generate one now`,children:_?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(zl,{size:16}),(0,W.jsx)(`span`,{className:`hidden md:inline`,children:`generating…`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`✨`}),(0,W.jsx)(`span`,{className:`hidden md:inline`,children:`Generate title`})]})}),a&&l&&(0,js.createPortal)((0,W.jsxs)(`div`,{ref:c,className:`fixed w-72 bg-bg-elevated border border-line rounded shadow-xl p-3 z-50 normal-case tracking-normal`,style:{top:l.top,right:l.right},role:`dialog`,"aria-label":`Enable agent-generated titles`,children:[(0,W.jsx)(`p`,{className:`text-xs text-fg mb-2 font-medium`,children:`Enable agent-generated titles?`}),(0,W.jsxs)(`p`,{className:`text-[11px] text-fg-dim leading-snug mb-3`,children:[`This shells out to your local `,(0,W.jsx)(`code`,{className:`text-fg`,children:`claude`}),` `,`CLI and uses your Claude Code subscription to summarise the first 20 user messages. Runs only when you click ✨. You can flip it off later via the`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`autoTitle.agentEnabled`}),` key in`,` `,(0,W.jsx)(`code`,{className:`text-fg`,children:`$RECALL_HOME/config.json`}),`.`]}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>o(!1),disabled:_,className:`text-[11px] text-fg-dim hover:text-fg px-2 py-1 rounded disabled:opacity-60`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:g,disabled:_,className:`text-[11px] bg-accent text-bg hover:bg-accent/90 px-2 py-1 rounded font-medium disabled:opacity-60`,children:i.isPending?`Enabling…`:`Enable and generate`})]}),i.isError&&(0,W.jsxs)(`p`,{className:`mt-2 text-[10px] text-role-user`,role:`alert`,children:[`Failed to enable: `,i.error.message]})]}),document.body),d.isError&&!a&&(0,W.jsx)(`div`,{className:`absolute top-full right-0 mt-1 text-[10px] text-role-user bg-bg-elevated border border-role-user/40 rounded px-2 py-1 shadow-lg z-20 whitespace-nowrap`,role:`alert`,children:m?`Agent titles disabled — click ✨ to enable`:`title generation failed`})]})}function Wl({sessionId:e,sessionCwd:t}){let n=Qc(e),[r,i]=(0,U.useState)(!1),a=$c(r),o=tl(),s=(0,U.useRef)(null),c=(0,U.useRef)(null),[l,u]=(0,U.useState)(null),d=n.data?.linked??null,f=n.data?.suggested??[],p=new Set(f.map(e=>e.shell_pid)),[m,h]=(0,U.useState)(``),g=(0,U.useRef)(null),_=(0,U.useCallback)(()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect();u({top:t.bottom+4,right:Math.max(8,window.innerWidth-t.right)})},[]);(0,U.useLayoutEffect)(()=>{if(!r){u(null),h(``);return}_(),requestAnimationFrame(()=>g.current?.focus())},[r,_]),(0,U.useEffect)(()=>{if(!r)return;let e=()=>_(),t=()=>_(),n=e=>{let t=e.target;c.current&&!c.current.contains(t)&&s.current&&!s.current.contains(t)&&i(!1)},a=e=>{e.key===`Escape`&&i(!1)};return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,t,!0),window.addEventListener(`mousedown`,n),window.addEventListener(`keydown`,a),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,t,!0),window.removeEventListener(`mousedown`,n),window.removeEventListener(`keydown`,a)}},[r,_]);let v=async t=>{try{await o.mutateAsync(t?{sessionId:e,shell_pid:t.shell_pid}:{sessionId:e,clear:!0}),i(!1),Z({message:t?`Linked to terminal "${t.tab_name}"`:`Terminal link cleared`,tone:`success`,duration:3500})}catch(e){Z({message:`Relink failed: ${e?.message??`unknown error`}`,tone:`error`,duration:5e3})}},y=d?`🔗 ${d.tab_name}`:n.isLoading?`🔗 …`:f.length>0?`🔗 ${f.length} suggested`:`🔗 unlinked`,b=d?`Currently linked to terminal "${d.tab_name}" (pid ${d.shell_pid}). Click to fix or unlink.`:f.length>0?`${f.length} terminals were open in this cwd when the session started. Click to pick one.`:`No terminal linked to this session. Click to pick one.`,x=a.data?.terminals??[],S=(t??``).replace(/\/+$/,``),C=e=>{if(!S||!e)return!1;let t=e.replace(/\/+$/,``);return t===S?!0:t.startsWith(S+`/`)||S.startsWith(t+`/`)},w=x.filter(e=>C(e.cwd)),T=m.toLowerCase().split(/\s+/).filter(Boolean),E=e=>{if(T.length===0)return!0;let t=e.toLowerCase();return T.every(e=>t.includes(e))},D=[...w].filter(e=>E(e.tab_name)).sort((e,t)=>{let n=S&&e.cwd&&e.cwd.replace(/\/+$/,``)===S?1:0,r=S&&t.cwd&&t.cwd.replace(/\/+$/,``)===S?1:0;return n===r?Date.parse(t.last_seen_at)-Date.parse(e.last_seen_at):r-n});return(0,W.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,W.jsx)(`button`,{ref:s,type:`button`,onClick:()=>i(e=>!e),className:`flex items-center gap-1 text-[11px] border rounded px-2 py-0.5 normal-case tracking-normal transition-colors `+(d?`border-line/60 text-fg-dim hover:text-fg hover:border-accent/40`:`border-dashed border-line text-fg-muted hover:text-fg hover:border-accent/40`),title:b,children:(0,W.jsx)(`span`,{className:`truncate max-w-[10rem]`,children:y})}),r&&l&&(0,js.createPortal)((0,W.jsxs)(`div`,{ref:c,className:`fixed w-[30rem] max-w-[calc(100vw-2rem)] bg-bg-elevated border border-line rounded shadow-xl z-50 normal-case tracking-normal`,style:{top:l.top,right:l.right},role:`dialog`,"aria-label":`Pick the right terminal for this session`,children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line`,children:[(0,W.jsx)(`div`,{className:`text-[11px] font-semibold text-fg`,children:`Linked terminal`}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-dim leading-snug mt-0.5 mb-2`,children:[d?`Currently: ${d.tab_name} (pid ${d.shell_pid})`:`No terminal linked.`,` `,`Pick a terminal to copy its name as this session's title.`]}),(0,W.jsx)(`input`,{ref:g,type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`Search ${w.length} terminals in this project…`,className:`w-full text-[11px] bg-bg border border-line rounded px-2 py-1 focus:outline-none focus:border-accent normal-case tracking-normal`})]}),(0,W.jsxs)(`div`,{className:`max-h-72 overflow-y-auto`,children:[a.isLoading&&(0,W.jsx)(`div`,{className:`px-3 py-3 text-[11px] text-fg-dim italic`,children:`Loading terminals…`}),!a.isLoading&&D.length===0&&(0,W.jsx)(`div`,{className:`px-3 py-3 text-[11px] text-fg-dim italic`,children:x.length===0?(0,W.jsxs)(W.Fragment,{children:[`No terminals registered. Open a terminal and run `,(0,W.jsx)(`code`,{className:`text-fg`,children:`claude`}),`, or install the VS Code extension.`]}):w.length===0?(0,W.jsxs)(W.Fragment,{children:[`No terminals registered for this project. `,x.length,` terminal`,x.length===1?``:`s`,` `,x.length===1?`is`:`are`,` open elsewhere on your machine.`]}):(0,W.jsx)(W.Fragment,{children:`No terminals match your search.`})}),f.length>0&&!d&&(0,W.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] text-accent uppercase tracking-wider border-b border-accent/30 bg-accent/5`,children:`Suggested (open during session)`}),!d&&f.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>v({shell_pid:e.shell_pid,tab_name:e.tab_name,cwd:e.cwd,opened_at:e.opened_at,last_seen_at:e.last_seen_at}),disabled:o.isPending,className:`block w-full text-left px-3 py-1.5 text-[11px] hover:bg-bg-hover transition-colors disabled:opacity-60 bg-accent/5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,W.jsx)(`span`,{className:`truncate text-fg font-medium`,children:e.tab_name||`(unnamed)`}),(0,W.jsx)(`span`,{className:`text-[9px] text-accent shrink-0`,children:`time match`})]}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-muted font-mono truncate mt-0.5`,children:[`pid `,e.shell_pid,` · open since `,new Date(e.opened_at).toISOString().slice(5,16).replace(`T`,` `)]})]},`sug-${e.shell_pid}`)),f.length>0&&!d&&D.length>0&&(0,W.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] text-fg-dim uppercase tracking-wider border-y border-line bg-bg-hover/30`,children:`All registered terminals`}),D.filter(e=>!p.has(e.shell_pid)||d).map(e=>{let t=S&&e.cwd&&e.cwd.replace(/\/+$/,``)===S,n=d?.shell_pid===e.shell_pid;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>v(e),disabled:o.isPending,className:`block w-full text-left px-3 py-1.5 text-[11px] hover:bg-bg-hover transition-colors disabled:opacity-60 `+(n?`bg-accent/10`:``),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,W.jsx)(`span`,{className:`truncate text-fg font-medium`,children:e.tab_name||`(unnamed)`}),t&&(0,W.jsx)(`span`,{className:`text-[9px] text-accent shrink-0`,children:`same cwd`}),n&&(0,W.jsx)(`span`,{className:`text-[9px] text-accent shrink-0`,children:`✓ linked`})]}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-muted font-mono truncate mt-0.5`,children:[`pid `,e.shell_pid,` · `,e.cwd??`(no cwd)`]})]},e.shell_pid)})]}),(0,W.jsxs)(`div`,{className:`border-t border-line px-3 py-2 flex items-center justify-between gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>v(null),disabled:o.isPending||!d,className:`text-[10px] text-fg-dim hover:text-role-user disabled:opacity-40 disabled:hover:text-fg-dim`,children:`Unlink`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(!1),disabled:o.isPending,className:`text-[10px] text-fg-dim hover:text-fg`,children:`Close`})]})]}),document.body)]})}function Gl(e,t){if(!e.content_text||t.length===0)return!1;let n=e.content_text.toLowerCase();return t.every(e=>n.includes(e))}function Kl(e){return e.toLowerCase().split(/\s+/).filter(e=>e.length>1)}function ql(e){return e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function Jl(e){if(!e)return!1;let t=e.slice(0,64);return t.startsWith(`**Tool result**`)||t.startsWith(`_(tool result was empty`)}var Yl=`recall:collapseToolCalls`,Xl=`recall:collapseToolResults`;function Zl(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function Ql(e,t){try{localStorage.setItem(e,t?`1`:`0`)}catch{}}function $l({sessionId:e,targetMessageUuid:t,onTargetChange:n,searchQuery:r,isCompareLeft:i=!1,isCompareRight:a=!1,onExitCompare:o}){let[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(0),[p,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(!0),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(!1),[,C]=Cn(),[w,T]=(0,U.useState)(()=>Zl(Yl)),[E,D]=(0,U.useState)(()=>Zl(Xl));(0,U.useEffect)(()=>{Ql(Yl,w)},[w]),(0,U.useEffect)(()=>{Ql(Xl,E)},[E]);let O=Dn(e),k=Nn(),A=(0,U.useRef)(null),j=(0,U.useRef)(new Map),M=(0,U.useRef)(null),{isPinned:ee,togglePin:N}=Lr();(0,U.useEffect)(()=>{if(!p)return;let e=e=>{M.current&&!M.current.contains(e.target)&&m(!1)},t=e=>{e.key===`Escape`&&m(!1)};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[p]);let te=K({queryKey:[`session`,e],queryFn:()=>X.session(e),enabled:!!e,refetchInterval:5e3,refetchIntervalInBackground:!1,staleTime:2e3});(0,U.useEffect)(()=>{u(!1),A.current&&(A.current.scrollTop=0),j.current.clear()},[e]);let P=el(),F=(0,U.useRef)(new Set);(0,U.useEffect)(()=>{if(!e)return;let t=te.data;t&&(F.current.has(e)||t.session.alias||(F.current.add(e),P.mutateAsync(e).then(e=>{e.applied&&e.linked_tab_name&&Z({message:`Auto-linked to terminal "${e.linked_tab_name}"`,tone:`success`,duration:4e3})}).catch(()=>{})))},[e,te.data]);let I=(0,U.useMemo)(()=>te.data?te.data.messages.filter(e=>{if(!s&&e.is_sidechain===1)return!1;let t=!!(e.content_text&&e.content_text.trim()),n=!!(e.tool_names&&e.tool_names.length>0);return!(!t&&!n)}):[],[te.data,s]),L=(0,U.useMemo)(()=>Kl(r),[r]),R=(0,U.useMemo)(()=>{if(L.length===0)return[];let e=[];for(let t of I)Gl(t,L)&&e.push(t.uuid);return e},[I,L]),z=(0,U.useMemo)(()=>l?I:I.slice(0,Bl),[I,l]),B=Xs({count:z.length,getScrollElement:()=>A.current,estimateSize:()=>220,overscan:6,getItemKey:e=>z[e]?.uuid??e});(0,U.useEffect)(()=>{t&&I.findIndex(e=>e.uuid===t)>=Bl&&u(!0)},[t,I]),(0,U.useEffect)(()=>{if(!t)return;let e=z.findIndex(e=>e.uuid===t);if(e<0)return;let n=requestAnimationFrame(()=>{B.scrollToIndex(e,{align:`center`,behavior:`smooth`}),f(e=>e+1)});return()=>cancelAnimationFrame(n)},[t,z,B,l]),(0,U.useEffect)(()=>{let e=A.current;if(!e)return;let t=()=>{v(e.scrollHeight-(e.scrollTop+e.clientHeight)<120)};return t(),e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[e,z.length]);let V=(0,U.useCallback)(()=>{z.length!==0&&(!l&&I.length>z.length&&u(!0),B.scrollToIndex(z.length-1,{align:`end`,behavior:`smooth`}))},[z.length,B,l,I.length]),ne=(0,U.useCallback)(()=>{A.current&&A.current.scrollTo({top:0,behavior:`smooth`})},[]);(0,U.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.key===`End`?(e.preventDefault(),V()):e.key===`Home`&&(e.preventDefault(),ne()))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,V,ne]);let re=t&&R.includes(t)?R.indexOf(t):-1,ie=(0,U.useCallback)(e=>{R.length!==0&&n(R[((re===-1?e===1?-1:0:re)+e+R.length)%R.length])},[re,R,n]);if((0,U.useEffect)(()=>{if(R.length===0)return;let e=e=>{let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.key===`n`?(e.preventDefault(),ie(e.shiftKey?-1:1)):e.key===`p`&&(e.preventDefault(),ie(-1)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ie,R.length]),!e)return(0,W.jsx)(`section`,{className:`pane flex-1 border-r-0`,children:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-center px-8`,children:(0,W.jsxs)(`div`,{className:`max-w-sm`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted text-sm mb-2`,children:`No session selected`}),(0,W.jsx)(`div`,{className:`text-fg-muted text-xs`,children:`Pick a project on the left, then a session from the middle. Or type in the search box above — your data never leaves this machine.`})]})})});if(te.isLoading)return(0,W.jsx)(`section`,{className:`pane flex-1 border-r-0`,children:(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-fg-muted text-sm`,children:`Loading session…`})});if(te.isError)return(0,W.jsx)(`section`,{className:`pane flex-1 border-r-0`,children:(0,W.jsxs)(`div`,{className:`flex-1 flex items-center justify-center text-role-user text-sm`,children:[`Failed: `,te.error.message]})});let{session:H,messages:ae}=te.data,oe=ee(H.id),se=()=>{let e=[];e.push(`# Claude Code session · ${H.project_name}`),e.push(``),e.push(`- session id: \`${H.id}\``),H.started_at&&e.push(`- started: ${H.started_at}`),H.git_branch&&e.push(`- branch: \`${H.git_branch}\``),e.push(`- messages: ${ae.length}`),e.push(``),e.push(`---`),e.push(``);for(let t of I){let n=t.role??t.type,r=t.timestamp?` \`${t.timestamp}\``:``;e.push(`## ${n}${r}`),t.tool_names&&e.push(`\n_tools: ${t.tool_names}_\n`),t.content_text&&e.push(t.content_text),e.push(``)}navigator.clipboard.writeText(e.join(`
95
95
  `))},ce=()=>{let e=`${`<!doctype html><html><head><meta charset="utf-8"><title>${ql(H.project_name)} · ${H.id}</title>
96
96
  <link rel="preconnect" href="https://fonts.googleapis.com">
97
97
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -626,7 +626,7 @@ Manual override anytime: \`recall name <id-prefix> "<actual name>"\` writes a pe
626
626
  ├── daemon.log
627
627
  └── models/
628
628
  └── bge-base-en-v1.5/`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted mt-3 leading-relaxed`,children:`Tar this directory to back up everything. Untar on a new machine to restore.`})]})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-3 animate-[fadeInUp_0.5s_ease-out_180ms_both]`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-xs`,children:[(0,W.jsx)(`div`,{className:`text-2xl mb-2`,children:`🛡️`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1`,children:`Never delete user data`}),(0,W.jsx)(`div`,{className:`text-fg-muted leading-relaxed`,children:`Every rename archives the prior value. Cleared values stay recoverable from history.`})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-xs`,children:[(0,W.jsx)(`div`,{className:`text-2xl mb-2`,children:`💾`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1`,children:`Backup in one command`}),(0,W.jsx)(`code`,{className:`block mt-1 text-[11px] font-mono text-fg-muted bg-bg px-2 py-1 rounded border border-line`,children:`tar czf recall.tgz ~/.recall/`})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-xs`,children:[(0,W.jsx)(`div`,{className:`text-2xl mb-2`,children:`🔄`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1`,children:`Reset without data loss`}),(0,W.jsx)(`div`,{className:`text-fg-muted leading-relaxed`,children:`Drop db.sqlite, then recall start and recall index. Aliases and notes survive via mirrors.`})]})]})]})}function Yu(){return(0,W.jsx)(`div`,{className:`mb-10 space-y-6`,children:(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Four ways to get a session out of Recall`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:Xu.map((e,t)=>(0,W.jsxs)(`div`,{className:`rounded-lg border ${e.featured?`border-accent/50 bg-accent/5`:`border-line bg-bg`} p-4 animate-[fadeInUp_0.5s_ease-out_both]`,style:{animationDelay:`${100+t*80}ms`},children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between mb-2`,children:[(0,W.jsx)(`div`,{className:`text-2xl`,children:e.icon}),e.featured&&(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-widest font-semibold px-2 py-0.5 rounded bg-accent text-bg`,children:`killer feature`})]}),(0,W.jsx)(`div`,{className:`font-semibold text-fg text-sm mb-1`,children:e.label}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed mb-2`,children:e.body}),e.cmd&&(0,W.jsx)(`code`,{className:`block text-[11px] font-mono text-fg-muted bg-bg-elevated px-2 py-1 rounded border border-line w-fit`,children:e.cmd}),(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-muted font-semibold mt-3`,children:`Best for`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg-dim leading-relaxed`,children:e.bestFor})]},e.label))})]})})}var Xu=[{icon:`📋`,label:`Copy as context`,body:`Condensed markdown to clipboard. Tool-call JSON and thinking blocks stripped, every prompt and response preserved.`,cmd:`recall context <id> | pbcopy`,bestFor:`Pasting into a new Claude Code conversation so it picks up where you left off.`,featured:!0},{icon:`📄`,label:`Copy as full markdown`,body:`Full transcript including tool-call JSON and tool results. Bigger, more faithful, less Claude-friendly.`,cmd:``,bestFor:`Auditing the exact tool sequence the model executed.`},{icon:`🌐`,label:`Export HTML`,body:`Self-contained dark-mode HTML, all styles inlined. Works offline forever.`,cmd:``,bestFor:`Archiving a session, committing to git, emailing it to a colleague.`},{icon:`🖨️`,label:`Print`,body:`Print-friendly layout. Chrome hidden, light background, page breaks between messages.`,cmd:``,bestFor:`PDF export via the print dialog. Sharing with non-tech reviewers.`}];function Zu(){return(0,W.jsx)(`div`,{className:`mb-10 space-y-6`,children:(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Tactics from someone using Recall every day`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:Qu.map((e,t)=>(0,W.jsx)(`div`,{className:`rounded-lg border border-line bg-bg p-4 animate-[fadeInUp_0.5s_ease-out_both]`,style:{animationDelay:`${100+t*60}ms`},children:(0,W.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,W.jsx)(`div`,{className:`text-2xl shrink-0`,children:e.icon}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg text-sm`,children:e.title}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed mt-1`,children:e.body}),e.cmd&&(0,W.jsx)(`code`,{className:`block mt-2 text-[11px] font-mono text-fg-muted bg-bg-elevated px-2 py-1 rounded border border-line max-w-full overflow-x-auto`,children:e.cmd})]})]})},e.title))})]})})}var Qu=[{icon:`🔎`,title:`Search first, never scroll`,body:`A typed word beats your scroll wheel against 150,000+ messages. Build the reflex.`},{icon:`✏️`,title:`Alias the day you finish`,body:`A bare UUID is forgettable in a week. Spend 5 seconds naming the session while context is fresh.`},{icon:`⭐`,title:`Pin canonical decisions`,body:`The ★ floats a session to the top of its project. Pin "the auth decisions" so they are always first.`},{icon:`📝`,title:`Notes as executive summary`,body:`3 bullets after the session: what we decided, what code changed, what is unresolved. Re-read in 30 seconds three months later.`},{icon:`⛓️`,title:`Chain context with --prelude`,body:`The prelude tells Claude what to DO with the context, otherwise it summarizes instead of continuing.`,cmd:`recall context abc12345 --prelude "continue the migration" | claude`},{icon:`📦`,title:`Dotfile your ~/.recall`,body:`Commit aliases.json and notes/ to dotfiles. Your session names and personal notes follow you across machines.`},{icon:`🎯`,title:`Search for decisions, not keywords`,body:`You write phrases like "decided", "final answer", "lets go with" when you commit to something. Searching them surfaces decision moments.`,cmd:`recall search "decided"`}];function $u(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-6`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Stdio MCP server. Same SQLite, no network ports.`}),(0,W.jsx)(nd,{})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4 animate-[fadeInUp_0.5s_ease-out_240ms_both]`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3 flex-wrap`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:`📖`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg`,children:`Read tools`}),(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-widest font-semibold px-1.5 py-0.5 rounded bg-fg-muted/15 text-fg-dim`,children:`always on`})]}),(0,W.jsx)(`ul`,{className:`text-xs text-fg-muted space-y-1.5 m-0 p-0 list-none`,children:ed.map(e=>(0,W.jsxs)(`li`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`code`,{className:`text-[11px] font-mono text-fg shrink-0`,children:e.name}),(0,W.jsx)(`span`,{children:e.body})]},e.name))})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-accent/40 bg-accent/5 p-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3 flex-wrap`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:`✏️`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg`,children:`Write tools`}),(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-widest font-semibold px-1.5 py-0.5 rounded bg-accent/20 text-accent font-mono`,children:`--allow-writes`})]}),(0,W.jsx)(`ul`,{className:`text-xs text-fg-muted space-y-1.5 m-0 p-0 list-none`,children:td.map(e=>(0,W.jsxs)(`li`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`code`,{className:`text-[11px] font-mono text-fg shrink-0`,children:e.name}),(0,W.jsx)(`span`,{children:e.body})]},e.name))}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted mt-3 leading-relaxed`,children:`All writes rate-limited (default 60/min), zod-validated, audited to ~/.recall/audit/.`})]})]})]})}var ed=[{name:`list_projects`,body:`every project + counts`},{name:`list_sessions`,body:`recent, filterable`},{name:`search`,body:`BM25 + RRF fusion`},{name:`find_similar_sessions`,body:`cosine semantic (Pro)`},{name:`get_session`,body:`full transcript`},{name:`context_for_session`,body:`condensed markdown`},{name:`recall_neighborhood`,body:`parents/children/citations`},{name:`thread_list / thread_get`,body:`thread browsing`},{name:`list_tags`,body:`every tag + counts`},{name:`apply_tags`,body:`merge-mode tagging`}],td=[{name:`add_tag / remove_tag`,body:`tag management`},{name:`set_alias`,body:`archive prior values`},{name:`append_note`,body:`add markdown to a note`},{name:`create_collection`,body:`plus add/remove session`},{name:`thread_create`,body:`plus link, set-parent, remove`},{name:`thread_rename / archive`,body:`lifecycle`},{name:`thread_merge / split`,body:`restructuring`},{name:`sync_active_sessions`,body:`capture running terminals`}];function nd(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 720 220`,className:`w-full h-auto`,role:`img`,"aria-label":`MCP architecture: Claude Desktop or Code talks via stdio to the local Recall MCP server, which reads from your SQLite database`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`mcp-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,W.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-accent/60`})})}),(0,W.jsx)(`rect`,{x:`20`,y:`40`,width:`180`,height:`60`,rx:`10`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`34`,y:`64`,className:`fill-fg text-[12px] font-semibold`,children:`Claude Desktop`}),(0,W.jsx)(`text`,{x:`34`,y:`84`,className:`fill-fg-muted text-[10px] font-mono`,children:`claude_desktop_config.json`}),(0,W.jsx)(`rect`,{x:`20`,y:`120`,width:`180`,height:`60`,rx:`10`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`34`,y:`144`,className:`fill-fg text-[12px] font-semibold`,children:`Claude Code`}),(0,W.jsx)(`text`,{x:`34`,y:`164`,className:`fill-fg-muted text-[10px] font-mono`,children:`~/.claude.json`}),(0,W.jsx)(`line`,{x1:`200`,y1:`70`,x2:`318`,y2:`105`,className:`stroke-accent/50`,strokeWidth:`2`,markerEnd:`url(#mcp-arrow)`}),(0,W.jsx)(`line`,{x1:`200`,y1:`150`,x2:`318`,y2:`125`,className:`stroke-accent/50`,strokeWidth:`2`,markerEnd:`url(#mcp-arrow)`}),(0,W.jsx)(`text`,{x:`245`,y:`98`,className:`fill-fg-muted text-[10px] font-semibold`,children:`stdio`}),(0,W.jsx)(`rect`,{x:`320`,y:`80`,width:`180`,height:`60`,rx:`10`,className:`fill-accent/15 stroke-accent`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`410`,y:`104`,textAnchor:`middle`,className:`fill-accent text-[12px] font-semibold`,children:`claude-recall-mcp`}),(0,W.jsx)(`text`,{x:`410`,y:`124`,textAnchor:`middle`,className:`fill-fg-muted text-[10px]`,children:`no ports · no outbound`}),(0,W.jsx)(`line`,{x1:`500`,y1:`110`,x2:`578`,y2:`110`,className:`stroke-accent/50`,strokeWidth:`2`,markerEnd:`url(#mcp-arrow)`}),(0,W.jsx)(`rect`,{x:`580`,y:`80`,width:`120`,height:`60`,rx:`10`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`640`,y:`104`,textAnchor:`middle`,className:`fill-fg text-[12px] font-semibold`,children:`db.sqlite`}),(0,W.jsx)(`text`,{x:`640`,y:`122`,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-mono`,children:`~/.recall/`}),(0,W.jsx)(`text`,{x:`360`,y:`200`,textAnchor:`middle`,className:`fill-fg-muted text-[10px]`,children:`Whatever the web UI shows, the MCP client sees the same.`})]})}function rd(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-6`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Auto-name Claude Code sessions with the terminal tab name you started them in`}),(0,W.jsx)(ad,{})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4 animate-[fadeInUp_0.5s_ease-out_220ms_both]`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-muted font-semibold mb-3`,children:`What it watches`}),(0,W.jsxs)(`ul`,{className:`text-xs text-fg-muted space-y-2 m-0 p-0 list-none`,children:[(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0 mt-0.5`,children:`✓`}),(0,W.jsx)(`span`,{children:`onDidOpenTerminal, rename, close events`})]}),(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0 mt-0.5`,children:`✓`}),(0,W.jsx)(`span`,{children:`POSTs shell_pid, tab_name, cwd to 127.0.0.1`})]}),(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0 mt-0.5`,children:`✓`}),(0,W.jsx)(`span`,{children:`Daemon correlates via lsof when JSONL appears`})]})]})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-muted font-semibold mb-3`,children:`What it never does`}),(0,W.jsx)(`ul`,{className:`text-xs text-fg-muted space-y-2 m-0 p-0 list-none`,children:id.map(e=>(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted shrink-0 mt-0.5`,children:`×`}),(0,W.jsx)(`span`,{className:`line-through decoration-fg-muted/60`,children:e})]},e))})]})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 animate-[fadeInUp_0.5s_ease-out_360ms_both]`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-muted font-semibold mb-2`,children:`Status bar (VS Code, Cursor, Windsurf)`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(`div`,{className:`px-3 py-1 rounded bg-bg border border-line text-xs font-mono text-fg flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-accent`,children:`⟳`}),(0,W.jsx)(`span`,{children:`Recall`}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`·`}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`3`})]}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg-muted`,children:`number of registered terminals`})]})]})]})}var id=[`Read terminal buffer or output`,`Touch the clipboard`,`Read editor buffers or files`,`Make any outbound network call (loopback only)`];function ad(){let e=[{x:10,line1:`Terminal`,line2:`opens`,sub:`in VS Code`},{x:155,line1:`Tab name`,line2:`registered`,sub:`POST 127.0.0.1`},{x:300,line1:`Claude writes`,line2:`JSONL`,sub:`~/.claude/projects/`},{x:445,line1:`Daemon`,line2:`correlates`,sub:`lsof + shell PID`},{x:590,line1:`Auto-alias`,line2:`applied`,sub:`session named`,accent:!0}];return(0,W.jsxs)(`svg`,{viewBox:`0 0 720 200`,className:`w-full h-auto`,role:`img`,"aria-label":`Lifecycle: terminal opens, tab name registered, JSONL appears, daemon correlates by lsof, alias applied`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`vscode-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,W.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-accent/60`})})}),e.map((t,n)=>(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`rect`,{x:t.x,y:`60`,width:`120`,height:`80`,rx:`10`,className:t.accent?`fill-accent/15 stroke-accent`:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:t.x+60,y:`86`,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:t.line1}),(0,W.jsx)(`text`,{x:t.x+60,y:`102`,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:t.line2}),(0,W.jsx)(`text`,{x:t.x+60,y:`124`,textAnchor:`middle`,className:`fill-fg-muted text-[10px]`,children:t.sub}),n<e.length-1&&(0,W.jsx)(`line`,{x1:t.x+122,y1:`100`,x2:e[n+1].x-2,y2:`100`,className:`stroke-accent/50`,strokeWidth:`1.8`,markerEnd:`url(#vscode-arrow)`})]},t.line1))]})}function od(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-6`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-warning/40 bg-warning/5 p-3 flex items-center gap-3 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`span`,{className:`text-2xl shrink-0`,children:`🚀`}),(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-widest text-warning font-bold`,children:`Founder pricing`}),(0,W.jsx)(`div`,{className:`text-xs text-fg`,children:`$29.69 one-time through May 2026. Standard $49.69 from June onward. Lifetime updates either way.`})]})]}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4 animate-[fadeInUp_0.5s_ease-out_120ms_both]`,children:sd.map(e=>(0,W.jsxs)(`div`,{className:`rounded-xl border p-6 flex flex-col relative ${e.featured?`border-accent bg-accent/5`:`border-line bg-bg-elevated`}`,children:[e.featured&&(0,W.jsx)(`div`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-accent text-bg text-[10px] uppercase tracking-widest font-bold whitespace-nowrap`,children:`Most popular`}),(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-2`,children:e.name}),(0,W.jsx)(`div`,{className:`flex items-baseline gap-1 mb-1`,children:(0,W.jsx)(`span`,{className:`text-3xl font-bold text-fg`,children:e.price})}),e.period&&(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted mb-2`,children:e.period}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted mb-4`,children:e.tagline}),(0,W.jsx)(`ul`,{className:`text-xs text-fg-muted space-y-2 mb-6 m-0 p-0 list-none flex-1`,children:e.features.map(e=>(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`text-accent shrink-0 mt-0.5`,children:`✓`}),(0,W.jsx)(`span`,{children:e})]},e))}),e.href?(0,W.jsx)(`a`,{href:e.href,target:e.href.startsWith(`mailto:`)?void 0:`_blank`,rel:e.href.startsWith(`mailto:`)?void 0:`noopener noreferrer`,className:`text-center px-4 py-2 rounded text-xs font-semibold font-mono transition-colors ${e.featured?`bg-accent text-bg hover:bg-accent/90`:`border border-line text-fg-dim hover:border-accent hover:text-accent`}`,children:e.cta}):(0,W.jsx)(`div`,{className:`text-center px-4 py-2 rounded text-xs font-semibold font-mono ${e.featured?`bg-accent text-bg`:`border border-line text-fg-dim`}`,children:e.cta})]},e.name))}),(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out_280ms_both]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-3`,children:`Dead-man clause`}),(0,W.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,W.jsx)(`span`,{className:`text-3xl shrink-0`,children:`🛡️`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg text-sm mb-1`,children:`If clauderecall.com ever disappears, every existing license stays valid.`}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:`Your license validates against our server exactly once at activation. After that Recall works offline forever. We will publish the validation secret if we ever shut down so you are never stranded.`})]})]})]})]})}var sd=[{name:`Free`,price:`$0`,period:``,tagline:`Keep every session you have ever run, browsable forever.`,features:[`Full indexing of every Claude Code session`,`CLI list, show, projects, status`,`Web UI: browse projects, read transcripts`,`Three-layer durability (SQLite + mirrors + source untouched)`,`No time limits, no feature expiry`],cta:`already installed`},{name:`Pro`,price:`$29.69`,period:`one-time, May 2026`,tagline:`Everything in Free, plus the features that make this a daily driver.`,features:[`Full-text BM25 search across every message`,`recall context re-injection (the moat)`,`MCP server for Claude Desktop and Code`,`VS Code, Cursor, Windsurf extension`,`Aliases, tags, notes, pins, cross-session diff`,`Semantic vector search (3-lane RRF fusion)`,`Lifetime updates · Dead-man clause`],cta:`→ get a key · $29.69`,href:`https://clauderecall.com/pricing`,featured:!0},{name:`Enterprise`,price:`custom`,period:`50+ seats`,tagline:`Everything in Pro for every seat, plus the wrapper.`,features:[`Centralized license management`,`SSO / SAML`,`NET 30 invoicing`,`Audit log export`,`Security review docs (SOC 2 readiness)`,`MSA / DPA / NDA support`,`Priority support with SLA`],cta:`hello@clauderecall.com`,href:`mailto:hello@clauderecall.com`}];function cd(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-6`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`The three questions everyone asks first`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:ld.map((e,t)=>(0,W.jsxs)(`div`,{className:`rounded-lg border border-accent/40 bg-accent/5 p-4 animate-[fadeInUp_0.5s_ease-out_both]`,style:{animationDelay:`${100+t*80}ms`},children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-accent font-semibold mb-2`,children:e.tag}),(0,W.jsx)(`div`,{className:`font-semibold text-fg text-sm mb-2`,children:e.q}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:e.a})]},e.q))})]}),(0,W.jsx)(dd,{})]})}var ld=[{tag:`Privacy`,q:`Does any of my data leave my machine?`,a:`No. The daemon listens on 127.0.0.1 only. The single outbound call ever made is the one-time license-validation call when you activate Pro.`},{tag:`Pricing`,q:`Is Pro a subscription?`,a:`No. One-time, both pricing windows. $29.69 in May, $49.69 from June. Pay once, own it for life.`},{tag:`Future-proofing`,q:`Will Anthropic just ship this natively?`,a:`Maybe. The moat is recall context, threads, MCP, redaction, cross-AI support, and the dead-man clause. Anthropic is a cloud company — they cannot ship "even if we disappear".`}],ud=[{label:`Privacy & data`,icon:`🔒`,items:[{q:`Can I use this if I am offline?`,a:`Yes. Works on a plane, behind firewalls, on air-gapped machines. The browser talks to http://127.0.0.1, your own laptop.`},{q:`What happens if I delete a JSONL from ~/.claude/projects/?`,a:`The SQLite copy persists. We only add and update — we never delete session rows because the source file disappeared. Your indexed memory outlives the source files.`},{q:`How big does the database get?`,a:`~800 MB for 1,100+ sessions and 150,000 messages in our reference environment. Storage is cheap; this is rarely a problem. Compression is on the roadmap if it ever becomes one.`}]},{label:`Compatibility`,icon:`🧩`,items:[{q:`Cursor / Cline / Windsurf?`,a:`Today: no, because those tools do not write to ~/.claude/projects/. Future: adapters for each (v0.8+).`},{q:`Multiple machines on one index?`,a:`Not yet. Each machine has its own ~/.recall/db.sqlite. Team sync is on the roadmap — opt-in, end-to-end encrypted, still local-first.`}]},{label:`Licensing`,icon:`💎`,items:[{q:`What is the license model?`,a:`Free tier: index, list, show, search, basic browsing. Pro tier (one-time, $29.69 May 2026 / $49.69 from June): full web UI, context re-injection, MCP, advanced search. License validates once, then offline forever. Dead-man clause: if our servers disappear, existing keys stay valid.`},{q:`Refunds?`,a:`30-day satisfaction guarantee from license activation. Email and we refund. The clock starts when you run recall activate, not when you click Buy.`}]}];function dd(){let[e,t]=(0,U.useState)(null);return(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out_280ms_both]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Everything else, grouped by topic`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:ud.map(n=>(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg p-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:n.icon}),(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-widest text-fg font-semibold`,children:n.label})]}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:n.items.map(r=>{let i=`${n.label}-${r.q}`,a=e===i;return(0,W.jsxs)(`div`,{className:`rounded-md border border-line bg-bg-elevated overflow-hidden`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>t(a?null:i),className:`w-full text-left px-3 py-2 flex items-start gap-2 hover:bg-bg-hover transition-colors`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`shrink-0 mt-1 inline-block w-2 h-2 border-r border-b border-fg-muted transition-transform`,style:{transform:`rotate(${a?`225deg`:`-45deg`})`}}),(0,W.jsx)(`span`,{className:`text-xs font-semibold text-fg leading-snug flex-1`,children:r.q})]}),a&&(0,W.jsx)(`div`,{className:`px-3 pb-3 text-[11px] text-fg-muted leading-relaxed`,children:r.a})]},i)})})]},n.label))})]})}function fd(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-6`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Three search lanes fused with Reciprocal Rank Fusion (k = 60)`}),(0,W.jsx)(pd,{})]}),(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out_220ms_both]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Same query, different lanes`}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg p-3 mb-4`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-muted font-semibold mb-1`,children:`Query`}),(0,W.jsx)(`div`,{className:`text-sm font-mono text-fg`,children:`"how do I expire user logins"`})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg p-4`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-muted font-semibold mb-2`,children:`Keyword only (Free)`}),(0,W.jsx)(`div`,{className:`text-2xl font-bold text-fg-dim mb-1`,children:`0 hits`}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:`No session contains the literal phrase "expire user logins".`})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-accent/40 bg-accent/5 p-4`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-accent font-semibold mb-2`,children:`+ Semantic (Pro)`}),(0,W.jsx)(`div`,{className:`text-2xl font-bold text-accent mb-1`,children:`7 hits`}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:`Top result: a session about JWT refresh rotation. Zero keyword overlap, semantic match.`})]})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3 text-xs animate-[fadeInUp_0.5s_ease-out_360ms_both]`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-center`,children:[(0,W.jsx)(`div`,{className:`text-2xl font-bold text-accent`,children:`768`}),(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mt-1`,children:`vector dimensions`})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-center`,children:[(0,W.jsx)(`div`,{className:`text-2xl font-bold text-accent`,children:`~110MB`}),(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mt-1`,children:`model footprint`})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-center`,children:[(0,W.jsx)(`div`,{className:`text-2xl font-bold text-accent`,children:`CPU`}),(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mt-1`,children:`no GPU required`})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4 text-center`,children:[(0,W.jsx)(`div`,{className:`text-2xl font-bold text-accent`,children:`$0`}),(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-fg-muted mt-1`,children:`no API fees, ever`})]})]})]})}function pd(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 720 240`,className:`w-full h-auto`,role:`img`,"aria-label":`Three search lanes fused into ranked results: BM25 over messages, BM25 over summaries, kNN over vector chunks`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`sem-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,W.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-accent/60`})})}),(0,W.jsx)(`rect`,{x:`10`,y:`100`,width:`100`,height:`40`,rx:`8`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`60`,y:`124`,textAnchor:`middle`,className:`fill-fg text-[12px] font-semibold`,children:`query`}),(0,W.jsx)(`rect`,{x:`180`,y:`20`,width:`160`,height:`50`,rx:`8`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`260`,y:`42`,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:`BM25 messages`}),(0,W.jsx)(`text`,{x:`260`,y:`58`,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-mono`,children:`FTS5`}),(0,W.jsx)(`rect`,{x:`180`,y:`95`,width:`160`,height:`50`,rx:`8`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`260`,y:`117`,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:`BM25 summaries`}),(0,W.jsx)(`text`,{x:`260`,y:`133`,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-mono`,children:`sessions_fts`}),(0,W.jsx)(`rect`,{x:`180`,y:`170`,width:`160`,height:`50`,rx:`8`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`260`,y:`192`,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:`cosine kNN`}),(0,W.jsx)(`text`,{x:`260`,y:`208`,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-mono`,children:`sqlite-vec · bge-768`}),(0,W.jsx)(`line`,{x1:`112`,y1:`120`,x2:`178`,y2:`45`,className:`stroke-accent/40`,strokeWidth:`1.5`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`line`,{x1:`112`,y1:`120`,x2:`178`,y2:`120`,className:`stroke-accent/40`,strokeWidth:`1.5`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`line`,{x1:`112`,y1:`120`,x2:`178`,y2:`195`,className:`stroke-accent/40`,strokeWidth:`1.5`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`line`,{x1:`342`,y1:`45`,x2:`408`,y2:`105`,className:`stroke-accent/40`,strokeWidth:`1.5`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`line`,{x1:`342`,y1:`120`,x2:`408`,y2:`120`,className:`stroke-accent/40`,strokeWidth:`1.5`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`line`,{x1:`342`,y1:`195`,x2:`408`,y2:`135`,className:`stroke-accent/40`,strokeWidth:`1.5`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`rect`,{x:`410`,y:`95`,width:`120`,height:`50`,rx:`8`,className:`fill-accent/15 stroke-accent`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`470`,y:`117`,textAnchor:`middle`,className:`fill-accent text-[11px] font-semibold`,children:`RRF fuser`}),(0,W.jsx)(`text`,{x:`470`,y:`133`,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-mono`,children:`k = 60`}),(0,W.jsx)(`line`,{x1:`532`,y1:`120`,x2:`598`,y2:`120`,className:`stroke-accent/50`,strokeWidth:`2`,markerEnd:`url(#sem-arrow)`}),(0,W.jsx)(`rect`,{x:`600`,y:`95`,width:`110`,height:`50`,rx:`8`,className:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:`655`,y:`117`,textAnchor:`middle`,className:`fill-fg text-[11px] font-semibold`,children:`ranked results`}),(0,W.jsx)(`text`,{x:`655`,y:`133`,textAnchor:`middle`,className:`fill-fg-muted text-[10px]`,children:`unified, deduped`})]})}function md(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-4`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Two-step pipeline. Reads past sessions, never your repo.`}),(0,W.jsx)(`div`,{className:`hidden md:block`,children:(0,W.jsx)(hd,{})}),(0,W.jsxs)(`div`,{className:`md:hidden flex items-center justify-between text-[11px] font-semibold text-fg gap-1`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col items-center flex-1 px-1`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:`📁`}),(0,W.jsx)(`span`,{className:`mt-1 text-center`,children:`Past sessions`}),(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider text-fg-muted mt-1`,children:`read-only`})]}),(0,W.jsx)(`span`,{className:`text-accent text-base shrink-0`,children:`→`}),(0,W.jsxs)(`div`,{className:`flex flex-col items-center flex-1 px-1`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:`🤖`}),(0,W.jsx)(`span`,{className:`mt-1 text-center`,children:`Extract`}),(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider text-warning mt-1`,children:`tokens`})]}),(0,W.jsx)(`span`,{className:`text-accent text-base shrink-0`,children:`→`}),(0,W.jsxs)(`div`,{className:`flex flex-col items-center flex-1 px-1`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:`⚙`}),(0,W.jsx)(`span`,{className:`mt-1 text-center`,children:`Cluster`}),(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider text-fg-muted mt-1`,children:`free`})]}),(0,W.jsx)(`span`,{className:`text-accent text-base shrink-0`,children:`→`}),(0,W.jsxs)(`div`,{className:`flex flex-col items-center flex-1 px-1`,children:[(0,W.jsx)(`span`,{className:`text-xl`,children:`🐛`}),(0,W.jsx)(`span`,{className:`mt-1 text-center`,children:`Patterns`}),(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider text-accent mt-1`,children:`output`})]})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-3 text-xs`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1`,children:`Step 1: Extract`}),(0,W.jsxs)(`div`,{className:`text-fg-muted leading-relaxed`,children:[`Per-session Claude sub-agent pulls bug snippets from session JSONLs. `,(0,W.jsx)(`strong`,{className:`text-warning`,children:`Costs tokens.`}),` `,`Idempotent. Default cap 200/run.`]})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1`,children:`Step 2: Infer`}),(0,W.jsxs)(`div`,{className:`text-fg-muted leading-relaxed`,children:[`Local fingerprinting groups sessions by error shape. `,(0,W.jsx)(`strong`,{children:`No LLM cost.`}),` Add `,(0,W.jsx)(`code`,{className:`text-fg-dim`,children:`--semantic`}),` `,`for fuzzy merging via local embeddings.`]})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg-elevated p-4`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1`,children:`Output`}),(0,W.jsx)(`div`,{className:`text-fg-muted leading-relaxed`,children:`Clusters of recurring bugs. Mark "this fix worked" once; future occurrences surface the linked resolution.`})]})]})]})}function hd(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 720 200`,className:`w-full h-auto`,role:`img`,"aria-label":`Pipeline: past sessions, extract (LLM, costs tokens), cluster (local, free), bug-pattern output`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`bug-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,W.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-accent/60`})})}),(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`text`,{x:190,y:42,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-semibold uppercase tracking-wider`,children:`read-only`}),(0,W.jsx)(`text`,{x:370,y:42,textAnchor:`middle`,className:`fill-warning text-[10px] font-semibold uppercase tracking-wider`,children:`costs tokens`}),(0,W.jsx)(`text`,{x:550,y:42,textAnchor:`middle`,className:`fill-fg-muted text-[10px] font-semibold uppercase tracking-wider`,children:`local · free`})]}),[190,370,550].map(e=>(0,W.jsx)(`line`,{x1:e,y1:50,x2:e,y2:102,className:`stroke-line/60`,strokeWidth:`1`,strokeDasharray:`2 3`},`drop-${e}`)),[{x1:158,x2:222},{x1:338,x2:402},{x1:518,x2:582}].map(e=>(0,W.jsx)(`line`,{x1:e.x1,y1:110,x2:e.x2,y2:110,className:`stroke-accent/50`,strokeWidth:`2`,markerEnd:`url(#bug-arrow)`},`arrow-${e.x1}`)),(0,W.jsx)(gd,{x:20,y:75,w:140,h:70,emoji:`📁`,title:`Past sessions`,sub:`~/.claude/projects`}),(0,W.jsx)(gd,{x:222,y:75,w:120,h:70,emoji:`🤖`,title:`Extract`,sub:`LLM sub-agent`}),(0,W.jsx)(gd,{x:400,y:75,w:120,h:70,emoji:`⚙`,title:`Cluster`,sub:`by fingerprint`}),(0,W.jsx)(gd,{x:580,y:75,w:120,h:70,emoji:`🐛`,title:`Patterns`,sub:`fix linked`,accent:!0}),(0,W.jsxs)(`text`,{x:360,y:185,textAnchor:`middle`,className:`fill-fg-muted text-[10px]`,children:[`stored locally in`,` `,(0,W.jsx)(`tspan`,{className:`fill-fg-dim font-mono`,children:`~/.recall/db.sqlite`})]})]})}function gd({x:e,y:t,w:n,h:r,emoji:i,title:a,sub:o,accent:s}){return(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`rect`,{x:e,y:t,width:n,height:r,rx:10,ry:10,className:s?`fill-accent/15 stroke-accent`:`fill-bg stroke-line`,strokeWidth:`1.5`}),(0,W.jsx)(`text`,{x:e+14,y:t+28,style:{fontSize:18},children:i}),(0,W.jsx)(`text`,{x:e+38,y:t+28,className:`fill-fg text-[12px] font-semibold`,children:a}),(0,W.jsx)(`text`,{x:e+14,y:t+52,className:`fill-fg-muted text-[10px] font-mono`,children:o})]})}function _d(){return(0,W.jsxs)(`div`,{className:`mb-10 space-y-6`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Run the doctor first. Most issues surface as a concrete suggestion.`}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg p-4 font-mono text-[11px] leading-relaxed`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted mb-2`,children:[`$ `,(0,W.jsx)(`span`,{className:`text-fg`,children:`recall doctor`})]}),(0,W.jsxs)(`div`,{className:`text-fg`,children:[`▸ DB size: `,(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`912 MB`})]}),(0,W.jsxs)(`div`,{className:`text-fg`,children:[`▸ WAL size: `,(0,W.jsx)(`span`,{className:`text-warning`,children:`167 MB (large)`})]}),(0,W.jsxs)(`div`,{className:`text-fg`,children:[`▸ FTS5 fragmentation: `,(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`low`})]}),(0,W.jsxs)(`div`,{className:`text-fg`,children:[`▸ Free disk: `,(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`42 GB`})]}),(0,W.jsxs)(`div`,{className:`text-fg`,children:[`▸ Integrity check: `,(0,W.jsx)(`span`,{className:`text-accent`,children:`ok`})]}),(0,W.jsxs)(`div`,{className:`text-warning mt-2`,children:[`⚠ WAL is 167 MB. Run `,(0,W.jsx)(`span`,{className:`font-semibold`,children:`recall optimize`}),` to truncate it.`]})]})]}),(0,W.jsxs)(`div`,{className:`rounded-xl border border-line bg-bg-elevated p-6 animate-[fadeInUp_0.5s_ease-out_180ms_both]`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-widest text-fg-muted font-semibold mb-4`,children:`Common scenarios`}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3 text-xs`,children:vd.map(e=>(0,W.jsxs)(`div`,{className:`rounded-lg border border-line bg-bg p-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-2 mb-2`,children:[(0,W.jsx)(`span`,{className:`text-base shrink-0`,children:e.icon}),(0,W.jsx)(`div`,{className:`font-semibold text-fg`,children:e.symptom})]}),(0,W.jsx)(`div`,{className:`text-fg-muted leading-relaxed mb-2`,children:e.body}),e.cmd&&(0,W.jsx)(`code`,{className:`block text-[11px] font-mono text-fg-muted bg-bg-elevated px-2 py-1 rounded border border-line w-fit max-w-full overflow-x-auto`,children:e.cmd})]},e.symptom))})]})]})}var vd=[{icon:`🐢`,symptom:`Feels slow`,body:`Run the doctor for concrete suggestions, then optimize if WAL or FTS5 is fragmented.`,cmd:`recall doctor`},{icon:`⚡`,symptom:`Daemon will not start`,body:`Tail the log. Common cause: leftover sqlite-wal/shm. Safe to delete when stopped.`,cmd:`tail -50 ~/.recall/daemon.log`},{icon:`⬜`,symptom:`Page is blank`,body:`Devtools console first. Then bounce the daemon, then hard-refresh.`,cmd:`recall stop && recall start`},{icon:`🔍`,symptom:`Search misses a known term`,body:`Terms shorter than 2 chars are dropped. FTS5 stems with porter; quoted phrases are exact. Try a forced reindex.`,cmd:`recall index --force`},{icon:`🪶`,symptom:`Empty assistant messages`,body:`Pre-v0.4.0 indexer dropped tool-call markdown. Reindex once.`,cmd:`recall index --force`},{icon:`🧹`,symptom:`Want a fully clean slate`,body:`Wipes aliases, notes, pins, the database. Only when you are sure.`,cmd:`recall stop && rm -rf ~/.recall && recall start`}];function yd({initialSectionId:e,onClose:t,onSectionChange:n,onReplayOnboarding:r,onReplayThreadsIntro:i}){let a=tu[0].id,[o,s]=(0,U.useState)(()=>e&&tu.some(t=>t.id===e)?e:a),[c,l]=(0,U.useState)(!1),u=(0,U.useRef)(null),d=(0,U.useRef)(n);(0,U.useEffect)(()=>{d.current=n}),(0,U.useEffect)(()=>{e&&tu.some(t=>t.id===e)&&s(e)},[e]),(0,U.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){let n=e.target;if(n&&(n.tagName===`INPUT`||n.tagName===`TEXTAREA`||n.isContentEditable))return;if(c){l(!1);return}t()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,c]),(0,U.useEffect)(()=>{u.current&&(u.current.scrollTop=0),d.current?.(o),l(!1)},[o]);let f=(0,U.useMemo)(()=>{let e={};for(let t of tu)e[t.id]=au(t.md);return e},[]),p=tu.find(e=>e.id===o);return(0,W.jsxs)(`div`,{className:`absolute inset-0 bg-bg flex flex-col z-20`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-3 sm:px-5 py-3 border-b border-line bg-bg shrink-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 min-w-0`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),"aria-expanded":c,"aria-label":c?`close section nav`:`open section nav`,className:`md:hidden shrink-0 h-9 w-9 rounded-md border border-line bg-bg-elevated hover:bg-bg-hover flex items-center justify-center text-fg-dim`,children:(0,W.jsxs)(`span`,{"aria-hidden":`true`,className:`block w-4 space-y-1`,children:[(0,W.jsx)(`span`,{className:`block h-0.5 bg-current rounded`}),(0,W.jsx)(`span`,{className:`block h-0.5 bg-current rounded`}),(0,W.jsx)(`span`,{className:`block h-0.5 bg-current rounded`})]})}),(0,W.jsx)(`img`,{src:Ft,alt:``,className:`h-9 w-9 sm:h-10 sm:w-10 rounded-lg shrink-0`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`leading-none flex items-center gap-2 sm:gap-2.5 flex-wrap`,children:[(0,W.jsx)(`img`,{src:eu,alt:`Claude Recall`,className:`h-7 sm:h-9 w-auto`}),(0,W.jsx)(`span`,{className:`text-xs sm:text-base font-semibold text-fg-dim hidden sm:inline`,children:`· Command Center`})]}),(0,W.jsx)(`div`,{className:`text-[10px] sm:text-xs text-fg-muted mt-1 sm:mt-2 hidden sm:block`,children:`Everything you need to drive the product like a pro.`})]})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:t,className:`text-[11px] sm:text-xs text-fg-dim hover:text-fg border border-line rounded px-2 sm:px-3 py-1.5 whitespace-nowrap shrink-0`,title:`close command center (Esc)`,children:[(0,W.jsx)(`span`,{className:`sm:hidden`,"aria-hidden":`true`,children:`←`}),(0,W.jsx)(`span`,{className:`hidden sm:inline`,children:`← back to sessions`})]})]}),(0,W.jsxs)(`div`,{className:`flex flex-1 min-h-0 relative`,children:[c&&(0,W.jsx)(`button`,{type:`button`,"aria-label":`close nav`,onClick:()=>l(!1),className:`md:hidden fixed inset-0 bg-bg/80 backdrop-blur-sm z-30`}),(0,W.jsxs)(`aside`,{className:Q(`shrink-0 border-r border-line bg-bg-elevated flex flex-col transition-transform duration-200`,`md:static md:translate-x-0 md:w-64`,`absolute inset-y-0 left-0 w-72 z-40`,c?`translate-x-0`:`-translate-x-full md:translate-x-0`),children:[(0,W.jsxs)(`div`,{className:`md:hidden flex items-center justify-between px-4 py-3 border-b border-line`,children:[(0,W.jsx)(`span`,{className:`text-[11px] uppercase tracking-widest text-fg-muted font-semibold`,children:`Sections`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(!1),className:`text-fg-dim hover:text-fg text-xs`,"aria-label":`close nav`,children:`✕`})]}),(0,W.jsx)(`nav`,{className:`py-2 md:py-4 flex-1 overflow-y-auto`,children:tu.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s(e.id),className:Q(`w-full text-left px-5 py-2.5 text-sm flex items-center gap-2.5 transition-colors`,o===e.id?`bg-bg-active text-fg border-l-2 border-l-accent font-medium`:`text-fg-dim hover:bg-bg-hover hover:text-fg border-l-2 border-l-transparent`),children:[(0,W.jsx)(`span`,{className:`w-4 text-center`,children:e.emoji}),(0,W.jsx)(`span`,{children:e.title})]},e.id))}),(r||i)&&(0,W.jsxs)(`div`,{className:`border-t border-line px-5 py-4 space-y-2`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-widest text-fg-dim`,children:`Replay tours`}),r&&(0,W.jsxs)(`button`,{type:`button`,onClick:r,className:`w-full text-left text-xs text-fg-muted hover:text-fg flex items-center gap-2`,title:`Play the 3-step first-run tour again`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`↺`}),(0,W.jsx)(`span`,{children:`Replay first-run tour`})]}),i&&(0,W.jsxs)(`button`,{type:`button`,onClick:i,className:`w-full text-left text-xs text-fg-muted hover:text-fg flex items-center gap-2`,title:`Play the 3-step Threads explainer again`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,children:`🧵`}),(0,W.jsx)(`span`,{children:`Replay threads tour`})]})]})]}),(0,W.jsxs)(`main`,{ref:u,className:`flex-1 overflow-y-auto min-w-0`,children:[(0,W.jsxs)(`div`,{className:`md:hidden flex items-center gap-2 px-4 py-2 border-b border-line bg-bg-elevated text-xs`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`Section`}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(!0),className:`font-semibold text-fg flex items-center gap-1.5 hover:text-accent transition-colors`,children:[(0,W.jsx)(`span`,{children:p?.emoji}),(0,W.jsx)(`span`,{children:p?.title}),(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`▾`})]})]}),(0,W.jsxs)(`div`,{className:`max-w-6xl mx-auto px-5 sm:px-8 lg:px-10 py-6 sm:py-10`,children:[o===`taxonomy`&&(0,W.jsx)(ou,{}),o===`threads`&&(0,W.jsx)(wu,{}),o===`quickstart`&&(0,W.jsx)(Au,{}),o===`web-ui`&&(0,W.jsx)(Nu,{}),o===`cli`&&(0,W.jsx)(Lu,{}),o===`shortcuts`&&(0,W.jsx)(Bu,{}),o===`collections`&&(0,W.jsx)(Hu,{}),o===`data`&&(0,W.jsx)(Ju,{}),o===`export`&&(0,W.jsx)(Yu,{}),o===`security`&&(0,W.jsx)(yu,{}),o===`tips`&&(0,W.jsx)(Zu,{}),o===`mcp`&&(0,W.jsx)($u,{}),o===`vscode`&&(0,W.jsx)(rd,{}),o===`pricing`&&(0,W.jsx)(od,{}),o===`faq`&&(0,W.jsx)(cd,{}),o===`semantic-vectors`&&(0,W.jsx)(fd,{}),o===`bug-patterns`&&(0,W.jsx)(md,{}),o===`troubleshoot`&&(0,W.jsx)(_d,{}),(0,W.jsx)(`article`,{className:`prose-message prose-help`,dangerouslySetInnerHTML:{__html:f[o]}}),(0,W.jsxs)(`div`,{className:`mt-12 pt-6 border-t border-line flex flex-wrap items-center justify-between gap-3 text-xs text-fg-muted`,children:[(0,W.jsxs)(`div`,{children:[`Section`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:tu.findIndex(e=>e.id===o)+1}),` `,`of `,tu.length]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(bd,{active:o,direction:-1,onJump:e=>s(e),label:`← prev`}),(0,W.jsx)(bd,{active:o,direction:1,onJump:e=>s(e),label:`next →`})]})]})]})]})]})]})}function bd({active:e,direction:t,onJump:n,label:r}){let i=tu[tu.findIndex(t=>t.id===e)+t];return i?(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(i.id),className:`text-fg-dim hover:text-fg`,children:[r,` `,i.title]}):(0,W.jsx)(`span`,{className:`text-fg-muted opacity-30`,children:r})}var xd={"cwd-prefix":`Folder path`,"project-id":`Project`,tag:`Tag`,"plan-file":`Plan file`,"git-branch-prefix":`Git branch`},Sd={"cwd-prefix":`Match sessions whose working directory starts with this path.`,"project-id":`Match every session under a specific Claude Code project (by its internal id).`,tag:`Match sessions that carry this tag.`,"plan-file":`Match sessions that reference this plan/doc filename in their transcript.`,"git-branch-prefix":`Match sessions authored on git branches starting with this prefix.`};function Cd(){let e=Hn(),t=Un(),n=Xn(),r=e.data?.rules??[],i=t.data?.suggestions??[];return(0,W.jsxs)(`div`,{className:`max-w-3xl mx-auto p-6 space-y-8`,children:[(0,W.jsxs)(`header`,{className:`space-y-2`,children:[(0,W.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Auto-collections`}),(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:`Auto-collections group your Claude Code sessions into folders automatically, based on a rule you accept. One click on a suggestion turns into a live folder in the left sidebar that keeps itself populated forever.`}),(0,W.jsxs)(`div`,{className:`rounded border border-line bg-bg-elevated p-3 text-xs text-fg-muted space-y-2`,children:[(0,W.jsx)(`div`,{className:`font-medium text-fg text-sm`,children:`Three common rule shapes`}),(0,W.jsxs)(`ul`,{className:`space-y-1.5`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`Tag`}),` #bugfix →`,(0,W.jsx)(`span`,{className:`text-fg`,children:` folder named "bugfix"`}),` that collects every session you tag #bugfix, forever.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`Folder path`}),` /Users/you/code/monorepo/packages/web →`,(0,W.jsx)(`span`,{className:`text-fg`,children:` folder named "web"`}),` that collects only the monorepo subfolder sessions, separate from the rest of the repo.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`font-mono text-fg`,children:`Plan file`}),` ROADMAP.md →`,(0,W.jsx)(`span`,{className:`text-fg`,children:` folder named "ROADMAP.md"`}),`that collects every session whose transcript mentions that file. Lets you thread planning across repos.`]})]}),(0,W.jsx)(`div`,{className:`border-t border-line pt-2`,children:`Manually added sessions are never removed. Deleting a rule only removes the rows the rule itself added.`})]})]}),(0,W.jsxs)(`section`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold uppercase tracking-wider text-fg-muted`,children:`Pending suggestions`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>n.mutate(),disabled:n.isPending,className:`text-xs text-accent hover:underline disabled:opacity-50`,title:`Re-scan your sessions right now to surface fresh grouping suggestions.`,children:n.isPending?`scanning…`:`scan now`})]}),i.length===0?(0,W.jsx)(`div`,{className:`text-xs text-fg-muted italic`,children:`No pending suggestions. New clusters will appear after the next scan.`}):(0,W.jsx)(`ul`,{className:`border border-line rounded divide-y divide-line`,children:i.map(e=>(0,W.jsx)(wd,{suggestion:e},e.id))})]}),(0,W.jsxs)(`section`,{className:`space-y-3`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold uppercase tracking-wider text-fg-muted`,children:`Active rules`}),r.length===0?(0,W.jsx)(`div`,{className:`text-xs text-fg-muted italic`,children:`No active rules yet. Accept a suggestion above or add one below.`}):(0,W.jsx)(`ul`,{className:`border border-line rounded divide-y divide-line`,children:r.map(e=>(0,W.jsx)(Ed,{rule:e},e.id))})]}),(0,W.jsx)(Dd,{})]})}function wd({suggestion:e}){let t=Jn(),n=Yn(),[,r]=Cn(),[i,a]=(0,U.useState)(!1),o=Zn(e.id,i),s=e.suggested_name||e.pattern,c=e.session_count,l=`${c} ${c===1?`session`:`sessions`}`,u=e=>r({session:e,view:null,col:null,project:null});return(0,W.jsxs)(`li`,{className:`px-3 py-2 text-sm space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wider text-fg-muted w-20 shrink-0`,title:Sd[e.type],children:xd[e.type]}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`truncate font-medium`,title:s,children:s}),(0,W.jsx)(`div`,{className:`truncate text-[11px] text-fg-muted font-mono`,title:e.pattern,children:e.pattern})]}),(0,W.jsx)(`span`,{className:`text-xs text-fg-muted shrink-0`,children:l}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t.mutate(e.id),disabled:t.isPending,className:`px-2 py-1 rounded bg-accent text-bg text-xs font-medium disabled:opacity-50`,title:`Turn this suggestion into an active rule and create the matching sidebar folder.`,children:`Accept`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>n.mutate(e.id),disabled:n.isPending,className:`px-2 py-1 rounded border border-line text-xs hover:bg-bg-hover disabled:opacity-50`,title:`Hide this suggestion so the scanner stops proposing it.`,children:`Dismiss`})]}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted pl-[calc(5rem+0.75rem)]`,children:Td(e)}),(0,W.jsxs)(`div`,{className:`pl-[calc(5rem+0.75rem)]`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:`text-[11px] text-accent hover:underline`,"aria-expanded":i,title:`Preview a handful of sessions that this rule would pull in before you accept it.`,children:i?`Hide example sessions`:`See ${Math.min(3,c)} example session${c===1?``:`s`} that will join`}),i&&(0,W.jsxs)(`ul`,{className:`mt-1 space-y-0.5 text-[11px]`,children:[o.isLoading&&(0,W.jsx)(`li`,{className:`text-fg-muted italic`,children:`Loading…`}),o.data?.sessions.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>u(e.id),className:`w-full text-left flex items-center gap-2 px-1 py-0.5 rounded hover:bg-accent/10 hover:text-accent`,title:`Open session: ${e.title}`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted shrink-0`,children:`→`}),(0,W.jsx)(`span`,{className:`truncate flex-1`,children:e.title}),e.started_at&&(0,W.jsx)(`span`,{className:`text-fg-muted shrink-0`,children:new Date(e.started_at).toLocaleDateString()})]})},e.id)),o.data&&o.data.sessions.length===0&&(0,W.jsx)(`li`,{className:`text-fg-muted italic`,children:`No sessions currently match (may have been dismissed).`})]})]})]})}function Td(e){let t=e.suggested_name||e.pattern,n=e.session_count,r=n===1?`session`:`sessions`;switch(e.type){case`cwd-prefix`:return`Creates a folder "${t}" in the sidebar grouping the ${n} ${r} whose working directory is (or is inside) "${e.pattern}". Every future session recorded under that path joins automatically.`;case`project-id`:return`Creates a folder "${t}" grouping every session from the Claude Code project with id ${e.pattern}. Current match: ${n} ${r}.`;case`tag`:return`Creates a folder "${t}" grouping every session tagged #${e.pattern}. Current match: ${n} ${r}. Any future session tagged the same way joins automatically.`;case`plan-file`:return`Creates a folder "${t}" grouping every session whose transcript references "${e.pattern}". Current match: ${n} ${r}.`;case`git-branch-prefix`:return`Creates a folder "${t}" grouping every session whose git branch starts with "${e.pattern}". Current match: ${n} ${r}.`}}function Ed({rule:e}){let t=Kn(),n=qn(),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(e.pattern),s=()=>{if(a===e.pattern){i(!1);return}t.mutate({id:e.id,patch:{pattern:a}},{onSuccess:()=>i(!1)})};return(0,W.jsxs)(`li`,{className:`flex items-center gap-3 px-3 py-2 text-sm`,children:[(0,W.jsx)(`label`,{className:`flex items-center gap-2 shrink-0`,title:`enable / disable`,children:(0,W.jsx)(`input`,{type:`checkbox`,checked:e.enabled,onChange:n=>t.mutate({id:e.id,patch:{enabled:n.target.checked}})})}),(0,W.jsx)(`span`,{className:`text-xs text-fg-muted w-28 shrink-0`,title:Sd[e.type],children:xd[e.type]}),r?(0,W.jsx)(`input`,{className:`min-w-0 flex-1 px-2 py-1 bg-bg-elevated border border-line rounded text-xs font-mono`,value:a,onChange:e=>o(e.target.value),onKeyDown:t=>{t.key===`Enter`&&s(),t.key===`Escape`&&(o(e.pattern),i(!1))},autoFocus:!0}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(!0),className:`min-w-0 flex-1 text-left font-mono text-xs truncate hover:text-accent`,title:`click to edit pattern`,children:e.pattern}),(0,W.jsx)(`span`,{className:Q(`text-[10px] uppercase px-1.5 py-0.5 rounded-full shrink-0`,e.created_by===`suggestion-accepted`?`bg-role-tool/15 text-role-tool`:`bg-bg-hover text-fg-muted`),title:e.created_by===`suggestion-accepted`?`This rule started as an auto-detected suggestion that you accepted.`:`This rule was added manually through the form below.`,children:e.created_by===`suggestion-accepted`?`✨`:`⚙`}),r?(0,W.jsx)(`button`,{type:`button`,onClick:s,disabled:t.isPending,className:`px-2 py-1 rounded bg-accent text-bg text-xs font-medium disabled:opacity-50`,title:`Save the updated pattern and re-match sessions against it.`,children:`Save`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>{confirm(`Delete rule "${e.name}"? The collection stays; only rule-added rows are removed.`)&&n.mutate(e.id)},disabled:n.isPending,className:`px-2 py-1 rounded border border-line text-xs hover:bg-bg-hover disabled:opacity-50`,title:`Remove this rule; the sidebar folder stays and any sessions you added manually remain.`,children:`Delete`})]})}function Dd(){let e=Gn(),[t,n]=(0,U.useState)(``),[r,i]=(0,U.useState)(`cwd-prefix`),[a,o]=(0,U.useState)(``);return(0,W.jsxs)(`section`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold uppercase tracking-wider text-fg-muted`,children:`Add rule manually`}),(0,W.jsx)(`p`,{className:`text-xs text-fg-muted mt-1`,children:`Use this when no suggestion matches what you want. Pick a rule type, set a name (this becomes the collection name in the sidebar), and enter the pattern to match.`})]}),(0,W.jsxs)(`form`,{onSubmit:i=>{i.preventDefault(),!(!t.trim()||!a.trim())&&e.mutate({name:t.trim(),type:r,pattern:a.trim()},{onSuccess:()=>{n(``),o(``)}})},className:`flex flex-wrap gap-2 items-end`,children:[(0,W.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`Collection name`}),(0,W.jsx)(`input`,{className:`px-2 py-1 bg-bg-elevated border border-line rounded text-sm`,value:t,onChange:e=>n(e.target.value),placeholder:`e.g. my-repo`,title:`Shown as the collection label in the sidebar.`})]}),(0,W.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`Match by`}),(0,W.jsx)(`select`,{className:`px-2 py-1 bg-bg-elevated border border-line rounded text-sm`,value:r,onChange:e=>i(e.target.value),title:Sd[r],children:Object.keys(xd).map(e=>(0,W.jsx)(`option`,{value:e,title:Sd[e],children:xd[e]},e))})]}),(0,W.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs min-w-[16rem] flex-1`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`Pattern`}),(0,W.jsx)(`input`,{className:`px-2 py-1 bg-bg-elevated border border-line rounded text-sm font-mono`,value:a,onChange:e=>o(e.target.value),placeholder:Od(r),title:Sd[r]})]}),(0,W.jsx)(`button`,{type:`submit`,disabled:e.isPending||!t.trim()||!a.trim(),className:`px-3 py-1.5 rounded bg-accent text-bg text-sm font-medium disabled:opacity-50`,title:`Create this rule and add the matching sidebar folder; it will keep itself populated going forward.`,children:`Create`})]}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted italic`,children:Sd[r]}),e.isError&&(0,W.jsx)(`div`,{className:`text-xs text-role-user`,children:e.error.message})]})}function Od(e){switch(e){case`cwd-prefix`:return`/Users/you/code/my-repo`;case`project-id`:return`42`;case`tag`:return`security`;case`plan-file`:return`ROADMAP.md`;case`git-branch-prefix`:return`feature/`}}var kd={status:`idle`,jobId:null,current:0,total:0,lastTitled:null,failures:[],summary:null,error:null};function Ad(e){let t=G(),[n,r]=(0,U.useState)(kd),i=(0,U.useRef)(null),a=(0,U.useCallback)(()=>{i.current&&=(i.current.close(),null)},[]);return(0,U.useEffect)(()=>()=>a(),[a]),{state:n,start:(0,U.useCallback)(async n=>{a(),r({...kd,status:`starting`});let o;try{o=(await X.startThreadTitlesJob(e,n)).jobId}catch(e){r({...kd,status:`error`,error:e instanceof Error?e.message:String(e)});return}r(e=>({...e,status:`running`,jobId:o}));let s=`/api/jobs/${encodeURIComponent(o)}/stream`,c=new EventSource(s);i.current=c,c.addEventListener(`progress`,n=>{let i=JSON.parse(n.data);r(e=>({...e,current:i.current,total:i.total,lastTitled:i})),t.invalidateQueries({queryKey:[`thread`,e]})}),c.addEventListener(`skipped`,()=>{}),c.addEventListener(`error`,e=>{if(typeof e.data==`string`)try{let t=JSON.parse(e.data);r(e=>({...e,failures:[...e.failures,t]}))}catch{}}),c.addEventListener(`done`,n=>{let i=JSON.parse(n.data);r(e=>({...e,status:`done`,summary:i})),a(),t.invalidateQueries({queryKey:[`thread`,e]})})},[a,t,e]),cancel:(0,U.useCallback)(async()=>{if(r(e=>({...e,status:`cancelling`})),n.jobId)try{await X.cancelJob(n.jobId)}catch{}},[n.jobId]),reset:(0,U.useCallback)(()=>{a(),r(kd)},[a])}}var jd=60;function Md(e){if(e==null)return null;let t=e.trim();return t.length>0?t:null}function Nd(e){let t=e.split(`
629
- `,1)[0].trim();return t?t.length>jd?t.slice(0,jd):t:null}function Pd(e){let t=Md(e.alias),n=Md(e.autoTitle),r=Md(e.firstUserMessage),i=e.aliasSource??null,a=e.autoTitleSource??null;if(n&&a===`agent`)return n;if(t&&i===`manual`)return t;if(n&&(i===`auto`||t===null))return n;if(t)return t;if(n)return n;if(r){let e=Nd(r);if(e)return e}return e.sessionId.slice(0,8)}var Fd=260,Id=92,Ld=24,Rd=168,zd=24,Bd=900;function Vd(e,t=new Set,n=Rd){let r=new Map;for(let t of e)r.set(t.session_id,t);let i=new Map,a=[];for(let t of e){let e=t.parent_session_id;if(e&&r.has(e)&&e!==t.session_id){let n=i.get(e)??[];n.push(t),i.set(e,n)}else a.push(t)}let o=(e,t)=>{let n=e.role===`origin`?0:1,r=t.role===`origin`?0:1;return n===r?e.added_at.localeCompare(t.added_at):n-r};a.sort(o);for(let e of i.values())e.sort(o);let s=new Map,c=new Set;function l(e){if(s.has(e))return s.get(e);if(c.has(e))return s.set(e,0),0;c.add(e);let t=i.get(e)??[],n=0;for(let e of t)n+=1+l(e.session_id);return c.delete(e),s.set(e,n),n}let u=new Map,d=new Set;function f(e){if(u.has(e))return u.get(e);if(d.has(e))return u.set(e,1),1;d.add(e);let n=t.has(e)?[]:i.get(e)??[],r=0;for(let e of n)r+=f(e.session_id);d.delete(e);let a=Math.max(1,r);return u.set(e,a),a}for(let e of a)f(e.session_id);let p=[],m=new Set,h=0;function g(e,r,a){if(m.has(e.session_id))return;m.add(e.session_id);let o=zd+(a+(u.get(e.session_id)??1)/2)*(Fd+Ld)-Fd/2,s=zd+r*n,c=i.get(e.session_id)??[],d=t.has(e.session_id);if(p.push({edge:e,x:o,y:s,depth:r,hasChildren:c.length>0,hiddenCount:d?l(e.session_id):0}),d)return;let f=a;for(let e of c){let t=u.get(e.session_id)??1;g(e,r+1,f),f+=t}}for(let e of a){let t=u.get(e.session_id)??1;g(e,0,h),h+=t}let _=new Map,v=0,y=0;for(let e of p)_.set(e.edge.session_id,e),e.x+Fd>v&&(v=e.x+Fd),e.y+Id>y&&(y=e.y+Id);return{nodes:p,byId:_,width:Math.max(v+zd,400),height:Math.max(y+zd,200)}}function Hd(e){return Pd({sessionId:e.session_id,alias:e.alias,autoTitle:e.auto_title,firstUserMessage:e.first_user_message,aliasSource:e.alias_source,autoTitleSource:e.auto_title_source})}var Ud={manual:`you linked this session to its parent yourself`,"plan-file":`both sessions reference the same plan or spec file`,"uuid-ref":`one session refers directly to the other by UUID`,"recall-context-ref":`one session was piped into the other via recall context`,semantic:`transcript content overlaps in meaning`,git:`the sessions share a git branch or commit range`,temporal:`the sessions ran close together on related work`};function Wd(e){let t=Math.round(e.confidence*100);return e.source===`manual`?`Manual link (${Ud.manual}).`:`Auto-linked via ${e.source} at ${t}% confidence (${Ud[e.source]}); 100% would mean manually linked.`}function Gd(e,t,n){let r=new Map;for(let e of n)r.set(e.session_id,e);let i=new Set,a=t;for(;a;){if(i.has(a))return!1;i.add(a);let t=r.get(a);if(!t)return!1;if(t.parent_session_id===e)return!0;a=t.parent_session_id}return!1}function Kd({thread:e}){let t=(0,U.useRef)(null),[n,r]=(0,U.useState)(1024);return(0,U.useEffect)(()=>{if(!t.current)return;let e=new ResizeObserver(e=>{for(let t of e)r(t.contentRect.width)});return e.observe(t.current),()=>e.disconnect()},[]),(0,W.jsx)(`div`,{ref:t,className:`w-full`,children:n>0&&n<Bd?(0,W.jsx)(Yd,{thread:e}):(0,W.jsx)(qd,{thread:e})})}function qd({thread:e}){let[,t]=Cn(),n=Sl(),r=xl(),i=Xc(),a=`threads.collapsed.${e.id}`,[o,s]=(0,U.useState)(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(a);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}),c=e=>{s(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),typeof window<`u`&&window.localStorage.setItem(a,JSON.stringify(Array.from(n))),n})},l=()=>{s(new Set),typeof window<`u`&&window.localStorage.removeItem(a)},[u,d]=(0,U.useState)(!1),f=(0,U.useRef)(1),[p,m]=(0,U.useState)(()=>{try{let e=localStorage.getItem(`recall.threadVSpacing`),t=e?parseInt(e,10):NaN;if(Number.isFinite(t)&&t>=100&&t<=260)return t}catch{}return 168});(0,U.useEffect)(()=>{try{localStorage.setItem(`recall.threadVSpacing`,String(p))}catch{}},[p]);let{nodes:h,byId:g,width:_,height:v}=(0,U.useMemo)(()=>Vd(e.edges,o,p),[e.edges,o,p]),[y,b]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),C=(0,U.useMemo)(()=>{let t=0,n=0;for(let r of e.edges)r.role===`origin`&&t++,r.source!==`manual`&&r.confidence<1&&n++;return{total:e.edges.length,origins:t,autoPending:n}},[e.edges]),w=(0,U.useRef)(null),[T,E]=(0,U.useState)(null),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1);(0,U.useEffect)(()=>{function e(){let e=w.current;if(e&&T&&e.hasPointerCapture(T.pointerId))try{e.releasePointerCapture(T.pointerId)}catch{}E(null),O(null),A(!1)}function t(){document.visibilityState===`hidden`&&e()}return window.addEventListener(`blur`,e),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`blur`,e),document.removeEventListener(`visibilitychange`,t)}},[T]);let j=(0,U.useCallback)(n=>{t({session:n,view:null,thread:null,project:e.edges.find(e=>e.session_id===n)?.project??null,msg:null,col:null})},[t,e.edges]),M=(0,U.useCallback)((t,r)=>{let i=e.edges.find(e=>e.session_id===t);if(!i)return;let a=i.parent_session_id;a!==r&&n.mutate({threadId:e.id,sessionId:t,parentSessionId:r},{onSuccess:()=>{Z({message:r?`Re-parented ${t.slice(0,8)} to ${r.slice(0,8)}`:`Promoted ${t.slice(0,8)} to origin`,tone:`success`,duration:9e3,action:{label:`Undo`,onClick:()=>{n.mutate({threadId:e.id,sessionId:t,parentSessionId:a})}}})},onError:e=>{Z({message:`Re-parent failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},[e.edges,e.id,n]),ee=(0,U.useCallback)(t=>{let n=e.edges.find(e=>e.session_id===t),i=e.edges.filter(e=>e.parent_session_id===t).length,a=n?.alias??t.slice(0,8),o=i>0?`\n\n${i} child session${i===1?``:`s`} will be re-parented to ${n?.parent_session_id?`its grandparent`:`origin`}.`:``;confirm(`Remove "${a}" from this thread?${o}\n\nThe session itself stays in Recall, only the link to this thread is removed.`)&&r.mutate({threadId:e.id,sessionId:t},{onSuccess:()=>{Z({message:`Removed ${a} from thread`,tone:`success`})},onError:e=>{Z({message:`Remove failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},[e.edges,e.id,r]),N=(0,U.useCallback)(t=>{S({sessionId:t,value:e.edges.find(e=>e.session_id===t)?.alias??``}),b(null)},[e.edges]),te=(0,U.useCallback)(()=>S(null),[]),P=(0,U.useCallback)(()=>{if(!x)return;let e=x.value.trim();if(!e){S(null);return}let t=x.sessionId;S(null),i.mutate({sessionId:t,alias:e},{onSuccess:()=>{Z({message:`Renamed session to "${e}"`,tone:`success`})},onError:e=>{Z({message:`Rename failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},[x,i]),F=(0,U.useCallback)((e,t)=>{let n=w.current;if(!n)return{x:0,y:0};let r=n.getBoundingClientRect(),i=f.current||1;return{x:(e-r.left+n.scrollLeft)/i,y:(t-r.top+n.scrollTop)/i}},[]),I=(0,U.useCallback)((e,t,n)=>{for(let r of h)if(r.edge.session_id!==n&&e>=r.x&&e<=r.x+Fd&&t>=r.y&&t<=r.y+Id)return r.edge.session_id;return null},[h]),L=(e,t)=>{if(e.button!==0)return;let n=w.current;if(n)try{n.setPointerCapture(e.pointerId)}catch{}let r=F(e.clientX,e.clientY);E({sessionId:t,pointerX:r.x,pointerY:r.y,startX:r.x,startY:r.y,pointerId:e.pointerId}),A(!1)},R=e=>{if(!T||T.pointerId!==e.pointerId)return;let t=F(e.clientX,e.clientY),n=Math.hypot(t.x-T.startX,t.y-T.startY)>16;n&&!k&&A(!0),E({...T,pointerX:t.x,pointerY:t.y}),O(n?I(t.x,t.y,T.sessionId):null)},z=e=>{let t=w.current;if(t?.hasPointerCapture(e))try{t.releasePointerCapture(e)}catch{}},B=t=>{if(!T||T.pointerId!==t.pointerId)return;z(t.pointerId);let n=F(t.clientX,t.clientY),r=Math.hypot(n.x-T.startX,n.y-T.startY),i=k,a=r>16,o=i&&a?I(n.x,n.y,T.sessionId):null,s=T.sessionId;if(E(null),O(null),A(!1),!i){j(s);return}if(a&&o!==s&&o&&o!==s){if(Gd(s,o,e.edges)){Z({message:`Cannot re-parent: that would create a cycle. A thread is a DAG.`,tone:`error`});return}M(s,o)}},V=e=>{T?.pointerId===e.pointerId&&z(e.pointerId),E(null),O(null),A(!1)},ne=(0,U.useMemo)(()=>{let t=[];for(let n of e.edges){let e=n.parent_session_id;if(!e)continue;let r=g.get(n.session_id),i=g.get(e);if(!r||!i)continue;let a=i.x+Fd/2,o=i.y+Id,s=r.x+Fd/2,c=r.y;t.push({key:`${e}->${n.session_id}`,x1:a,y1:o,x2:s,y2:c,confidence:n.confidence,source:n.source,midX:(a+s)/2,midY:(o+c)/2,title:Wd(n)})}return t},[e.edges,g]),re=T?g.get(T.sessionId)??null:null;return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-fg-muted`,children:[(0,W.jsxs)(`span`,{title:`Total sessions pulled into this thread.`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:C.total}),` session`,C.total===1?``:`s`,` linked`]}),(0,W.jsxs)(`span`,{title:`Threads can have multiple origins; these are the seed sessions the thread grew from.`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:C.origins}),` origin`,C.origins===1?``:`s`]}),C.autoPending>0&&(0,W.jsxs)(`span`,{title:`Auto-detected links below full confidence that you have not confirmed yet.`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:C.autoPending}),` `,`auto-suggested`]}),(0,W.jsx)(`span`,{className:`ml-auto italic`,children:`Drag a node onto another to re-parent. Drop on empty canvas to cancel.`})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>d(e=>!e),className:Q(`px-2.5 py-1 rounded border transition-colors`,u?`border-accent text-accent bg-accent/10`:`border-line text-fg-muted hover:text-accent hover:border-accent`),title:`Scale the entire tree to fit the canvas without scrolling`,children:u?`↔ Fit-to-view (on)`:`↔ Fit-to-view`}),o.size>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:l,className:`px-2.5 py-1 rounded border border-line text-fg-muted hover:text-accent hover:border-accent transition-colors`,title:`Expand every collapsed branch`,children:[`▾ Expand all (`,o.size,`)`]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 px-2 py-1 rounded border border-line text-fg-muted`,title:`Vertical spacing between parent and child rows (saved per browser)`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider`,children:`Spacing`}),(0,W.jsx)(`input`,{type:`range`,min:100,max:260,step:4,value:p,onChange:e=>m(parseInt(e.target.value,10)),className:`accent-accent w-24`,"aria-label":`Vertical spacing between rows`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(168),className:`text-[10px] text-fg-muted/70 hover:text-accent`,title:`Reset to default`,children:`reset`})]}),(0,W.jsx)(`span`,{className:`text-[10px] text-fg-muted ml-auto`,children:`Click ▸ on any parent to fold its branch`})]}),(0,W.jsx)(`div`,{ref:w,className:`relative border border-line rounded bg-bg-elevated overflow-auto`,style:{height:Math.min(v+40,700)},onPointerMove:R,onPointerUp:B,onPointerCancel:V,children:(0,W.jsx)(Zd,{enabled:u,contentWidth:_,contentHeight:v,onScaleChange:e=>{f.current=e},children:(0,W.jsxs)(`div`,{style:{width:_,height:v,position:`relative`},"data-share-capture-content":`thread-graph`,children:[(0,W.jsx)(`svg`,{width:_,height:v,className:`absolute inset-0 pointer-events-none`,children:ne.map(e=>{let t=e.source!==`manual`,n=e.confidence>=1?3:Math.max(1,e.confidence*2.5);return(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`path`,{d:`M ${e.x1} ${e.y1} C ${e.x1} ${(e.y1+e.y2)/2}, ${e.x2} ${(e.y1+e.y2)/2}, ${e.x2} ${e.y2}`,fill:`none`,stroke:`currentColor`,strokeOpacity:.6,strokeWidth:n,strokeDasharray:t?`5 4`:void 0,className:`text-fg-muted`,style:{pointerEvents:`stroke`},children:(0,W.jsx)(`title`,{children:e.title})}),t&&(0,W.jsxs)(`g`,{transform:`translate(${e.midX-10} ${e.midY-8})`,style:{pointerEvents:`auto`},children:[(0,W.jsx)(`title`,{children:e.title}),(0,W.jsx)(`rect`,{width:20,height:14,rx:3,className:`fill-bg-elevated`,stroke:`currentColor`,strokeOpacity:.5}),(0,W.jsx)(`text`,{x:10,y:10,textAnchor:`middle`,className:`fill-fg-muted`,style:{fontSize:9,fontWeight:600},children:`AI`})]})]},e.key)})}),h.map(e=>{let t=T?.sessionId===e.edge.session_id,n=D===e.edge.session_id,r=e.edge.role===`origin`,i=x?.sessionId===e.edge.session_id,a=Math.round(e.edge.confidence*100),o=e.edge.source===`manual`?`added manually`:`auto-linked via ${e.edge.source} at ${a}% confidence`,s=`${r?`Origin`:`Child`} session ${e.edge.session_id}, ${o}; click to open, drag to re-parent, right-click to rename.`,l=r?`Origin: one of the seed sessions this thread grew from.`:`Child: a session linked under a parent.`,u=e.edge.source===`manual`?``:`Auto-linked via ${e.edge.source} at ${a}% confidence (${Ud[e.edge.source]}); 100% would mean manually linked.`;return(0,W.jsxs)(`div`,{role:`button`,tabIndex:0,onPointerDown:t=>{i||L(t,e.edge.session_id)},onContextMenu:t=>{t.preventDefault(),T&&z(T.pointerId),E(null),O(null),A(!1),b({sessionId:e.edge.session_id,x:t.clientX,y:t.clientY})},onKeyDown:t=>{i||(t.key===`Enter`||t.key===` `?(t.preventDefault(),j(e.edge.session_id)):t.key===`F2`&&(t.preventDefault(),N(e.edge.session_id)))},className:Q(`absolute select-none rounded border shadow-sm flex flex-col justify-center px-3 py-2 text-left transition-colors`,`focus:outline-none focus:ring-2 focus:ring-accent/60`,r?`bg-accent/20 border-accent/60 text-fg`:`bg-bg border-line text-fg`,t&&`opacity-50 cursor-grabbing`,n&&`ring-2 ring-accent`,i&&`ring-2 ring-accent cursor-text`,!t&&!i&&`cursor-grab hover:border-accent/60`),style:{left:e.x,top:e.y,width:Fd,height:Id,touchAction:`none`},title:s,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:Q(`text-[9px] uppercase tracking-wider px-1 py-0.5 rounded shrink-0`,r?`bg-accent text-bg`:`bg-bg-hover text-fg-muted`),title:l,children:e.edge.role}),e.edge.source!==`manual`&&(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider px-1 py-0.5 rounded bg-bg-hover text-fg-muted shrink-0`,title:u,children:`AI`}),e.hasChildren&&(0,W.jsx)(`button`,{type:`button`,onPointerDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),c(e.edge.session_id)},className:Q(`ml-auto text-[10px] leading-none px-1.5 py-0.5 rounded shrink-0 border transition-colors`,e.hiddenCount>0?`border-accent text-accent bg-accent/10 hover:bg-accent/20`:`border-line text-fg-muted hover:text-accent hover:border-accent`),title:e.hiddenCount>0?`${e.hiddenCount} descendant${e.hiddenCount===1?``:`s`} hidden — click to expand`:`Fold this branch`,"aria-label":e.hiddenCount>0?`Expand subtree`:`Collapse subtree`,children:e.hiddenCount>0?`▸ +${e.hiddenCount}`:`▾`})]}),i?(0,W.jsx)(`input`,{autoFocus:!0,type:`text`,value:x.value,onChange:e=>S({sessionId:x.sessionId,value:e.target.value}),onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),P()):e.key===`Escape`&&(e.preventDefault(),te())},onBlur:P,placeholder:Hd(e.edge),"aria-label":`Rename session`,className:`text-sm bg-bg-elevated border border-accent rounded px-1 py-0.5 mt-0.5 outline-none w-full`}):(0,W.jsx)(`div`,{className:`text-[12.5px] leading-snug mt-0.5 break-words overflow-hidden`,children:Hd(e.edge)})]},e.edge.session_id)}),re&&T&&k&&(0,W.jsx)(`div`,{className:`absolute pointer-events-none rounded border border-accent bg-bg shadow-lg px-3 py-2 opacity-80`,style:{left:T.pointerX-Fd/2,top:T.pointerY-Id/2,width:Fd,height:Id},children:(0,W.jsx)(`div`,{className:`text-[12.5px] leading-snug break-words overflow-hidden`,children:Hd(re.edge)})})]})})}),y&&(0,W.jsx)(Xd,{x:y.x,y:y.y,sessionId:y.sessionId,onRename:()=>N(y.sessionId),onRemoveFromThread:()=>ee(y.sessionId),onClose:()=>b(null)})]})}function Jd(e){let t=new Map;for(let n of e)t.set(n.session_id,{edge:n,children:[]});let n=[];for(let e of t.values()){let r=e.edge.parent_session_id;r&&t.has(r)&&r!==e.edge.session_id?t.get(r).children.push(e):n.push(e)}return n}function Yd({thread:e}){let t=(0,U.useMemo)(()=>Jd(e.edges),[e.edges]),[,n]=Cn(),r=xl();if(t.length===0)return(0,W.jsx)(`div`,{className:`text-xs text-fg-muted italic p-3 border border-line rounded`,children:`No sessions yet.`});let i=(t,n)=>{let i=n??t.slice(0,8),a=e.edges.filter(e=>e.parent_session_id===t).length,o=a>0?`\n\n${a} child session${a===1?``:`s`} will be re-parented.`:``;confirm(`Remove "${i}" from this thread?${o}\n\nThe session itself stays in Recall, only the link to this thread is removed.`)&&r.mutate({threadId:e.id,sessionId:t},{onSuccess:()=>{Z({message:`Removed ${i} from thread`,tone:`success`})},onError:e=>{Z({message:`Remove failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},a=(e,t)=>{let r=e.edge.role===`origin`,o=Math.round(e.edge.confidence*100),s=e.edge.source===`manual`?`added manually`:`auto-linked via ${e.edge.source} at ${o}% confidence`,c=`${r?`Origin`:`Child`} session ${e.edge.session_id}, ${s}; click to open.`,l=r?`Origin: one of the seed sessions this thread grew from.`:`Child: a session linked under a parent.`,u=e.edge.project??null;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`group flex items-center gap-2 border-b border-line/50 hover:bg-bg-hover`,style:{paddingLeft:`${12+t*20}px`,paddingRight:`8px`},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n({session:e.edge.session_id,view:null,thread:null,project:u,msg:null,col:null}),className:`flex-1 flex items-center gap-2 py-2 text-sm text-left min-w-0`,title:c,children:[(0,W.jsx)(`span`,{className:Q(`text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded shrink-0`,r?`bg-accent/20 text-accent`:`bg-bg-hover text-fg-muted`),title:l,children:e.edge.role}),(0,W.jsx)(`span`,{className:`truncate`,children:Hd(e.edge)})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(e.edge.session_id,e.edge.alias??null)},className:`text-[10px] text-fg-muted hover:text-role-user opacity-0 group-hover:opacity-100 transition-opacity shrink-0`,title:`remove from this thread (session itself is preserved)`,"aria-label":`remove from thread`,children:`remove`})]}),e.children.map(e=>a(e,t+1))]},e.edge.session_id)};return(0,W.jsx)(`div`,{className:`border border-line rounded`,children:t.map(e=>a(e,0))})}function Xd({x:e,y:t,sessionId:n,onRename:r,onRemoveFromThread:i,onClose:a}){let o=(0,U.useRef)(null);(0,U.useEffect)(()=>{let e=e=>{o.current&&!o.current.contains(e.target)&&a()},t=e=>{e.key===`Escape`&&a()};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[a]);let[s,c]=(0,U.useState)(`idle`),l=Math.min(e,window.innerWidth-240-8),u=Math.min(t,window.innerHeight-200-8),d=async e=>{if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}};return(0,W.jsxs)(`div`,{ref:o,role:`menu`,"aria-label":`thread node actions`,className:`fixed z-50 bg-bg-elevated border border-line rounded-lg shadow-xl py-1 text-xs`,style:{left:l,top:u,width:240},children:[(0,W.jsxs)(`div`,{className:`px-3 pt-1 pb-1 text-[10px] uppercase tracking-wider text-fg-muted`,children:[`session `,n.slice(0,8)]}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:async()=>{c(await d(n)?`copied`:`failed`),setTimeout(a,700)},className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:s===`copied`?`Copied!`:s===`failed`?`Copy failed — try again`:`Copy session ID`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted font-mono`,children:n})]}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{r(),a()},className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Rename session`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:`set an alias that overrides the auto-title`})]}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{a(),i()},className:`block w-full text-left px-3 py-1.5 hover:bg-role-user/10`,children:[(0,W.jsx)(`div`,{className:`text-role-user`,children:`Remove from thread`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:`unlinks this session; the session itself is preserved`})]})]})}function Zd({enabled:e,contentWidth:t,contentHeight:n,children:r,onScaleChange:i}){let a=(0,U.useRef)(null),[o,s]=(0,U.useState)(1);return(0,U.useEffect)(()=>{if(!e){s(1),i?.(1);return}let r=a.current?.parentElement;if(!r)return;let o=()=>{let e=r.clientWidth,a=r.clientHeight;if(e<=0||a<=0||t<=0||n<=0)return;let o=Math.min(e/t,a/n,1);s(o),i?.(o)};o();let c=new ResizeObserver(o);return c.observe(r),()=>c.disconnect()},[e,t,n,i]),e?(0,W.jsx)(`div`,{ref:a,style:{width:t*o,height:n*o,position:`relative`},children:(0,W.jsx)(`div`,{style:{transform:`scale(${o})`,transformOrigin:`top left`,width:t,height:n},children:r})}):(0,W.jsx)(W.Fragment,{children:r})}var Qd=`#f97316`,$d=`#fb923c`,ef=`#4a4a52`;function tf(){return(0,W.jsx)(`span`,{className:`inline-flex items-center justify-center w-7 h-7 align-[-6px] rounded border-2 text-base font-semibold leading-none`,style:{color:Qd,borderColor:Qd},"aria-label":`sync`,children:`⟳`})}function nf(){return(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-0 border border-line rounded-lg overflow-hidden`,children:[(0,W.jsx)(rf,{index:`01`,kicker:`Before`,title:`Chats live in many terminals`,description:`Every Claude conversation in an IDE terminal is its own session. Most users juggle dozens, scattered across repos and windows.`,children:(0,W.jsx)(af,{})}),(0,W.jsx)(rf,{index:`02`,kicker:`Action`,title:`Click ⟳ on the repo`,description:`Sync grabs every session whose terminal is still open in that repo's cwd, then infers parent and child links from time, file overlap, and authorship.`,accent:!0,children:(0,W.jsx)(of,{})}),(0,W.jsx)(rf,{index:`03`,kicker:`After`,title:`One thread, ready to pipe`,description:`The whole bundle becomes a single thread you can hand back to Claude as a context-rich prompt. Re-running adds new actives, never duplicates.`,children:(0,W.jsx)(sf,{})})]})}function rf({index:e,kicker:t,title:n,description:r,accent:i,children:a}){return(0,W.jsxs)(`div`,{className:`relative bg-bg-hover/20 p-5 flex flex-col gap-3 border-r border-line last:border-r-0`,style:i?{background:`rgba(249, 115, 22, 0.06)`}:void 0,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,W.jsx)(`span`,{className:`text-3xl font-semibold tabular-nums leading-none tracking-tight`,style:{color:i?Qd:ef},children:e}),(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.2em] text-fg-muted`,children:t})]}),(0,W.jsx)(`div`,{className:`aspect-[3/2] w-full rounded border border-line bg-bg-elevated/40 flex items-center justify-center overflow-hidden`,children:a}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-sm font-semibold text-fg mb-1 leading-snug`,children:n}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:r})]})]})}function af(){return(0,W.jsx)(`svg`,{viewBox:`0 0 240 160`,className:`w-full h-full`,role:`img`,"aria-label":`Before: scattered terminals`,children:[[20,30],[110,25],[180,50],[40,90],[130,95],[195,110],[70,130]].map(([e,t],n)=>(0,W.jsxs)(`g`,{transform:`translate(${e},${t})`,children:[(0,W.jsx)(`rect`,{width:`44`,height:`22`,rx:`2`,fill:`none`,stroke:ef,strokeWidth:`1.25`}),(0,W.jsx)(`circle`,{cx:`6`,cy:`6`,r:`1.4`,fill:$d}),(0,W.jsx)(`line`,{x1:`11`,y1:`13`,x2:`38`,y2:`13`,stroke:ef,strokeWidth:`0.8`}),(0,W.jsx)(`line`,{x1:`11`,y1:`17`,x2:`30`,y2:`17`,stroke:ef,strokeWidth:`0.8`})]},n))})}function of(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 240 160`,className:`w-full h-full`,role:`img`,"aria-label":`Action: terminals collapse into a thread`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`arr`,viewBox:`0 0 10 10`,refX:`9`,refY:`5`,markerWidth:`5`,markerHeight:`5`,orient:`auto`,children:(0,W.jsx)(`path`,{d:`M0,0 L10,5 L0,10 Z`,fill:Qd})})}),[[20,30],[20,70],[20,110],[20,130]].map(([e,t],n)=>(0,W.jsxs)(`g`,{transform:`translate(${e},${t})`,children:[(0,W.jsx)(`rect`,{width:`44`,height:`20`,rx:`2`,fill:`none`,stroke:ef,strokeWidth:`1.25`}),(0,W.jsx)(`circle`,{cx:`6`,cy:`6`,r:`1.4`,fill:$d}),(0,W.jsx)(`line`,{x1:`11`,y1:`13`,x2:`38`,y2:`13`,stroke:ef,strokeWidth:`0.8`})]},n)),[40,80,120,140].map((e,t)=>(0,W.jsx)(`line`,{x1:`68`,y1:e,x2:`150`,y2:`80`,stroke:Qd,strokeWidth:`1`,strokeDasharray:`3 3`,markerEnd:`url(#arr)`,opacity:`0.85`},t)),(0,W.jsx)(`circle`,{cx:`170`,cy:`80`,r:`22`,fill:`none`,stroke:Qd,strokeWidth:`2`}),(0,W.jsx)(`text`,{x:`170`,y:`85`,textAnchor:`middle`,fontSize:`20`,fill:Qd,fontFamily:`system-ui`,fontWeight:`600`,children:`⟳`})]})}function sf(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 240 160`,className:`w-full h-full`,role:`img`,"aria-label":`After: thread tree`,children:[(0,W.jsx)(`circle`,{cx:`120`,cy:`32`,r:`9`,fill:Qd}),[60,120,180].map((e,t)=>(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`line`,{x1:`120`,y1:`40`,x2:e,y2:`80`,stroke:$d,strokeWidth:`1.5`}),(0,W.jsx)(`circle`,{cx:e,cy:`86`,r:`7`,fill:$d})]},t)),[[40,60],[80,60],[105,120],[135,120],[165,180],[195,180]].map(([e,t],n)=>(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`line`,{x1:t,y1:`92`,x2:e,y2:`128`,stroke:ef,strokeWidth:`1`}),(0,W.jsx)(`circle`,{cx:e,cy:`132`,r:`5`,fill:`none`,stroke:ef,strokeWidth:`1.25`})]},n))]})}function cf({kicker:e,value:t,detail:n}){return(0,W.jsxs)(`div`,{className:`bg-bg p-5`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-[0.2em] text-fg-muted mb-2`,children:e}),(0,W.jsx)(`div`,{className:`text-lg font-semibold text-fg mb-1`,children:t}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:n})]})}var lf=`#fb923c`,uf=`#f97316`;function df({projectId:e,projectName:t,onClose:n}){let r=G(),[i,a]=(0,U.useState)(`preflighting`),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null);(0,U.useEffect)(()=>{let t=!1;return a(`preflighting`),d(null),(async()=>{try{let n=await X.syncActivePreflight({project_id:e});if(t)return;s(n.plan),a(`review`)}catch(e){if(t)return;d(e instanceof Error?e.message:String(e)),a(`failed`)}})(),()=>{t=!0}},[e]),(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&i!==`applying`&&n()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i,n]);async function f(){a(`applying`),d(null);try{let n=await X.syncActiveApply({project_id:e});s(n.plan),l(n.result),a(`done`),r.invalidateQueries({queryKey:[`threads`]}),r.invalidateQueries({queryKey:[`thread-folders`]}),Z({message:n.result.added>0?`Added ${n.result.added} session${n.result.added===1?``:`s`}, set ${n.result.edges_set} edge${n.result.edges_set===1?``:`s`}.`:`Already up to date in ${t}.`,tone:`success`})}catch(e){d(e instanceof Error?e.message:String(e)),a(`failed`),Z({message:`Sync failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})}}let p=i===`review`&&o!==null&&o.candidates.length>0;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:e=>{e.target===e.currentTarget&&i!==`applying`&&n()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-line`,children:[(0,W.jsxs)(`div`,{className:`text-sm font-semibold text-fg flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:uf,boxShadow:`0 0 0 2px ${lf} inset`}}),`Sync active sessions in `,t]}),(0,W.jsx)(`button`,{type:`button`,onClick:n,disabled:i===`applying`,className:`text-xs text-fg-muted hover:text-fg disabled:opacity-40 disabled:cursor-not-allowed`,children:`close`})]}),(0,W.jsxs)(`div`,{className:`p-5 space-y-4 text-xs`,children:[(0,W.jsxs)(`details`,{className:`group`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer select-none flex items-center justify-between text-[10px] uppercase tracking-[0.2em] text-fg-muted hover:text-fg py-1`,children:[(0,W.jsx)(`span`,{children:`How this works`}),(0,W.jsx)(`span`,{className:`text-fg-muted group-open:rotate-90 transition-transform inline-block`,children:`›`})]}),(0,W.jsxs)(`div`,{className:`mt-3`,children:[(0,W.jsx)(nf,{}),(0,W.jsxs)(`div`,{className:`mt-3 grid grid-cols-3 gap-px bg-line border border-line rounded overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`bg-bg p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-[0.18em] text-fg-muted`,children:`Scope`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg font-semibold mt-0.5 truncate`,title:t,children:t})]}),(0,W.jsxs)(`div`,{className:`bg-bg p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-[0.18em] text-fg-muted`,children:`Re-runs`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg font-semibold mt-0.5`,children:`Same thread`})]}),(0,W.jsxs)(`div`,{className:`bg-bg p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-[0.18em] text-fg-muted`,children:`Manual edges`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg font-semibold mt-0.5`,children:`Preserved`})]})]})]})]}),i===`preflighting`&&(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30 flex items-center gap-3 text-fg-muted`,children:[(0,W.jsx)(`div`,{className:`h-3 w-3 rounded-full border-2 border-t-transparent animate-spin`,style:{borderColor:lf,borderTopColor:`transparent`}}),(0,W.jsxs)(`span`,{children:[`Looking at active sessions in `,t,`…`]})]}),(i===`review`||i===`applying`||i===`done`)&&o&&(0,W.jsx)(ff,{plan:o,applying:i===`applying`,done:i===`done`,result:c}),i===`failed`&&(0,W.jsxs)(`div`,{className:`p-3 rounded border border-role-user/40 bg-role-user/10 text-role-user`,children:[(0,W.jsx)(`div`,{className:`font-semibold mb-1`,children:`Sync failed`}),(0,W.jsx)(`div`,{children:u??`Unknown error`})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-line`,children:[i===`review`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 rounded border border-line hover:bg-bg-hover`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:f,disabled:!p,className:`text-xs px-3 py-1.5 rounded text-bg disabled:opacity-40 disabled:cursor-not-allowed font-medium`,style:{background:uf},children:o&&o.proposed_additions.length>0?`Apply (${o.proposed_additions.length} new session${o.proposed_additions.length===1?``:`s`})`:`Apply`})]}),i===`applying`&&(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted flex items-center gap-2`,children:[(0,W.jsx)(`div`,{className:`h-3 w-3 rounded-full border-2 border-t-transparent animate-spin`,style:{borderColor:lf,borderTopColor:`transparent`}}),(0,W.jsx)(`span`,{children:`Writing thread + edges…`})]}),(i===`done`||i===`failed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 rounded text-bg font-medium`,style:{background:uf},children:`Close`})]})]})})}function ff({plan:e,applying:t,done:n,result:r}){return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(mf,{plan:e}),e.warnings.length>0&&(0,W.jsx)(`div`,{className:`p-2 rounded border border-role-tool/40 bg-role-tool/10 text-role-tool`,children:e.warnings.map((e,t)=>(0,W.jsxs)(`div`,{children:[`⚠ `,e]},t))}),e.candidates.length===0?(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`No live Claude sessions touched in `,pf(e),` within the rolling window. Open a terminal in this repo and run`,` `,(0,W.jsx)(`code`,{className:`text-fg bg-bg-elevated px-1 py-0.5 rounded`,children:`claude`}),` `,`to get on the list.`]}):(0,W.jsx)(hf,{plan:e}),e.preserved_manual_edges.length>0&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px]`,children:[e.preserved_manual_edges.length,` manual edge`,e.preserved_manual_edges.length===1?``:`s`,` will be preserved across this sync.`]}),n&&r&&(0,W.jsxs)(`div`,{className:`p-3 rounded text-fg`,style:{background:`rgba(138, 120, 255, 0.10)`,borderColor:lf,borderWidth:1,borderStyle:`solid`},children:[(0,W.jsx)(`div`,{className:`font-medium mb-0.5`,children:`Applied.`}),(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`Added `,r.added,` session`,r.added===1?``:`s`,`, set `,r.edges_set,` parent edge`,r.edges_set===1?``:`s`,`, preserved `,r.preserved_manual,` manual edge`,r.preserved_manual===1?``:`s`,`.`]})]}),t&&(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Writing the thread, sessions, and inferred parent edges…`})]})}function pf(e){return e.project.name}function mf({plan:e}){return(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`Thread`}),(0,W.jsx)(`span`,{className:`text-fg font-medium truncate`,children:e.thread.name}),(0,W.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wider`,style:{background:e.thread.exists?`rgba(138, 120, 255, 0.15)`:`rgba(179, 168, 255, 0.20)`,color:lf},children:e.thread.exists?`reusing`:`new`})]}),e.thread.exists&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] mt-1`,children:[e.thread.existing_session_count,` session`,e.thread.existing_session_count===1?``:`s`,` already in this thread. Re-syncing only adds the ones that are missing.`]})]})}function hf({plan:e}){let t=new Set(e.candidates.map(e=>e.session_id)),n=new Map;for(let t of e.proposed_edges)n.set(t.child_id,t);let r=new Set(e.proposed_additions.map(e=>e.session_id));return(0,W.jsxs)(`div`,{className:`border border-line rounded`,children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line text-fg-muted text-[11px] uppercase tracking-wider flex items-center justify-between`,children:[(0,W.jsx)(`span`,{children:`Candidates`}),(0,W.jsxs)(`span`,{children:[e.candidates.length,` session`,e.candidates.length===1?``:`s`,` ·`,` `,e.proposed_additions.length,` new`]})]}),(0,W.jsx)(`ul`,{className:`divide-y divide-line/60`,children:e.candidates.map(e=>{let i=n.get(e.session_id),a=!!i&&t.has(i.parent_id),o=r.has(e.session_id);return(0,W.jsxs)(`li`,{className:`px-3 py-2 flex flex-col gap-0.5`,style:{paddingLeft:a?28:12,borderLeft:a?`2px solid ${lf}40`:`2px solid transparent`},children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wider shrink-0`,style:{background:o?`rgba(179, 168, 255, 0.20)`:`rgba(74, 74, 82, 0.25)`,color:o?lf:`#888`},children:o?`new`:`keep`}),(0,W.jsx)(`span`,{className:`font-mono text-fg-muted shrink-0`,children:e.session_id.slice(0,8)}),(0,W.jsx)(`span`,{className:`truncate text-fg`,children:gf(e)})]}),i&&t.has(i.parent_id)&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] flex items-baseline gap-2 ml-1`,children:[(0,W.jsx)(`span`,{children:`parent`}),(0,W.jsx)(`span`,{className:`font-mono`,children:i.parent_id.slice(0,8)}),(0,W.jsxs)(`span`,{className:`font-mono tabular-nums`,style:{color:lf},children:[`[conf `,i.confidence.toFixed(2),`]`]}),(0,W.jsx)(`span`,{className:`truncate`,children:i.reasons.join(` · `)})]})]},e.session_id)})})]})}function gf(e){return e.alias||e.auto_title||(e.first_user_message?e.first_user_message.replace(/\s+/g,` `).slice(0,80):`(no title)`)}function _f(){let[e,t]=Cn(),n=dl(),r=e.thread,i=fl(r),a=ml(),o=hl(),s=n.data?.threads??[],c=i.data?.thread??null,[l,u]=(0,U.useState)(``),d=`(no project yet)`,f=(0,U.useMemo)(()=>{let e=new Map;for(let t of s){let n=t.project??d,r=e.get(n);r||(r=[],e.set(n,r)),r.push(t)}return Array.from(e.entries()).sort(([e],[t])=>e===d?1:t===d?-1:e.localeCompare(t))},[s]),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=`threads.leftPaneWidth`,[v,y]=(0,U.useState)(()=>{if(typeof window>`u`)return 288;let e=window.localStorage.getItem(_),t=e?Number(e):NaN;return Number.isFinite(t)?Math.min(600,Math.max(200,t)):288}),b=`threads.leftPaneCollapsed`,[x,S]=(0,U.useState)(()=>typeof window>`u`?!1:window.localStorage.getItem(b)===`1`),C=()=>{S(e=>{let t=!e;return typeof window<`u`&&window.localStorage.setItem(b,t?`1`:`0`),t})},w=(0,U.useRef)(null),T=e=>{e.preventDefault(),w.current={startX:e.clientX,startWidth:v},e.currentTarget.setPointerCapture(e.pointerId)},E=e=>{if(!w.current)return;let t=w.current.startWidth+(e.clientX-w.current.startX);y(Math.min(600,Math.max(200,t)))},D=e=>{w.current&&(w.current=null,e.currentTarget.releasePointerCapture(e.pointerId),typeof window<`u`&&window.localStorage.setItem(_,String(v)))},O=()=>{y(288),typeof window<`u`&&window.localStorage.setItem(_,`288`)},k=`threads.expandedFolders`,[A,j]=(0,U.useState)(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(k);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}),M=e=>{j(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),typeof window<`u`&&window.localStorage.setItem(k,JSON.stringify(Array.from(n))),n})},[ee,N]=(0,U.useState)(null),te=K({queryKey:[`projects`],queryFn:()=>X.projects(),staleTime:6e4}),P=(0,U.useMemo)(()=>{let e=new Map;for(let t of te.data??[])e.set(t.name,t.id);return e},[te.data]),F=gl(),I=_l(),L=vl(),R=F.data?.folders??[],[z,B]=(0,U.useState)(null),[V,ne]=(0,U.useState)(null),[re,ie]=(0,U.useState)(null),[H,ae]=(0,U.useState)(null),oe=yl(),se=()=>{ie(null),ae(null)},ce=(e,t)=>{if(re?.kind!==`folder`||re.parentFolderId!==e.parent_folder_id||re.projectScope!==e.project_scope)return;if(re.id===e.id){se();return}let n=R.filter(t=>t.parent_folder_id===e.parent_folder_id&&t.project_scope===e.project_scope).sort((e,t)=>e.sort_order-t.sort_order||e.name.localeCompare(t.name)).map(e=>e.id).filter(e=>e!==re.id),r=n.indexOf(e.id);if(r<0){se();return}let i=t===`before`?r:r+1,a=[...n.slice(0,i),re.id,...n.slice(i)];se(),oe.mutate({parentFolderId:e.parent_folder_id,projectScope:e.project_scope,orderedIds:a},{onError:e=>Z({message:`Reorder failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},le=e=>{if(re?.kind!==`thread`)return;if(e.project_scope!==null&&re.project!==e.project_scope){se(),Z({message:`Can't move thread: it belongs to ${re.project??`no project`} but folder is in ${e.project_scope}`,tone:`error`});return}let t=re.id;se(),o.mutate({id:t,patch:{folder_id:e.id}},{onError:e=>Z({message:`Move failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},ue=(e,t)=>{let n=t.trim();n&&o.mutate({id:e,patch:{name:n}},{onSuccess:()=>{Z({message:`Renamed thread to "${n}"`,tone:`success`})},onError:e=>{Z({message:`Rename failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})};return(0,W.jsxs)(`div`,{className:`flex-1 flex min-h-0`,children:[x?(0,W.jsxs)(`aside`,{className:`pane shrink-0 w-10 border-r border-line flex flex-col items-center py-3 gap-3`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:C,"aria-label":`Expand threads pane`,title:`Expand threads pane`,className:`w-7 h-7 rounded border border-line text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-sm font-semibold leading-none transition-colors`,children:`»`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({thread:null}),"aria-label":`Show threads overview`,title:`Show the threads overview`,className:`w-7 h-7 rounded-full border-2 border-fg-muted text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-sm font-bold leading-none transition-colors`,children:`?`}),(0,W.jsx)(`span`,{className:`text-base`,title:`Threads`,style:{writingMode:`vertical-rl`},children:`🧵`}),(0,W.jsx)(`span`,{className:`text-[11px] font-semibold tabular-nums text-fg-muted`,title:`${s.length} thread${s.length===1?``:`s`}`,children:s.length})]}):(0,W.jsxs)(`aside`,{className:`pane shrink-0`,style:{width:`${v}px`},children:[(0,W.jsxs)(`div`,{className:`pane-header`,children:[(0,W.jsx)(`span`,{className:`text-base`,children:`🧵 Threads`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({thread:null}),"aria-label":`Show how threads work`,className:`w-8 h-8 rounded-full border-2 border-fg-muted text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-lg font-bold leading-none transition-colors`,title:`Show the threads overview (deselects the current thread)`,children:`?`}),(0,W.jsx)(`span`,{className:`text-base font-semibold tabular-nums`,children:s.length}),(0,W.jsx)(`button`,{type:`button`,onClick:C,"aria-label":`Collapse threads pane`,title:`Collapse threads pane (full-width thread view)`,className:`w-7 h-7 rounded border border-line text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-sm font-semibold leading-none transition-colors`,children:`«`})]})]}),(0,W.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let n=l.trim();n&&a.mutate({name:n},{onSuccess:e=>{u(``),t({thread:e.thread.id})}})},className:`px-3 pt-2 pb-3 border-b border-line flex gap-2`,children:[(0,W.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),placeholder:`New thread name`,className:`flex-1 px-2 py-1 bg-bg-elevated border border-line rounded text-sm`}),(0,W.jsx)(`button`,{type:`submit`,disabled:a.isPending||!l.trim(),className:`px-2 py-1 rounded bg-accent text-bg text-xs font-medium disabled:opacity-50`,title:`Create a new empty thread with this name; add sessions to it afterwards.`,children:`Create`})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[n.isLoading&&(0,W.jsx)(`div`,{className:`px-4 py-6 text-xs text-fg-muted`,children:`Loading threads…`}),s.length===0&&!n.isLoading&&(0,W.jsx)(`div`,{className:`px-4 py-6 text-xs text-fg-muted italic`,children:`No threads yet. A thread is one unit of work spanning many sessions (planning session plus its children). Create one with the form above, then add sessions to it from any session's transcript header.`}),f.map(([e,n])=>{let i=!A.has(e),a=e===d?null:e,s=R.filter(e=>e.project_scope===a&&e.parent_folder_id===null),c=n.filter(e=>!e.folder_id),l=H&&`project`in H&&H.project===e;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:Q(`flex items-center border-t border-line first:border-t-0`,l&&`bg-accent/15 ring-1 ring-accent/40`),onDragOver:t=>{re?.kind===`thread`&&(t.preventDefault(),t.dataTransfer.dropEffect=`move`,ae({project:e,into:!0}))},onDragLeave:()=>{l&&ae(null)},onDrop:e=>{if(re?.kind!==`thread`)return;e.preventDefault();let t=re.id;se(),o.mutate({id:t,patch:{folder_id:null}},{onError:e=>Z({message:`Move failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>M(e),className:`flex-1 flex items-center gap-2 px-3 py-2 text-sm font-semibold uppercase tracking-wider text-fg-muted hover:bg-bg-hover`,"aria-expanded":!i,title:`${n.length} thread${n.length===1?``:`s`} in ${e}`,children:[(0,W.jsx)(`span`,{className:`inline-block w-3 text-center text-fg-muted`,children:i?`▶`:`▼`}),(0,W.jsx)(`span`,{className:`flex-1 text-left truncate`,children:e}),(0,W.jsx)(`span`,{className:`text-sm font-semibold tabular-nums text-fg-muted`,children:n.length})]}),e!==d&&P.has(e)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{let t=P.get(e);t!==void 0&&N({id:t,name:e})},className:`px-2.5 py-1.5 text-xl leading-none hover:bg-bg-hover rounded`,style:{color:`#f97316`},title:`Sync currently active Claude sessions in ${e} into a thread (Captain Code Pattern)`,"aria-label":`Sync active sessions for ${e}`,children:`⟳`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{B(e),i&&M(e)},className:`px-2.5 py-1 text-2xl leading-none text-fg-muted hover:text-accent hover:bg-bg-hover rounded`,title:`Create a new subfolder inside ${e}`,"aria-label":`Add subfolder to ${e}`,children:`+`})]}),z===e&&(0,W.jsx)(Df,{project:e,onCommit:t=>{B(null);let n=t.trim();n&&I.mutate({name:n,projectScope:e===d?null:e,parentFolderId:null},{onError:e=>Z({message:`Subfolder create failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},onCancel:()=>B(null)}),!i&&(0,W.jsxs)(W.Fragment,{children:[s.map(e=>(0,W.jsx)(Ef,{folder:e,depth:1,allSubfolders:R,threadsInProject:n,threadId:r,renamingThreadId:h,onSelectThread:e=>t({thread:e}),onThreadContextMenu:(e,t,n)=>m({threadId:e.id,name:e.name,x:t,y:n}),onCommitRename:(e,t)=>{g(null),t.trim()&&t.trim()!==e.name&&ue(e.id,t)},onCancelRename:()=>g(null),onDeleteSubfolder:e=>ne(e),confirmingDeleteId:V,onConfirmDelete:e=>{ne(null),L.mutate(e,{onError:e=>Z({message:`Delete failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},onCancelDelete:()=>ne(null),drag:re,setDrag:ie,dropHint:H,setDropHint:ae,onReorderDrop:ce,onFileThreadIntoFolder:le},e.id)),c.map(e=>(0,W.jsx)(vf,{thread:e,active:e.id===r,renaming:h===e.id,onSelect:()=>t({thread:e.id}),onContextMenu:(t,n)=>m({threadId:e.id,name:e.name,x:t,y:n}),onCommitRename:t=>{g(null),t.trim()&&t.trim()!==e.name&&ue(e.id,t)},onCancelRename:()=>g(null),onDragStart:()=>ie({kind:`thread`,id:e.id,project:e.project??null}),onDragEnd:se},e.id))]})]},e)})]})]}),!x&&(0,W.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize threads list`,title:`Drag to resize · double-click to reset`,onPointerDown:T,onPointerMove:E,onPointerUp:D,onDoubleClick:O,className:`w-1 shrink-0 cursor-col-resize bg-line hover:bg-accent transition-colors`}),(0,W.jsx)(`section`,{className:`flex-1 min-w-0 overflow-y-auto`,children:c?(0,W.jsx)(bf,{thread:c,onPatch:o.mutate}):r&&i.isLoading?(0,W.jsx)(`div`,{className:`p-10 text-sm text-fg-muted`,children:`Loading thread…`}):r&&!i.isLoading?(0,W.jsxs)(`div`,{className:`p-10 text-sm text-fg-muted max-w-2xl space-y-3`,children:[(0,W.jsx)(`div`,{className:`text-fg font-semibold`,children:`That thread isn’t here.`}),(0,W.jsx)(`div`,{children:`It may have been archived or deleted. Pick another from the left, or`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({thread:null}),className:`text-accent hover:underline`,children:`show the threads overview →`})]}):(0,W.jsxs)(`div`,{className:`p-10 max-w-4xl`,children:[(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-[0.2em] text-fg-muted mb-3`,children:`Threads / The Captain Code Pattern`}),(0,W.jsxs)(`h1`,{className:`text-4xl font-semibold text-fg leading-[1.05] mb-3 tracking-tight`,children:[`Three steps. One thread.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`span`,{style:{color:`#f97316`},children:`Every session you have open, in one place.`})]}),(0,W.jsxs)(`p`,{className:`text-base text-fg-muted leading-relaxed max-w-2xl mb-10`,children:[`You probably have 5 to 50 Claude chats running across your IDE windows. Sync turns that mess into a tree you can hand back to Claude. Below is what happens, in order, when you click `,(0,W.jsx)(tf,{}),` on any repo.`]}),(0,W.jsx)(nf,{}),(0,W.jsxs)(`div`,{className:`mt-12 grid grid-cols-3 gap-px bg-line border border-line rounded-lg overflow-hidden`,children:[(0,W.jsx)(cf,{kicker:`Scope`,value:`Per-repo`,detail:`Always cwd-bound. Sync from audio-hooks-studio-F never touches ClaudeRecall.`}),(0,W.jsx)(cf,{kicker:`Re-runs`,value:`Same thread`,detail:`No daily rollover. The date in the name is the creation date, not a key.`}),(0,W.jsx)(cf,{kicker:`Manual edges`,value:`Preserved`,detail:`Anything you wired by hand survives every sync. Only auto edges recompute.`})]}),(0,W.jsxs)(`div`,{className:`mt-10 flex items-center gap-4 text-xs text-fg-muted`,children:[(0,W.jsx)(`code`,{className:`px-2 py-1 rounded bg-bg-elevated border border-line text-fg`,children:`recall threads sync`}),(0,W.jsx)(`span`,{children:`does the same thing as the button. Add`}),(0,W.jsx)(`code`,{className:`px-1.5 py-0.5 rounded bg-bg-elevated border border-line text-fg`,children:`--preflight`}),(0,W.jsx)(`span`,{children:`to dry-run.`})]})]})}),p&&(()=>{let e=s.find(e=>e.id===p.threadId),t=e?.project??null,n=R.filter(e=>e.project_scope===t||e.project_scope===null);return(0,W.jsx)(Sf,{x:p.x,y:p.y,threadName:p.name,movableFolders:n,currentFolderId:e?.folder_id??null,onMoveToFolder:e=>{o.mutate({id:p.threadId,patch:{folder_id:e}},{onSuccess:()=>{let t=e?R.find(t=>t.id===e)?.name??`subfolder`:`project root`;Z({message:`Moved "${p.name}" to ${t}`,tone:`success`})},onError:e=>Z({message:`Move failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})})},onRename:()=>{g(p.threadId),m(null)},onClose:()=>m(null)})})(),ee&&(0,W.jsx)(df,{projectId:ee.id,projectName:ee.name,onClose:()=>N(null)})]})}function vf({thread:e,active:t,renaming:n,onSelect:r,onContextMenu:i,onCommitRename:a,onCancelRename:o,onDragStart:s,onDragEnd:c}){let[l,u]=(0,U.useState)(e.name);return(0,U.useEffect)(()=>{n&&u(e.name)},[n,e.name]),n?(0,W.jsxs)(`div`,{className:Q(`w-full text-left px-3 py-2 border-b border-line/50`,t&&`bg-accent/10`),children:[(0,W.jsx)(`input`,{autoFocus:!0,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),a(l)):e.key===`Escape`&&(e.preventDefault(),o())},onBlur:()=>a(l),"aria-label":`Rename thread`,className:`w-full px-2 py-1 bg-bg-elevated border border-accent rounded text-sm font-medium outline-none`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted mt-1`,children:`Enter to save, Esc to cancel`})]}):(0,W.jsxs)(`button`,{type:`button`,onClick:r,draggable:!!s,onDragStart:t=>{s&&(t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`application/x-recall-thread`,e.id),s())},onDragEnd:c,onContextMenu:e=>{e.preventDefault(),i(e.clientX,e.clientY)},className:Q(`w-full text-left px-3 py-2 border-b border-line/50 hover:bg-bg-hover`,t&&`bg-accent/10`),title:`Open the "${e.name}" thread detail view with its session graph (right-click to rename).`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`span`,{className:`text-[13px] font-medium truncate`,title:e.name,children:e.name}),(0,W.jsx)(`span`,{className:`text-[11px] text-fg-muted shrink-0 tabular-nums`,title:`${e.session_count} session${e.session_count===1?``:`s`} currently linked into this thread.`,children:e.session_count})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-1`,children:[(0,W.jsx)(yf,{thread:e}),(0,W.jsxs)(`span`,{className:`text-[11px] text-fg-muted truncate flex-1 min-w-0`,children:[e.origin_count,` origin`,e.origin_count===1?``:`s`,` ·`,` `,e.closed_at?`closed`:`open`,e.summary?` · ${e.summary}`:``]})]})]})}function yf({thread:e}){return!e.project&&e.session_count===0?(0,W.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-bg-elevated text-fg-muted/70 border border-line`,title:`No sessions yet — add a session from any session header to give this thread a project origin.`,children:`empty`}):e.project_count>1?(0,W.jsxs)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-bg-elevated text-accent border border-accent/30 cursor-help shrink-0`,title:`Cross-project thread: spans ${e.project_count} projects (dominant: ${e.project??`unknown`}).`,children:[e.project_count,` repos`]}):e.project?(0,W.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-bg-elevated text-fg-muted border border-line truncate max-w-[120px] shrink-0`,title:`All sessions in this thread are from project "${e.project}".`,children:e.project}):null}function bf({thread:e,onPatch:t}){let[,n]=Cn(),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(e.name);(0,U.useEffect)(()=>{r||o(e.name)},[e.name,r]);let s=()=>{let n=a.trim();if(i(!1),!n||n===e.name){o(e.name);return}t({id:e.id,patch:{name:n}}),Z({message:`Renamed thread to "${n}"`,tone:`success`})},c=()=>{i(!1),o(e.name)};return(0,W.jsxs)(`div`,{className:`p-6 space-y-6`,children:[(0,W.jsxs)(`header`,{className:`space-y-1 max-w-3xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[r?(0,W.jsx)(`input`,{autoFocus:!0,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),s()):e.key===`Escape`&&(e.preventDefault(),c())},onBlur:s,"aria-label":`Rename thread`,className:`text-2xl font-semibold bg-bg-elevated border border-accent rounded px-2 py-0.5 outline-none flex-1`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h1`,{className:`text-2xl font-semibold cursor-text`,onDoubleClick:()=>i(!0),title:`Double-click (or use the pencil button) to rename this thread.`,children:e.name}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(!0),className:`text-xs text-fg-muted hover:text-accent px-1.5 py-0.5 rounded border border-transparent hover:border-line`,title:`Rename this thread`,"aria-label":`Rename thread`,children:`✎`})]}),(0,W.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[e.session_count,` session`,e.session_count===1?``:`s`,` ·`,` `,e.closed_at?`closed`:`open`]})]}),e.summary&&(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e.summary}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-1`,children:[e.closed_at?(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({id:e.id,patch:{reopen:!0}}),className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover`,title:`Mark this thread as active again so new sessions can be added.`,children:`Reopen`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({id:e.id,patch:{close:!0}}),className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover`,title:`Mark this thread as finished; sessions stay linked and you can reopen it at any time.`,children:`Close thread`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{confirm(`Archive "${e.name}"? You can still find it with Show archived.`)&&(t({id:e.id,patch:{archive:!0}}),n({thread:null}))},className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover`,title:`Hide this thread from the main list; it stays in the database and reappears under Show archived.`,children:`Archive`}),(0,W.jsx)(Cf,{thread:e})]})]}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2 max-w-3xl`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold uppercase tracking-wider text-fg-muted`,children:`Sessions in this thread`}),(0,W.jsx)(xf,{threadId:e.id,existingIds:new Set(e.edges.map(e=>e.session_id))})]}),e.edges.length===0?(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted p-3 border border-line rounded max-w-3xl space-y-2`,children:[(0,W.jsx)(`div`,{className:`italic`,children:`No sessions in this thread yet. Two ways to add:`}),(0,W.jsxs)(`ol`,{className:`list-decimal pl-5 space-y-1 not-italic`,children:[(0,W.jsxs)(`li`,{children:[`Use the `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`+ Add session`}),` `,`button above to search and link any session.`]}),(0,W.jsxs)(`li`,{children:[`Open any session from the sidebar and click`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`+ Add to thread`}),` in its transcript header.`]})]})]}):(0,W.jsx)(`div`,{"data-share-capture":`thread-graph`,"data-share-capture-thread-id":e.id,children:(0,W.jsx)(Kd,{thread:e})})]}),(0,W.jsxs)(`section`,{className:`rounded border border-line bg-bg-elevated p-3 text-xs text-fg-muted space-y-1 max-w-3xl`,children:[(0,W.jsx)(`div`,{className:`font-medium text-fg text-sm`,children:`How Threads work`}),(0,W.jsx)(`p`,{children:`A thread is a DAG (not a tree). It can have multiple origins. A session can belong to multiple threads. Manual edges are always authoritative. Auto-detected edges (v0.7 Pro) will show up with a confidence score and will always be undoable.`}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:`Tip:`}),` pipe a whole thread back into Claude Code with `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[`recall context thread:`,e.id.slice(0,8)]}),`(CLI command landing in v0.15a.2).`]})]})]})}function xf({threadId:e,existingIds:t}){let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(``),o=bl(),s=K({queryKey:[`sessions`,{limit:500}],queryFn:()=>X.sessions({limit:500}),enabled:n,staleTime:3e4}),c=s.data??[],l=(0,U.useMemo)(()=>{let e=i.trim().toLowerCase(),n=c.filter(e=>!t.has(e.id));return e?n.filter(t=>[t.alias??``,t.first_user_message??``,t.project??``,t.id].join(` `).toLowerCase().includes(e)).slice(0,10):n.slice(0,10)},[c,t,i]);return n?(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:i,onChange:e=>a(e.target.value),placeholder:`search sessions by alias, project, or first message`,className:`text-xs bg-bg-elevated border border-line rounded px-2 py-1 w-80`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{r(!1),a(``)},className:`text-xs text-fg-muted hover:text-fg`,title:`Close the search without linking any session.`,children:`cancel`})]}),(0,W.jsxs)(`div`,{className:`absolute right-0 top-8 z-20 w-96 max-h-80 overflow-y-auto bg-bg border border-line rounded shadow-lg`,children:[s.isLoading&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`Loading sessions...`}),l.length===0&&!s.isLoading&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted italic`,children:i?`no matches`:`all sessions are already in this thread`}),l.map(t=>{let n=t.alias||t.first_user_message?.split(`
629
+ `,1)[0].trim();return t?t.length>jd?t.slice(0,jd):t:null}function Pd(e){let t=Md(e.alias),n=Md(e.autoTitle),r=Md(e.firstUserMessage),i=e.aliasSource??null,a=e.autoTitleSource??null;if(n&&a===`agent`)return n;if(t&&i===`manual`)return t;if(n&&(i===`auto`||t===null))return n;if(t)return t;if(n)return n;if(r){let e=Nd(r);if(e)return e}return e.sessionId.slice(0,8)}var Fd=260,Id=92,Ld=24,Rd=168,zd=24,Bd=900;function Vd(e,t=new Set,n=Rd){let r=Math.max(Ld,Math.round(n*Ld/Rd)),i=new Map;for(let t of e)i.set(t.session_id,t);let a=new Map,o=[];for(let t of e){let e=t.parent_session_id;if(e&&i.has(e)&&e!==t.session_id){let n=a.get(e)??[];n.push(t),a.set(e,n)}else o.push(t)}let s=(e,t)=>{let n=e.role===`origin`?0:1,r=t.role===`origin`?0:1;return n===r?e.added_at.localeCompare(t.added_at):n-r};o.sort(s);for(let e of a.values())e.sort(s);let c=new Map,l=new Set;function u(e){if(c.has(e))return c.get(e);if(l.has(e))return c.set(e,0),0;l.add(e);let t=a.get(e)??[],n=0;for(let e of t)n+=1+u(e.session_id);return l.delete(e),c.set(e,n),n}let d=new Map,f=new Set;function p(e){if(d.has(e))return d.get(e);if(f.has(e))return d.set(e,1),1;f.add(e);let n=t.has(e)?[]:a.get(e)??[],r=0;for(let e of n)r+=p(e.session_id);f.delete(e);let i=Math.max(1,r);return d.set(e,i),i}for(let e of o)p(e.session_id);let m=[],h=new Set,g=0;function _(e,i,o){if(h.has(e.session_id))return;h.add(e.session_id);let s=zd+(o+(d.get(e.session_id)??1)/2)*(Fd+r)-Fd/2,c=zd+i*n,l=a.get(e.session_id)??[],f=t.has(e.session_id);if(m.push({edge:e,x:s,y:c,depth:i,hasChildren:l.length>0,hiddenCount:f?u(e.session_id):0}),f)return;let p=o;for(let e of l){let t=d.get(e.session_id)??1;_(e,i+1,p),p+=t}}for(let e of o){let t=d.get(e.session_id)??1;_(e,0,g),g+=t}let v=new Map,y=0,b=0;for(let e of m)v.set(e.edge.session_id,e),e.x+Fd>y&&(y=e.x+Fd),e.y+Id>b&&(b=e.y+Id);return{nodes:m,byId:v,width:Math.max(y+zd,400),height:Math.max(b+zd,200)}}function Hd(e){return Pd({sessionId:e.session_id,alias:e.alias,autoTitle:e.auto_title,firstUserMessage:e.first_user_message,aliasSource:e.alias_source,autoTitleSource:e.auto_title_source})}var Ud={manual:`you linked this session to its parent yourself`,"plan-file":`both sessions reference the same plan or spec file`,"uuid-ref":`one session refers directly to the other by UUID`,"recall-context-ref":`one session was piped into the other via recall context`,semantic:`transcript content overlaps in meaning`,git:`the sessions share a git branch or commit range`,temporal:`the sessions ran close together on related work`};function Wd(e){let t=Math.round(e.confidence*100);return e.source===`manual`?`Manual link (${Ud.manual}).`:`Auto-linked via ${e.source} at ${t}% confidence (${Ud[e.source]}); 100% would mean manually linked.`}function Gd(e,t,n){let r=new Map;for(let e of n)r.set(e.session_id,e);let i=new Set,a=t;for(;a;){if(i.has(a))return!1;i.add(a);let t=r.get(a);if(!t)return!1;if(t.parent_session_id===e)return!0;a=t.parent_session_id}return!1}function Kd({thread:e}){let t=(0,U.useRef)(null),[n,r]=(0,U.useState)(1024);return(0,U.useEffect)(()=>{if(!t.current)return;let e=new ResizeObserver(e=>{for(let t of e)r(t.contentRect.width)});return e.observe(t.current),()=>e.disconnect()},[]),(0,W.jsx)(`div`,{ref:t,className:`w-full`,children:n>0&&n<Bd?(0,W.jsx)(Yd,{thread:e}):(0,W.jsx)(qd,{thread:e})})}function qd({thread:e}){let[,t]=Cn(),n=Sl(),r=xl(),i=Xc(),a=`threads.collapsed.${e.id}`,[o,s]=(0,U.useState)(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(a);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}),c=e=>{s(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),typeof window<`u`&&window.localStorage.setItem(a,JSON.stringify(Array.from(n))),n})},l=()=>{s(new Set),typeof window<`u`&&window.localStorage.removeItem(a)},[u,d]=(0,U.useState)(!1),f=(0,U.useRef)(1),[p,m]=(0,U.useState)(()=>{try{let e=localStorage.getItem(`recall.threadVSpacing`),t=e?parseInt(e,10):NaN;if(Number.isFinite(t)&&t>=100&&t<=900)return t}catch{}return 168});(0,U.useEffect)(()=>{try{localStorage.setItem(`recall.threadVSpacing`,String(p))}catch{}},[p]);let{nodes:h,byId:g,width:_,height:v}=(0,U.useMemo)(()=>Vd(e.edges,o,p),[e.edges,o,p]),[y,b]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),C=(0,U.useMemo)(()=>{let t=0,n=0;for(let r of e.edges)r.role===`origin`&&t++,r.source!==`manual`&&r.confidence<1&&n++;return{total:e.edges.length,origins:t,autoPending:n}},[e.edges]),w=(0,U.useRef)(null),[T,E]=(0,U.useState)(null),[D,O]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1);(0,U.useEffect)(()=>{function e(){let e=w.current;if(e&&T&&e.hasPointerCapture(T.pointerId))try{e.releasePointerCapture(T.pointerId)}catch{}E(null),O(null),A(!1)}function t(){document.visibilityState===`hidden`&&e()}return window.addEventListener(`blur`,e),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`blur`,e),document.removeEventListener(`visibilitychange`,t)}},[T]);let j=(0,U.useCallback)(n=>{t({session:n,view:null,thread:null,project:e.edges.find(e=>e.session_id===n)?.project??null,msg:null,col:null})},[t,e.edges]),M=(0,U.useCallback)((t,r)=>{let i=e.edges.find(e=>e.session_id===t);if(!i)return;let a=i.parent_session_id;a!==r&&n.mutate({threadId:e.id,sessionId:t,parentSessionId:r},{onSuccess:()=>{Z({message:r?`Re-parented ${t.slice(0,8)} to ${r.slice(0,8)}`:`Promoted ${t.slice(0,8)} to origin`,tone:`success`,duration:9e3,action:{label:`Undo`,onClick:()=>{n.mutate({threadId:e.id,sessionId:t,parentSessionId:a})}}})},onError:e=>{Z({message:`Re-parent failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},[e.edges,e.id,n]),ee=(0,U.useCallback)(t=>{let n=e.edges.find(e=>e.session_id===t),i=e.edges.filter(e=>e.parent_session_id===t).length,a=n?.alias??t.slice(0,8),o=i>0?`\n\n${i} child session${i===1?``:`s`} will be re-parented to ${n?.parent_session_id?`its grandparent`:`origin`}.`:``;confirm(`Remove "${a}" from this thread?${o}\n\nThe session itself stays in Recall, only the link to this thread is removed.`)&&r.mutate({threadId:e.id,sessionId:t},{onSuccess:()=>{Z({message:`Removed ${a} from thread`,tone:`success`})},onError:e=>{Z({message:`Remove failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},[e.edges,e.id,r]),N=(0,U.useCallback)(t=>{S({sessionId:t,value:e.edges.find(e=>e.session_id===t)?.alias??``}),b(null)},[e.edges]),te=(0,U.useCallback)(()=>S(null),[]),P=(0,U.useCallback)(()=>{if(!x)return;let e=x.value.trim();if(!e){S(null);return}let t=x.sessionId;S(null),i.mutate({sessionId:t,alias:e},{onSuccess:()=>{Z({message:`Renamed session to "${e}"`,tone:`success`})},onError:e=>{Z({message:`Rename failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},[x,i]),F=(0,U.useCallback)((e,t)=>{let n=w.current;if(!n)return{x:0,y:0};let r=n.getBoundingClientRect(),i=f.current||1;return{x:(e-r.left+n.scrollLeft)/i,y:(t-r.top+n.scrollTop)/i}},[]),I=(0,U.useCallback)((e,t,n)=>{for(let r of h)if(r.edge.session_id!==n&&e>=r.x&&e<=r.x+Fd&&t>=r.y&&t<=r.y+Id)return r.edge.session_id;return null},[h]),L=(e,t)=>{if(e.button!==0)return;let n=w.current;if(n)try{n.setPointerCapture(e.pointerId)}catch{}let r=F(e.clientX,e.clientY);E({sessionId:t,pointerX:r.x,pointerY:r.y,startX:r.x,startY:r.y,pointerId:e.pointerId}),A(!1)},R=e=>{if(!T||T.pointerId!==e.pointerId)return;let t=F(e.clientX,e.clientY),n=Math.hypot(t.x-T.startX,t.y-T.startY)>16;n&&!k&&A(!0),E({...T,pointerX:t.x,pointerY:t.y}),O(n?I(t.x,t.y,T.sessionId):null)},z=e=>{let t=w.current;if(t?.hasPointerCapture(e))try{t.releasePointerCapture(e)}catch{}},B=t=>{if(!T||T.pointerId!==t.pointerId)return;z(t.pointerId);let n=F(t.clientX,t.clientY),r=Math.hypot(n.x-T.startX,n.y-T.startY),i=k,a=r>16,o=i&&a?I(n.x,n.y,T.sessionId):null,s=T.sessionId;if(E(null),O(null),A(!1),!i){j(s);return}if(a&&o!==s&&o&&o!==s){if(Gd(s,o,e.edges)){Z({message:`Cannot re-parent: that would create a cycle. A thread is a DAG.`,tone:`error`});return}M(s,o)}},V=e=>{T?.pointerId===e.pointerId&&z(e.pointerId),E(null),O(null),A(!1)},ne=(0,U.useMemo)(()=>{let t=[];for(let n of e.edges){let e=n.parent_session_id;if(!e)continue;let r=g.get(n.session_id),i=g.get(e);if(!r||!i)continue;let a=i.x+Fd/2,o=i.y+Id,s=r.x+Fd/2,c=r.y;t.push({key:`${e}->${n.session_id}`,x1:a,y1:o,x2:s,y2:c,confidence:n.confidence,source:n.source,midX:(a+s)/2,midY:(o+c)/2,title:Wd(n)})}return t},[e.edges,g]),re=T?g.get(T.sessionId)??null:null;return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-fg-muted`,children:[(0,W.jsxs)(`span`,{title:`Total sessions pulled into this thread.`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:C.total}),` session`,C.total===1?``:`s`,` linked`]}),(0,W.jsxs)(`span`,{title:`Threads can have multiple origins; these are the seed sessions the thread grew from.`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:C.origins}),` origin`,C.origins===1?``:`s`]}),C.autoPending>0&&(0,W.jsxs)(`span`,{title:`Auto-detected links below full confidence that you have not confirmed yet.`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:C.autoPending}),` `,`auto-suggested`]}),(0,W.jsx)(`span`,{className:`ml-auto italic`,children:`Drag a node onto another to re-parent. Drop on empty canvas to cancel.`})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>d(e=>!e),className:Q(`px-2.5 py-1 rounded border transition-colors`,u?`border-accent text-accent bg-accent/10`:`border-line text-fg-muted hover:text-accent hover:border-accent`),title:`Scale the entire tree to fit the canvas without scrolling`,children:u?`↔ Fit-to-view (on)`:`↔ Fit-to-view`}),o.size>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:l,className:`px-2.5 py-1 rounded border border-line text-fg-muted hover:text-accent hover:border-accent transition-colors`,title:`Expand every collapsed branch`,children:[`▾ Expand all (`,o.size,`)`]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 px-2 py-1 rounded border border-line text-fg-muted`,title:`Vertical spacing between parent and child rows (saved per browser)`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider`,children:`Spacing`}),(0,W.jsx)(`input`,{type:`range`,min:100,max:900,step:4,value:p,onChange:e=>m(parseInt(e.target.value,10)),className:`accent-accent w-24`,"aria-label":`Vertical spacing between rows`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>m(168),className:`text-[10px] text-fg-muted/70 hover:text-accent`,title:`Reset to default`,children:`reset`})]}),(0,W.jsx)(`span`,{className:`text-[10px] text-fg-muted ml-auto`,children:`Click ▸ on any parent to fold its branch`})]}),(0,W.jsx)(`div`,{ref:w,className:`relative border border-line rounded bg-bg-elevated overflow-auto`,style:{height:Math.min(v+40,700)},onPointerMove:R,onPointerUp:B,onPointerCancel:V,children:(0,W.jsx)(Zd,{enabled:u,contentWidth:_,contentHeight:v,onScaleChange:e=>{f.current=e},children:(0,W.jsxs)(`div`,{style:{width:_,height:v,position:`relative`},"data-share-capture-content":`thread-graph`,children:[(0,W.jsx)(`svg`,{width:_,height:v,className:`absolute inset-0 pointer-events-none`,children:ne.map(e=>{let t=e.source!==`manual`,n=e.confidence>=1?3:Math.max(1,e.confidence*2.5);return(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`path`,{d:`M ${e.x1} ${e.y1} C ${e.x1} ${(e.y1+e.y2)/2}, ${e.x2} ${(e.y1+e.y2)/2}, ${e.x2} ${e.y2}`,fill:`none`,stroke:`currentColor`,strokeOpacity:.6,strokeWidth:n,strokeDasharray:t?`5 4`:void 0,className:`text-fg-muted`,style:{pointerEvents:`stroke`},children:(0,W.jsx)(`title`,{children:e.title})}),t&&(0,W.jsxs)(`g`,{transform:`translate(${e.midX-10} ${e.midY-8})`,style:{pointerEvents:`auto`},children:[(0,W.jsx)(`title`,{children:e.title}),(0,W.jsx)(`rect`,{width:20,height:14,rx:3,className:`fill-bg-elevated`,stroke:`currentColor`,strokeOpacity:.5}),(0,W.jsx)(`text`,{x:10,y:10,textAnchor:`middle`,className:`fill-fg-muted`,style:{fontSize:9,fontWeight:600},children:`AI`})]})]},e.key)})}),h.map(e=>{let t=T?.sessionId===e.edge.session_id,n=D===e.edge.session_id,r=e.edge.role===`origin`,i=x?.sessionId===e.edge.session_id,a=Math.round(e.edge.confidence*100),o=e.edge.source===`manual`?`added manually`:`auto-linked via ${e.edge.source} at ${a}% confidence`,s=`${r?`Origin`:`Child`} session ${e.edge.session_id}, ${o}; click to open, drag to re-parent, right-click to rename.`,l=r?`Origin: one of the seed sessions this thread grew from.`:`Child: a session linked under a parent.`,u=e.edge.source===`manual`?``:`Auto-linked via ${e.edge.source} at ${a}% confidence (${Ud[e.edge.source]}); 100% would mean manually linked.`;return(0,W.jsxs)(`div`,{role:`button`,tabIndex:0,onPointerDown:t=>{i||L(t,e.edge.session_id)},onContextMenu:t=>{t.preventDefault(),T&&z(T.pointerId),E(null),O(null),A(!1),b({sessionId:e.edge.session_id,x:t.clientX,y:t.clientY})},onKeyDown:t=>{i||(t.key===`Enter`||t.key===` `?(t.preventDefault(),j(e.edge.session_id)):t.key===`F2`&&(t.preventDefault(),N(e.edge.session_id)))},className:Q(`absolute select-none rounded border shadow-sm flex flex-col justify-center px-3 py-2 text-left transition-colors`,`focus:outline-none focus:ring-2 focus:ring-accent/60`,r?`bg-accent/20 border-accent/60 text-fg`:`bg-bg border-line text-fg`,t&&`opacity-50 cursor-grabbing`,n&&`ring-2 ring-accent`,i&&`ring-2 ring-accent cursor-text`,!t&&!i&&`cursor-grab hover:border-accent/60`),style:{left:e.x,top:e.y,width:Fd,height:Id,touchAction:`none`},title:s,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:Q(`text-[9px] uppercase tracking-wider px-1 py-0.5 rounded shrink-0`,r?`bg-accent text-bg`:`bg-bg-hover text-fg-muted`),title:l,children:e.edge.role}),e.edge.source!==`manual`&&(0,W.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider px-1 py-0.5 rounded bg-bg-hover text-fg-muted shrink-0`,title:u,children:`AI`}),e.hasChildren&&(0,W.jsx)(`button`,{type:`button`,onPointerDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),c(e.edge.session_id)},className:Q(`ml-auto text-[10px] leading-none px-1.5 py-0.5 rounded shrink-0 border transition-colors`,e.hiddenCount>0?`border-accent text-accent bg-accent/10 hover:bg-accent/20`:`border-line text-fg-muted hover:text-accent hover:border-accent`),title:e.hiddenCount>0?`${e.hiddenCount} descendant${e.hiddenCount===1?``:`s`} hidden — click to expand`:`Fold this branch`,"aria-label":e.hiddenCount>0?`Expand subtree`:`Collapse subtree`,children:e.hiddenCount>0?`▸ +${e.hiddenCount}`:`▾`})]}),i?(0,W.jsx)(`input`,{autoFocus:!0,type:`text`,value:x.value,onChange:e=>S({sessionId:x.sessionId,value:e.target.value}),onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),P()):e.key===`Escape`&&(e.preventDefault(),te())},onBlur:P,placeholder:Hd(e.edge),"aria-label":`Rename session`,className:`text-sm bg-bg-elevated border border-accent rounded px-1 py-0.5 mt-0.5 outline-none w-full`}):(0,W.jsx)(`div`,{className:`text-[12.5px] leading-snug mt-0.5 break-words overflow-hidden`,children:Hd(e.edge)})]},e.edge.session_id)}),re&&T&&k&&(0,W.jsx)(`div`,{className:`absolute pointer-events-none rounded border border-accent bg-bg shadow-lg px-3 py-2 opacity-80`,style:{left:T.pointerX-Fd/2,top:T.pointerY-Id/2,width:Fd,height:Id},children:(0,W.jsx)(`div`,{className:`text-[12.5px] leading-snug break-words overflow-hidden`,children:Hd(re.edge)})})]})})}),y&&(0,W.jsx)(Xd,{x:y.x,y:y.y,sessionId:y.sessionId,onRename:()=>N(y.sessionId),onRemoveFromThread:()=>ee(y.sessionId),onClose:()=>b(null)})]})}function Jd(e){let t=new Map;for(let n of e)t.set(n.session_id,{edge:n,children:[]});let n=[];for(let e of t.values()){let r=e.edge.parent_session_id;r&&t.has(r)&&r!==e.edge.session_id?t.get(r).children.push(e):n.push(e)}return n}function Yd({thread:e}){let t=(0,U.useMemo)(()=>Jd(e.edges),[e.edges]),[,n]=Cn(),r=xl();if(t.length===0)return(0,W.jsx)(`div`,{className:`text-xs text-fg-muted italic p-3 border border-line rounded`,children:`No sessions yet.`});let i=(t,n)=>{let i=n??t.slice(0,8),a=e.edges.filter(e=>e.parent_session_id===t).length,o=a>0?`\n\n${a} child session${a===1?``:`s`} will be re-parented.`:``;confirm(`Remove "${i}" from this thread?${o}\n\nThe session itself stays in Recall, only the link to this thread is removed.`)&&r.mutate({threadId:e.id,sessionId:t},{onSuccess:()=>{Z({message:`Removed ${i} from thread`,tone:`success`})},onError:e=>{Z({message:`Remove failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})},a=(e,t)=>{let r=e.edge.role===`origin`,o=Math.round(e.edge.confidence*100),s=e.edge.source===`manual`?`added manually`:`auto-linked via ${e.edge.source} at ${o}% confidence`,c=`${r?`Origin`:`Child`} session ${e.edge.session_id}, ${s}; click to open.`,l=r?`Origin: one of the seed sessions this thread grew from.`:`Child: a session linked under a parent.`,u=e.edge.project??null;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`group flex items-center gap-2 border-b border-line/50 hover:bg-bg-hover`,style:{paddingLeft:`${12+t*20}px`,paddingRight:`8px`},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n({session:e.edge.session_id,view:null,thread:null,project:u,msg:null,col:null}),className:`flex-1 flex items-center gap-2 py-2 text-sm text-left min-w-0`,title:c,children:[(0,W.jsx)(`span`,{className:Q(`text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded shrink-0`,r?`bg-accent/20 text-accent`:`bg-bg-hover text-fg-muted`),title:l,children:e.edge.role}),(0,W.jsx)(`span`,{className:`truncate`,children:Hd(e.edge)})]}),(0,W.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(e.edge.session_id,e.edge.alias??null)},className:`text-[10px] text-fg-muted hover:text-role-user opacity-0 group-hover:opacity-100 transition-opacity shrink-0`,title:`remove from this thread (session itself is preserved)`,"aria-label":`remove from thread`,children:`remove`})]}),e.children.map(e=>a(e,t+1))]},e.edge.session_id)};return(0,W.jsx)(`div`,{className:`border border-line rounded`,children:t.map(e=>a(e,0))})}function Xd({x:e,y:t,sessionId:n,onRename:r,onRemoveFromThread:i,onClose:a}){let o=(0,U.useRef)(null);(0,U.useEffect)(()=>{let e=e=>{o.current&&!o.current.contains(e.target)&&a()},t=e=>{e.key===`Escape`&&a()};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[a]);let[s,c]=(0,U.useState)(`idle`),l=Math.min(e,window.innerWidth-240-8),u=Math.min(t,window.innerHeight-200-8),d=async e=>{if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}};return(0,W.jsxs)(`div`,{ref:o,role:`menu`,"aria-label":`thread node actions`,className:`fixed z-50 bg-bg-elevated border border-line rounded-lg shadow-xl py-1 text-xs`,style:{left:l,top:u,width:240},children:[(0,W.jsxs)(`div`,{className:`px-3 pt-1 pb-1 text-[10px] uppercase tracking-wider text-fg-muted`,children:[`session `,n.slice(0,8)]}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:async()=>{c(await d(n)?`copied`:`failed`),setTimeout(a,700)},className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:s===`copied`?`Copied!`:s===`failed`?`Copy failed — try again`:`Copy session ID`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted font-mono`,children:n})]}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{r(),a()},className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Rename session`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:`set an alias that overrides the auto-title`})]}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{a(),i()},className:`block w-full text-left px-3 py-1.5 hover:bg-role-user/10`,children:[(0,W.jsx)(`div`,{className:`text-role-user`,children:`Remove from thread`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:`unlinks this session; the session itself is preserved`})]})]})}function Zd({enabled:e,contentWidth:t,contentHeight:n,children:r,onScaleChange:i}){let a=(0,U.useRef)(null),[o,s]=(0,U.useState)(1);return(0,U.useEffect)(()=>{if(!e){s(1),i?.(1);return}let r=a.current?.parentElement;if(!r)return;let o=()=>{let e=r.clientWidth,a=r.clientHeight;if(e<=0||a<=0||t<=0||n<=0)return;let o=Math.min(e/t,a/n,1);s(o),i?.(o)};o();let c=new ResizeObserver(o);return c.observe(r),()=>c.disconnect()},[e,t,n,i]),e?(0,W.jsx)(`div`,{ref:a,style:{width:t*o,height:n*o,position:`relative`},children:(0,W.jsx)(`div`,{style:{transform:`scale(${o})`,transformOrigin:`top left`,width:t,height:n},children:r})}):(0,W.jsx)(W.Fragment,{children:r})}var Qd=`#f97316`,$d=`#fb923c`,ef=`#4a4a52`;function tf(){return(0,W.jsx)(`span`,{className:`inline-flex items-center justify-center w-7 h-7 align-[-6px] rounded border-2 text-base font-semibold leading-none`,style:{color:Qd,borderColor:Qd},"aria-label":`sync`,children:`⟳`})}function nf(){return(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-0 border border-line rounded-lg overflow-hidden`,children:[(0,W.jsx)(rf,{index:`01`,kicker:`Before`,title:`Chats live in many terminals`,description:`Every Claude conversation in an IDE terminal is its own session. Most users juggle dozens, scattered across repos and windows.`,children:(0,W.jsx)(af,{})}),(0,W.jsx)(rf,{index:`02`,kicker:`Action`,title:`Click ⟳ on the repo`,description:`Sync grabs every session whose terminal is still open in that repo's cwd, then infers parent and child links from time, file overlap, and authorship.`,accent:!0,children:(0,W.jsx)(of,{})}),(0,W.jsx)(rf,{index:`03`,kicker:`After`,title:`One thread, ready to pipe`,description:`The whole bundle becomes a single thread you can hand back to Claude as a context-rich prompt. Re-running adds new actives, never duplicates.`,children:(0,W.jsx)(sf,{})})]})}function rf({index:e,kicker:t,title:n,description:r,accent:i,children:a}){return(0,W.jsxs)(`div`,{className:`relative bg-bg-hover/20 p-5 flex flex-col gap-3 border-r border-line last:border-r-0`,style:i?{background:`rgba(249, 115, 22, 0.06)`}:void 0,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,W.jsx)(`span`,{className:`text-3xl font-semibold tabular-nums leading-none tracking-tight`,style:{color:i?Qd:ef},children:e}),(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.2em] text-fg-muted`,children:t})]}),(0,W.jsx)(`div`,{className:`aspect-[3/2] w-full rounded border border-line bg-bg-elevated/40 flex items-center justify-center overflow-hidden`,children:a}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-sm font-semibold text-fg mb-1 leading-snug`,children:n}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:r})]})]})}function af(){return(0,W.jsx)(`svg`,{viewBox:`0 0 240 160`,className:`w-full h-full`,role:`img`,"aria-label":`Before: scattered terminals`,children:[[20,30],[110,25],[180,50],[40,90],[130,95],[195,110],[70,130]].map(([e,t],n)=>(0,W.jsxs)(`g`,{transform:`translate(${e},${t})`,children:[(0,W.jsx)(`rect`,{width:`44`,height:`22`,rx:`2`,fill:`none`,stroke:ef,strokeWidth:`1.25`}),(0,W.jsx)(`circle`,{cx:`6`,cy:`6`,r:`1.4`,fill:$d}),(0,W.jsx)(`line`,{x1:`11`,y1:`13`,x2:`38`,y2:`13`,stroke:ef,strokeWidth:`0.8`}),(0,W.jsx)(`line`,{x1:`11`,y1:`17`,x2:`30`,y2:`17`,stroke:ef,strokeWidth:`0.8`})]},n))})}function of(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 240 160`,className:`w-full h-full`,role:`img`,"aria-label":`Action: terminals collapse into a thread`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`arr`,viewBox:`0 0 10 10`,refX:`9`,refY:`5`,markerWidth:`5`,markerHeight:`5`,orient:`auto`,children:(0,W.jsx)(`path`,{d:`M0,0 L10,5 L0,10 Z`,fill:Qd})})}),[[20,30],[20,70],[20,110],[20,130]].map(([e,t],n)=>(0,W.jsxs)(`g`,{transform:`translate(${e},${t})`,children:[(0,W.jsx)(`rect`,{width:`44`,height:`20`,rx:`2`,fill:`none`,stroke:ef,strokeWidth:`1.25`}),(0,W.jsx)(`circle`,{cx:`6`,cy:`6`,r:`1.4`,fill:$d}),(0,W.jsx)(`line`,{x1:`11`,y1:`13`,x2:`38`,y2:`13`,stroke:ef,strokeWidth:`0.8`})]},n)),[40,80,120,140].map((e,t)=>(0,W.jsx)(`line`,{x1:`68`,y1:e,x2:`150`,y2:`80`,stroke:Qd,strokeWidth:`1`,strokeDasharray:`3 3`,markerEnd:`url(#arr)`,opacity:`0.85`},t)),(0,W.jsx)(`circle`,{cx:`170`,cy:`80`,r:`22`,fill:`none`,stroke:Qd,strokeWidth:`2`}),(0,W.jsx)(`text`,{x:`170`,y:`85`,textAnchor:`middle`,fontSize:`20`,fill:Qd,fontFamily:`system-ui`,fontWeight:`600`,children:`⟳`})]})}function sf(){return(0,W.jsxs)(`svg`,{viewBox:`0 0 240 160`,className:`w-full h-full`,role:`img`,"aria-label":`After: thread tree`,children:[(0,W.jsx)(`circle`,{cx:`120`,cy:`32`,r:`9`,fill:Qd}),[60,120,180].map((e,t)=>(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`line`,{x1:`120`,y1:`40`,x2:e,y2:`80`,stroke:$d,strokeWidth:`1.5`}),(0,W.jsx)(`circle`,{cx:e,cy:`86`,r:`7`,fill:$d})]},t)),[[40,60],[80,60],[105,120],[135,120],[165,180],[195,180]].map(([e,t],n)=>(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`line`,{x1:t,y1:`92`,x2:e,y2:`128`,stroke:ef,strokeWidth:`1`}),(0,W.jsx)(`circle`,{cx:e,cy:`132`,r:`5`,fill:`none`,stroke:ef,strokeWidth:`1.25`})]},n))]})}function cf({kicker:e,value:t,detail:n}){return(0,W.jsxs)(`div`,{className:`bg-bg p-5`,children:[(0,W.jsx)(`div`,{className:`text-[10px] uppercase tracking-[0.2em] text-fg-muted mb-2`,children:e}),(0,W.jsx)(`div`,{className:`text-lg font-semibold text-fg mb-1`,children:t}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:n})]})}var lf=`#fb923c`,uf=`#f97316`;function df({projectId:e,projectName:t,onClose:n}){let r=G(),[i,a]=(0,U.useState)(`preflighting`),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null);(0,U.useEffect)(()=>{let t=!1;return a(`preflighting`),d(null),(async()=>{try{let n=await X.syncActivePreflight({project_id:e});if(t)return;s(n.plan),a(`review`)}catch(e){if(t)return;d(e instanceof Error?e.message:String(e)),a(`failed`)}})(),()=>{t=!0}},[e]),(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&i!==`applying`&&n()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i,n]);async function f(){a(`applying`),d(null);try{let n=await X.syncActiveApply({project_id:e});s(n.plan),l(n.result),a(`done`),r.invalidateQueries({queryKey:[`threads`]}),r.invalidateQueries({queryKey:[`thread-folders`]}),Z({message:n.result.added>0?`Added ${n.result.added} session${n.result.added===1?``:`s`}, set ${n.result.edges_set} edge${n.result.edges_set===1?``:`s`}.`:`Already up to date in ${t}.`,tone:`success`})}catch(e){d(e instanceof Error?e.message:String(e)),a(`failed`),Z({message:`Sync failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})}}let p=i===`review`&&o!==null&&o.candidates.length>0;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:e=>{e.target===e.currentTarget&&i!==`applying`&&n()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-line`,children:[(0,W.jsxs)(`div`,{className:`text-sm font-semibold text-fg flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full`,style:{background:uf,boxShadow:`0 0 0 2px ${lf} inset`}}),`Sync active sessions in `,t]}),(0,W.jsx)(`button`,{type:`button`,onClick:n,disabled:i===`applying`,className:`text-xs text-fg-muted hover:text-fg disabled:opacity-40 disabled:cursor-not-allowed`,children:`close`})]}),(0,W.jsxs)(`div`,{className:`p-5 space-y-4 text-xs`,children:[(0,W.jsxs)(`details`,{className:`group`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer select-none flex items-center justify-between text-[10px] uppercase tracking-[0.2em] text-fg-muted hover:text-fg py-1`,children:[(0,W.jsx)(`span`,{children:`How this works`}),(0,W.jsx)(`span`,{className:`text-fg-muted group-open:rotate-90 transition-transform inline-block`,children:`›`})]}),(0,W.jsxs)(`div`,{className:`mt-3`,children:[(0,W.jsx)(nf,{}),(0,W.jsxs)(`div`,{className:`mt-3 grid grid-cols-3 gap-px bg-line border border-line rounded overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`bg-bg p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-[0.18em] text-fg-muted`,children:`Scope`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg font-semibold mt-0.5 truncate`,title:t,children:t})]}),(0,W.jsxs)(`div`,{className:`bg-bg p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-[0.18em] text-fg-muted`,children:`Re-runs`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg font-semibold mt-0.5`,children:`Same thread`})]}),(0,W.jsxs)(`div`,{className:`bg-bg p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-[0.18em] text-fg-muted`,children:`Manual edges`}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg font-semibold mt-0.5`,children:`Preserved`})]})]})]})]}),i===`preflighting`&&(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30 flex items-center gap-3 text-fg-muted`,children:[(0,W.jsx)(`div`,{className:`h-3 w-3 rounded-full border-2 border-t-transparent animate-spin`,style:{borderColor:lf,borderTopColor:`transparent`}}),(0,W.jsxs)(`span`,{children:[`Looking at active sessions in `,t,`…`]})]}),(i===`review`||i===`applying`||i===`done`)&&o&&(0,W.jsx)(ff,{plan:o,applying:i===`applying`,done:i===`done`,result:c}),i===`failed`&&(0,W.jsxs)(`div`,{className:`p-3 rounded border border-role-user/40 bg-role-user/10 text-role-user`,children:[(0,W.jsx)(`div`,{className:`font-semibold mb-1`,children:`Sync failed`}),(0,W.jsx)(`div`,{children:u??`Unknown error`})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-line`,children:[i===`review`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 rounded border border-line hover:bg-bg-hover`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:f,disabled:!p,className:`text-xs px-3 py-1.5 rounded text-bg disabled:opacity-40 disabled:cursor-not-allowed font-medium`,style:{background:uf},children:o&&o.proposed_additions.length>0?`Apply (${o.proposed_additions.length} new session${o.proposed_additions.length===1?``:`s`})`:`Apply`})]}),i===`applying`&&(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted flex items-center gap-2`,children:[(0,W.jsx)(`div`,{className:`h-3 w-3 rounded-full border-2 border-t-transparent animate-spin`,style:{borderColor:lf,borderTopColor:`transparent`}}),(0,W.jsx)(`span`,{children:`Writing thread + edges…`})]}),(i===`done`||i===`failed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 rounded text-bg font-medium`,style:{background:uf},children:`Close`})]})]})})}function ff({plan:e,applying:t,done:n,result:r}){return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(mf,{plan:e}),e.warnings.length>0&&(0,W.jsx)(`div`,{className:`p-2 rounded border border-role-tool/40 bg-role-tool/10 text-role-tool`,children:e.warnings.map((e,t)=>(0,W.jsxs)(`div`,{children:[`⚠ `,e]},t))}),e.candidates.length===0?(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`No live Claude sessions touched in `,pf(e),` within the rolling window. Open a terminal in this repo and run`,` `,(0,W.jsx)(`code`,{className:`text-fg bg-bg-elevated px-1 py-0.5 rounded`,children:`claude`}),` `,`to get on the list.`]}):(0,W.jsx)(hf,{plan:e}),e.preserved_manual_edges.length>0&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px]`,children:[e.preserved_manual_edges.length,` manual edge`,e.preserved_manual_edges.length===1?``:`s`,` will be preserved across this sync.`]}),n&&r&&(0,W.jsxs)(`div`,{className:`p-3 rounded text-fg`,style:{background:`rgba(138, 120, 255, 0.10)`,borderColor:lf,borderWidth:1,borderStyle:`solid`},children:[(0,W.jsx)(`div`,{className:`font-medium mb-0.5`,children:`Applied.`}),(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`Added `,r.added,` session`,r.added===1?``:`s`,`, set `,r.edges_set,` parent edge`,r.edges_set===1?``:`s`,`, preserved `,r.preserved_manual,` manual edge`,r.preserved_manual===1?``:`s`,`.`]})]}),t&&(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Writing the thread, sessions, and inferred parent edges…`})]})}function pf(e){return e.project.name}function mf({plan:e}){return(0,W.jsxs)(`div`,{className:`border border-line rounded p-3 bg-bg-hover/30`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`Thread`}),(0,W.jsx)(`span`,{className:`text-fg font-medium truncate`,children:e.thread.name}),(0,W.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wider`,style:{background:e.thread.exists?`rgba(138, 120, 255, 0.15)`:`rgba(179, 168, 255, 0.20)`,color:lf},children:e.thread.exists?`reusing`:`new`})]}),e.thread.exists&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] mt-1`,children:[e.thread.existing_session_count,` session`,e.thread.existing_session_count===1?``:`s`,` already in this thread. Re-syncing only adds the ones that are missing.`]})]})}function hf({plan:e}){let t=new Set(e.candidates.map(e=>e.session_id)),n=new Map;for(let t of e.proposed_edges)n.set(t.child_id,t);let r=new Set(e.proposed_additions.map(e=>e.session_id));return(0,W.jsxs)(`div`,{className:`border border-line rounded`,children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line text-fg-muted text-[11px] uppercase tracking-wider flex items-center justify-between`,children:[(0,W.jsx)(`span`,{children:`Candidates`}),(0,W.jsxs)(`span`,{children:[e.candidates.length,` session`,e.candidates.length===1?``:`s`,` ·`,` `,e.proposed_additions.length,` new`]})]}),(0,W.jsx)(`ul`,{className:`divide-y divide-line/60`,children:e.candidates.map(e=>{let i=n.get(e.session_id),a=!!i&&t.has(i.parent_id),o=r.has(e.session_id);return(0,W.jsxs)(`li`,{className:`px-3 py-2 flex flex-col gap-0.5`,style:{paddingLeft:a?28:12,borderLeft:a?`2px solid ${lf}40`:`2px solid transparent`},children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wider shrink-0`,style:{background:o?`rgba(179, 168, 255, 0.20)`:`rgba(74, 74, 82, 0.25)`,color:o?lf:`#888`},children:o?`new`:`keep`}),(0,W.jsx)(`span`,{className:`font-mono text-fg-muted shrink-0`,children:e.session_id.slice(0,8)}),(0,W.jsx)(`span`,{className:`truncate text-fg`,children:gf(e)})]}),i&&t.has(i.parent_id)&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[11px] flex items-baseline gap-2 ml-1`,children:[(0,W.jsx)(`span`,{children:`parent`}),(0,W.jsx)(`span`,{className:`font-mono`,children:i.parent_id.slice(0,8)}),(0,W.jsxs)(`span`,{className:`font-mono tabular-nums`,style:{color:lf},children:[`[conf `,i.confidence.toFixed(2),`]`]}),(0,W.jsx)(`span`,{className:`truncate`,children:i.reasons.join(` · `)})]})]},e.session_id)})})]})}function gf(e){return e.alias||e.auto_title||(e.first_user_message?e.first_user_message.replace(/\s+/g,` `).slice(0,80):`(no title)`)}function _f(){let[e,t]=Cn(),n=dl(),r=e.thread,i=fl(r),a=ml(),o=hl(),s=n.data?.threads??[],c=i.data?.thread??null,[l,u]=(0,U.useState)(``),d=`(no project yet)`,f=(0,U.useMemo)(()=>{let e=new Map;for(let t of s){let n=t.project??d,r=e.get(n);r||(r=[],e.set(n,r)),r.push(t)}return Array.from(e.entries()).sort(([e],[t])=>e===d?1:t===d?-1:e.localeCompare(t))},[s]),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=`threads.leftPaneWidth`,[v,y]=(0,U.useState)(()=>{if(typeof window>`u`)return 288;let e=window.localStorage.getItem(_),t=e?Number(e):NaN;return Number.isFinite(t)?Math.min(600,Math.max(200,t)):288}),b=`threads.leftPaneCollapsed`,[x,S]=(0,U.useState)(()=>typeof window>`u`?!1:window.localStorage.getItem(b)===`1`),C=()=>{S(e=>{let t=!e;return typeof window<`u`&&window.localStorage.setItem(b,t?`1`:`0`),t})},w=(0,U.useRef)(null),T=e=>{e.preventDefault(),w.current={startX:e.clientX,startWidth:v},e.currentTarget.setPointerCapture(e.pointerId)},E=e=>{if(!w.current)return;let t=w.current.startWidth+(e.clientX-w.current.startX);y(Math.min(600,Math.max(200,t)))},D=e=>{w.current&&(w.current=null,e.currentTarget.releasePointerCapture(e.pointerId),typeof window<`u`&&window.localStorage.setItem(_,String(v)))},O=()=>{y(288),typeof window<`u`&&window.localStorage.setItem(_,`288`)},k=`threads.expandedFolders`,[A,j]=(0,U.useState)(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(k);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}),M=e=>{j(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),typeof window<`u`&&window.localStorage.setItem(k,JSON.stringify(Array.from(n))),n})},[ee,N]=(0,U.useState)(null),te=K({queryKey:[`projects`],queryFn:()=>X.projects(),staleTime:6e4}),P=(0,U.useMemo)(()=>{let e=new Map;for(let t of te.data??[])e.set(t.name,t.id);return e},[te.data]),F=gl(),I=_l(),L=vl(),R=F.data?.folders??[],[z,B]=(0,U.useState)(null),[V,ne]=(0,U.useState)(null),[re,ie]=(0,U.useState)(null),[H,ae]=(0,U.useState)(null),oe=yl(),se=()=>{ie(null),ae(null)},ce=(e,t)=>{if(re?.kind!==`folder`||re.parentFolderId!==e.parent_folder_id||re.projectScope!==e.project_scope)return;if(re.id===e.id){se();return}let n=R.filter(t=>t.parent_folder_id===e.parent_folder_id&&t.project_scope===e.project_scope).sort((e,t)=>e.sort_order-t.sort_order||e.name.localeCompare(t.name)).map(e=>e.id).filter(e=>e!==re.id),r=n.indexOf(e.id);if(r<0){se();return}let i=t===`before`?r:r+1,a=[...n.slice(0,i),re.id,...n.slice(i)];se(),oe.mutate({parentFolderId:e.parent_folder_id,projectScope:e.project_scope,orderedIds:a},{onError:e=>Z({message:`Reorder failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},le=e=>{if(re?.kind!==`thread`)return;if(e.project_scope!==null&&re.project!==e.project_scope){se(),Z({message:`Can't move thread: it belongs to ${re.project??`no project`} but folder is in ${e.project_scope}`,tone:`error`});return}let t=re.id;se(),o.mutate({id:t,patch:{folder_id:e.id}},{onError:e=>Z({message:`Move failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},ue=(e,t)=>{let n=t.trim();n&&o.mutate({id:e,patch:{name:n}},{onSuccess:()=>{Z({message:`Renamed thread to "${n}"`,tone:`success`})},onError:e=>{Z({message:`Rename failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})}})};return(0,W.jsxs)(`div`,{className:`flex-1 flex min-h-0`,children:[x?(0,W.jsxs)(`aside`,{className:`pane shrink-0 w-10 border-r border-line flex flex-col items-center py-3 gap-3`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:C,"aria-label":`Expand threads pane`,title:`Expand threads pane`,className:`w-7 h-7 rounded border border-line text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-sm font-semibold leading-none transition-colors`,children:`»`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({thread:null}),"aria-label":`Show threads overview`,title:`Show the threads overview`,className:`w-7 h-7 rounded-full border-2 border-fg-muted text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-sm font-bold leading-none transition-colors`,children:`?`}),(0,W.jsx)(`span`,{className:`text-base`,title:`Threads`,style:{writingMode:`vertical-rl`},children:`🧵`}),(0,W.jsx)(`span`,{className:`text-[11px] font-semibold tabular-nums text-fg-muted`,title:`${s.length} thread${s.length===1?``:`s`}`,children:s.length})]}):(0,W.jsxs)(`aside`,{className:`pane shrink-0`,style:{width:`${v}px`},children:[(0,W.jsxs)(`div`,{className:`pane-header`,children:[(0,W.jsx)(`span`,{className:`text-base`,children:`🧵 Threads`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({thread:null}),"aria-label":`Show how threads work`,className:`w-8 h-8 rounded-full border-2 border-fg-muted text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-lg font-bold leading-none transition-colors`,title:`Show the threads overview (deselects the current thread)`,children:`?`}),(0,W.jsx)(`span`,{className:`text-base font-semibold tabular-nums`,children:s.length}),(0,W.jsx)(`button`,{type:`button`,onClick:C,"aria-label":`Collapse threads pane`,title:`Collapse threads pane (full-width thread view)`,className:`w-7 h-7 rounded border border-line text-fg-muted hover:text-accent hover:border-accent flex items-center justify-center text-sm font-semibold leading-none transition-colors`,children:`«`})]})]}),(0,W.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let n=l.trim();n&&a.mutate({name:n},{onSuccess:e=>{u(``),t({thread:e.thread.id})}})},className:`px-3 pt-2 pb-3 border-b border-line flex gap-2`,children:[(0,W.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),placeholder:`New thread name`,className:`flex-1 px-2 py-1 bg-bg-elevated border border-line rounded text-sm`}),(0,W.jsx)(`button`,{type:`submit`,disabled:a.isPending||!l.trim(),className:`px-2 py-1 rounded bg-accent text-bg text-xs font-medium disabled:opacity-50`,title:`Create a new empty thread with this name; add sessions to it afterwards.`,children:`Create`})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[n.isLoading&&(0,W.jsx)(`div`,{className:`px-4 py-6 text-xs text-fg-muted`,children:`Loading threads…`}),s.length===0&&!n.isLoading&&(0,W.jsx)(`div`,{className:`px-4 py-6 text-xs text-fg-muted italic`,children:`No threads yet. A thread is one unit of work spanning many sessions (planning session plus its children). Create one with the form above, then add sessions to it from any session's transcript header.`}),f.map(([e,n])=>{let i=!A.has(e),a=e===d?null:e,s=R.filter(e=>e.project_scope===a&&e.parent_folder_id===null),c=n.filter(e=>!e.folder_id),l=H&&`project`in H&&H.project===e;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:Q(`flex items-center border-t border-line first:border-t-0`,l&&`bg-accent/15 ring-1 ring-accent/40`),onDragOver:t=>{re?.kind===`thread`&&(t.preventDefault(),t.dataTransfer.dropEffect=`move`,ae({project:e,into:!0}))},onDragLeave:()=>{l&&ae(null)},onDrop:e=>{if(re?.kind!==`thread`)return;e.preventDefault();let t=re.id;se(),o.mutate({id:t,patch:{folder_id:null}},{onError:e=>Z({message:`Move failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>M(e),className:`flex-1 flex items-center gap-2 px-3 py-2 text-sm font-semibold uppercase tracking-wider text-fg-muted hover:bg-bg-hover`,"aria-expanded":!i,title:`${n.length} thread${n.length===1?``:`s`} in ${e}`,children:[(0,W.jsx)(`span`,{className:`inline-block w-3 text-center text-fg-muted`,children:i?`▶`:`▼`}),(0,W.jsx)(`span`,{className:`flex-1 text-left truncate`,children:e}),(0,W.jsx)(`span`,{className:`text-sm font-semibold tabular-nums text-fg-muted`,children:n.length})]}),e!==d&&P.has(e)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{let t=P.get(e);t!==void 0&&N({id:t,name:e})},className:`px-2.5 py-1.5 text-xl leading-none hover:bg-bg-hover rounded`,style:{color:`#f97316`},title:`Sync currently active Claude sessions in ${e} into a thread (Captain Code Pattern)`,"aria-label":`Sync active sessions for ${e}`,children:`⟳`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{B(e),i&&M(e)},className:`px-2.5 py-1 text-2xl leading-none text-fg-muted hover:text-accent hover:bg-bg-hover rounded`,title:`Create a new subfolder inside ${e}`,"aria-label":`Add subfolder to ${e}`,children:`+`})]}),z===e&&(0,W.jsx)(Df,{project:e,onCommit:t=>{B(null);let n=t.trim();n&&I.mutate({name:n,projectScope:e===d?null:e,parentFolderId:null},{onError:e=>Z({message:`Subfolder create failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},onCancel:()=>B(null)}),!i&&(0,W.jsxs)(W.Fragment,{children:[s.map(e=>(0,W.jsx)(Ef,{folder:e,depth:1,allSubfolders:R,threadsInProject:n,threadId:r,renamingThreadId:h,onSelectThread:e=>t({thread:e}),onThreadContextMenu:(e,t,n)=>m({threadId:e.id,name:e.name,x:t,y:n}),onCommitRename:(e,t)=>{g(null),t.trim()&&t.trim()!==e.name&&ue(e.id,t)},onCancelRename:()=>g(null),onDeleteSubfolder:e=>ne(e),confirmingDeleteId:V,onConfirmDelete:e=>{ne(null),L.mutate(e,{onError:e=>Z({message:`Delete failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})})},onCancelDelete:()=>ne(null),drag:re,setDrag:ie,dropHint:H,setDropHint:ae,onReorderDrop:ce,onFileThreadIntoFolder:le},e.id)),c.map(e=>(0,W.jsx)(vf,{thread:e,active:e.id===r,renaming:h===e.id,onSelect:()=>t({thread:e.id}),onContextMenu:(t,n)=>m({threadId:e.id,name:e.name,x:t,y:n}),onCommitRename:t=>{g(null),t.trim()&&t.trim()!==e.name&&ue(e.id,t)},onCancelRename:()=>g(null),onDragStart:()=>ie({kind:`thread`,id:e.id,project:e.project??null}),onDragEnd:se},e.id))]})]},e)})]})]}),!x&&(0,W.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize threads list`,title:`Drag to resize · double-click to reset`,onPointerDown:T,onPointerMove:E,onPointerUp:D,onDoubleClick:O,className:`w-1 shrink-0 cursor-col-resize bg-line hover:bg-accent transition-colors`}),(0,W.jsx)(`section`,{className:`flex-1 min-w-0 overflow-y-auto`,children:c?(0,W.jsx)(bf,{thread:c,onPatch:o.mutate}):r&&i.isLoading?(0,W.jsx)(`div`,{className:`p-10 text-sm text-fg-muted`,children:`Loading thread…`}):r&&!i.isLoading?(0,W.jsxs)(`div`,{className:`p-10 text-sm text-fg-muted max-w-2xl space-y-3`,children:[(0,W.jsx)(`div`,{className:`text-fg font-semibold`,children:`That thread isn’t here.`}),(0,W.jsx)(`div`,{children:`It may have been archived or deleted. Pick another from the left, or`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({thread:null}),className:`text-accent hover:underline`,children:`show the threads overview →`})]}):(0,W.jsxs)(`div`,{className:`p-10 max-w-4xl`,children:[(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-[0.2em] text-fg-muted mb-3`,children:`Threads / The Captain Code Pattern`}),(0,W.jsxs)(`h1`,{className:`text-4xl font-semibold text-fg leading-[1.05] mb-3 tracking-tight`,children:[`Three steps. One thread.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`span`,{style:{color:`#f97316`},children:`Every session you have open, in one place.`})]}),(0,W.jsxs)(`p`,{className:`text-base text-fg-muted leading-relaxed max-w-2xl mb-10`,children:[`You probably have 5 to 50 Claude chats running across your IDE windows. Sync turns that mess into a tree you can hand back to Claude. Below is what happens, in order, when you click `,(0,W.jsx)(tf,{}),` on any repo.`]}),(0,W.jsx)(nf,{}),(0,W.jsxs)(`div`,{className:`mt-12 grid grid-cols-3 gap-px bg-line border border-line rounded-lg overflow-hidden`,children:[(0,W.jsx)(cf,{kicker:`Scope`,value:`Per-repo`,detail:`Always cwd-bound. Sync from audio-hooks-studio-F never touches ClaudeRecall.`}),(0,W.jsx)(cf,{kicker:`Re-runs`,value:`Same thread`,detail:`No daily rollover. The date in the name is the creation date, not a key.`}),(0,W.jsx)(cf,{kicker:`Manual edges`,value:`Preserved`,detail:`Anything you wired by hand survives every sync. Only auto edges recompute.`})]}),(0,W.jsxs)(`div`,{className:`mt-10 flex items-center gap-4 text-xs text-fg-muted`,children:[(0,W.jsx)(`code`,{className:`px-2 py-1 rounded bg-bg-elevated border border-line text-fg`,children:`recall threads sync`}),(0,W.jsx)(`span`,{children:`does the same thing as the button. Add`}),(0,W.jsx)(`code`,{className:`px-1.5 py-0.5 rounded bg-bg-elevated border border-line text-fg`,children:`--preflight`}),(0,W.jsx)(`span`,{children:`to dry-run.`})]})]})}),p&&(()=>{let e=s.find(e=>e.id===p.threadId),t=e?.project??null,n=R.filter(e=>e.project_scope===t||e.project_scope===null);return(0,W.jsx)(Sf,{x:p.x,y:p.y,threadName:p.name,movableFolders:n,currentFolderId:e?.folder_id??null,onMoveToFolder:e=>{o.mutate({id:p.threadId,patch:{folder_id:e}},{onSuccess:()=>{let t=e?R.find(t=>t.id===e)?.name??`subfolder`:`project root`;Z({message:`Moved "${p.name}" to ${t}`,tone:`success`})},onError:e=>Z({message:`Move failed: ${e instanceof Error?e.message:`unknown error`}`,tone:`error`})})},onRename:()=>{g(p.threadId),m(null)},onClose:()=>m(null)})})(),ee&&(0,W.jsx)(df,{projectId:ee.id,projectName:ee.name,onClose:()=>N(null)})]})}function vf({thread:e,active:t,renaming:n,onSelect:r,onContextMenu:i,onCommitRename:a,onCancelRename:o,onDragStart:s,onDragEnd:c}){let[l,u]=(0,U.useState)(e.name);return(0,U.useEffect)(()=>{n&&u(e.name)},[n,e.name]),n?(0,W.jsxs)(`div`,{className:Q(`w-full text-left px-3 py-2 border-b border-line/50`,t&&`bg-accent/10`),children:[(0,W.jsx)(`input`,{autoFocus:!0,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),a(l)):e.key===`Escape`&&(e.preventDefault(),o())},onBlur:()=>a(l),"aria-label":`Rename thread`,className:`w-full px-2 py-1 bg-bg-elevated border border-accent rounded text-sm font-medium outline-none`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted mt-1`,children:`Enter to save, Esc to cancel`})]}):(0,W.jsxs)(`button`,{type:`button`,onClick:r,draggable:!!s,onDragStart:t=>{s&&(t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`application/x-recall-thread`,e.id),s())},onDragEnd:c,onContextMenu:e=>{e.preventDefault(),i(e.clientX,e.clientY)},className:Q(`w-full text-left px-3 py-2 border-b border-line/50 hover:bg-bg-hover`,t&&`bg-accent/10`),title:`Open the "${e.name}" thread detail view with its session graph (right-click to rename).`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`span`,{className:`text-[13px] font-medium truncate`,title:e.name,children:e.name}),(0,W.jsx)(`span`,{className:`text-[11px] text-fg-muted shrink-0 tabular-nums`,title:`${e.session_count} session${e.session_count===1?``:`s`} currently linked into this thread.`,children:e.session_count})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-1`,children:[(0,W.jsx)(yf,{thread:e}),(0,W.jsxs)(`span`,{className:`text-[11px] text-fg-muted truncate flex-1 min-w-0`,children:[e.origin_count,` origin`,e.origin_count===1?``:`s`,` ·`,` `,e.closed_at?`closed`:`open`,e.summary?` · ${e.summary}`:``]})]})]})}function yf({thread:e}){return!e.project&&e.session_count===0?(0,W.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-bg-elevated text-fg-muted/70 border border-line`,title:`No sessions yet — add a session from any session header to give this thread a project origin.`,children:`empty`}):e.project_count>1?(0,W.jsxs)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-bg-elevated text-accent border border-accent/30 cursor-help shrink-0`,title:`Cross-project thread: spans ${e.project_count} projects (dominant: ${e.project??`unknown`}).`,children:[e.project_count,` repos`]}):e.project?(0,W.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-bg-elevated text-fg-muted border border-line truncate max-w-[120px] shrink-0`,title:`All sessions in this thread are from project "${e.project}".`,children:e.project}):null}function bf({thread:e,onPatch:t}){let[,n]=Cn(),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(e.name);(0,U.useEffect)(()=>{r||o(e.name)},[e.name,r]);let s=()=>{let n=a.trim();if(i(!1),!n||n===e.name){o(e.name);return}t({id:e.id,patch:{name:n}}),Z({message:`Renamed thread to "${n}"`,tone:`success`})},c=()=>{i(!1),o(e.name)};return(0,W.jsxs)(`div`,{className:`p-6 space-y-6`,children:[(0,W.jsxs)(`header`,{className:`space-y-1 max-w-3xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[r?(0,W.jsx)(`input`,{autoFocus:!0,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),s()):e.key===`Escape`&&(e.preventDefault(),c())},onBlur:s,"aria-label":`Rename thread`,className:`text-2xl font-semibold bg-bg-elevated border border-accent rounded px-2 py-0.5 outline-none flex-1`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h1`,{className:`text-2xl font-semibold cursor-text`,onDoubleClick:()=>i(!0),title:`Double-click (or use the pencil button) to rename this thread.`,children:e.name}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>i(!0),className:`text-xs text-fg-muted hover:text-accent px-1.5 py-0.5 rounded border border-transparent hover:border-line`,title:`Rename this thread`,"aria-label":`Rename thread`,children:`✎`})]}),(0,W.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[e.session_count,` session`,e.session_count===1?``:`s`,` ·`,` `,e.closed_at?`closed`:`open`]})]}),e.summary&&(0,W.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e.summary}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-1`,children:[e.closed_at?(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({id:e.id,patch:{reopen:!0}}),className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover`,title:`Mark this thread as active again so new sessions can be added.`,children:`Reopen`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>t({id:e.id,patch:{close:!0}}),className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover`,title:`Mark this thread as finished; sessions stay linked and you can reopen it at any time.`,children:`Close thread`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{confirm(`Archive "${e.name}"? You can still find it with Show archived.`)&&(t({id:e.id,patch:{archive:!0}}),n({thread:null}))},className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover`,title:`Hide this thread from the main list; it stays in the database and reappears under Show archived.`,children:`Archive`}),(0,W.jsx)(Cf,{thread:e})]})]}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2 max-w-3xl`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold uppercase tracking-wider text-fg-muted`,children:`Sessions in this thread`}),(0,W.jsx)(xf,{threadId:e.id,existingIds:new Set(e.edges.map(e=>e.session_id))})]}),e.edges.length===0?(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted p-3 border border-line rounded max-w-3xl space-y-2`,children:[(0,W.jsx)(`div`,{className:`italic`,children:`No sessions in this thread yet. Two ways to add:`}),(0,W.jsxs)(`ol`,{className:`list-decimal pl-5 space-y-1 not-italic`,children:[(0,W.jsxs)(`li`,{children:[`Use the `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`+ Add session`}),` `,`button above to search and link any session.`]}),(0,W.jsxs)(`li`,{children:[`Open any session from the sidebar and click`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`+ Add to thread`}),` in its transcript header.`]})]})]}):(0,W.jsx)(`div`,{"data-share-capture":`thread-graph`,"data-share-capture-thread-id":e.id,children:(0,W.jsx)(Kd,{thread:e})})]}),(0,W.jsxs)(`section`,{className:`rounded border border-line bg-bg-elevated p-3 text-xs text-fg-muted space-y-1 max-w-3xl`,children:[(0,W.jsx)(`div`,{className:`font-medium text-fg text-sm`,children:`How Threads work`}),(0,W.jsx)(`p`,{children:`A thread is a DAG (not a tree). It can have multiple origins. A session can belong to multiple threads. Manual edges are always authoritative. Auto-detected edges (v0.7 Pro) will show up with a confidence score and will always be undoable.`}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:`Tip:`}),` pipe a whole thread back into Claude Code with `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[`recall context thread:`,e.id.slice(0,8)]}),`(CLI command landing in v0.15a.2).`]})]})]})}function xf({threadId:e,existingIds:t}){let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(``),o=bl(),s=K({queryKey:[`sessions`,{limit:500}],queryFn:()=>X.sessions({limit:500}),enabled:n,staleTime:3e4}),c=s.data??[],l=(0,U.useMemo)(()=>{let e=i.trim().toLowerCase(),n=c.filter(e=>!t.has(e.id));return e?n.filter(t=>[t.alias??``,t.first_user_message??``,t.project??``,t.id].join(` `).toLowerCase().includes(e)).slice(0,10):n.slice(0,10)},[c,t,i]);return n?(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:i,onChange:e=>a(e.target.value),placeholder:`search sessions by alias, project, or first message`,className:`text-xs bg-bg-elevated border border-line rounded px-2 py-1 w-80`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{r(!1),a(``)},className:`text-xs text-fg-muted hover:text-fg`,title:`Close the search without linking any session.`,children:`cancel`})]}),(0,W.jsxs)(`div`,{className:`absolute right-0 top-8 z-20 w-96 max-h-80 overflow-y-auto bg-bg border border-line rounded shadow-lg`,children:[s.isLoading&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`Loading sessions...`}),l.length===0&&!s.isLoading&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted italic`,children:i?`no matches`:`all sessions are already in this thread`}),l.map(t=>{let n=t.alias||t.first_user_message?.split(`
630
630
  `)[0].slice(0,80)||t.id.slice(0,8);return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{o.mutate({threadId:e,sessionId:t.id},{onSuccess:()=>a(``)})},className:`w-full text-left px-3 py-2 border-b border-line/40 hover:bg-accent/10 text-xs`,title:`Link ${t.id}`,children:[(0,W.jsx)(`div`,{className:`font-medium truncate`,children:n}),(0,W.jsxs)(`div`,{className:`text-fg-muted truncate`,children:[t.project||`—`,` · `,t.id.slice(0,8)]})]},t.id)})]})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(!0),className:`text-xs px-2 py-1 rounded bg-accent text-bg font-medium`,title:`Search and link any session into this thread (you can also start from a session's transcript header with + Add to thread).`,children:`+ Add session`})}function Sf({x:e,y:t,threadName:n,onRename:r,onClose:i,movableFolders:a,currentFolderId:o,onMoveToFolder:s}){let c=(0,U.useRef)(null),[l,u]=(0,U.useState)(`menu`);(0,U.useEffect)(()=>{let e=e=>{c.current&&!c.current.contains(e.target)&&i()},t=e=>{e.key===`Escape`&&(l===`menu`?i():u(`menu`))};return window.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[i,l]);let d=l===`move`?220:110;return(0,W.jsxs)(`div`,{ref:c,role:`menu`,"aria-label":`thread actions`,className:`fixed z-50 bg-bg-elevated border border-line rounded-lg shadow-xl py-1 text-xs`,style:{left:Math.min(e,window.innerWidth-240-8),top:Math.min(t,window.innerHeight-d-8),width:240},children:[(0,W.jsx)(`div`,{className:`px-3 pt-1 pb-1 text-[10px] uppercase tracking-wider text-fg-muted truncate`,children:n}),(0,W.jsx)(`div`,{className:`border-t border-line my-1`}),l===`menu`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{r(),i()},className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Rename thread`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:`inline edit, Enter to save`})]}),(0,W.jsxs)(`button`,{type:`button`,role:`menuitem`,onClick:()=>u(`move`),className:`block w-full text-left px-3 py-1.5 hover:bg-bg-hover`,children:[(0,W.jsx)(`div`,{className:`text-fg`,children:`Move to subfolder…`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted`,children:`file under a subfolder, or move back to the project root`})]})]}),l===`move`&&(0,W.jsxs)(`div`,{className:`max-h-56 overflow-auto`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{s(null),i()},className:Q(`block w-full text-left px-3 py-1.5 hover:bg-bg-hover italic`,o===null?`text-fg`:`text-fg-muted`),children:[`(project root)`,o===null&&` ✓`]}),a.length===0&&(0,W.jsx)(`div`,{className:`px-3 py-2 text-[10px] text-fg-muted italic`,children:`No subfolders for this project yet. Create one with the + button on the project header.`}),a.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{s(e.id),i()},className:Q(`block w-full text-left px-3 py-1.5 hover:bg-bg-hover truncate`,o===e.id?`text-fg`:`text-fg-muted`),children:[`📁 `,e.name,o===e.id&&` ✓`]},e.id))]})]})}function Cf({thread:e}){let{state:t,start:n,cancel:r,reset:i}=Ad(e.id),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{if(t.status!==`done`||!t.summary)return;let{generated:e,skipped:n,failed:r}=t.summary;r.length>0?Z({message:`Generated ${e.length}, skipped ${n.length}, ${r.length} failed`,tone:`error`}):Z({message:`Generated ${e.length} title${e.length===1?``:`s`}, skipped ${n.length}`,tone:`success`})},[t.status,t.summary]),t.status===`running`||t.status===`starting`||t.status===`cancelling`?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-2 px-2 py-1 text-xs rounded border border-accent bg-bg-elevated`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`inline-block animate-spin`,children:`⋮`}),(0,W.jsx)(`span`,{children:t.status===`cancelling`?`Cancelling...`:`Titling ${t.current} of ${t.total||`?`}...`}),(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`text-fg-muted hover:text-accent underline`,title:`Stop the bulk titler. Already-generated titles stay; the rest are skipped.`,children:`Cancel`})]}):(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:async()=>{if(!(t.status===`running`||t.status===`starting`)){c(!0);try{(await X.threadTitlesPreflight(e.id)).alreadyTitled===0?await n(!1):o(!0)}catch(e){Z({message:`Could not prepare bulk titler: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}finally{c(!1)}}},disabled:s,className:`px-2 py-1 text-xs rounded border border-line hover:bg-bg-hover disabled:opacity-50`,title:`Generate a coherent title for every session in this thread, walking the DAG so children inherit the parent's naming pattern.`,children:s?`Checking...`:`🪄 Title whole thread`}),a&&(0,W.jsx)(wf,{thread:e,onPick:e=>{o(!1),n(e)},onClose:()=>o(!1)}),t.status===`done`&&t.summary&&t.summary.failed.length>0&&(0,W.jsx)(Tf,{failures:t.summary.failed,onDismiss:i})]})}function wf({thread:e,onPick:t,onClose:n}){let r=(0,U.useRef)(null);return(0,U.useEffect)(()=>{function e(e){r.current&&!r.current.contains(e.target)&&n()}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[n]),(0,W.jsxs)(`div`,{ref:r,role:`dialog`,"aria-label":`Bulk title confirmation`,className:`absolute right-0 top-full mt-1 z-50 w-72 rounded border border-line bg-bg-elevated p-3 shadow-lg text-xs space-y-2`,children:[(0,W.jsxs)(`p`,{className:`text-fg`,children:[`Some sessions in “`,e.name,`” already have agent titles. Pick what to do:`]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>t(!1),className:`px-2 py-1 rounded border border-line hover:bg-bg-hover text-left`,children:[`Skip already-titled`,(0,W.jsx)(`span`,{className:`block text-[10px] text-fg-muted`,children:`Only title the untitled sessions. Recommended.`})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>t(!0),className:`px-2 py-1 rounded border border-line hover:bg-bg-hover text-left`,children:[`Regenerate all`,(0,W.jsx)(`span`,{className:`block text-[10px] text-fg-muted`,children:`Replace every title. Old titles stay in auto_title_history.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`px-2 py-1 rounded border border-transparent hover:bg-bg-hover text-fg-muted text-left`,children:`Cancel`})]})]})}function Tf({failures:e,onDismiss:t}){return(0,W.jsxs)(`div`,{role:`alert`,className:`absolute right-0 top-full mt-1 z-50 w-80 rounded border border-line bg-bg-elevated p-3 shadow-lg text-xs space-y-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:`Some sessions failed to title`}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-fg-muted hover:text-accent`,"aria-label":`Dismiss failure panel`,children:`Dismiss`})]}),(0,W.jsx)(`ul`,{className:`max-h-40 overflow-auto space-y-1`,children:e.map(e=>(0,W.jsxs)(`li`,{className:`font-mono text-[10px] text-fg-muted`,children:[(0,W.jsx)(`span`,{className:`text-fg`,children:e.sessionId.slice(0,8)}),`: `,e.error]},e.sessionId))})]})}function Ef(e){let{folder:t,depth:n,allSubfolders:r,threadsInProject:i,drag:a,dropHint:o,setDropHint:s}=e,[c,l]=(0,U.useState)(!0),u=r.filter(e=>e.parent_folder_id===t.id),d=i.filter(e=>e.folder_id===t.id),f=12+n*14,p=e.confirmingDeleteId===t.id,m=a?.kind===`folder`&&a.id!==t.id&&a.parentFolderId===t.parent_folder_id&&a.projectScope===t.project_scope,h=a?.kind===`thread`&&(t.project_scope===null||a.project===t.project_scope),g=m||h,_=o&&`folderId`in o&&o.folderId===t.id?o.pos:null;return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:Q(`flex items-center hover:bg-bg-hover`,m&&_===`before`&&`border-t-2 border-accent`,m&&_===`after`&&`border-b-2 border-accent`,h&&_!==null&&`bg-accent/15 ring-1 ring-accent/40`),draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`application/x-recall-folder`,t.id),e.setDrag({kind:`folder`,id:t.id,parentFolderId:t.parent_folder_id,projectScope:t.project_scope})},onDragEnd:()=>{e.setDrag(null),e.setDropHint(null)},onDragOver:e=>{if(g)if(e.preventDefault(),e.dataTransfer.dropEffect=`move`,m){let n=e.currentTarget.getBoundingClientRect(),r=e.clientY<n.top+n.height/2;s({folderId:t.id,pos:r?`before`:`after`})}else s({folderId:t.id,pos:`after`})},onDragLeave:()=>{_!==null&&s(null)},onDrop:n=>{if(g)if(n.preventDefault(),m){let r=n.currentTarget.getBoundingClientRect(),i=n.clientY<r.top+r.height/2;e.onReorderDrop(t,i?`before`:`after`)}else h&&e.onFileThreadIntoFolder(t)},children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`flex-1 flex items-center gap-2 py-1 text-xs text-fg-muted text-left truncate`,style:{paddingLeft:`${f}px`,paddingRight:`8px`},title:`Subfolder "${t.name}" — drag to reorder, drop a thread here to file it.`,children:[(0,W.jsx)(`span`,{className:`inline-block w-3 text-center`,children:c?`▶`:`▼`}),(0,W.jsxs)(`span`,{className:`flex-1 truncate`,children:[`📁 `,t.name]}),(0,W.jsx)(`span`,{className:`text-fg-muted/60`,children:d.length})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>e.onDeleteSubfolder(t.id),className:`px-2 py-1 text-xs text-fg-muted hover:text-role-user`,title:`Delete subfolder (threads inside pop back to project root)`,"aria-label":`Delete subfolder ${t.name}`,children:`×`})]}),p&&(0,W.jsxs)(`div`,{className:`mx-3 my-1 rounded border border-role-user/40 bg-role-user/5 p-2 text-[11px]`,style:{marginLeft:`${f}px`},children:[(0,W.jsxs)(`div`,{className:`text-fg mb-1.5`,children:[`Delete `,(0,W.jsx)(`span`,{className:`font-semibold`,children:t.name}),`?`]}),(0,W.jsx)(`div`,{className:`text-fg-muted mb-2`,children:`Threads inside pop back to the project root; nested subfolders are deleted too.`}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:e.onCancelDelete,className:`px-2 py-0.5 text-fg-muted hover:text-fg`,children:`Cancel`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>e.onConfirmDelete(t.id),className:`px-2 py-0.5 rounded bg-role-user/80 text-bg hover:bg-role-user`,autoFocus:!0,children:`Delete`})]})]}),!c&&(0,W.jsxs)(W.Fragment,{children:[u.map(t=>(0,W.jsx)(Ef,{folder:t,depth:n+1,allSubfolders:r,threadsInProject:i,threadId:e.threadId,renamingThreadId:e.renamingThreadId,onSelectThread:e.onSelectThread,onThreadContextMenu:e.onThreadContextMenu,onCommitRename:e.onCommitRename,onCancelRename:e.onCancelRename,onDeleteSubfolder:e.onDeleteSubfolder,confirmingDeleteId:e.confirmingDeleteId,onConfirmDelete:e.onConfirmDelete,onCancelDelete:e.onCancelDelete,drag:e.drag,setDrag:e.setDrag,dropHint:e.dropHint,setDropHint:e.setDropHint,onReorderDrop:e.onReorderDrop,onFileThreadIntoFolder:e.onFileThreadIntoFolder},t.id)),d.map(t=>(0,W.jsx)(vf,{thread:t,active:t.id===e.threadId,renaming:e.renamingThreadId===t.id,onSelect:()=>e.onSelectThread(t.id),onContextMenu:(n,r)=>e.onThreadContextMenu(t,n,r),onCommitRename:n=>e.onCommitRename(t,n),onCancelRename:e.onCancelRename,onDragStart:()=>e.setDrag({kind:`thread`,id:t.id,project:t.project??null}),onDragEnd:()=>{e.setDrag(null),e.setDropHint(null)}},t.id))]})]})}function Df({project:e,onCommit:t,onCancel:n}){let[r,i]=(0,U.useState)(``);return(0,W.jsxs)(`div`,{className:`px-3 py-2 border-t border-line bg-bg-elevated`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),t(r)):e.key===`Escape`&&(e.preventDefault(),n())},onBlur:()=>t(r),placeholder:`Subfolder name in ${e}`,"aria-label":`New subfolder in ${e}`,className:`w-full px-2 py-1 bg-bg border border-accent rounded text-sm outline-none`}),(0,W.jsx)(`div`,{className:`text-[10px] text-fg-muted mt-1`,children:`Enter to create · Esc to cancel`})]})}var Of=class extends Map{constructor(e,t=Mf){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(kf(this,e))}has(e){return super.has(kf(this,e))}set(e,t){return super.set(Af(this,e),t)}delete(e){return super.delete(jf(this,e))}};function kf({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function Af({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function jf({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function Mf(e){return typeof e==`object`&&e?e.valueOf():e}function Nf(e){return e}function Pf(e,...t){return Ff(e,Nf,Nf,t)}function Ff(e,t,n,r){return(function e(i,a){if(a>=r.length)return n(i);let o=new Of,s=r[a++],c=-1;for(let e of i){let t=s(e,++c,i),n=o.get(t);n?n.push(e):o.set(t,[e])}for(let[t,n]of o)o.set(t,e(n,a));return t(o)})(e,0)}var If={value:()=>{}};function Lf(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new Rf(n)}function Rf(e){this._=e}function zf(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}Rf.prototype=Lf.prototype={constructor:Rf,on:function(e,t){var n=this._,r=zf(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=Bf(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=Vf(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Vf(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new Rf(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function Bf(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Vf(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=If,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Hf={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function Uf(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Hf.hasOwnProperty(t)?{space:Hf[t],local:e}:e}function Wf(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function Gf(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Kf(e){var t=Uf(e);return(t.local?Gf:Wf)(t)}function qf(){}function Jf(e){return e==null?qf:function(){return this.querySelector(e)}}function Yf(e){typeof e!=`function`&&(e=Jf(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new Lm(r,this._parents)}function Xf(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Zf(){return[]}function Qf(e){return e==null?Zf:function(){return this.querySelectorAll(e)}}function $f(e){return function(){return Xf(e.apply(this,arguments))}}function ep(e){e=typeof e==`function`?$f(e):Qf(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new Lm(r,i)}function tp(e){return function(){return this.matches(e)}}function np(e){return function(t){return t.matches(e)}}var rp=Array.prototype.find;function ip(e){return function(){return rp.call(this.children,e)}}function ap(){return this.firstElementChild}function op(e){return this.select(e==null?ap:ip(typeof e==`function`?e:np(e)))}var sp=Array.prototype.filter;function cp(){return Array.from(this.children)}function lp(e){return function(){return sp.call(this.children,e)}}function up(e){return this.selectAll(e==null?cp:lp(typeof e==`function`?e:np(e)))}function dp(e){typeof e!=`function`&&(e=tp(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Lm(r,this._parents)}function fp(e){return Array(e.length)}function pp(){return new Lm(this._enter||this._groups.map(fp),this._parents)}function mp(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}mp.prototype={constructor:mp,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function hp(e){return function(){return e}}function gp(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new mp(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function _p(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new mp(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function vp(e){return e.__data__}function yp(e,t){if(!arguments.length)return Array.from(this,vp);var n=t?_p:gp,r=this._parents,i=this._groups;typeof e!=`function`&&(e=hp(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=bp(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new Lm(o,r),o._enter=s,o._exit=c,o}function bp(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function xp(){return new Lm(this._exit||this._groups.map(fp),this._parents)}function Sp(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function Cp(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new Lm(s,this._parents)}function wp(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Tp(e){e||=Ep;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new Lm(i,this._parents).order()}function Ep(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Dp(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Op(){return Array.from(this)}function kp(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function Ap(){let e=0;for(let t of this)++e;return e}function jp(){return!this.node()}function Mp(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function Np(e){return function(){this.removeAttribute(e)}}function Pp(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Fp(e,t){return function(){this.setAttribute(e,t)}}function Ip(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Lp(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Rp(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function zp(e,t){var n=Uf(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?Pp:Np:typeof t==`function`?n.local?Rp:Lp:n.local?Ip:Fp)(n,t))}function Bp(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Vp(e){return function(){this.style.removeProperty(e)}}function Hp(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Up(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Wp(e,t,n){return arguments.length>1?this.each((t==null?Vp:typeof t==`function`?Up:Hp)(e,t,n??``)):Gp(this.node(),e)}function Gp(e,t){return e.style.getPropertyValue(t)||Bp(e).getComputedStyle(e,null).getPropertyValue(t)}function Kp(e){return function(){delete this[e]}}function qp(e,t){return function(){this[e]=t}}function Jp(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Yp(e,t){return arguments.length>1?this.each((t==null?Kp:typeof t==`function`?Jp:qp)(e,t)):this.node()[e]}function Xp(e){return e.trim().split(/^|\s+/)}function Zp(e){return e.classList||new Qp(e)}function Qp(e){this._node=e,this._names=Xp(e.getAttribute(`class`)||``)}Qp.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function $p(e,t){for(var n=Zp(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function em(e,t){for(var n=Zp(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function tm(e){return function(){$p(this,e)}}function nm(e){return function(){em(this,e)}}function rm(e,t){return function(){(t.apply(this,arguments)?$p:em)(this,e)}}function im(e,t){var n=Xp(e+``);if(arguments.length<2){for(var r=Zp(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?rm:t?tm:nm)(n,t))}function am(){this.textContent=``}function om(e){return function(){this.textContent=e}}function sm(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function cm(e){return arguments.length?this.each(e==null?am:(typeof e==`function`?sm:om)(e)):this.node().textContent}function lm(){this.innerHTML=``}function um(e){return function(){this.innerHTML=e}}function dm(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function fm(e){return arguments.length?this.each(e==null?lm:(typeof e==`function`?dm:um)(e)):this.node().innerHTML}function pm(){this.nextSibling&&this.parentNode.appendChild(this)}function mm(){return this.each(pm)}function hm(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function gm(){return this.each(hm)}function _m(e){var t=typeof e==`function`?e:Kf(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function vm(){return null}function ym(e,t){var n=typeof e==`function`?e:Kf(e),r=t==null?vm:typeof t==`function`?t:Jf(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function bm(){var e=this.parentNode;e&&e.removeChild(this)}function xm(){return this.each(bm)}function Sm(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Cm(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function wm(e){return this.select(e?Cm:Sm)}function Tm(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Em(e){return function(t){e.call(this,t,this.__data__)}}function Dm(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function Om(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function km(e,t,n){return function(){var r=this.__on,i,a=Em(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function Am(e,t,n){var r=Dm(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?km:Om,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function jm(e,t,n){var r=Bp(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Mm(e,t){return function(){return jm(this,e,t)}}function Nm(e,t){return function(){return jm(this,e,t.apply(this,arguments))}}function Pm(e,t){return this.each((typeof t==`function`?Nm:Mm)(e,t))}function*Fm(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var Im=[null];function Lm(e,t){this._groups=e,this._parents=t}function Rm(){return new Lm([[document.documentElement]],Im)}function zm(){return this}Lm.prototype=Rm.prototype={constructor:Lm,select:Yf,selectAll:ep,selectChild:op,selectChildren:up,filter:dp,data:yp,enter:pp,exit:xp,join:Sp,merge:Cp,selection:zm,order:wp,sort:Tp,call:Dp,nodes:Op,node:kp,size:Ap,empty:jp,each:Mp,attr:zp,style:Wp,property:Yp,classed:im,text:cm,html:fm,raise:mm,lower:gm,append:_m,insert:ym,remove:xm,clone:wm,datum:Tm,on:Am,dispatch:Pm,[Symbol.iterator]:Fm};function Bm(e){return typeof e==`string`?new Lm([[document.querySelector(e)]],[document.documentElement]):new Lm([[e]],Im)}function Vm(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Hm(e,t){if(e=Vm(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var Um={capture:!0,passive:!1};function Wm(e){e.preventDefault(),e.stopImmediatePropagation()}function Gm(e){var t=e.document.documentElement,n=Bm(e).on(`dragstart.drag`,Wm,Um);`onselectstart`in t?n.on(`selectstart.drag`,Wm,Um):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function Km(e,t){var n=e.document.documentElement,r=Bm(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,Wm,Um),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}function qm(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Jm(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Ym(){}var Xm=.7,Zm=1/Xm,Qm=`\\s*([+-]?\\d+)\\s*`,$m=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,eh=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,th=/^#([0-9a-f]{3,8})$/,nh=RegExp(`^rgb\\(${Qm},${Qm},${Qm}\\)$`),rh=RegExp(`^rgb\\(${eh},${eh},${eh}\\)$`),ih=RegExp(`^rgba\\(${Qm},${Qm},${Qm},${$m}\\)$`),ah=RegExp(`^rgba\\(${eh},${eh},${eh},${$m}\\)$`),oh=RegExp(`^hsl\\(${$m},${eh},${eh}\\)$`),sh=RegExp(`^hsla\\(${$m},${eh},${eh},${$m}\\)$`),ch={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};qm(Ym,ph,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:lh,formatHex:lh,formatHex8:uh,formatHsl:dh,formatRgb:fh,toString:fh});function lh(){return this.rgb().formatHex()}function uh(){return this.rgb().formatHex8()}function dh(){return Eh(this).formatHsl()}function fh(){return this.rgb().formatRgb()}function ph(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=th.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?mh(t):n===3?new vh(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?hh(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?hh(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=nh.exec(e))?new vh(t[1],t[2],t[3],1):(t=rh.exec(e))?new vh(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ih.exec(e))?hh(t[1],t[2],t[3],t[4]):(t=ah.exec(e))?hh(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=oh.exec(e))?Th(t[1],t[2]/100,t[3]/100,1):(t=sh.exec(e))?Th(t[1],t[2]/100,t[3]/100,t[4]):ch.hasOwnProperty(e)?mh(ch[e]):e===`transparent`?new vh(NaN,NaN,NaN,0):null}function mh(e){return new vh(e>>16&255,e>>8&255,e&255,1)}function hh(e,t,n,r){return r<=0&&(e=t=n=NaN),new vh(e,t,n,r)}function gh(e){return e instanceof Ym||(e=ph(e)),e?(e=e.rgb(),new vh(e.r,e.g,e.b,e.opacity)):new vh}function _h(e,t,n,r){return arguments.length===1?gh(e):new vh(e,t,n,r??1)}function vh(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}qm(vh,_h,Jm(Ym,{brighter(e){return e=e==null?Zm:Zm**+e,new vh(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Xm:Xm**+e,new vh(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new vh(Ch(this.r),Ch(this.g),Ch(this.b),Sh(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:yh,formatHex:yh,formatHex8:bh,formatRgb:xh,toString:xh}));function yh(){return`#${wh(this.r)}${wh(this.g)}${wh(this.b)}`}function bh(){return`#${wh(this.r)}${wh(this.g)}${wh(this.b)}${wh((isNaN(this.opacity)?1:this.opacity)*255)}`}function xh(){let e=Sh(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Ch(this.r)}, ${Ch(this.g)}, ${Ch(this.b)}${e===1?`)`:`, ${e})`}`}function Sh(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ch(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function wh(e){return e=Ch(e),(e<16?`0`:``)+e.toString(16)}function Th(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Oh(e,t,n,r)}function Eh(e){if(e instanceof Oh)return new Oh(e.h,e.s,e.l,e.opacity);if(e instanceof Ym||(e=ph(e)),!e)return new Oh;if(e instanceof Oh)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Oh(o,s,c,e.opacity)}function Dh(e,t,n,r){return arguments.length===1?Eh(e):new Oh(e,t,n,r??1)}function Oh(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}qm(Oh,Dh,Jm(Ym,{brighter(e){return e=e==null?Zm:Zm**+e,new Oh(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Xm:Xm**+e,new Oh(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new vh(jh(e>=240?e-240:e+120,i,r),jh(e,i,r),jh(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Oh(kh(this.h),Ah(this.s),Ah(this.l),Sh(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Sh(this.opacity);return`${e===1?`hsl(`:`hsla(`}${kh(this.h)}, ${Ah(this.s)*100}%, ${Ah(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function kh(e){return e=(e||0)%360,e<0?e+360:e}function Ah(e){return Math.max(0,Math.min(1,e||0))}function jh(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Mh=Math.PI/180,Nh=180/Math.PI,Ph=-.14861,Fh=1.78277,Ih=-.29227,Lh=-.90649,Rh=1.97294,zh=Rh*Lh,Bh=Rh*Fh,Vh=Fh*Ih-Lh*Ph;function Hh(e){if(e instanceof Wh)return new Wh(e.h,e.s,e.l,e.opacity);e instanceof vh||(e=gh(e));var t=e.r/255,n=e.g/255,r=e.b/255,i=(Vh*r+zh*t-Bh*n)/(Vh+zh-Bh),a=r-i,o=(Rh*(n-i)-Ih*a)/Lh,s=Math.sqrt(o*o+a*a)/(Rh*i*(1-i)),c=s?Math.atan2(o,a)*Nh-120:NaN;return new Wh(c<0?c+360:c,s,i,e.opacity)}function Uh(e,t,n,r){return arguments.length===1?Hh(e):new Wh(e,t,n,r??1)}function Wh(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}qm(Wh,Uh,Jm(Ym,{brighter(e){return e=e==null?Zm:Zm**+e,new Wh(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Xm:Xm**+e,new Wh(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Mh,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),i=Math.sin(e);return new vh(255*(t+n*(Ph*r+Fh*i)),255*(t+n*(Ih*r+Lh*i)),255*(t+Rh*r*n),this.opacity)}}));var Gh=e=>()=>e;function Kh(e,t){return function(n){return e+n*t}}function qh(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Jh(e,t){var n=t-e;return n?Kh(e,n>180||n<-180?n-360*Math.round(n/360):n):Gh(isNaN(e)?t:e)}function Yh(e){return(e=+e)==1?Xh:function(t,n){return n-t?qh(t,n,e):Gh(isNaN(t)?n:t)}}function Xh(e,t){var n=t-e;return n?Kh(e,n):Gh(isNaN(e)?t:e)}var Zh=(function e(t){var n=Yh(t);function r(e,t){var r=n((e=_h(e)).r,(t=_h(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Xh(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Qh(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var $h=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,eg=new RegExp($h.source,`g`);function tg(e){return function(){return e}}function ng(e){return function(t){return e(t)+``}}function rg(e,t){var n=$h.lastIndex=eg.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=$h.exec(e))&&(i=eg.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Qh(r,i)})),n=eg.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?ng(c[0].x):tg(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}var ig=180/Math.PI,ag={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function og(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*ig,skewX:Math.atan(c)*ig,scaleX:o,scaleY:s}}var sg;function cg(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?ag:og(t.a,t.b,t.c,t.d,t.e,t.f)}function lg(e){return e==null||(sg||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),sg.setAttribute(`transform`,e),!(e=sg.transform.baseVal.consolidate()))?ag:(e=e.matrix,og(e.a,e.b,e.c,e.d,e.e,e.f))}function ug(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Qh(e,i)},{i:c-2,x:Qh(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Qh(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Qh(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Qh(e,n)},{i:s-2,x:Qh(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var dg=ug(cg,`px, `,`px)`,`deg)`),fg=ug(lg,`, `,`)`,`)`),pg=1e-12;function mg(e){return((e=Math.exp(e))+1/e)/2}function hg(e){return((e=Math.exp(e))-1/e)/2}function gg(e){return((e=Math.exp(2*e))-1)/(e+1)}var _g=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<pg)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=mg(y),c=s/(n*g)*(i*gg(t*r+y)-hg(y));return[a+c*d,o+c*f,s*i/mg(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4);function vg(e){return(function t(n){n=+n;function r(t,r){var i=e((t=Uh(t)).h,(r=Uh(r)).h),a=Xh(t.s,r.s),o=Xh(t.l,r.l),s=Xh(t.opacity,r.opacity);return function(e){return t.h=i(e),t.s=a(e),t.l=o(e**+n),t.opacity=s(e),t+``}}return r.gamma=t,r})(1)}vg(Jh);var yg=vg(Xh);function bg(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}var xg=0,Sg=0,Cg=0,wg=1e3,Tg,Eg,Dg=0,Og=0,kg=0,Ag=typeof performance==`object`&&performance.now?performance:Date,jg=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Mg(){return Og||=(jg(Ng),Ag.now()+kg)}function Ng(){Og=0}function Pg(){this._call=this._time=this._next=null}Pg.prototype=Fg.prototype={constructor:Pg,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Mg():+n)+(t==null?0:+t),!this._next&&Eg!==this&&(Eg?Eg._next=this:Tg=this,Eg=this),this._call=e,this._time=n,Bg()},stop:function(){this._call&&(this._call=null,this._time=1/0,Bg())}};function Fg(e,t,n){var r=new Pg;return r.restart(e,t,n),r}function Ig(){Mg(),++xg;for(var e=Tg,t;e;)(t=Og-e._time)>=0&&e._call.call(void 0,t),e=e._next;--xg}function Lg(){Og=(Dg=Ag.now())+kg,xg=Sg=0;try{Ig()}finally{xg=0,zg(),Og=0}}function Rg(){var e=Ag.now(),t=e-Dg;t>wg&&(kg-=t,Dg=e)}function zg(){for(var e,t=Tg,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Tg=n);Eg=e,Bg(r)}function Bg(e){xg||(Sg&&=clearTimeout(Sg),e-Og>24?(e<1/0&&(Sg=setTimeout(Lg,e-Ag.now()-kg)),Cg&&=clearInterval(Cg)):(Cg||=(Dg=Ag.now(),setInterval(Rg,wg)),xg=1,jg(Lg)))}function Vg(e,t,n){var r=new Pg;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Hg=Lf(`start`,`end`,`cancel`,`interrupt`),Ug=[];function Wg(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Jg(e,n,{name:t,index:r,group:i,on:Hg,tween:Ug,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Gg(e,t){var n=qg(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Kg(e,t){var n=qg(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function qg(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Jg(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Fg(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return Vg(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Vg(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function Yg(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Xg(e){return this.each(function(){Yg(this,e)})}function Zg(e,t){var n,r;return function(){var i=Kg(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function Qg(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Kg(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function $g(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=qg(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?Zg:Qg)(n,e,t))}function e_(e,t,n){var r=e._id;return e.each(function(){var e=Kg(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return qg(e,r).value[t]}}function t_(e,t){var n;return(typeof t==`number`?Qh:t instanceof ph?Zh:(n=ph(t))?(t=n,Zh):rg)(e,t)}function n_(e){return function(){this.removeAttribute(e)}}function r_(e){return function(){this.removeAttributeNS(e.space,e.local)}}function i_(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function a_(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function o_(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function s_(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function c_(e,t){var n=Uf(e),r=n===`transform`?fg:t_;return this.attrTween(e,typeof t==`function`?(n.local?s_:o_)(n,r,e_(this,`attr.`+e,t)):t==null?(n.local?r_:n_)(n):(n.local?a_:i_)(n,r,t))}function l_(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function u_(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function d_(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&u_(e,i)),n}return i._value=t,i}function f_(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&l_(e,i)),n}return i._value=t,i}function p_(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=Uf(e);return this.tween(n,(r.local?d_:f_)(r,t))}function m_(e,t){return function(){Gg(this,e).delay=+t.apply(this,arguments)}}function h_(e,t){return t=+t,function(){Gg(this,e).delay=t}}function g_(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?m_:h_)(t,e)):qg(this.node(),t).delay}function __(e,t){return function(){Kg(this,e).duration=+t.apply(this,arguments)}}function v_(e,t){return t=+t,function(){Kg(this,e).duration=t}}function y_(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?__:v_)(t,e)):qg(this.node(),t).duration}function b_(e,t){if(typeof t!=`function`)throw Error();return function(){Kg(this,e).ease=t}}function x_(e){var t=this._id;return arguments.length?this.each(b_(t,e)):qg(this.node(),t).ease}function S_(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Kg(this,e).ease=n}}function C_(e){if(typeof e!=`function`)throw Error();return this.each(S_(this._id,e))}function w_(e){typeof e!=`function`&&(e=tp(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new $_(r,this._parents,this._name,this._id)}function T_(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new $_(o,this._parents,this._name,this._id)}function E_(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function D_(e,t,n){var r,i,a=E_(t)?Gg:Kg;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function O_(e,t){var n=this._id;return arguments.length<2?qg(this.node(),n).on.on(e):this.each(D_(n,e,t))}function k_(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function A_(){return this.on(`end.remove`,k_(this._id))}function j_(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Jf(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,Wg(l[f],t,n,f,l,qg(u,n)));return new $_(a,this._parents,t,n)}function M_(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Qf(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=qg(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Wg(p,t,n,h,f,m);a.push(f),o.push(u)}return new $_(a,o,t,n)}var N_=Rm.prototype.constructor;function P_(){return new N_(this._groups,this._parents)}function F_(e,t){var n,r,i;return function(){var a=Gp(this,e),o=(this.style.removeProperty(e),Gp(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function I_(e){return function(){this.style.removeProperty(e)}}function L_(e,t,n){var r,i=n+``,a;return function(){var o=Gp(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function R_(e,t,n){var r,i,a;return function(){var o=Gp(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),Gp(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function z_(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Kg(this,e),l=c.on,u=c.value[a]==null?s||=I_(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function B_(e,t,n){var r=(e+=``)==`transform`?dg:t_;return t==null?this.styleTween(e,F_(e,r)).on(`end.style.`+e,I_(e)):typeof t==`function`?this.styleTween(e,R_(e,r,e_(this,`style.`+e,t))).each(z_(this._id,e)):this.styleTween(e,L_(e,r,t),n).on(`end.style.`+e,null)}function V_(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function H_(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&V_(e,a,n)),r}return a._value=t,a}function U_(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,H_(e,t,n??``))}function W_(e){return function(){this.textContent=e}}function G_(e){return function(){var t=e(this);this.textContent=t??``}}function K_(e){return this.tween(`text`,typeof e==`function`?G_(e_(this,`text`,e)):W_(e==null?``:e+``))}function q_(e){return function(t){this.textContent=e.call(this,t)}}function J_(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&q_(r)),t}return r._value=e,r}function Y_(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,J_(e))}function X_(){for(var e=this._name,t=this._id,n=tv(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=qg(c,t);Wg(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new $_(r,this._parents,e,n)}function Z_(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Kg(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var Q_=0;function $_(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function ev(e){return Rm().transition(e)}function tv(){return++Q_}var nv=Rm.prototype;$_.prototype=ev.prototype={constructor:$_,select:j_,selectAll:M_,selectChild:nv.selectChild,selectChildren:nv.selectChildren,filter:w_,merge:T_,selection:P_,transition:X_,call:nv.call,nodes:nv.nodes,node:nv.node,size:nv.size,empty:nv.empty,each:nv.each,on:O_,attr:c_,attrTween:p_,style:B_,styleTween:U_,text:K_,textTween:Y_,remove:A_,tween:$g,delay:g_,duration:y_,ease:x_,easeVarying:C_,end:Z_,[Symbol.iterator]:nv[Symbol.iterator]};function rv(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var iv={time:null,delay:0,duration:250,ease:rv};function av(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function ov(e){var t,n;e instanceof $_?(t=e._id,e=e._name):(t=tv(),(n=iv).time=Mg(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&Wg(c,e,t,l,o,n||av(c,t));return new $_(r,this._parents,e,t)}Rm.prototype.interrupt=Xg,Rm.prototype.transition=ov;var{abs:sv,max:cv,min:lv}=Math;[`w`,`e`].map(uv),[`n`,`s`].map(uv),[`n`,`w`,`e`,`s`,`nw`,`ne`,`sw`,`se`].map(uv);function uv(e){return{type:e}}function dv(e){let t=+this._x.call(null,e),n=+this._y.call(null,e);return fv(this.cover(t,n),t,n,e)}function fv(e,t,n,r){if(isNaN(t)||isNaN(n))return e;var i,a=e._root,o={data:r},s=e._x0,c=e._y0,l=e._x1,u=e._y1,d,f,p,m,h,g,_,v;if(!a)return e._root=o,e;for(;a.length;)if((h=t>=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f,i=a,!(a=a[_=g<<1|h]))return i[_]=o,e;if(p=+e._x.call(null,a.data),m=+e._y.call(null,a.data),t===p&&n===m)return o.next=a,i?i[_]=o:e._root=o,e;do i=i?i[_]=[,,,,]:e._root=[,,,,],(h=t>=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f;while((_=g<<1|h)==(v=(m>=f)<<1|p>=d));return i[v]=a,i[_]=o,e}function pv(e){var t,n,r=e.length,i,a,o=Array(r),s=Array(r),c=1/0,l=1/0,u=-1/0,d=-1/0;for(n=0;n<r;++n)isNaN(i=+this._x.call(null,t=e[n]))||isNaN(a=+this._y.call(null,t))||(o[n]=i,s[n]=a,i<c&&(c=i),i>u&&(u=i),a<l&&(l=a),a>d&&(d=a));if(c>u||l>d)return this;for(this.cover(c,l).cover(u,d),n=0;n<r;++n)fv(this,o[n],s[n],e[n]);return this}function mv(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var n=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(n))i=(n=Math.floor(e))+1,a=(r=Math.floor(t))+1;else{for(var o=i-n||1,s=this._root,c,l;n>e||e>=i||r>t||t>=a;)switch(l=(t<r)<<1|e<n,c=[,,,,],c[l]=s,s=c,o*=2,l){case 0:i=n+o,a=r+o;break;case 1:n=i-o,a=r+o;break;case 2:i=n+o,r=a-o;break;case 3:n=i-o,r=a-o;break}this._root&&this._root.length&&(this._root=s)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this}function hv(){var e=[];return this.visit(function(t){if(!t.length)do e.push(t.data);while(t=t.next)}),e}function gv(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function _v(e,t,n,r,i){this.node=e,this.x0=t,this.y0=n,this.x1=r,this.y1=i}function vv(e,t,n){var r,i=this._x0,a=this._y0,o,s,c,l,u=this._x1,d=this._y1,f=[],p=this._root,m,h;for(p&&f.push(new _v(p,i,a,u,d)),n==null?n=1/0:(i=e-n,a=t-n,u=e+n,d=t+n,n*=n);m=f.pop();)if(!(!(p=m.node)||(o=m.x0)>u||(s=m.y0)>d||(c=m.x1)<i||(l=m.y1)<a))if(p.length){var g=(o+c)/2,_=(s+l)/2;f.push(new _v(p[3],g,_,c,l),new _v(p[2],o,_,g,l),new _v(p[1],g,s,c,_),new _v(p[0],o,s,g,_)),(h=(t>=_)<<1|e>=g)&&(m=f[f.length-1],f[f.length-1]=f[f.length-1-h],f[f.length-1-h]=m)}else{var v=e-+this._x.call(null,p.data),y=t-+this._y.call(null,p.data),b=v*v+y*y;if(b<n){var x=Math.sqrt(n=b);i=e-x,a=t-x,u=e+x,d=t+x,r=p.data}}return r}function yv(e){if(isNaN(u=+this._x.call(null,e))||isNaN(d=+this._y.call(null,e)))return this;var t,n=this._root,r,i,a,o=this._x0,s=this._y0,c=this._x1,l=this._y1,u,d,f,p,m,h,g,_;if(!n)return this;if(n.length)for(;;){if((m=u>=(f=(o+c)/2))?o=f:c=f,(h=d>=(p=(s+l)/2))?s=p:l=p,t=n,!(n=n[g=h<<1|m]))return this;if(!n.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(r=t,_=g)}for(;n.data!==e;)if(i=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,i?(a?i.next=a:delete i.next,this):t?(a?t[g]=a:delete t[g],(n=t[0]||t[1]||t[2]||t[3])&&n===(t[3]||t[2]||t[1]||t[0])&&!n.length&&(r?r[_]=n:this._root=n),this):(this._root=a,this)}function bv(e){for(var t=0,n=e.length;t<n;++t)this.remove(e[t]);return this}function xv(){return this._root}function Sv(){var e=0;return this.visit(function(t){if(!t.length)do++e;while(t=t.next)}),e}function Cv(e){var t=[],n,r=this._root,i,a,o,s,c;for(r&&t.push(new _v(r,this._x0,this._y0,this._x1,this._y1));n=t.pop();)if(!e(r=n.node,a=n.x0,o=n.y0,s=n.x1,c=n.y1)&&r.length){var l=(a+s)/2,u=(o+c)/2;(i=r[3])&&t.push(new _v(i,l,u,s,c)),(i=r[2])&&t.push(new _v(i,a,u,l,c)),(i=r[1])&&t.push(new _v(i,l,o,s,u)),(i=r[0])&&t.push(new _v(i,a,o,l,u))}return this}function wv(e){var t=[],n=[],r;for(this._root&&t.push(new _v(this._root,this._x0,this._y0,this._x1,this._y1));r=t.pop();){var i=r.node;if(i.length){var a,o=r.x0,s=r.y0,c=r.x1,l=r.y1,u=(o+c)/2,d=(s+l)/2;(a=i[0])&&t.push(new _v(a,o,s,u,d)),(a=i[1])&&t.push(new _v(a,u,s,c,d)),(a=i[2])&&t.push(new _v(a,o,d,u,l)),(a=i[3])&&t.push(new _v(a,u,d,c,l))}n.push(r)}for(;r=n.pop();)e(r.node,r.x0,r.y0,r.x1,r.y1);return this}function Tv(e){return e[0]}function Ev(e){return arguments.length?(this._x=e,this):this._x}function Dv(e){return e[1]}function Ov(e){return arguments.length?(this._y=e,this):this._y}function kv(e,t,n){var r=new Av(t??Tv,n??Dv,NaN,NaN,NaN,NaN);return e==null?r:r.addAll(e)}function Av(e,t,n,r,i,a){this._x=e,this._y=t,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function jv(e){for(var t={data:e.data},n=t;e=e.next;)n=n.next={data:e.data};return t}var Mv=kv.prototype=Av.prototype;Mv.copy=function(){var e=new Av(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,n,r;if(!t)return e;if(!t.length)return e._root=jv(t),e;for(n=[{source:t,target:e._root=[,,,,]}];t=n.pop();)for(var i=0;i<4;++i)(r=t.source[i])&&(r.length?n.push({source:r,target:t.target[i]=[,,,,]}):t.target[i]=jv(r));return e},Mv.add=dv,Mv.addAll=pv,Mv.cover=mv,Mv.data=hv,Mv.extent=gv,Mv.find=vv,Mv.remove=yv,Mv.removeAll=bv,Mv.root=xv,Mv.size=Sv,Mv.visit=Cv,Mv.visitAfter=wv,Mv.x=Ev,Mv.y=Ov;function Nv(e){return function(){return e}}function Pv(e){return(e()-.5)*1e-6}function Fv(e){return e.x+e.vx}function Iv(e){return e.y+e.vy}function Lv(e){var t,n,r,i=1,a=1;typeof e!=`function`&&(e=Nv(e==null?1:+e));function o(){for(var e,o=t.length,c,l,u,d,f,p,m=0;m<a;++m)for(c=kv(t,Fv,Iv).visitAfter(s),e=0;e<o;++e)l=t[e],f=n[l.index],p=f*f,u=l.x+l.vx,d=l.y+l.vy,c.visit(h);function h(e,t,n,a,o){var s=e.data,c=e.r,m=f+c;if(s){if(s.index>l.index){var h=u-s.x-s.vx,g=d-s.y-s.vy,_=h*h+g*g;_<m*m&&(h===0&&(h=Pv(r),_+=h*h),g===0&&(g=Pv(r),_+=g*g),_=(m-(_=Math.sqrt(_)))/_*i,l.vx+=(h*=_)*(m=(c*=c)/(p+c)),l.vy+=(g*=_)*m,s.vx-=h*(m=1-m),s.vy-=g*m)}return}return t>u+m||a<u-m||n>d+m||o<d-m}}function s(e){if(e.data)return e.r=n[e.data.index];for(var t=e.r=0;t<4;++t)e[t]&&e[t].r>e.r&&(e.r=e[t].r)}function c(){if(t){var r,i=t.length,a;for(n=Array(i),r=0;r<i;++r)a=t[r],n[a.index]=+e(a,r,t)}}return o.initialize=function(e,n){t=e,r=n,c()},o.iterations=function(e){return arguments.length?(a=+e,o):a},o.strength=function(e){return arguments.length?(i=+e,o):i},o.radius=function(t){return arguments.length?(e=typeof t==`function`?t:Nv(+t),c(),o):e},o}var Rv=1664525,zv=1013904223,Bv=4294967296;function Vv(){let e=1;return()=>(e=(Rv*e+zv)%Bv)/Bv}function Hv(e){return e.x}function Uv(e){return e.y}var Wv=10,Gv=Math.PI*(3-Math.sqrt(5));function Kv(e){var t,n=1,r=.001,i=1-r**(1/300),a=0,o=.6,s=new Map,c=Fg(d),l=Lf(`tick`,`end`),u=Vv();e??=[];function d(){f(),l.call(`tick`,t),n<r&&(c.stop(),l.call(`end`,t))}function f(r){var c,l=e.length,u;r===void 0&&(r=1);for(var d=0;d<r;++d)for(n+=(a-n)*i,s.forEach(function(e){e(n)}),c=0;c<l;++c)u=e[c],u.fx==null?u.x+=u.vx*=o:(u.x=u.fx,u.vx=0),u.fy==null?u.y+=u.vy*=o:(u.y=u.fy,u.vy=0);return t}function p(){for(var t=0,n=e.length,r;t<n;++t){if(r=e[t],r.index=t,r.fx!=null&&(r.x=r.fx),r.fy!=null&&(r.y=r.fy),isNaN(r.x)||isNaN(r.y)){var i=Wv*Math.sqrt(.5+t),a=t*Gv;r.x=i*Math.cos(a),r.y=i*Math.sin(a)}(isNaN(r.vx)||isNaN(r.vy))&&(r.vx=r.vy=0)}}function m(t){return t.initialize&&t.initialize(e,u),t}return p(),t={tick:f,restart:function(){return c.restart(d),t},stop:function(){return c.stop(),t},nodes:function(n){return arguments.length?(e=n,p(),s.forEach(m),t):e},alpha:function(e){return arguments.length?(n=+e,t):n},alphaMin:function(e){return arguments.length?(r=+e,t):r},alphaDecay:function(e){return arguments.length?(i=+e,t):+i},alphaTarget:function(e){return arguments.length?(a=+e,t):a},velocityDecay:function(e){return arguments.length?(o=1-e,t):1-o},randomSource:function(e){return arguments.length?(u=e,s.forEach(m),t):u},force:function(e,n){return arguments.length>1?(n==null?s.delete(e):s.set(e,m(n)),t):s.get(e)},find:function(t,n,r){var i=0,a=e.length,o,s,c,l,u;for(r==null?r=1/0:r*=r,i=0;i<a;++i)l=e[i],o=t-l.x,s=n-l.y,c=o*o+s*s,c<r&&(u=l,r=c);return u},on:function(e,n){return arguments.length>1?(l.on(e,n),t):l.on(e)}}}function qv(){var e,t,n,r,i=Nv(-30),a,o=1,s=1/0,c=.81;function l(n){var i,a=e.length,o=kv(e,Hv,Uv).visitAfter(d);for(r=n,i=0;i<a;++i)t=e[i],o.visit(f)}function u(){if(e){var t,n=e.length,r;for(a=Array(n),t=0;t<n;++t)r=e[t],a[r.index]=+i(r,t,e)}}function d(e){var t=0,n,r,i=0,o,s,c;if(e.length){for(o=s=c=0;c<4;++c)(n=e[c])&&(r=Math.abs(n.value))&&(t+=n.value,i+=r,o+=r*n.x,s+=r*n.y);e.x=o/i,e.y=s/i}else{n=e,n.x=n.data.x,n.y=n.data.y;do t+=a[n.data.index];while(n=n.next)}e.value=t}function f(e,i,l,u){if(!e.value)return!0;var d=e.x-t.x,f=e.y-t.y,p=u-i,m=d*d+f*f;if(p*p/c<m)return m<s&&(d===0&&(d=Pv(n),m+=d*d),f===0&&(f=Pv(n),m+=f*f),m<o&&(m=Math.sqrt(o*m)),t.vx+=d*e.value*r/m,t.vy+=f*e.value*r/m),!0;if(!(e.length||m>=s)){(e.data!==t||e.next)&&(d===0&&(d=Pv(n),m+=d*d),f===0&&(f=Pv(n),m+=f*f),m<o&&(m=Math.sqrt(o*m)));do e.data!==t&&(p=a[e.data.index]*r/m,t.vx+=d*p,t.vy+=f*p);while(e=e.next)}}return l.initialize=function(t,r){e=t,n=r,u()},l.strength=function(e){return arguments.length?(i=typeof e==`function`?e:Nv(+e),u(),l):i},l.distanceMin=function(e){return arguments.length?(o=e*e,l):Math.sqrt(o)},l.distanceMax=function(e){return arguments.length?(s=e*e,l):Math.sqrt(s)},l.theta=function(e){return arguments.length?(c=e*e,l):Math.sqrt(c)},l}function Jv(e,t,n){var r,i=Nv(.1),a,o;typeof e!=`function`&&(e=Nv(+e)),t??=0,n??=0;function s(e){for(var i=0,s=r.length;i<s;++i){var c=r[i],l=c.x-t||1e-6,u=c.y-n||1e-6,d=Math.sqrt(l*l+u*u),f=(o[i]-d)*a[i]*e/d;c.vx+=l*f,c.vy+=u*f}}function c(){if(r){var t,n=r.length;for(a=Array(n),o=Array(n),t=0;t<n;++t)o[t]=+e(r[t],t,r),a[t]=isNaN(o[t])?0:+i(r[t],t,r)}}return s.initialize=function(e){r=e,c()},s.strength=function(e){return arguments.length?(i=typeof e==`function`?e:Nv(+e),c(),s):i},s.radius=function(t){return arguments.length?(e=typeof t==`function`?t:Nv(+t),c(),s):e},s.x=function(e){return arguments.length?(t=+e,s):t},s.y=function(e){return arguments.length?(n=+e,s):n},s}function Yv(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}var Xv=Symbol(`implicit`);function Zv(){var e=new Of,t=[],n=[],r=Xv;function i(i){let a=e.get(i);if(a===void 0){if(r!==Xv)return r;e.set(i,a=t.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return t.slice();t=[],e=new Of;for(let r of n)e.has(r)||e.set(r,t.push(r)-1);return i},i.range=function(e){return arguments.length?(n=Array.from(e),i):n.slice()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return Zv(t,n).unknown(r)},Yv.apply(i,arguments),i}yg(Uh(-100,.75,.35),Uh(80,1.5,.8));var Qv=yg(Uh(260,.75,.35),Uh(80,1.5,.8));Uh();var $v=e=>()=>e;function ey(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function ty(e,t,n){this.k=e,this.x=t,this.y=n}ty.prototype={constructor:ty,scale:function(e){return e===1?this:new ty(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ty(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var ny=new ty(1,0,0);ry.prototype=ty.prototype;function ry(e){for(;!e.__zoom;)if(!(e=e.parentNode))return ny;return e.__zoom}function iy(e){e.stopImmediatePropagation()}function ay(e){e.preventDefault(),e.stopImmediatePropagation()}function oy(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function sy(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function cy(){return this.__zoom||ny}function ly(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function uy(){return navigator.maxTouchPoints||`ontouchstart`in this}function dy(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function fy(){var e=oy,t=sy,n=dy,r=ly,i=uy,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=_g,l=Lf(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,cy).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,cy),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(ny.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new ty(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new ty(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new ty(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=Bm(this.that).datum();l.call(e,this.that,new ey(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Hm(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],Yg(this),s.start();ay(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=Bm(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Hm(t,i),l=t.clientX,u=t.clientY;Gm(t.view),iy(t),a.mouse=[c,this.__zoom.invert(c)],Yg(this),a.start();function d(e){if(ay(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Hm(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Km(e.view,a.moved),ay(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Hm(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);ay(r),s>0?Bm(this).transition().duration(s).call(x,d,c,r):Bm(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(iy(t),s=0;s<i;++s)c=r[s],l=Hm(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),Yg(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(ay(e),s=0;s<a;++s)c=i[s],l=Hm(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(iy(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=Hm(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=Bm(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:$v(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:$v(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:$v(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:$v([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}function py({projectName:e,onPickProject:t}){let[n,r]=(0,U.useState)(`galaxy`),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(!1),f=K({queryKey:[`cog-graph-projects`],queryFn:()=>X.projects()}),p=K({queryKey:[`cog-graph`,e],queryFn:()=>X.graph(e),enabled:!!e}),m=(0,U.useMemo)(()=>Ey(p.data?.sessions??[],p.data?.thread_edges??[]),[p.data]),h=(0,U.useMemo)(()=>{let e=new Map;for(let t of m)t.skill&&e.set(t.skill,(e.get(t.skill)??0)+1);let t=0;for(let n of e.values())t+=Math.max(0,n-1);return t},[m]),g=(0,U.useMemo)(()=>Dy(m),[m]),_=(0,U.useMemo)(()=>c?m.find(e=>e.full_id===c)??null:null,[c,m]);return(0,W.jsxs)(`div`,{className:`flex flex-col h-full bg-bg text-fg`,children:[(0,W.jsxs)(`header`,{className:`flex items-center gap-4 px-6 py-3 border-b border-line bg-bg-elevated`,children:[(0,W.jsx)(`span`,{className:`font-semibold text-sm`,children:`Cognitive Graph`}),(0,W.jsx)(my,{current:e,available:f.data??[],onPick:t}),(0,W.jsxs)(`span`,{className:`text-xs text-fg-dim`,children:[m.length,` sessions · `,g.length,` clusters`,p.data?.thread_edges?.length?` · ${p.data.thread_edges.length} thread edges`:``,h>0?` · ${h} skill chains`:` · 0 skill chains`]}),(0,W.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),placeholder:`filter by brand / skill / id…`,className:`ml-auto bg-bg border border-line rounded px-3 py-1 text-xs text-fg placeholder:text-fg-dim focus:outline-none focus:border-accent w-64`}),(0,W.jsx)(hy,{view:n,onChange:r})]}),(0,W.jsxs)(`main`,{className:`flex-1 flex min-h-0`,children:[(0,W.jsxs)(`div`,{className:`flex-1 relative overflow-hidden bg-[radial-gradient(ellipse_at_center,#15151a_0%,#0a0a0c_80%)]`,children:[p.isLoading&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-dim text-xs`,children:`loading project graph…`}),p.error&&(0,W.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center text-warn text-xs`,children:[`error: `,p.error.message]}),p.data&&m.length>0&&(0,W.jsx)(by,{projectName:e,sessions:m,brandOrder:g,threadEdges:p.data.thread_edges??[],showSkillChains:u,view:n,focusId:i,search:o,onSelect:e=>{l(e),n===`focus`&&a(e)}}),p.data&&m.length===0&&(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-fg-dim text-xs`,children:`No sessions in this project yet.`}),(0,W.jsx)(gy,{showSkillChains:u,onToggleSkillChains:()=>d(e=>!e)})]}),(0,W.jsx)(`aside`,{className:`w-80 border-l border-line bg-bg-elevated p-5 overflow-y-auto text-xs`,children:(0,W.jsx)(_y,{session:_,allSessions:m,onPick:e=>{l(e),n===`focus`&&a(e)}})})]})]})}function my({current:e,available:t,onPick:n}){return(0,W.jsxs)(`select`,{value:e,onChange:e=>n(e.target.value),className:`bg-bg border border-line rounded px-2 py-1 text-xs text-fg cursor-pointer max-w-[16rem]`,children:[t.length===0&&(0,W.jsx)(`option`,{value:e,children:e}),t.map(e=>(0,W.jsxs)(`option`,{value:e.name,children:[e.name,` (`,e.session_count,`)`]},e.id))]})}function hy({view:e,onChange:t}){return(0,W.jsx)(`div`,{className:`flex gap-1 bg-bg border border-line rounded p-0.5`,children:[`galaxy`,`focus`].map(n=>(0,W.jsx)(`button`,{onClick:()=>t(n),className:`px-3 py-1 text-xs rounded font-medium ${e===n?`bg-accent text-white`:`text-fg-dim hover:text-fg`}`,children:n===`galaxy`?`Galaxy`:`Focus (INDEX)`},n))})}function gy({showSkillChains:e,onToggleSkillChains:t}){return(0,W.jsxs)(`div`,{className:`absolute bottom-4 left-4 bg-bg/90 backdrop-blur-sm border border-line rounded-md px-4 py-3 text-xs text-fg-dim leading-relaxed max-w-sm shadow-lg`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg text-sm mb-1.5`,children:`Reading the galaxy`}),(0,W.jsx)(`div`,{className:`text-xs text-fg-dim mb-3 italic`,children:`Every circle is one terminal session. Lines show how sessions relate.`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1.5`,children:`Circles`}),(0,W.jsxs)(`div`,{className:`flex items-center mb-1.5`,children:[(0,W.jsx)(`span`,{className:`inline-block w-4 h-4 rounded-full mr-2 shrink-0`,style:{background:`#8a78ff`,boxShadow:`0 0 0 2px #b3a8ff inset`}}),`the project (this repo) — center hub`]}),(0,W.jsxs)(`div`,{className:`flex items-center mb-1.5`,children:[(0,W.jsx)(`span`,{className:`inline-block w-3.5 h-3.5 rounded-full mr-2 shrink-0`,style:{background:`#4f9ec4`,boxShadow:`0 0 0 1.5px #86c4dd inset, 0 0 0 2px #4f9ec4`}}),`thread origin — started a family`]}),(0,W.jsxs)(`div`,{className:`flex items-center mb-0.5`,children:[(0,W.jsx)(`span`,{className:`inline-block w-3 h-3 rounded-full mr-2 shrink-0`,style:{background:Qv(.78)}}),`a regular session`]}),(0,W.jsx)(`div`,{className:`text-[11px] text-fg-dim/80 mb-3 ml-[26px]`,children:`color tracks which agent ran it; size tracks message count`}),(0,W.jsx)(`div`,{className:`font-semibold text-fg mb-1.5`,children:`Lines`}),(0,W.jsxs)(`div`,{className:`flex items-center mb-1.5`,children:[(0,W.jsx)(`span`,{className:`inline-block w-5 h-px mr-2 shrink-0`,style:{background:`#4a4a52`,height:1}}),`belongs to this project`]}),(0,W.jsxs)(`div`,{className:`flex items-center mb-1.5`,children:[(0,W.jsx)(`span`,{className:`inline-block w-5 mr-2 shrink-0`,style:{background:`#4f9ec4`,height:2,opacity:.9}}),`child → parent inside a thread`]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 hover:text-fg cursor-pointer select-none`,title:`Toggle shared-skill correlation overlay`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:e,onChange:t,className:`cursor-pointer accent-[#b3a8ff]`}),(0,W.jsx)(`span`,{className:`inline-block w-5 shrink-0`,style:{borderTop:`1.5px dashed #b3a8ff`,opacity:e?.85:.3}}),(0,W.jsx)(`span`,{style:{opacity:e?1:.5},children:`sessions sharing a skill`})]})]})}function _y({session:e,allSessions:t,onPick:n}){if(!e)return(0,W.jsx)(`div`,{className:`text-fg-dim italic`,children:`Click a node to inspect.`});let r=t.filter(t=>t.brandKey===e.brandKey&&t.full_id!==e.full_id),i=t.filter(t=>t.skill&&t.skill===e.skill&&t.brandKey!==e.brandKey).slice(0,8);return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-[10px] uppercase tracking-wider text-fg-dim mb-3`,children:`Detail`}),(0,W.jsx)(vy,{label:`Decimal coordinate`,children:(0,W.jsx)(`span`,{className:`font-mono text-accent text-sm font-semibold`,children:e.decimal})}),(0,W.jsx)(vy,{label:`Title`,children:(0,W.jsx)(`span`,{className:`break-words`,children:e.title})}),e.brand&&(0,W.jsx)(vy,{label:`Brand cluster`,children:e.brand}),e.skill&&(0,W.jsx)(vy,{label:`Skill`,children:e.skill}),e.title_quality&&(0,W.jsx)(vy,{label:`Title quality`,children:(0,W.jsx)(`span`,{className:`font-mono`,children:e.title_quality})}),(0,W.jsx)(vy,{label:`Started`,children:e.started_at?new Date(e.started_at).toLocaleString():`—`}),(0,W.jsx)(vy,{label:`Messages`,children:e.msgs}),(0,W.jsx)(vy,{label:`Session UUID`,children:(0,W.jsx)(`span`,{className:`font-mono text-[10px] text-fg-dim break-all`,children:e.full_id})}),r.length>0&&(0,W.jsx)(yy,{label:`Same-brand siblings (${r.length})`,peers:r.slice(0,8),onPick:n,overflow:r.length>8?r.length-8:0}),i.length>0&&(0,W.jsx)(yy,{label:`Same-skill cousins (other brands)`,peers:i,onPick:n})]})}function vy({label:e,children:t}){return(0,W.jsxs)(`div`,{className:`mb-3`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-wider text-fg-dim mb-1`,children:e}),(0,W.jsx)(`div`,{className:`text-fg leading-snug`,children:t})]})}function yy({label:e,peers:t,onPick:n,overflow:r}){return(0,W.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-line`,children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-wider text-fg-dim mb-1`,children:e}),t.map(e=>(0,W.jsxs)(`button`,{onClick:()=>n(e.full_id),className:`w-full text-left px-2 py-1.5 -mx-2 rounded hover:bg-bg flex items-baseline gap-2 cursor-pointer`,children:[(0,W.jsx)(`span`,{className:`font-mono text-[10px] text-accent min-w-[3rem]`,children:e.decimal}),(0,W.jsx)(`span`,{className:`text-[11px] text-fg truncate flex-1`,children:e.title})]},e.full_id)),r?(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-dim mt-1 px-2`,children:[`+`,r,` more`]}):null]})}function by({projectName:e,sessions:t,brandOrder:n,threadEdges:r,showSkillChains:i,view:a,focusId:o,search:s,onSelect:c}){let l=(0,U.useRef)(null),u=(0,U.useRef)(null),[d,f]=(0,U.useState)({w:800,h:600}),p=(0,U.useRef)(ny),m=(0,U.useRef)(a),h=(0,U.useRef)(c);return(0,U.useEffect)(()=>{h.current=c},[c]),(0,U.useEffect)(()=>{let e=u.current;if(!e)return;let t=new ResizeObserver(()=>{f({w:e.clientWidth,h:e.clientHeight})});return t.observe(e),f({w:e.clientWidth,h:e.clientHeight}),()=>t.disconnect()},[]),(0,U.useEffect)(()=>{if(!l.current||t.length===0)return;let i=Bm(l.current);i.selectAll(`*`).remove(),m.current!==a&&(p.current=ny,m.current=a);let s=Sy(i,d,p),c=e=>h.current(e);a===`galaxy`?wy(i,s,e,t,n,r,!0,d,c):Ty(i,s,t,n,o,d,c)},[e,t,n,r,a,o,d]),(0,U.useEffect)(()=>{l.current&&Bm(l.current).select(`g.skill-edges`).style(`display`,i?null:`none`)},[i]),(0,U.useEffect)(()=>{if(!l.current)return;let e=Bm(l.current),t=s.trim().toLowerCase();if(!t){e.selectAll(`circle.node`).classed(`dim`,!1),e.selectAll(`line.link`).classed(`dim`,!1);return}e.selectAll(`circle.node`).classed(`dim`,e=>{let n=(e?.title??``).toLowerCase(),r=(e?.brand??``).toLowerCase(),i=(e?.skill??``).toLowerCase(),a=(e?.id??``).toLowerCase();return!(n.includes(t)||r.includes(t)||i.includes(t)||a.includes(t))}),e.selectAll(`line.link`).classed(`dim`,!0)},[s]),(0,W.jsx)(`div`,{ref:u,className:`absolute inset-0`,children:(0,W.jsx)(`svg`,{ref:l,className:`w-full h-full block`})})}var xy=bg(e=>Qv(.55+e*.4),20);function Sy(e,t,n){let r=e.append(`g`).attr(`class`,`zoom-root`);r.attr(`transform`,n.current.toString());let i=fy().scaleExtent([.2,8]).translateExtent([[-t.w,-t.h],[t.w*2,t.h*2]]).filter(e=>e.type===`wheel`?!0:e.type===`mousedown`?e.button===0?!e.target?.closest(`circle.node`):!1:(e.type,!0)).on(`zoom`,e=>{n.current=e.transform,r.attr(`transform`,e.transform.toString())});return e.call(i),e.call(i.transform,n.current),e.on(`dblclick.zoom`,null),e.on(`dblclick`,t=>{t.target?.closest(`circle.node`)||e.transition().duration(250).call(i.transform,ny)}),r}function Cy(e){return 3+Math.min(8,Math.sqrt(e.msgs)/4)}function wy(e,t,n,r,i,a,o,s,c){let{w:l,h:u}=s;e.attr(`viewBox`,`0 0 ${l} ${u}`);let d=l/2,f=u/2,p=Math.min(l,u)*.32,m=Zv().domain(i).range(xy),h=new Map;for(let e of r)h.set(e.full_id,e);let g=new Map,_=new Map;for(let e of a)h.has(e.session_id)&&(g.has(e.session_id)||g.set(e.session_id,{threadId:e.thread_id,role:e.role,parent:e.parent_session_id}),_.has(e.thread_id)||_.set(e.thread_id,[]),_.get(e.thread_id).push(e.session_id));let v=Array.from(_.entries()).filter(([,e])=>e.length>=2),y=new Set(v.map(([e])=>e));for(let[e,t]of g.entries())y.has(t.threadId)||g.delete(e);v.sort((e,t)=>t[1].length-e[1].length);let b=new Map;v.forEach(([e],t)=>{let n=t/Math.max(v.length,1)*2*Math.PI-Math.PI/2;b.set(e,{x:d+Math.cos(n)*p,y:f+Math.sin(n)*p})});let x=r.filter(e=>!g.has(e.full_id)),S=new Map,C=new Map;for(let[e,t]of g.entries())t.role===`child`&&t.parent&&(C.has(t.parent)||C.set(t.parent,[]),C.get(t.parent).push(e));for(let[e,t]of _.entries()){if(!y.has(e))continue;let n=b.get(e),r=t.filter(e=>{let t=g.get(e);return!!t&&(t.role===`origin`||!t.parent)});r.forEach((e,t)=>{if(r.length===1)S.set(e,{x:n.x,y:n.y});else{let i=-Math.PI/2+t/r.length*2*Math.PI;S.set(e,{x:n.x+Math.cos(i)*40,y:n.y+Math.sin(i)*40})}})}let w=Array.from(S.keys()),T=0;for(;w.length>0&&T<8;){let e=[];for(let t of w){let n=S.get(t),r=C.get(t)??[];if(r.length===0)continue;let i=180*.75**T,a=Math.atan2(n.y-f,n.x-d),o=r.length,s=o<=1?0:o===2?Math.PI/2:o===3?2*Math.PI/3:o<=5?Math.PI:o<=7?3*Math.PI/2:2*Math.PI,c=s>=2*Math.PI-1e-9;r.forEach((t,r)=>{if(S.has(t))return;let l;l=o===1?a:c?a-s/2+r/o*s:a-s/2+r/(o-1)*s,S.set(t,{x:n.x+Math.cos(l)*i,y:n.y+Math.sin(l)*i}),e.push(t)})}w=e,T++}let E=r.map((e,t)=>{let n=g.get(e.full_id),r=S.get(e.full_id);if(n&&r)return{...e,x:r.x,y:r.y};let i=x.indexOf(e),a=(i>=0?i:t)/Math.max(x.length,1)*2*Math.PI;return{...e,x:d+Math.cos(a)*p,y:f+Math.sin(a)*p}}),D=new Map;E.forEach((e,t)=>D.set(e.full_id,t));let O=[];for(let[e,t]of g.entries()){if(t.role!==`child`||!t.parent)continue;let n=D.get(e),r=D.get(t.parent);n==null||r==null||O.push({source:n,target:r})}let k=E.filter(e=>{let t=g.get(e.full_id);return!t||t.role===`origin`}),A=[];if(o){let e=new Map;for(let t of r)t.skill&&(e.has(t.skill)||e.set(t.skill,[]),e.get(t.skill).push(t));for(let t of e.values()){let e=t.slice().sort((e,t)=>(e.started_at??``).localeCompare(t.started_at??``));for(let t=1;t<e.length;t++){let n=D.get(e[t-1].full_id),r=D.get(e[t].full_id);n==null||r==null||A.push({source:n,target:r})}}}let j=t.append(`g`).attr(`class`,`spokes`),M=t.append(`g`).attr(`class`,`skill-edges`),ee=t.append(`g`).attr(`class`,`family-edges`),N=t.append(`g`).attr(`class`,`origin-halos`),te=t.append(`g`).attr(`class`,`hub`),P=t.append(`g`).attr(`class`,`nodes`),F=j.selectAll(`line`).data(k).enter().append(`line`).attr(`class`,`spoke`).attr(`stroke`,`#4a4a52`).attr(`stroke-opacity`,.1).attr(`stroke-width`,.5),I=M.selectAll(`line`).data(A).enter().append(`line`).attr(`class`,`link skill`).attr(`stroke`,`#b3a8ff`).attr(`stroke-opacity`,1).attr(`stroke-width`,2).attr(`stroke-dasharray`,`8 4`),L=ee.selectAll(`line`).data(O).enter().append(`line`).attr(`class`,`link family`).attr(`stroke`,`#4f9ec4`).attr(`stroke-opacity`,1).attr(`stroke-width`,2.5),R=E.filter(e=>g.get(e.full_id)?.role===`origin`),z=N.selectAll(`circle`).data(R).enter().append(`circle`).attr(`class`,`origin-halo`).attr(`fill`,`none`).attr(`stroke`,`#86c4dd`).attr(`stroke-opacity`,.35).attr(`stroke-width`,1).style(`pointer-events`,`none`);te.append(`circle`).attr(`class`,`node hub`).attr(`cx`,d).attr(`cy`,f).attr(`r`,18).attr(`fill`,`#8a78ff`).attr(`stroke`,`#b3a8ff`).attr(`stroke-width`,3).style(`pointer-events`,`none`),te.append(`text`).attr(`text-anchor`,`middle`).attr(`x`,d).attr(`y`,f+18+18).attr(`fill`,`#e6e6e8`).attr(`font-size`,13).attr(`font-weight`,600).style(`pointer-events`,`none`).text(n.length>38?n.slice(0,36)+`…`:n);let B=P.selectAll(`circle`).data(E).enter().append(`circle`).attr(`class`,e=>`node`+(g.get(e.full_id)?.role===`origin`?` origin`:``)).attr(`r`,e=>{let t=g.get(e.full_id),n=Cy(e);return t?.role===`origin`?(C.get(e.full_id)??[]).length>0?14:Math.max(n+4,9):n}).attr(`fill`,e=>g.get(e.full_id)?.role===`origin`?`#4f9ec4`:m(e.brandKey)).attr(`stroke`,e=>g.get(e.full_id)?.role===`origin`?`#86c4dd`:`#0e0e10`).attr(`stroke-width`,e=>g.get(e.full_id)?.role===`origin`?2:1.2).attr(`fill-opacity`,e=>g.has(e.full_id)?1:.35).style(`cursor`,`pointer`).on(`click`,(e,t)=>c(t.full_id));B.append(`title`).text(e=>{let t=g.get(e.full_id);return`${t?`[${t.role}] `:``}${e.decimal} · ${e.title}`});for(let e of E)g.has(e.full_id)&&(e.fx=e.x,e.fy=e.y);let V=new Map,ne=[];for(let[e,t]of g.entries())(t.role===`origin`||!t.parent)&&(V.set(e,0),ne.push(e));for(;ne.length;){let e=ne.shift(),t=V.get(e);for(let n of C.get(e)??[])V.has(n)||(V.set(n,t+1),ne.push(n))}let re=Kv(E).force(`moon`,e=>{let t=.35*e;for(let e of E){let n=g.get(e.full_id);if(!n||n.role!==`child`||!n.parent)continue;let r=D.get(n.parent);if(r==null)continue;let i=E[r],a=(e.x??0)-(i.x??0),o=(e.y??0)-(i.y??0),s=Math.sqrt(a*a+o*o)||.01,c=(180*.75**((V.get(e.full_id)??1)-1)-s)/s;e.vx=(e.vx??0)+a*c*t,e.vy=(e.vy??0)+o*c*t}}).force(`anchor`,e=>{let t=.45*e;for(let e of E){let n=g.get(e.full_id);if(!n||!(n.role===`origin`||!n.parent))continue;let r=b.get(n.threadId);r&&(e.vx=(e.vx??0)+(r.x-(e.x??0))*t,e.vy=(e.vy??0)+(r.y-(e.y??0))*t)}}).force(`radial`,Jv(p,d,f).strength(e=>g.has(e.full_id)?0:.18)).force(`charge`,qv().strength(e=>g.has(e.full_id)?-40:-220).distanceMax(520)).force(`collide`,Lv().radius(e=>Cy(e)+10).strength(.95)).on(`tick`,()=>{F.attr(`x1`,e=>e.x??0).attr(`y1`,e=>e.y??0).attr(`x2`,d).attr(`y2`,f),I.attr(`x1`,e=>E[e.source].x??0).attr(`y1`,e=>E[e.source].y??0).attr(`x2`,e=>E[e.target].x??0).attr(`y2`,e=>E[e.target].y??0),L.attr(`x1`,e=>E[e.source].x??0).attr(`y1`,e=>E[e.source].y??0).attr(`x2`,e=>E[e.target].x??0).attr(`y2`,e=>E[e.target].y??0),B.attr(`cx`,e=>e.x??0).attr(`cy`,e=>e.y??0),z.attr(`cx`,e=>e.x??0).attr(`cy`,e=>e.y??0).attr(`r`,e=>{if((C.get(e.full_id)??[]).length>0)return 28;let t=Cy(e);return Math.max(t+5,10)+6})});setTimeout(()=>re.alphaTarget(0).stop(),4e3)}function Ty(e,t,n,r,i,a,o){let{w:s,h:c}=a;e.attr(`viewBox`,`0 0 ${s} ${c}`);let l=n.find(e=>e.full_id===i)??n.find(e=>e.brandKey===r[0])??n[0];if(!l)return;let u=n.filter(e=>e.brandKey===l.brandKey&&e.full_id!==l.full_id).slice(0,24),d=n.filter(e=>e.skill&&e.skill===l.skill&&e.brandKey!==l.brandKey).slice(0,18),f=[l,...u,...d],p=Math.min(s,c)*.18,m=Math.min(s,c)*.34,h=f.map((e,t)=>{if(t===0)return{...e,x:s/2,y:c/2};if(t<=u.length){let n=(t-1)/Math.max(u.length,1)*2*Math.PI;return{...e,x:s/2+Math.cos(n)*p,y:c/2+Math.sin(n)*p}}let n=(t-1-u.length)/Math.max(d.length,1)*2*Math.PI+.18;return{...e,x:s/2+Math.cos(n)*m,y:c/2+Math.sin(n)*m}}),g=[...u.map(e=>({source:0,target:f.indexOf(e),kind:`intra`})),...d.map(e=>({source:0,target:f.indexOf(e),kind:`inter`}))],_=t.append(`g`).attr(`class`,`links`),v=t.append(`g`).attr(`class`,`nodes`),y=t.append(`g`).attr(`class`,`labels`);_.selectAll(`line`).data(g).enter().append(`line`).attr(`class`,`link bright`).attr(`stroke`,`#8a78ff`).attr(`stroke-opacity`,e=>e.kind===`intra`?.9:.45).attr(`stroke-width`,e=>e.kind===`intra`?1.4:.7).attr(`x1`,e=>h[e.source].x).attr(`y1`,e=>h[e.source].y).attr(`x2`,e=>h[e.target].x).attr(`y2`,e=>h[e.target].y);let b=Zv().domain(r).range(xy);v.selectAll(`circle`).data(h).enter().append(`circle`).attr(`class`,(e,t)=>`node`+(t===0?` focused`:``)).attr(`cx`,e=>e.x).attr(`cy`,e=>e.y).attr(`r`,(e,t)=>t===0?14:Cy(e)+1).attr(`fill`,(e,t)=>t===0?`#8a78ff`:b(e.brandKey)).attr(`stroke`,(e,t)=>t===0?`#b3a8ff`:`#0e0e10`).attr(`stroke-width`,(e,t)=>t===0?3:1.2).style(`cursor`,`pointer`).on(`click`,(e,t)=>o(t.full_id)).append(`title`).text(e=>`${e.decimal} · ${e.title}`),y.append(`text`).attr(`class`,`focus-label`).attr(`text-anchor`,`middle`).attr(`fill`,`#e6e6e8`).attr(`font-size`,13).attr(`font-weight`,600).style(`pointer-events`,`none`).attr(`x`,s/2).attr(`y`,c/2+32).text(`${l.decimal} · INDEX`)}function Ey(e,t){let n=Pf(e.map(e=>({...e,brandKey:e.brand??`Other`})),e=>e.brandKey),r=Array.from(n.keys()).sort((e,t)=>n.get(t).length-n.get(e).length),i=[];for(let e of r){let t=n.get(e).slice().sort((e,t)=>{let n=e.skill??`zzz`,r=t.skill??`zzz`;return n===r?(e.started_at??``).localeCompare(t.started_at??``):n.localeCompare(r)}),a=Array.from(new Set(t.map(e=>e.skill??`(prompt)`))),o=r.indexOf(e)+1,s=new Map;for(let e of t){let t=e.skill??`(prompt)`,n=a.indexOf(t)+1,r=(s.get(t)??0)+1;s.set(t,r),i.push({...e,decimal:`${o}.${n}.${r}`})}}let a=new Map(i.map(e=>[e.full_id,e])),o=new Map;for(let e of t)e.role!==`child`||!e.parent_session_id||!a.has(e.session_id)||!a.has(e.parent_session_id)||(o.has(e.parent_session_id)||o.set(e.parent_session_id,[]),o.get(e.parent_session_id).push(e.session_id));for(let e of o.values())e.sort((e,t)=>{let n=a.get(e)?.started_at??``,r=a.get(t)?.started_at??``;return n.localeCompare(r)});let s=new Set;for(let e of t)e.role===`child`&&e.parent_session_id&&a.has(e.session_id)&&s.add(e.session_id);let c=new Set,l=e=>{if(c.has(e))return;c.add(e);let t=a.get(e);t&&(o.get(e)??[]).forEach((e,n)=>{let r=a.get(e);r&&(r.decimal=`${t.decimal}.${n+1}`,l(e))})};for(let e of a.keys())s.has(e)||l(e);return i}function Dy(e){let t=Pf(e,e=>e.brandKey);return Array.from(t.keys()).sort((e,n)=>t.get(n).length-t.get(e).length)}var Oy=[`citation`,`similar`,`skill_track`,`bug_pattern`,`wiki_link`,`temporal_proximity`],ky=[`L1`,`L2`,`L3`,`L4`,`user`],Ay={status:`pending`,linkType:`all`,inferredBy:`all`,minConfidence:0};function jy(e){return`${Math.round(e*100)}%`}function My(e){return e>=.9?`text-green-400`:e>=.7?`text-amber-400`:`text-fg-dim`}function Ny(e){return{citation:{label:`citation`,className:`bg-blue-500/20 text-blue-300`},similar:{label:`similar`,className:`bg-purple-500/20 text-purple-300`},skill_track:{label:`skill`,className:`bg-emerald-500/20 text-emerald-300`},bug_pattern:{label:`bug`,className:`bg-red-500/20 text-red-300`},wiki_link:{label:`wiki`,className:`bg-amber-500/20 text-amber-300`},temporal_proximity:{label:`temporal`,className:`bg-slate-500/20 text-slate-300`}}[e]}function Py(e){return e.slice(0,8)}function Fy(){let e=G(),[t,n]=(0,U.useState)(Ay),[r,i]=(0,U.useState)(null),a=K({queryKey:[`suggestions`,t.status,t.linkType,t.inferredBy],queryFn:()=>X.listSuggestions({status:t.status,linkType:t.linkType===`all`?void 0:t.linkType,inferredBy:t.inferredBy===`all`?void 0:t.inferredBy,limit:1e3})}),o=a.data?.suggestions??[],s=(0,U.useMemo)(()=>o.filter(e=>e.confidence>=t.minConfidence),[o,t.minConfidence]),c=q({mutationFn:({id:e,status:t})=>X.decideSuggestion(e,t),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:[`suggestions`]}),Z({message:n.status===`approved`?`Suggestion approved — added to session_links`:`Suggestion rejected — tombstoned`,tone:`success`,duration:2500})},onError:e=>{Z({message:`Decide failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})}}),l=q({mutationFn:({ids:e,status:t})=>X.bulkDecideSuggestions(e,t),onSuccess:(t,n)=>{e.invalidateQueries({queryKey:[`suggestions`]}),Z({message:`Bulk ${n.status}: decided=${t.decided} skipped=${t.skipped} errors=${t.errors.length}`,tone:t.errors.length?`error`:`success`,duration:4e3})},onError:e=>{Z({message:`Bulk decide failed: ${e instanceof Error?e.message:`unknown`}`,tone:`error`})}}),u=(e,t)=>{c.mutate({id:e,status:t})},d=()=>{let e=s.filter(e=>e.status===`pending`&&e.confidence>=.9).map(e=>e.id);if(e.length===0){Z({message:`No pending suggestions ≥ 90% confidence to approve.`,tone:`info`});return}window.confirm(`Approve ${e.length} suggestion(s) at ≥ 90% confidence?`)&&l.mutate({ids:e,status:`approved`})},f=()=>{let e=s.filter(e=>e.status===`pending`).map(e=>e.id);if(e.length===0){Z({message:`Nothing pending in the current filter.`,tone:`info`});return}window.confirm(`Reject ${e.length} suggestion(s) in the current filter? They'll be tombstoned and won't re-propose.`)&&l.mutate({ids:e,status:`rejected`})},p=()=>{n(e=>({...e,linkType:e.linkType===`citation`?`all`:e.linkType})),Z({message:`Citations hidden in the current view (filter only — nothing modified).`,tone:`info`,duration:2e3})};if(a.isLoading)return(0,W.jsx)(`div`,{className:`p-6 text-sm text-fg-dim`,children:`Loading suggestions queue…`});if(a.isError)return(0,W.jsxs)(`div`,{className:`p-6 text-sm text-red-400`,children:[`Failed to load suggestions:`,` `,a.error instanceof Error?a.error.message:`unknown error`]});let m=s.filter(e=>e.status===`pending`).length,h=s.filter(e=>e.status===`approved`).length,g=s.filter(e=>e.status===`rejected`).length;return(0,W.jsxs)(`div`,{className:`flex flex-col h-full bg-bg text-fg`,children:[(0,W.jsxs)(`header`,{className:`flex flex-col gap-3 px-6 py-4 border-b border-line bg-bg-elevated`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-3`,children:[(0,W.jsx)(`h1`,{className:`text-base font-semibold`,children:`📋 Suggestions Queue`}),(0,W.jsxs)(`span`,{className:`text-xs text-fg-dim`,children:[s.length,` visible · pending=`,m,t.status!==`pending`&&(0,W.jsxs)(W.Fragment,{children:[` `,`· approved=`,h,` · rejected=`,g]})]})]}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:d,disabled:l.isPending,className:`text-xs px-3 py-1 rounded border border-green-500/40 text-green-300 hover:bg-green-500/10 disabled:opacity-50`,title:`Approve every pending row at ≥ 90% confidence in the current filter`,children:`✓ Approve ≥ 90%`}),(0,W.jsx)(`button`,{type:`button`,onClick:f,disabled:l.isPending,className:`text-xs px-3 py-1 rounded border border-red-500/40 text-red-300 hover:bg-red-500/10 disabled:opacity-50`,title:`Reject every pending row in the current filter (tombstones them)`,children:`✗ Reject visible`}),(0,W.jsx)(`button`,{type:`button`,onClick:p,className:`text-xs px-3 py-1 rounded border border-line text-fg-dim hover:text-fg`,title:`Hide citations from the current filter (defer review; nothing is written)`,children:`⤳ Skip citations`})]})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-fg-dim`,children:`status:`}),(0,W.jsxs)(`select`,{value:t.status,onChange:e=>n(t=>({...t,status:e.target.value})),className:`px-2 py-1 bg-bg border border-line rounded`,children:[(0,W.jsx)(`option`,{value:`pending`,children:`pending`}),(0,W.jsx)(`option`,{value:`approved`,children:`approved`}),(0,W.jsx)(`option`,{value:`rejected`,children:`rejected`})]})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-fg-dim`,children:`type:`}),(0,W.jsxs)(`select`,{value:t.linkType,onChange:e=>n(t=>({...t,linkType:e.target.value})),className:`px-2 py-1 bg-bg border border-line rounded`,children:[(0,W.jsx)(`option`,{value:`all`,children:`all`}),Oy.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-fg-dim`,children:`inferred by:`}),(0,W.jsxs)(`select`,{value:t.inferredBy,onChange:e=>n(t=>({...t,inferredBy:e.target.value})),className:`px-2 py-1 bg-bg border border-line rounded`,children:[(0,W.jsx)(`option`,{value:`all`,children:`all`}),ky.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-fg-dim`,children:`min conf:`}),(0,W.jsx)(`input`,{type:`range`,min:0,max:1,step:.05,value:t.minConfidence,onChange:e=>n(t=>({...t,minConfidence:Number(e.target.value)})),className:`w-32`}),(0,W.jsxs)(`span`,{className:`w-10 tabular-nums text-fg-dim`,children:[Math.round(t.minConfidence*100),`%`]})]}),(t.status!==`pending`||t.linkType!==`all`||t.inferredBy!==`all`||t.minConfidence>0)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(Ay),className:`ml-auto text-fg-dim hover:text-accent underline`,children:`reset`})]})]}),(0,W.jsx)(`main`,{className:`flex-1 overflow-y-auto`,children:s.length===0?(0,W.jsxs)(`div`,{className:`p-6 text-sm text-fg-dim`,children:[`No suggestions match the current filter.`,o.length>0&&t.minConfidence>0&&(0,W.jsxs)(W.Fragment,{children:[` `,`(`,o.length,` hidden by min-confidence ≥`,` `,Math.round(t.minConfidence*100),`%)`]})]}):(0,W.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,W.jsx)(`thead`,{className:`sticky top-0 bg-bg-elevated z-10`,children:(0,W.jsxs)(`tr`,{className:`text-fg-dim border-b border-line`,children:[(0,W.jsx)(`th`,{className:`text-left px-4 py-2 font-medium`,children:`Source`}),(0,W.jsx)(`th`,{className:`text-left px-4 py-2 font-medium`,children:`Target`}),(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium`,children:`Type`}),(0,W.jsx)(`th`,{className:`text-right px-3 py-2 font-medium`,children:`Conf`}),(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium`,children:`By`}),(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium`,children:`Evidence`}),(0,W.jsx)(`th`,{className:`text-right px-4 py-2 font-medium`,children:`Decide`})]})}),(0,W.jsx)(`tbody`,{children:s.map(e=>(0,W.jsx)(Iy,{row:e,expanded:r===e.id,onToggle:()=>i(t=>t===e.id?null:e.id),onDecide:u,pending:c.isPending&&c.variables?.id===e.id},e.id))})]})})]})}function Iy({row:e,expanded:t,onToggle:n,onDecide:r,pending:i}){let a=Ny(e.link_type),o=e.status!==`pending`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`tr`,{className:`border-b border-line/60 hover:bg-bg-elevated/40`,children:[(0,W.jsxs)(`td`,{className:`px-4 py-2 align-top max-w-[260px]`,children:[(0,W.jsx)(`div`,{className:`truncate`,title:e.source_title??e.source_session_id,children:e.source_title??Py(e.source_session_id)}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-[10px] tabular-nums`,children:[Py(e.source_session_id),e.source_project&&(0,W.jsxs)(`span`,{className:`ml-1 text-fg-dim`,children:[`· `,e.source_project]})]})]}),(0,W.jsxs)(`td`,{className:`px-4 py-2 align-top max-w-[260px]`,children:[(0,W.jsx)(`div`,{className:`truncate`,title:e.target_title??e.target_session_id,children:e.target_title??Py(e.target_session_id)}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-[10px] tabular-nums`,children:[Py(e.target_session_id),e.target_project&&(0,W.jsxs)(`span`,{className:`ml-1 text-fg-dim`,children:[`· `,e.target_project]})]})]}),(0,W.jsx)(`td`,{className:`px-3 py-2 align-top`,children:(0,W.jsx)(`span`,{className:`px-2 py-0.5 rounded text-[10px] ${a.className}`,children:a.label})}),(0,W.jsx)(`td`,{className:`px-3 py-2 align-top text-right tabular-nums ${My(e.confidence)}`,children:jy(e.confidence)}),(0,W.jsx)(`td`,{className:`px-3 py-2 align-top text-fg-dim`,children:e.inferred_by}),(0,W.jsx)(`td`,{className:`px-3 py-2 align-top`,children:(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-fg-dim hover:text-fg underline decoration-dotted`,children:t?`hide`:`show`})}),(0,W.jsx)(`td`,{className:`px-4 py-2 align-top text-right`,children:o?(0,W.jsxs)(`span`,{className:e.status===`approved`?`text-green-400 text-[10px]`:`text-red-400 text-[10px]`,children:[e.status,e.decided_at&&(0,W.jsx)(`span`,{className:`text-fg-muted ml-1`,children:new Date(e.decided_at).toLocaleDateString()})]}):(0,W.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.id,`approved`),disabled:i,className:`px-2 py-0.5 rounded border border-green-500/40 text-green-300 hover:bg-green-500/10 disabled:opacity-50`,children:`✓`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e.id,`rejected`),disabled:i,className:`px-2 py-0.5 rounded border border-red-500/40 text-red-300 hover:bg-red-500/10 disabled:opacity-50`,children:`✗`})]})})]}),t&&(0,W.jsx)(`tr`,{className:`bg-bg-elevated/40`,children:(0,W.jsx)(`td`,{colSpan:7,className:`px-6 py-3`,children:(0,W.jsx)(`pre`,{className:`text-[11px] leading-relaxed text-fg-dim overflow-x-auto whitespace-pre-wrap break-words`,children:JSON.stringify(e.evidence,null,2)})})})]})}var Ly=null,Ry=new Set;function zy(e){Ly=e;for(let e of Ry)e(Ly)}function By(){return Ly}var Vy=[{value:`claude-haiku-4-5-20251001`,label:`Haiku 4.5`,note:`fastest, cheapest. Default.`},{value:`claude-sonnet-4-6`,label:`Sonnet 4.6`,note:`higher quality extraction, ~3x cost.`}];function Hy({initialProject:e,availableProjects:t,onClose:n}){let r=G(),[i,a]=(0,U.useState)(`configure`),[o,s]=(0,U.useState)(e),[c,l]=(0,U.useState)(Vy[0].value),[u,d]=(0,U.useState)(50),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),[v,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(null),S=(0,U.useRef)(null);(0,U.useEffect)(()=>{let e=By();if(!e||e.kind!==`extract`)return;let t=e.jobId,n=!1;return(async()=>{try{let e=await X.extractOutputsJobSnapshot(t);if(n)return;e.status===`running`?(y(t),x(e),a(`running`)):zy(null)}catch{zy(null)}})(),()=>{n=!0}},[]);let C=K({queryKey:[`launcher-budget`],queryFn:()=>X.launcherBudget(),refetchInterval:i===`running`?5e3:!1});(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&i!==`launching`&&n()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i,n]),(0,U.useEffect)(()=>{if(!v)return;let e=new EventSource(`/api/extract-outputs/jobs/${encodeURIComponent(v)}/stream`);return S.current=e,e.addEventListener(`progress`,e=>{try{x(JSON.parse(e.data))}catch{}}),e.addEventListener(`done`,t=>{try{let e=JSON.parse(t.data);x(e),a(e.status===`failed`?`failed`:(e.status,`done`)),e.status===`failed`&&_(e.error)}catch{a(`done`)}e.close(),zy(null),r.invalidateQueries({queryKey:[`bug-patterns`]}),r.invalidateQueries({queryKey:[`launcher-budget`]})}),e.addEventListener(`error`,()=>{_(`Stream disconnected`),a(`failed`),e.close()}),()=>{e.close(),S.current=null}},[v,r]);async function w(){_(null),h(null),a(`previewing`);try{h(await X.extractOutputsPreflight({project:o,model:c,limit:u,force:f})),a(`previewed`)}catch(e){_(e instanceof Error?e.message:String(e)),a(`configure`)}}async function T(){if(m?.preflight_token){a(`launching`),_(null);try{let{jobId:e,reused:t}=await X.extractOutputsRun(m.preflight_token);y(e),zy({jobId:e,kind:`extract`}),a(`running`),t&&Z({message:`A job for ${o} was already running. Attached to it.`,tone:`info`})}catch(e){_(e instanceof Error?e.message:String(e)),a(`previewed`)}}}async function E(){if(v)try{await X.extractOutputsCancel(v),Z({message:`Cancellation requested`,tone:`info`})}catch(e){Z({message:`Cancel failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}let D=(0,U.useMemo)(()=>t.filter(e=>e.remaining_sessions>0),[t]),O=i===`configure`||i===`previewed`,k=i===`previewed`&&!!m?.preflight_token;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:e=>{e.target===e.currentTarget&&i!==`launching`&&n()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-line`,children:[(0,W.jsx)(`div`,{className:`text-sm font-semibold text-fg`,children:`🚀 Run extract-outputs`}),(0,W.jsx)(`button`,{type:`button`,onClick:n,disabled:i===`launching`,className:`text-xs text-fg-muted hover:text-fg disabled:opacity-40 disabled:cursor-not-allowed`,title:i===`running`?`Close this dialog. Job continues running; track progress via the badge in the top bar.`:`Close`,children:i===`running`?`run in background ↗`:`close`})]}),(0,W.jsxs)(`div`,{className:`p-5 space-y-4 text-xs`,children:[(i===`configure`||i===`previewing`||i===`previewed`)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Uy,{value:o,options:D,onChange:e=>{s(e),h(null),a(`configure`)}}),(0,W.jsx)(Wy,{value:c,onChange:e=>{l(e),h(null),a(`configure`)}}),(0,W.jsx)(Gy,{value:u,ceiling:C.data?.session_ceiling??500,onChange:e=>{d(e),h(null),a(`configure`)}}),(0,W.jsx)(Ky,{value:f,onChange:e=>{p(e),h(null),a(`configure`)}}),C.data&&(0,W.jsx)(qy,{budget:C.data}),i===`previewing`&&(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Computing preview…`}),m&&(0,W.jsx)(Jy,{preflight:m,project:o}),g&&(0,W.jsx)(`div`,{className:`text-error text-xs whitespace-pre-wrap break-words`,children:g})]}),(i===`launching`||i===`running`||i===`done`||i===`failed`)&&b&&(0,W.jsx)(Xy,{snapshot:b,phase:i}),i===`launching`&&!b&&(0,W.jsx)(Zy,{title:`Starting job…`,subtitle:`Securing preflight token and initializing the sub-agent runner.`}),i===`running`&&!b&&(0,W.jsx)(Zy,{title:`Warming up the first sub-agent…`,subtitle:`Each session spawns a Claude sub-agent. The first one usually takes 15–25 seconds before progress events start streaming. Sit tight — once stats appear, they update live.`}),g&&i===`failed`&&(0,W.jsx)(`div`,{className:`text-error text-xs whitespace-pre-wrap break-words`,children:g})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-line`,children:[(i===`configure`||i===`previewed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 text-fg-muted hover:text-fg`,children:`Cancel`}),(i===`configure`||i===`previewing`||i===`previewed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>void w(),disabled:!O||i===`previewing`,className:`text-xs px-3 py-1.5 border border-line rounded-md hover:border-accent disabled:opacity-40 disabled:cursor-not-allowed`,children:i===`previewing`?`Computing…`:`Preview cost`}),i===`previewed`&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>void T(),disabled:!k,className:`text-xs px-3 py-1.5 bg-accent text-bg rounded-md font-semibold hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed`,children:m?.eligible_session_count===0?`Nothing to run`:`I understand, run (${m?.eligible_session_count??0} sessions)`}),i===`running`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 text-fg-muted hover:text-fg`,title:`Close this dialog. The job continues running in the background; track progress via the badge in the top bar.`,children:`Run in background ↗`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void E(),className:`text-xs px-3 py-1.5 border border-error/60 text-error rounded-md hover:bg-error/10`,children:`Cancel job`})]}),(i===`done`||i===`failed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:n,className:`text-xs px-3 py-1.5 bg-accent text-bg rounded-md font-semibold hover:opacity-90`,children:`Close`})]})]})})}function Uy({value:e,options:t,onChange:n}){return(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted mb-1`,children:`Project`}),(0,W.jsxs)(`select`,{value:e,onChange:e=>n(e.target.value),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1.5 text-xs`,children:[t.length===0&&(0,W.jsxs)(`option`,{value:e,children:[e,` (no remaining sessions)`]}),t.map(e=>(0,W.jsxs)(`option`,{value:e.project,children:[e.project,` (`,e.remaining_sessions,` remaining)`]},e.project))]})]})}function Wy({value:e,onChange:t}){return(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted mb-1`,children:`Model`}),(0,W.jsx)(`select`,{value:e,onChange:e=>t(e.target.value),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1.5 text-xs`,children:Vy.map(e=>(0,W.jsxs)(`option`,{value:e.value,children:[e.label,` (`,e.note,`)`]},e.value))})]})}function Gy({value:e,ceiling:t,onChange:n}){let r=Math.min(t,500);return(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted mb-1 flex items-center justify-between`,children:[(0,W.jsx)(`span`,{children:`Session limit`}),(0,W.jsx)(`span`,{className:`text-fg tabular-nums`,children:e})]}),(0,W.jsx)(`input`,{type:`range`,min:1,max:r,step:1,value:Math.min(e,r),onChange:e=>n(Number(e.target.value)),className:`w-full`}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-muted mt-1`,children:[`Server ceiling: `,t,`. Lower this for a smaller, cheaper test run. The actual count extracted will not exceed this.`]})]})}function Ky({value:e,onChange:t}){return(0,W.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>t(e.target.checked),className:`mt-0.5`}),(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:`Force re-extract`}),` sessions that are already at the current extractor version. Useful if you upgraded the extractor and want fresh signatures. Doubles spend if you run it twice in a row.`]})]})}function qy({budget:e}){let t=e.spent_total_tokens_24h,n=e.daily_token_budget,r=n===0?0:Math.min(100,Math.round(t/n*100));return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between text-fg-muted`,children:[(0,W.jsx)(`span`,{children:`24h budget`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[t.toLocaleString(),` / `,n.toLocaleString(),` tokens (`,r,`%)`]})]}),(0,W.jsx)(`div`,{className:`h-1.5 bg-line rounded overflow-hidden mt-1`,children:(0,W.jsx)(`div`,{className:r>80?`h-full bg-warning`:`h-full bg-accent`,style:{width:`${r}%`}})})]})}function Jy({preflight:e,project:t}){let n=e.estimated_input_tokens_max+e.estimated_output_tokens_max,r=e.budget.remaining_tokens_24h;return(0,W.jsxs)(`div`,{className:`rounded-md border border-line bg-bg-elevated/40 p-3 space-y-3`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg`,children:`Preview`}),e.eligible_session_count===0?(0,W.jsx)(`div`,{className:`text-fg-muted`,children:e.message??`No eligible sessions in ${t}. Nothing to run.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`About to extract`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:e.eligible_session_count}),` `,`session`,e.eligible_session_count===1?``:`s`,` from`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:t}),`.`]}),e.plan_window_estimate?(0,W.jsx)(Yy,{estimate:e.plan_window_estimate}):(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted italic`,children:[`Plan-window impact unavailable. Restart the daemon (`,(0,W.jsx)(`code`,{className:`text-fg-dim`,children:`recall stop && recall start`}),`) to pick up the latest server build.`]}),(0,W.jsxs)(`details`,{className:`text-fg-muted`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer hover:text-fg select-none`,children:`Token estimate (for API-key users)`}),(0,W.jsxs)(`div`,{className:`pt-2 space-y-1`,children:[(0,W.jsxs)(`div`,{children:[`Up to`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.estimated_input_tokens_max.toLocaleString()}),` `,`input +`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.estimated_output_tokens_max.toLocaleString()}),` `,`output tokens. Actual spend depends on session size.`]}),e.would_exceed_budget&&(0,W.jsxs)(`div`,{className:`text-warning`,children:[`⚠ Projected (`,n.toLocaleString(),`) exceeds remaining 24h budget (`,r.toLocaleString(),`). Lower the limit or raise launcher.dailyTokenBudget in ~/.recall/config.json.`]})]})]}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted`,children:`Token expires in 60 seconds; click Run before then or click Preview again to refresh.`})]})]})}function Yy({estimate:e}){let t={pro:`Pro`,"max-5x":`Max 5x`,"max-20x":`Max 20x`};return(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`text-fg`,children:[(0,W.jsx)(`strong`,{children:`Claude Code 5-hour window impact`}),` `,(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`(model multiplier: `,e.model_multiplier,`x)`]})]}),(0,W.jsx)(`div`,{className:`space-y-1`,children:e.per_plan.map(e=>{let n=e.would_exhaust_window,r=!n&&e.fraction>.5,i=Math.min(100,e.pct);return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted w-20 shrink-0`,children:t[e.plan]}),(0,W.jsx)(`div`,{className:`flex-1 h-2 bg-line rounded-full overflow-hidden`,children:(0,W.jsx)(`div`,{className:n?`h-full bg-warning`:r?`h-full bg-sky-400`:`h-full bg-sky-500/60`,style:{width:`${i}%`}})}),(0,W.jsxs)(`span`,{className:`tabular-nums w-16 text-right text-xs `+(n?`text-warning font-semibold`:`text-fg`),children:[e.pct>=1e3?`>1000`:e.pct.toFixed(1),`%`]})]},e.plan)})}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:[`ⓘ `,e.caveat]})]})}function Xy({snapshot:e,phase:t}){let n=e.total===0?0:Math.round(e.processed/e.total*100);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[t===`running`&&(0,W.jsxs)(`div`,{className:`rounded-md border border-sky-400/40 bg-sky-400/10 px-3 py-2 text-sm text-fg leading-relaxed`,children:[(0,W.jsx)(`div`,{className:`font-semibold mb-0.5`,children:`↗ You can close this dialog at any time`}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-xs`,children:[`The job continues running in the background. Track progress on the pulsing pill in the top bar. Use the`,` `,(0,W.jsx)(`strong`,{className:`text-error`,children:`Cancel job`}),` button below to stop early; closing the dialog never cancels.`]})]}),(0,W.jsxs)(`div`,{className:`text-fg`,children:[(0,W.jsx)(`strong`,{children:e.project}),` `,(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`· `,e.model]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between text-fg-muted`,children:[(0,W.jsxs)(`span`,{children:[e.processed,` / `,e.total,` sessions`]}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[n,`%`]})]}),(0,W.jsx)(`div`,{className:`h-1.5 bg-line rounded overflow-hidden mt-1`,children:(0,W.jsx)(`div`,{className:`h-full bg-accent transition-all`,style:{width:`${n}%`}})})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 text-fg-muted`,children:[(0,W.jsxs)(`div`,{children:[`ok:`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.ok})]}),(0,W.jsxs)(`div`,{children:[`skipped:`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.skipped})]}),(0,W.jsxs)(`div`,{children:[`failed:`,` `,(0,W.jsx)(`strong`,{className:e.failed>0?`text-warning tabular-nums`:`text-fg tabular-nums`,children:e.failed})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-fg-muted`,children:[(0,W.jsxs)(`div`,{children:[`input tokens:`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.total_input_tokens.toLocaleString()})]}),(0,W.jsxs)(`div`,{children:[`output tokens:`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.total_output_tokens.toLocaleString()})]})]}),e.current_session_id&&t===`running`&&(0,W.jsxs)(`div`,{className:`text-fg-muted text-[10px] font-mono`,children:[`current: `,e.current_session_id]}),t===`done`&&(0,W.jsxs)(`div`,{className:`text-accent`,children:[`✓ Done. Run`,` `,(0,W.jsx)(`code`,{className:`text-fg-dim`,children:`recall infer-bug-patterns`}),` in your terminal to cluster the new signatures, or close this modal and they will surface on the next inference run.`]}),t===`failed`&&(0,W.jsxs)(`div`,{className:`text-error`,children:[`✗ Failed. `,e.error??`See the audit log for details.`]})]})}function Zy({title:e,subtitle:t}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 py-4`,children:[(0,W.jsx)(Qy,{}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,W.jsx)(`div`,{className:`text-sm text-fg font-medium`,children:e}),t&&(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:t})]})]})}function Qy(){return(0,W.jsx)(`span`,{className:`inline-block w-5 h-5 border-2 border-line border-t-sky-400 rounded-full animate-spin shrink-0`,role:`status`,"aria-label":`loading`})}function $y({onClose:e}){let t=G(),[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(``),u=K({queryKey:[`macro-repos`],queryFn:()=>X.listMacroRepos()}),d=u.data?.macro_repos??[],f=u.data?.orphan_projects??[],p=d.find(e=>e.id===n)??null;(0,U.useEffect)(()=>{p?(a(p.name),s(p.description??``)):(a(``),s(``))},[n,p]),(0,U.useEffect)(()=>{function t(t){t.key===`Escape`&&e()}return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e]);function m(e){return t=>{Z({message:`${e}: ${t instanceof Error?t.message:String(t)}`,tone:`error`})}}function h(){t.invalidateQueries({queryKey:[`macro-repos`]}),t.invalidateQueries({queryKey:[`bug-patterns`,`setup-status`]})}let g=q({mutationFn:e=>X.createMacroRepo(e),onSuccess:({macro_repo:e})=>{Z({message:`Created "${e.name}"`,tone:`success`}),r(e.id),h()},onError:m(`Create failed`)}),_=q({mutationFn:e=>X.patchMacroRepo(e.id,{name:e.name,description:e.description}),onSuccess:()=>{Z({message:`Saved`,tone:`success`}),h()},onError:m(`Save failed`)}),v=q({mutationFn:e=>X.deleteMacroRepo(e),onSuccess:()=>{Z({message:`Deleted`,tone:`success`}),r(null),h()},onError:m(`Delete failed`)}),y=q({mutationFn:e=>X.addMacroRepoMember(e.id,e.projectId),onSuccess:()=>{h()},onError:m(`Add member failed`)}),b=q({mutationFn:e=>X.removeMacroRepoMember(e.id,e.projectId),onSuccess:()=>{h()},onError:m(`Remove member failed`)});function x(){if(!p)return;let e=i.trim();if(!e){Z({message:`Name is required`,tone:`error`});return}e===p.name&&(o||``)===(p.description??``)||_.mutate({id:p.id,name:e,description:o.trim()||null})}function S(){let e=window.prompt(`Name for the new macro repo (e.g. "Mod Office"):`);!e||!e.trim()||g.mutate({name:e.trim()})}let C=c.trim()?f.filter(e=>e.name.toLowerCase().includes(c.trim().toLowerCase())):f;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:t=>{t.target===t.currentTarget&&e()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl w-full max-w-4xl max-h-[88vh] flex flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between px-5 py-3 border-b border-line`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-base font-semibold text-fg`,children:`📁 Macro Repos`}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted mt-0.5`,children:`Group cwd-based projects into the logical repos you actually think in. Membership is explicit; no auto-grouping.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:e,className:`text-xs text-fg-muted hover:text-fg`,children:`close`})]}),(0,W.jsxs)(`div`,{className:`flex-1 min-h-0 grid grid-cols-1 md:grid-cols-[260px_1fr] gap-0 divide-x divide-line overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`p-2 border-b border-line flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-xs uppercase tracking-wider text-fg-muted font-medium`,children:[d.length,` repo`,d.length===1?``:`s`]}),(0,W.jsx)(`button`,{type:`button`,onClick:S,className:`text-xs px-2 py-1 bg-accent text-bg rounded font-semibold hover:opacity-90`,children:`+ New`})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-1`,children:[d.length===0&&(0,W.jsxs)(`div`,{className:`p-3 text-xs text-fg-muted leading-relaxed`,children:[`No macro repos yet. Click `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`+ New`}),` to create one, then add member projects on the right.`]}),d.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e.id),className:`w-full text-left px-3 py-2 hover:bg-bg-elevated/40 `+(n===e.id?`bg-bg-elevated/60 border-l-2 border-accent`:``),children:[(0,W.jsx)(`div`,{className:`text-sm font-medium text-fg truncate`,children:e.name}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[e.member_project_ids.length,` member`,e.member_project_ids.length===1?``:`s`]})]},e.id))]})]}),(0,W.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[!p&&(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-6`,children:(0,W.jsx)(`div`,{className:`text-center text-sm text-fg-muted max-w-sm`,children:d.length===0?`Create your first macro repo to start grouping projects.`:`Pick a macro repo on the left to manage members.`})}),p&&(0,W.jsx)(eb,{repo:p,draftName:i,draftDescription:o,onDraftNameChange:a,onDraftDescriptionChange:s,onSaveDraft:x,onDelete:()=>{window.confirm(`Delete macro repo "${p.name}"? Member projects will return to orphan status. This does not delete any session data.`)&&v.mutate(p.id)},onRemoveMember:e=>b.mutate({id:p.id,projectId:e}),orphanFilter:c,onOrphanFilterChange:l,visibleOrphans:C,onAddMember:e=>y.mutate({id:p.id,projectId:e}),isSaving:_.isPending||y.isPending||b.isPending},p.id)]})]})]})})}function eb({repo:e,draftName:t,draftDescription:n,onDraftNameChange:r,onDraftDescriptionChange:i,onSaveDraft:a,onDelete:o,onRemoveMember:s,orphanFilter:c,onOrphanFilterChange:l,visibleOrphans:u,onAddMember:d,isSaving:f}){let p=t.trim()!==e.name||(n.trim()||null)!==(e.description??null);return(0,W.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`p-4 border-b border-line space-y-3`,children:[(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-xs font-medium text-fg-muted mb-1`,children:`Macro repo name`}),(0,W.jsx)(`input`,{type:`text`,value:t,onChange:e=>r(e.target.value),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1.5 text-sm focus:outline-none focus:border-accent`,placeholder:`e.g. Mod Office`})]}),(0,W.jsxs)(`label`,{className:`block`,children:[(0,W.jsx)(`div`,{className:`text-xs font-medium text-fg-muted mb-1`,children:`Description (optional)`}),(0,W.jsx)(`textarea`,{value:n,onChange:e=>i(e.target.value),rows:2,className:`w-full bg-bg-elevated border border-line rounded px-2 py-1.5 text-sm focus:outline-none focus:border-accent resize-y`,placeholder:`What this macro repo represents.`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:a,disabled:!p||f,className:`text-xs px-3 py-1.5 bg-accent text-bg rounded font-semibold hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed`,children:`Save changes`}),(0,W.jsx)(`div`,{className:`ml-auto`,children:(0,W.jsx)(`button`,{type:`button`,onClick:o,className:`text-xs px-3 py-1.5 border border-error/60 text-error rounded hover:bg-error/10`,children:`Delete macro repo`})})]})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-hidden grid grid-cols-1 md:grid-cols-2 divide-x divide-line`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`px-3 py-2 border-b border-line`,children:(0,W.jsxs)(`div`,{className:`text-xs font-semibold text-fg uppercase tracking-wider`,children:[`Members (`,e.member_project_ids.length,`)`]})}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.member_project_ids.length===0&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`No member projects yet. Add some from the right.`}),e.member_project_ids.map((t,n)=>(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 text-sm border-b border-line/50 hover:bg-bg-elevated/40`,children:[(0,W.jsx)(`span`,{className:`text-fg truncate`,children:e.member_project_names[n]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>s(t),className:`text-xs text-fg-muted hover:text-error shrink-0 px-1.5`,title:`Remove from macro repo (project becomes orphan again)`,children:`✕`})]},t))]})]}),(0,W.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line space-y-2`,children:[(0,W.jsxs)(`div`,{className:`text-xs font-semibold text-fg uppercase tracking-wider`,children:[`Add member (`,u.length,` available)`]}),(0,W.jsx)(`input`,{type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:`filter orphan projects…`,className:`w-full bg-bg-elevated border border-line rounded px-2 py-1 text-xs focus:outline-none focus:border-accent`})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[u.length===0&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:c?`No orphan projects match your filter.`:`No orphan projects. Every project is already in a macro repo.`}),u.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>d(e.id),className:`w-full flex items-center justify-between px-3 py-1.5 text-sm border-b border-line/50 hover:bg-bg-elevated/40 text-left`,children:[(0,W.jsx)(`span`,{className:`text-fg truncate`,children:e.name}),(0,W.jsx)(`span`,{className:`text-xs text-accent shrink-0 px-1.5`,children:`+ add`})]},e.id))]})]})]})]})}function tb(e){if(!e)return`never`;try{return new Date(e).toISOString().slice(0,10)}catch{return e}}function nb(e,t){return t===0?0:Math.round(e/t*100)}function rb(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!1),i=K({queryKey:[`bug-patterns`,`setup-status`],queryFn:()=>X.getBugPatternsSetupStatus()}),a=i.data,o=a?.totals,s=a?.projects??[],[c,l]=(0,U.useState)(!1),u=o&&o.total_sessions>0?nb(o.extracted_sessions,o.total_sessions):0;return(0,W.jsxs)(`div`,{className:`border-b border-line shrink-0 max-h-[70vh] flex flex-col`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(e=>!e),"aria-expanded":c,className:`w-full text-left px-4 py-3 hover:bg-bg-elevated/40 transition-colors flex items-center gap-3 shrink-0 group`,children:[(0,W.jsx)(`span`,{className:`inline-flex items-center justify-center w-5 h-5 rounded text-fg-muted group-hover:text-fg transition-transform `+(c?`rotate-90`:``),"aria-hidden":`true`,children:`▸`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,W.jsx)(`span`,{className:`text-base font-semibold text-fg`,children:`🐛 Bug Patterns Setup`}),o&&(0,W.jsxs)(`span`,{className:`text-sm text-fg-muted tabular-nums shrink-0`,children:[o.extracted_sessions.toLocaleString(),` of`,` `,o.total_sessions.toLocaleString(),` sessions extracted · `,o.cluster_count,` cluster`,o.cluster_count===1?``:`s`]})]}),o&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`flex-1 h-1.5 bg-line rounded-full overflow-hidden`,children:(0,W.jsx)(`div`,{className:`h-full bg-accent transition-all`,style:{width:`${u}%`}})}),(0,W.jsxs)(`span`,{className:`text-xs text-fg-muted tabular-nums w-10 text-right`,children:[u,`%`]})]})]}),(0,W.jsx)(`span`,{className:`text-xs text-fg-muted shrink-0 hidden sm:inline`,children:c?`hide`:`show details`})]}),c&&(0,W.jsx)(`div`,{className:`px-4 pt-2 flex items-center justify-end gap-2 shrink-0`,children:(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(!0),className:`text-xs px-2 py-1 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim`,title:`Group cwd-based projects into the logical repos you actually think in (manual, no auto-grouping).`,children:`📁 Manage macro repos`})}),c&&(0,W.jsxs)(`div`,{className:`overflow-y-auto px-4 pb-4 space-y-4 text-sm`,children:[(0,W.jsxs)(`details`,{className:`rounded-lg border border-line bg-bg-elevated/30 group`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer px-3 py-2 text-fg-muted hover:text-fg flex items-center gap-2 select-none`,children:[(0,W.jsx)(`span`,{className:`text-fg group-open:rotate-90 transition-transform inline-block w-3`,children:`▸`}),(0,W.jsx)(`span`,{className:`font-medium`,children:`What is this and how does it work?`})]}),(0,W.jsxs)(`div`,{className:`px-3 pb-3 pt-1 space-y-3 leading-relaxed border-t border-line`,children:[(0,W.jsxs)(`p`,{className:`text-fg-muted`,children:[`Bug Patterns groups past Claude Code sessions that hit the same error so a fix from one can be surfaced when the bug recurs. It does `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`not`}),` scan your repo or source code. It reads bug signatures already extracted from your past session JSONLs.`]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-2`,children:[(0,W.jsxs)(`div`,{className:`rounded border border-line p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-fg-muted mb-1`,children:`Step 1`}),(0,W.jsx)(`div`,{className:`font-mono text-fg-dim text-xs mb-1`,children:`extract-outputs`}),(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`Sub-agent extracts bug signatures.`,` `,(0,W.jsx)(`span`,{className:`text-warning font-medium`,children:`Costs tokens.`})]})]}),(0,W.jsxs)(`div`,{className:`rounded border border-line p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-fg-muted mb-1`,children:`Step 2`}),(0,W.jsx)(`div`,{className:`font-mono text-fg-dim text-xs mb-1`,children:`infer-bug-patterns`}),(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`Local clustering by fingerprint.`,` `,(0,W.jsx)(`span`,{className:`text-fg font-medium`,children:`No cost.`})]})]}),(0,W.jsxs)(`div`,{className:`rounded border border-line p-2.5`,children:[(0,W.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-fg-muted mb-1`,children:`Result`}),(0,W.jsx)(`div`,{className:`font-mono text-fg-dim text-xs mb-1`,children:`bug clusters`}),(0,W.jsx)(`div`,{className:`text-fg-muted`,children:`Mark "this fix worked" once. Future occurrences surface the linked fix.`})]})]}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[`Full explanation lives in the Help section under`,` `,(0,W.jsx)(`strong`,{className:`text-fg-dim`,children:`Bug Patterns`}),` and`,` `,(0,W.jsx)(`strong`,{className:`text-fg-dim`,children:`Security & privacy`}),`.`]})]})]}),(0,W.jsxs)(`section`,{children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between mb-2`,children:[(0,W.jsxs)(`h3`,{className:`text-base font-semibold text-fg`,children:[`Projects (`,s.length,`)`]}),(0,W.jsx)(`span`,{className:`text-xs text-fg-muted`,children:`Click 🚀 run to extract from the UI, or copy the CLI command`})]}),i.isLoading&&(0,W.jsx)(`div`,{className:`text-fg-muted py-3`,children:`Loading…`}),i.error&&(0,W.jsxs)(`div`,{className:`text-error py-3`,children:[`Failed to load:`,` `,i.error instanceof Error?i.error.message:String(i.error)]}),a&&s.length===0&&(0,W.jsx)(`div`,{className:`text-fg-muted py-3`,children:`No projects indexed yet.`}),a&&s.length>0&&(0,W.jsx)(`div`,{className:`rounded-lg border border-line bg-bg overflow-hidden`,children:(0,W.jsx)(`div`,{className:`max-h-80 overflow-y-auto overflow-x-auto`,children:(0,W.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,W.jsx)(`thead`,{className:`text-fg-muted bg-bg-elevated sticky top-0 z-10`,children:(0,W.jsxs)(`tr`,{className:`border-b border-line`,children:[(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium`,children:`Project`}),(0,W.jsx)(`th`,{className:`text-right px-3 py-2 font-medium`,children:`Sessions`}),(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium w-40`,children:`Progress`}),(0,W.jsx)(`th`,{className:`text-right px-3 py-2 font-medium`,children:`Remaining`}),(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium hidden lg:table-cell`,children:`Last run`}),(0,W.jsx)(`th`,{className:`text-left px-3 py-2 font-medium`,children:`Actions`})]})}),(0,W.jsx)(`tbody`,{children:s.map(e=>{let n=nb(e.extracted_sessions,e.total_sessions),r=e.remaining_sessions===0;return(0,W.jsxs)(`tr`,{className:`border-b border-line/50 last:border-b-0 hover:bg-bg-elevated/30`,children:[(0,W.jsx)(`td`,{className:`px-3 py-2 text-fg font-medium`,children:e.project}),(0,W.jsx)(`td`,{className:`px-3 py-2 text-right text-fg-muted tabular-nums`,children:e.total_sessions.toLocaleString()}),(0,W.jsx)(`td`,{className:`px-3 py-2`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`div`,{className:`flex-1 h-1.5 bg-line rounded-full overflow-hidden min-w-[60px]`,children:(0,W.jsx)(`div`,{className:r?`h-full bg-accent/60`:`h-full bg-accent`,style:{width:`${n}%`}})}),(0,W.jsxs)(`span`,{className:`text-xs text-fg-muted tabular-nums w-8 text-right`,children:[n,`%`]})]})}),(0,W.jsx)(`td`,{className:`px-3 py-2 text-right tabular-nums`,children:e.remaining_sessions>0?(0,W.jsx)(`span`,{className:`text-warning`,children:e.remaining_sessions.toLocaleString()}):(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`0`})}),(0,W.jsx)(`td`,{className:`px-3 py-2 text-fg-muted hidden lg:table-cell`,children:tb(e.last_extracted_at)}),(0,W.jsx)(`td`,{className:`px-3 py-2`,children:(0,W.jsx)(`div`,{className:`flex items-center gap-1.5`,children:r?(0,W.jsx)(`span`,{className:`text-xs text-fg-muted`,title:`All sessions in this project are already extracted.`,children:`✓ done`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(e.project),className:`text-xs px-2 py-0.5 bg-accent/15 border border-accent/60 text-accent rounded hover:bg-accent/25 font-medium whitespace-nowrap`,title:`Launch extract-outputs for ${e.project} from the UI (with cost preview).`,children:`🚀 run`}),(0,W.jsx)(ib,{command:`recall extract-outputs --project "${e.project}"`})]})})})]},e.project)})})]})})})]}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted`,children:`v0.20 Phase H · The 🚀 run button launches from the UI with a cost preview, origin-locked, CSRF-protected, budget-capped. See Help → Security & privacy.`})]}),e&&(0,W.jsx)(Hy,{initialProject:e,availableProjects:s.map(e=>({project:e.project,remaining_sessions:e.remaining_sessions})),onClose:()=>t(null)}),n&&(0,W.jsx)($y,{onClose:()=>r(!1)})]})}function ib({command:e}){let[t,n]=(0,U.useState)(!1);async function r(){try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)}catch{n(!1)}}return(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`text-xs px-2 py-0.5 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim whitespace-nowrap`,title:`Copy: ${e}`,children:t?`✓ copied`:`copy CLI`})}function ab(e){try{let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return e;let n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n} min ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);return i<30?`${i}d ago`:new Date(e).toISOString().slice(0,10)}catch{return e}}function ob({initialProject:e=null}){let[,t]=Cn(),[n,r]=(0,U.useState)(e),[i,a]=(0,U.useState)(!1),o=K({queryKey:[`bug-patterns`,`setup-status`],queryFn:()=>X.getBugPatternsSetupStatus()}),s=K({queryKey:[`bug-signatures`,n],queryFn:()=>X.bugSignatures(n??void 0,200)}),c=s.data,l=c?.sessions??[],u=i?l:l.filter(e=>e.signature_count>0),d=o.data?.projects??[];function f(e){t({session:e,view:null})}return(0,W.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-2 border-b border-line shrink-0 flex-wrap`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm text-fg-dim`,children:[`project`,(0,W.jsxs)(`select`,{value:n??``,onChange:e=>r(e.target.value===``?null:e.target.value),className:`bg-bg-elevated border border-line rounded px-2 py-1 text-sm`,children:[(0,W.jsx)(`option`,{value:``,children:`all projects`}),d.filter(e=>e.extracted_sessions>0).map(e=>(0,W.jsx)(`option`,{value:e.project,children:e.project},e.project))]})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm text-fg-dim cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked)}),`show sessions with no findings`]}),(0,W.jsx)(`div`,{className:`ml-auto text-sm text-fg-muted tabular-nums`,children:c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:c.totals.total_findings}),` `,`finding`,c.totals.total_findings===1?``:`s`,` across`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:c.totals.sessions_with_findings}),` `,`session`,c.totals.sessions_with_findings===1?``:`s`,` `,(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`(`,c.totals.sessions_empty,` empty)`]})]}):`Loading…`})]}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[s.isLoading&&(0,W.jsx)(`div`,{className:`p-6 text-center text-fg-muted text-sm`,children:`Loading…`}),s.error&&(0,W.jsxs)(`div`,{className:`p-6 text-center text-error text-sm`,children:[`Failed to load:`,` `,s.error instanceof Error?s.error.message:String(s.error)]}),c&&u.length===0&&(0,W.jsxs)(`div`,{className:`p-8 text-center text-fg-muted text-sm space-y-2`,children:[(0,W.jsx)(`div`,{className:`text-base text-fg`,children:`No findings to show.`}),c.totals.sessions_total===0?(0,W.jsxs)(`div`,{children:[`No sessions in this project have been extracted yet. Click`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:`🚀 run`}),` in Setup & Status to extract bug signatures.`]}):c.totals.sessions_with_findings===0?(0,W.jsxs)(`div`,{children:[c.totals.sessions_total,` session`,c.totals.sessions_total===1?``:`s`,` extracted, but none returned bug-shaped content. Most extractions come back empty unless the session was about debugging or hit errors.`]}):(0,W.jsx)(`div`,{children:`Toggle "show sessions with no findings" to also see empty extractions.`})]}),c&&u.length>0&&(0,W.jsx)(`div`,{className:`px-4 py-3 space-y-3`,children:u.map(e=>(0,W.jsx)(sb,{session:e,onOpenSession:()=>f(e.session_id)},e.session_id))})]})]})}function sb({session:e,onOpenSession:t}){let n=e.signature_count===0;return(0,W.jsxs)(`div`,{className:`rounded-lg border bg-bg-elevated/30 `+(n?`border-line/50 opacity-70`:`border-line hover:border-accent/40`),children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between px-4 py-2.5 border-b border-line/50 gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`text-sm font-semibold text-fg hover:text-accent text-left truncate block max-w-full`,title:e.auto_title??e.session_id,children:e.auto_title??e.session_id.slice(0,8)}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted mt-0.5 flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(`span`,{className:`px-1.5 py-0.5 bg-bg rounded border border-line/50 font-medium`,children:e.project}),(0,W.jsx)(`span`,{className:`font-mono`,children:e.session_id.slice(0,8)}),(0,W.jsxs)(`span`,{children:[`extracted `,ab(e.extracted_at)]})]})]}),(0,W.jsx)(`div`,{className:`shrink-0 text-sm`,children:n?(0,W.jsx)(`span`,{className:`text-fg-muted`,children:`no findings`}):(0,W.jsxs)(`span`,{className:`text-accent font-semibold tabular-nums`,children:[e.signature_count,` finding`,e.signature_count===1?``:`s`]})})]}),!n&&(0,W.jsx)(`div`,{className:`divide-y divide-line/50`,children:e.signatures.map((n,r)=>(0,W.jsx)(cb,{index:r,finding:n,sessionId:e.session_id,onOpenSession:t},r))})]})}function cb({index:e,finding:t,sessionId:n,onOpenSession:r}){let[,i]=Cn(),a=G(),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(``),u=q({mutationFn:e=>X.resolveBugSignature(e.hash,{resolved_in_session_id:n,fix_summary:e.summary||void 0}),onSuccess:()=>{Z({message:`Marked as fixed`,tone:`success`}),s(!1),l(``),a.invalidateQueries({queryKey:[`bug-signatures`]})},onError:e=>{Z({message:`Failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}),d=q({mutationFn:e=>X.unresolveBugSignature(e),onSuccess:()=>{Z({message:`Re-opened`,tone:`success`}),a.invalidateQueries({queryKey:[`bug-signatures`]})},onError:e=>{Z({message:`Failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}});function f(e,t){navigator.clipboard.writeText(e).then(()=>Z({message:`Copied ${t}`,tone:`success`})).catch(()=>Z({message:`Copy failed`,tone:`error`}))}function p(){let e=[`Bug finding from a past Claude Code session:`];t.error_type&&t.error_type!==`unknown`&&e.push(`Type: ${t.error_type}`),t.snippet&&e.push(`Description: ${t.snippet}`),t.file&&e.push(`File: ${t.file}`),e.push(`Source session: ${n}`),t.message_hash&&e.push(`Finding ID: ${t.message_hash}`),f(e.join(`
631
631
  `),`finding as context`)}function m(){t.snippet&&i({q:t.snippet.split(/\s+/).slice(0,8).join(` `),view:null})}let h=!!t.resolved;return(0,W.jsxs)(`div`,{className:`px-4 py-3 text-sm group `+(h?`opacity-60`:``),children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2 mb-1.5 flex-wrap`,children:[(0,W.jsxs)(`span`,{className:`text-xs text-fg-muted tabular-nums w-6 shrink-0`,children:[`#`,e+1]}),h&&(0,W.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 bg-accent/15 text-accent border border-accent/40 rounded font-medium`,children:`✓ fixed`}),t.error_type&&t.error_type!==`unknown`&&(0,W.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 bg-warning/10 text-warning border border-warning/40 rounded font-mono`,children:t.error_type}),t.message_hash&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>f(`recall://finding/${t.message_hash}`,`finding reference`),title:`Click to copy this finding's reference ID. Use it to track or quote this finding elsewhere.`,className:`text-xs font-mono text-fg-muted hover:text-fg hover:bg-bg-elevated px-1.5 py-0.5 rounded border border-line/50`,children:[`id: `,t.message_hash]})]}),t.snippet&&(0,W.jsx)(`div`,{className:`pl-8 text-fg leading-relaxed `+(h?`line-through decoration-fg-muted/60`:``),children:t.snippet}),h&&t.resolution?.fix_summary&&(0,W.jsxs)(`div`,{className:`pl-8 mt-1.5 text-xs text-accent leading-relaxed border-l-2 border-accent/40 pl-3 ml-8`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:`Fix:`}),` `,t.resolution.fix_summary]}),t.file&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>f(t.file,`file path`),title:`Click to copy this file path. Paste into your editor to jump to it.`,className:`pl-8 mt-1.5 text-xs text-fg-muted hover:text-accent font-mono break-all flex items-start gap-1.5 text-left`,children:[(0,W.jsx)(`span`,{className:`shrink-0`,children:`📄`}),(0,W.jsx)(`span`,{children:t.file})]}),o&&t.message_hash&&(0,W.jsxs)(`div`,{className:`pl-8 mt-2.5 space-y-2`,children:[(0,W.jsx)(`textarea`,{value:c,onChange:e=>l(e.target.value),placeholder:`Optional fix summary (e.g. added auth middleware to /api/feature-toggles)`,className:`w-full bg-bg-elevated border border-line rounded p-2 text-sm h-20 focus:outline-none focus:border-accent`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,disabled:u.isPending,onClick:()=>{t.message_hash&&u.mutate({hash:t.message_hash,summary:c.trim()})},className:`px-3 py-1 text-xs bg-accent text-bg rounded font-semibold hover:opacity-90 disabled:opacity-40`,children:u.isPending?`Saving…`:`Confirm fix`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{s(!1),l(``)},className:`px-3 py-1 text-xs text-fg-muted hover:text-fg`,children:`Cancel`})]})]}),!o&&(0,W.jsxs)(`div`,{className:`pl-8 mt-2.5 flex items-center gap-1.5 flex-wrap text-xs`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`px-2 py-1 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim`,title:`Open the session that surfaced this finding`,children:`↗ open session`}),t.snippet&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(t.snippet,`snippet`),className:`px-2 py-1 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim`,title:`Copy the snippet text`,children:`📋 copy snippet`}),t.file&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(t.file,`file path`),className:`px-2 py-1 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim`,title:`Copy file path to paste into your editor`,children:`📁 copy file path`}),(0,W.jsx)(`button`,{type:`button`,onClick:p,className:`px-2 py-1 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim`,title:`Copy this finding as a multi-line block formatted for pasting into a new Claude session`,children:`🤖 copy as context`}),t.snippet&&(0,W.jsx)(`button`,{type:`button`,onClick:m,className:`px-2 py-1 border border-line rounded hover:border-accent hover:text-accent transition-colors text-fg-dim`,title:`Search every session for similar wording (might surface other sessions that hit the same bug)`,children:`🔍 find similar`}),t.message_hash&&(h?(0,W.jsx)(`button`,{type:`button`,disabled:d.isPending,onClick:()=>t.message_hash&&d.mutate(t.message_hash),className:`px-2 py-1 border border-line rounded hover:border-warning hover:text-warning transition-colors text-fg-dim`,title:`Re-open this finding (mark not-fixed)`,children:`↺ re-open`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>s(!0),className:`px-2 py-1 border border-accent/60 bg-accent/10 text-accent rounded hover:bg-accent/20 font-medium ml-auto`,title:`Mark this finding as fixed. Optional fix summary will be saved with the finding for future reference.`,children:`✓ mark fixed`}))]})]})}var lb=[{value:`claude-haiku-4-5-20251001`,label:`Haiku 4.5`,note:`fastest, cheapest. Default.`},{value:`claude-sonnet-4-6`,label:`Sonnet 4.6`,note:`higher quality synthesis, ~3x cost.`}],ub={ALLOWED_TAGS:`p.br.h1.h2.h3.h4.h5.h6.ul.ol.li.strong.em.code.pre.blockquote.table.thead.tbody.tr.th.td.hr.mark.div.span`.split(`.`),ALLOWED_ATTR:[`class`,`title`],FORBID_TAGS:[`style`,`form`,`input`,`button`,`iframe`,`object`,`embed`,`script`],FORBID_ATTR:[`style`,`onerror`,`onload`,`onclick`,`href`,`src`],ALLOW_DATA_ATTR:!1};function db(e){if(!e)return``;let t=$.parse(e,{gfm:!0,breaks:!1,async:!1});return ns.sanitize(t,ub)}var fb={synopsis:`Synopsis`,priorities:`Fix priorities`,root_cause:`Root cause`};function pb({scope:e,targetId:t,mode:n,targetLabel:r,memberSessionIds:i,onClose:a}){let[o,s]=(0,U.useState)(`configure`),[c,l]=(0,U.useState)(lb[0].value),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),v=(0,U.useRef)(null);(0,U.useEffect)(()=>{let r=By();if(!r||r.kind!==`synth`)return;let i=!1;return(async()=>{try{let a=await X.synthesizeJobSnapshot(r.jobId);if(i)return;a.status===`running`&&a.scope===e&&a.target_id===t&&a.mode===n?(h(r.jobId),_(a),s(`running`)):a.status!==`running`&&zy(null)}catch{zy(null)}})(),()=>{i=!0}},[e,t,n]);let y=K({queryKey:[`launcher-budget`],queryFn:()=>X.launcherBudget(),refetchInterval:o===`running`?5e3:!1});(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&o!==`launching`&&a()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[o,a]),(0,U.useEffect)(()=>{if(!m)return;let e=new EventSource(`/api/bug-patterns/synthesize/jobs/${encodeURIComponent(m)}/stream`);return v.current=e,e.addEventListener(`partial`,e=>{try{_(JSON.parse(e.data))}catch{}}),e.addEventListener(`done`,t=>{try{let e=JSON.parse(t.data);_(e),s(e.status===`failed`?`failed`:`done`),e.status===`failed`&&p(e.error)}catch{s(`done`)}e.close(),zy(null)}),e.addEventListener(`error`,()=>{p(`Stream disconnected`),s(`failed`),e.close()}),()=>{e.close(),v.current=null}},[m]),(0,U.useEffect)(()=>{(o===`configure`||o===`previewed`)&&b()},[c,e,t,n]);async function b(){p(null),d(null),s(`previewing`);try{d(await X.synthesizePreflight({scope:e,target_id:t,mode:n,model:c})),s(`previewed`)}catch(e){p(e instanceof Error?e.message:String(e)),s(`configure`)}}async function x(){if(u?.preflight_token){s(`launching`),p(null);try{let{jobId:e,reused:t}=await X.synthesizeRun(u.preflight_token);h(e),zy({jobId:e,kind:`synth`}),s(`running`),t&&Z({message:`A synthesis for this target was already running. Attached to it.`,tone:`info`})}catch(e){p(e instanceof Error?e.message:String(e)),s(`previewed`)}}}async function S(){if(m)try{await X.synthesizeCancel(m),Z({message:`Cancellation requested`,tone:`info`})}catch(e){Z({message:`Cancel failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}let C=(0,U.useMemo)(()=>g?db(g.output_markdown):``,[g]),w=o===`configure`||o===`previewed`,T=o===`previewed`&&!!u?.preflight_token;return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:e=>{e.target===e.currentTarget&&o!==`launching`&&a()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl max-w-3xl w-full max-h-[90vh] flex flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-line shrink-0`,children:[(0,W.jsxs)(`div`,{className:`text-sm font-semibold text-fg`,children:[`🤖 `,fb[n],`: `,r]}),(0,W.jsx)(`button`,{type:`button`,onClick:a,disabled:o===`launching`,className:`text-xs text-fg-muted hover:text-fg disabled:opacity-40 disabled:cursor-not-allowed`,title:o===`running`?`Close this dialog. Job continues running; track progress via the badge in the top bar.`:`Close`,children:o===`running`?`run in background ↗`:`close`})]}),(0,W.jsxs)(`div`,{className:`p-5 space-y-4 text-sm overflow-y-auto flex-1`,children:[(o===`configure`||o===`previewing`||o===`previewed`)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(mb,{scope:e,mode:n,targetLabel:r}),(0,W.jsx)(hb,{value:c,onChange:e=>{l(e),d(null),s(`configure`)}}),y.data&&(0,W.jsx)(gb,{budget:y.data}),o===`previewing`&&(0,W.jsx)(`div`,{className:`text-fg-muted text-sm`,children:`Computing preview…`}),u&&(0,W.jsx)(_b,{preflight:u,scope:e}),f&&(0,W.jsx)(`div`,{className:`text-error text-sm whitespace-pre-wrap break-words`,children:f})]}),(o===`launching`||o===`running`||o===`done`||o===`failed`)&&(0,W.jsxs)(W.Fragment,{children:[o===`running`&&(0,W.jsxs)(`div`,{className:`rounded-md border border-sky-400/40 bg-sky-400/10 px-3 py-2 text-sm text-fg leading-relaxed`,children:[(0,W.jsx)(`div`,{className:`font-semibold mb-0.5`,children:`↗ You can close this dialog at any time`}),(0,W.jsxs)(`div`,{className:`text-fg-muted text-xs`,children:[`The job continues in the background. Track progress on the pulsing pill in the top bar. Use`,` `,(0,W.jsx)(`strong`,{className:`text-error`,children:`Cancel job`}),` below to stop early; closing the dialog never cancels.`]})]}),o===`launching`&&!g&&(0,W.jsx)(xb,{title:`Starting synthesis…`,subtitle:`Securing preflight token and initializing the sub-agent runner.`}),o===`running`&&g&&g.output_markdown.length===0&&(0,W.jsx)(xb,{title:`Warming up the sub-agent…`,subtitle:`The first tokens usually take 10 to 25 seconds before streaming begins.`}),g&&g.output_markdown.length>0&&(0,W.jsx)(`div`,{className:`rounded-md border border-line bg-bg-elevated/40 p-4`,children:(0,W.jsx)(`div`,{className:`prose prose-sm max-w-none synthesis-markdown text-sm text-fg leading-relaxed`,dangerouslySetInnerHTML:{__html:C}})}),g&&(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[`input tokens:`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:g.input_tokens.toLocaleString()}),` · `,`output tokens:`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:g.output_tokens.toLocaleString()})]}),o===`done`&&g&&(0,W.jsx)(yb,{snapshot:g,memberSessionIds:i}),o===`failed`&&(0,W.jsx)(`div`,{className:`text-error text-sm whitespace-pre-wrap break-words`,children:f??g?.error??`Synthesis failed.`})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-line shrink-0`,children:[(o===`configure`||o===`previewed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:a,className:`text-sm px-3 py-1.5 text-fg-muted hover:text-fg`,children:`Cancel`}),(o===`configure`||o===`previewing`||o===`previewed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>void b(),disabled:!w||o===`previewing`,className:`text-sm px-3 py-1.5 border border-line rounded-md hover:border-accent disabled:opacity-40 disabled:cursor-not-allowed`,children:o===`previewing`?`Computing…`:`Preview cost`}),o===`previewed`&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>void x(),disabled:!T,className:`text-sm px-3 py-1.5 bg-accent text-bg rounded-md font-semibold hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed`,children:`I understand, run`}),o===`running`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:a,className:`text-sm px-3 py-1.5 text-fg-muted hover:text-fg`,children:`Run in background ↗`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void S(),className:`text-sm px-3 py-1.5 border border-error/60 text-error rounded-md hover:bg-error/10`,children:`Cancel job`})]}),(o===`done`||o===`failed`)&&(0,W.jsx)(`button`,{type:`button`,onClick:a,className:`text-sm px-3 py-1.5 bg-accent text-bg rounded-md font-semibold hover:opacity-90`,children:`Close`})]})]})})}function mb({scope:e,mode:t,targetLabel:n}){return(0,W.jsxs)(`div`,{className:`rounded-md border border-line bg-bg-elevated/40 px-3 py-2 text-sm`,children:[(0,W.jsxs)(`div`,{className:`text-fg-muted text-xs uppercase tracking-wider`,children:[e===`cluster`?`Cluster`:`Project`,` · `,fb[t]]}),(0,W.jsx)(`div`,{className:`text-fg font-medium truncate`,title:n,children:n})]})}function hb({value:e,onChange:t}){return(0,W.jsxs)(`label`,{className:`block text-sm`,children:[(0,W.jsx)(`div`,{className:`text-fg-muted mb-1`,children:`Model`}),(0,W.jsx)(`select`,{value:e,onChange:e=>t(e.target.value),className:`w-full bg-bg-elevated border border-line rounded px-2 py-1.5 text-sm`,children:lb.map(e=>(0,W.jsxs)(`option`,{value:e.value,children:[e.label,` (`,e.note,`)`]},e.value))})]})}function gb({budget:e}){let t=e.spent_total_tokens_24h,n=e.daily_token_budget,r=n===0?0:Math.min(100,Math.round(t/n*100));return(0,W.jsxs)(`div`,{className:`text-sm`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between text-fg-muted`,children:[(0,W.jsx)(`span`,{children:`24h budget (shared with extract-outputs)`}),(0,W.jsxs)(`span`,{className:`tabular-nums`,children:[t.toLocaleString(),` / `,n.toLocaleString(),` tokens (`,r,`%)`]})]}),(0,W.jsx)(`div`,{className:`h-1.5 bg-line rounded overflow-hidden mt-1`,children:(0,W.jsx)(`div`,{className:r>80?`h-full bg-warning`:`h-full bg-sky-400`,style:{width:`${r}%`}})})]})}function _b({preflight:e,scope:t}){let n=e.estimated_input_tokens_max+e.estimated_output_tokens_max,r=e.budget.remaining_tokens_24h;return(0,W.jsxs)(`div`,{className:`rounded-md border border-line bg-bg-elevated/40 p-3 space-y-3 text-sm`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg`,children:`Preview`}),(0,W.jsxs)(`div`,{className:`text-fg-muted`,children:[`About to synthesize across`,` `,t===`cluster`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:e.context_summary.session_count}),` `,`session`,e.context_summary.session_count===1?``:`s`,` (`,e.context_summary.findings_count,` finding`,e.context_summary.findings_count===1?``:`s`,`).`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:e.context_summary.cluster_count}),` `,`cluster`,e.context_summary.cluster_count===1?``:`s`,` (`,e.context_summary.findings_count,` finding`,e.context_summary.findings_count===1?``:`s`,`).`]})]}),e.plan_window_estimate&&(0,W.jsx)(vb,{estimate:e.plan_window_estimate}),(0,W.jsxs)(`details`,{className:`text-fg-muted`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer hover:text-fg select-none`,children:`Request size estimate (this run, not model capacity)`}),(0,W.jsxs)(`div`,{className:`pt-2 space-y-1`,children:[(0,W.jsxs)(`div`,{children:[`This synthesis call will send up to`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.estimated_input_tokens_max.toLocaleString()}),` `,`input tokens and produce up to`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:e.estimated_output_tokens_max.toLocaleString()}),` `,`output tokens.`]}),(0,W.jsx)(`div`,{className:`text-xs`,children:`For reference: Haiku 4.5 has a 200K-token context window, so this prompt fits easily. The numbers above are this request's footprint, not the model's capacity.`}),e.would_exceed_budget&&(0,W.jsxs)(`div`,{className:`text-warning`,children:[`⚠ Projected (`,n.toLocaleString(),`) exceeds remaining 24h budget (`,r.toLocaleString(),`). Wait for the rolling window or raise launcher.dailyTokenBudget in ~/.recall/config.json.`]})]})]}),(0,W.jsx)(`div`,{className:`text-xs text-fg-muted`,children:`Token expires in 60 seconds; click Run before then or click Preview again to refresh.`})]})}function vb({estimate:e}){if(!e)return null;let t={pro:`Pro`,"max-5x":`Max 5x`,"max-20x":`Max 20x`};return(0,W.jsxs)(`div`,{className:`space-y-1.5 text-sm`,children:[(0,W.jsxs)(`div`,{className:`text-fg`,children:[(0,W.jsx)(`strong`,{children:`Claude Code 5-hour window impact`}),` `,(0,W.jsxs)(`span`,{className:`text-fg-muted`,children:[`(model multiplier: `,e.model_multiplier,`x)`]})]}),(0,W.jsx)(`div`,{className:`space-y-1`,children:e.per_plan.map(e=>{let n=e.would_exhaust_window,r=!n&&e.fraction>.5,i=Math.min(100,e.pct);return(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-fg-muted w-20 shrink-0 text-xs`,children:t[e.plan]}),(0,W.jsx)(`div`,{className:`flex-1 h-2 bg-line rounded-full overflow-hidden`,children:(0,W.jsx)(`div`,{className:n?`h-full bg-warning`:r?`h-full bg-sky-400`:`h-full bg-sky-500/60`,style:{width:`${i}%`}})}),(0,W.jsxs)(`span`,{className:`tabular-nums w-16 text-right text-xs `+(n?`text-warning font-semibold`:`text-fg`),children:[e.pct>=1e3?`>1000`:e.pct.toFixed(1),`%`]})]},e.plan)})}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:[`ⓘ `,e.caveat]})]})}function yb({snapshot:e,memberSessionIds:t}){function n(e,t){navigator.clipboard.writeText(e).then(()=>Z({message:`Copied ${t}`,tone:`info`})).catch(()=>Z({message:`Failed to copy ${t}`,tone:`error`}))}let r=(0,U.useMemo)(()=>{let t=[];return t.push(`Synthesis result from Claude Recall (${e.scope}/${e.mode}):`),t.push(`Target: ${e.target_id}`),t.push(``),t.push(e.output_markdown),t.join(`
632
632
  `)},[e]);return(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2 pt-2 border-t border-line`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(e.output_markdown,`as Markdown`),className:`text-xs px-2.5 py-1.5 border border-line rounded-md hover:border-accent text-fg`,children:`📋 Copy as Markdown`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(r,`as Claude context`),className:`text-xs px-2.5 py-1.5 border border-line rounded-md hover:border-accent text-fg`,children:`🤖 Copy as Claude context`}),t&&t.length===1&&(0,W.jsx)(bb,{sessionId:t[0],markdown:e.output_markdown}),e.scope===`project`&&(0,W.jsx)(`span`,{className:`text-xs text-fg-muted self-center`,children:`(project synthesis: copy to clipboard, paste where useful)`})]})}function bb({sessionId:e,markdown:t}){let[n,r]=(0,U.useState)(!1);async function i(){r(!0);try{await fetch(`/api/sessions/${encodeURIComponent(e)}/notes`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({body:t})}),Z({message:`Saved as session note`,tone:`info`})}catch(e){Z({message:`Save failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}finally{r(!1)}}return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>void i(),disabled:n,className:`text-xs px-2.5 py-1.5 border border-line rounded-md hover:border-accent text-fg disabled:opacity-40`,children:[`💾 `,n?`Saving…`:`Save as note`]})}function xb({title:e,subtitle:t}){return(0,W.jsxs)(`div`,{className:`flex items-start gap-3 py-4`,children:[(0,W.jsx)(`span`,{className:`inline-block w-5 h-5 border-2 border-line border-t-sky-400 rounded-full animate-spin shrink-0`,role:`status`,"aria-label":`loading`}),(0,W.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,W.jsx)(`div`,{className:`text-sm text-fg font-medium`,children:e}),t&&(0,W.jsx)(`div`,{className:`text-xs text-fg-muted leading-relaxed`,children:t})]})]})}function Sb(e){try{let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return e;let n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n} min ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);return i<30?`${i}d ago`:e.slice(0,10)}catch{return e}}var Cb={synopsis:`Synopsis`,priorities:`Fix priorities`,root_cause:`Root cause`};function wb({scope:e,targetId:t,targetLabel:n,onClose:r}){let i=G(),[a,o]=(0,U.useState)(null),s=K({queryKey:[`bug-synthesis`,`list`,e,t],queryFn:()=>X.listBugSynthesisResults({scope:e,target_id:t,limit:50})}),c=K({queryKey:[`bug-synthesis`,`detail`,a],queryFn:()=>a?X.getBugSynthesisResult(a):Promise.resolve(null),enabled:!!a}),l=q({mutationFn:e=>X.deleteBugSynthesisResult(e),onSuccess:()=>{Z({message:`Report deleted`,tone:`success`}),o(null),i.invalidateQueries({queryKey:[`bug-synthesis`]})},onError:e=>{Z({message:`Delete failed: ${e instanceof Error?e.message:String(e)}`,tone:`error`})}}),u=s.data?.results??[];(0,U.useEffect)(()=>{a===null&&u.length>0&&o(u[0].id)},[u,a]),(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&r()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]);let d=(0,U.useMemo)(()=>{let e=c.data?.result?.output_markdown??``;if(!e)return``;let t=$.parse(e,{gfm:!0,breaks:!1,async:!1});return ns.sanitize(t)},[c.data]),f=c.data?.result??null;function p(e,t){navigator.clipboard.writeText(e).then(()=>Z({message:`Copied ${t}`,tone:`success`})).catch(()=>Z({message:`Copy failed`,tone:`error`}))}return(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/60 flex items-center justify-center p-4`,onClick:e=>{e.target===e.currentTarget&&r()},children:(0,W.jsxs)(`div`,{className:`bg-bg border border-line rounded-xl shadow-2xl w-full max-w-5xl max-h-[88vh] flex flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between px-5 py-3 border-b border-line`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-base font-semibold text-fg`,children:`💾 Saved synthesis reports`}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted mt-0.5`,children:[e===`project`?`Project`:`Cluster`,`:`,` `,(0,W.jsx)(`strong`,{className:`text-fg`,children:n}),` ·`,` `,u.length,` report`,u.length===1?``:`s`,` saved`]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:r,className:`text-xs text-fg-muted hover:text-fg`,children:`close`})]}),(0,W.jsxs)(`div`,{className:`flex-1 min-h-0 grid grid-cols-1 md:grid-cols-[280px_1fr] gap-0 divide-x divide-line overflow-hidden`,children:[(0,W.jsx)(`div`,{className:`flex flex-col overflow-hidden`,children:(0,W.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-1`,children:[s.isLoading&&(0,W.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`Loading…`}),!s.isLoading&&u.length===0&&(0,W.jsxs)(`div`,{className:`p-3 text-xs text-fg-muted leading-relaxed`,children:[`No saved reports for this `,e,` yet. Run a synthesis from the right-click menu and the result will save here automatically.`]}),u.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>o(e.id),className:`w-full text-left px-3 py-2.5 hover:bg-bg-elevated/40 border-b border-line/40 `+(a===e.id?`bg-bg-elevated/60 border-l-2 border-l-accent`:``),children:[(0,W.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:Cb[e.mode]}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted mt-0.5`,children:[Sb(e.created_at),` · `,e.model.replace(/^claude-/,``)]}),(0,W.jsxs)(`div`,{className:`text-[11px] text-fg-muted tabular-nums mt-0.5`,children:[(e.input_tokens+e.output_tokens).toLocaleString(),` tokens`]})]},e.id))]})}),(0,W.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[!f&&u.length>0&&(0,W.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-6 text-sm text-fg-muted`,children:`Select a report on the left to read it.`}),f&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`px-5 py-3 border-b border-line flex items-center justify-between gap-3 flex-wrap`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`text-sm font-semibold text-fg`,children:Cb[f.mode]}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[`Generated `,Sb(f.created_at),` ·`,` `,f.model,` ·`,` `,(f.input_tokens+f.output_tokens).toLocaleString(),` `,`tokens`]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>p(f.output_markdown,`as Markdown`),className:`text-xs px-2 py-1 border border-line rounded hover:border-accent hover:text-accent text-fg-dim`,children:`📋 Copy`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{window.confirm(`Delete this saved report? You can always re-run synthesis to regenerate.`)&&l.mutate(f.id)},className:`text-xs px-2 py-1 border border-error/60 text-error rounded hover:bg-error/10`,children:`Delete`})]})]}),(0,W.jsx)(`div`,{className:`flex-1 overflow-y-auto px-6 py-5`,children:(0,W.jsx)(`article`,{className:`prose-message prose-help max-w-none text-sm leading-relaxed`,dangerouslySetInnerHTML:{__html:d}})})]})]})]})]})})}var Tb=[`#7dd3fc`,`#a5b4fc`,`#c4b5fd`,`#67e8f9`,`#93c5fd`,`#bef264`,`#fda4af`,`#fdba74`];function Eb(e,t){return Tb[t.indexOf(e)%Tb.length]??Tb[0]}function Db(e){return 50+Math.min(20,Math.sqrt(e)*4)}function Ob(e,t){return e?e.length>t?e.slice(0,t-1)+`…`:e:``}function kb(e){return e.length===0?`(no project)`:e.length===1?e[0]:`${e[0]} +${e.length-1}`}var Ab=5;function jb({initialProject:e=null}){let[,t]=Cn(),[n,r]=(0,U.useState)(e),[i,a]=(0,U.useState)(!0),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),u=(0,U.useRef)(null),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=K({queryKey:[`bug-synthesis`,`counts`,`project`],queryFn:()=>X.bugSynthesisCounts(`project`)}),v=K({queryKey:[`bug-synthesis`,`counts`,`cluster`],queryFn:()=>X.bugSynthesisCounts(`cluster`)}),y=(0,U.useMemo)(()=>{let e=new Map;for(let t of _.data?.counts??[])e.set(t.target_id,t.count);return e},[_.data]),b=(0,U.useMemo)(()=>{let e=new Map;for(let t of v.data?.counts??[])e.set(t.target_id,t.count);return e},[v.data]),[x,S]=(0,U.useState)(1),[C,w]=(0,U.useState)({x:0,y:0}),[T,E]=(0,U.useState)(!1),D=(0,U.useRef)(null);function O(e){return Math.max(.25,Math.min(4,e))}function k(){S(1),w({x:0,y:0})}function A(e){S(t=>O(t*e))}let j=K({queryKey:[`bug-patterns`,`setup-status`],queryFn:()=>X.getBugPatternsSetupStatus()}),M=K({queryKey:[`bug-patterns`,`graph`,n,i],queryFn:()=>X.bugPatternsGraph(n??void 0,i)}),ee=(0,U.useMemo)(()=>M.data?zb(M.data):null,[M.data]),N=(0,U.useMemo)(()=>M.data?Array.from(new Set(M.data.sessions.map(e=>e.project))).sort():[],[M.data]),te=j.data?.projects??[];if(M.isLoading)return(0,W.jsx)(`div`,{className:`p-8 text-center text-fg-muted text-sm`,children:`Loading galaxy…`});if(M.error)return(0,W.jsxs)(`div`,{className:`p-8 text-center text-error text-sm`,children:[`Failed to load:`,` `,M.error instanceof Error?M.error.message:String(M.error)]});if(!M.data||!ee)return null;let P=M.data,{width:F,height:I,nodes:L,regions:R}=ee,z=P.totals.cluster_count===0,B=o&&P.clusters.find(e=>e.id===o),V=o&&P.sessions.find(e=>e.session_id===o),ne=c&&P.clusters.find(e=>e.id===c);return(0,W.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-2 border-b border-line shrink-0 flex-wrap`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm text-fg-dim`,children:[`project`,(0,W.jsxs)(`select`,{value:n??``,onChange:e=>r(e.target.value===``?null:e.target.value),className:`bg-bg-elevated border border-line rounded px-2 py-1 text-sm`,children:[(0,W.jsx)(`option`,{value:``,children:`all projects`}),te.filter(e=>e.extracted_sessions>0).map(e=>(0,W.jsx)(`option`,{value:e.project,children:e.project},e.project))]})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm text-fg-dim cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked)}),`show resolved clusters`]}),(0,W.jsxs)(`div`,{className:`ml-auto text-sm text-fg-muted`,children:[(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:P.totals.cluster_count}),` `,`cluster`,P.totals.cluster_count===1?``:`s`,` ·`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:P.totals.recurring_count}),` `,`recurring ·`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:P.totals.singleton_count}),` `,`singletons ·`,` `,(0,W.jsx)(`strong`,{className:`text-fg tabular-nums`,children:P.totals.session_count}),` `,`session`,P.totals.session_count===1?``:`s`]})]}),(0,W.jsxs)(`div`,{className:`relative flex-1 min-h-0 overflow-hidden bg-bg`,children:[z?(0,W.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`text-center max-w-md p-6 space-y-3 text-sm`,children:[(0,W.jsx)(`div`,{className:`text-base font-semibold text-fg`,children:`Nothing to visualize yet`}),(0,W.jsxs)(`div`,{className:`text-fg-muted leading-relaxed`,children:[`The galaxy renders extracted bug findings (clusters and singletons). Run extract-outputs on a few projects, then run`,` `,(0,W.jsx)(`code`,{className:`text-fg-dim`,children:`recall infer-bug-patterns`}),` `,`to populate this view.`]})]})}):(0,W.jsxs)(`svg`,{ref:u,viewBox:`0 0 ${F} ${I}`,preserveAspectRatio:`xMidYMid meet`,className:`w-full h-full select-none`,style:{cursor:T?`grabbing`:`grab`},onWheel:e=>{e.preventDefault();let t=Math.min(.05,Math.abs(e.deltaY)*5e-4);A(e.deltaY>0?1-t:1+t)},onMouseDown:e=>{e.button===0&&(D.current={x:e.clientX,y:e.clientY,panX:C.x,panY:C.y,moved:!1},E(!0))},onMouseMove:e=>{if(!D.current||!u.current)return;let t=u.current.getBoundingClientRect(),n=e.clientX-D.current.x,r=e.clientY-D.current.y;!D.current.moved&&(Math.abs(n)>3||Math.abs(r)>3)&&(D.current.moved=!0);let i=n*F/t.width,a=r*I/t.height;w({x:D.current.panX+i/x,y:D.current.panY+a/x})},onMouseUp:()=>{D.current=null,E(!1)},onMouseLeave:()=>{D.current=null,E(!1)},children:[(0,W.jsx)(`defs`,{children:(0,W.jsx)(`marker`,{id:`bg-arrow`,viewBox:`0 0 10 10`,refX:`8`,refY:`5`,markerWidth:`5`,markerHeight:`5`,orient:`auto-start-reverse`,children:(0,W.jsx)(`path`,{d:`M 0 0 L 10 5 L 0 10 z`,className:`fill-line`})})}),(0,W.jsxs)(`g`,{transform:`translate(${F/2+C.x*x}, ${I/2+C.y*x}) scale(${x}) translate(${-F/2}, ${-I/2})`,children:[R.map(e=>(0,W.jsxs)(`g`,{onContextMenu:t=>{if(t.preventDefault(),t.stopPropagation(),!u.current)return;let n=u.current.getBoundingClientRect();f({target:{kind:`region`,project:e.project,clusterCount:e.cluster_count},x:t.clientX-n.left,y:t.clientY-n.top})},children:[(0,W.jsx)(`rect`,{x:e.cx-e.w/2,y:e.cy-e.h/2,width:e.w,height:e.h,rx:16,ry:16,fill:`rgba(56, 189, 248, 0.04)`,stroke:`rgba(56, 189, 248, 0.2)`,strokeWidth:1.5,strokeDasharray:`6 6`}),(0,W.jsx)(`text`,{x:e.cx,y:e.cy-e.h/2+28,textAnchor:`middle`,className:`fill-fg text-[16px] font-bold pointer-events-none`,children:e.project}),(0,W.jsxs)(`text`,{x:e.cx,y:e.cy-e.h/2+46,textAnchor:`middle`,className:`fill-fg-muted text-[11px] pointer-events-none`,children:[e.cluster_count,` bug`,e.cluster_count===1?``:`s`]})]},`region-${e.project}`)),P.related_edges.map((e,t)=>{let n=L.get(e.a),r=L.get(e.b);return!n||!r?null:(0,W.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,stroke:`#94a3b8`,strokeOpacity:.65,strokeWidth:2,strokeDasharray:`6 5`},`rel-${t}`)}),P.member_edges.map((e,t)=>{let n=L.get(e.cluster_id),r=L.get(e.session_id);return!n||!r?null:(0,W.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,stroke:`#38bdf8`,strokeOpacity:.55,strokeWidth:1.75,strokeLinecap:`round`},`mem-${t}`)}),P.sessions.map(e=>{let n=L.get(e.session_id);if(!n)return null;let r=Eb(e.project,N),i=o===e.session_id;return(0,W.jsx)(`g`,{onMouseEnter:()=>s(e.session_id),onMouseLeave:()=>s(null),onMouseDown:e=>e.stopPropagation(),onClick:()=>t({session:e.session_id,view:null}),className:`cursor-pointer`,children:(0,W.jsx)(`circle`,{cx:n.x,cy:n.y,r:i?Ab+2:Ab,fill:r,fillOpacity:.85,stroke:r,strokeWidth:i?2:1})},e.session_id)}),P.clusters.map(e=>{let t=L.get(e.id);if(!t)return null;let n=o===e.id,r=c===e.id,i=60+Math.min(20,Math.sqrt(e.occurrence_count)*6),a=t.x-180/2,d=t.y-i/2,p=kb(e.projects),m=Ob(e.snippet,36),h=e.error_type&&e.error_type!==`unknown`?e.error_type:null;return(0,W.jsxs)(`g`,{onMouseEnter:()=>s(e.id),onMouseLeave:()=>s(null),onMouseDown:e=>e.stopPropagation(),onContextMenu:t=>{if(t.preventDefault(),t.stopPropagation(),!u.current)return;let n=u.current.getBoundingClientRect();f({target:{kind:`cluster`,cluster:e},x:t.clientX-n.left,y:t.clientY-n.top})},onClick:()=>l(r?null:e.id),className:`cursor-pointer`,children:[(0,W.jsx)(`rect`,{x:a,y:d,width:180,height:i,rx:8,ry:8,fill:`#0f172a`}),(0,W.jsx)(`rect`,{x:a,y:d,width:180,height:i,rx:8,ry:8,fill:e.resolved?`rgba(15, 23, 42, 0.0)`:`rgba(56, 189, 248, 0.18)`,stroke:e.resolved?`#475569`:`#38bdf8`,strokeWidth:n||r?2.5:1.5,strokeDasharray:e.resolved?`5 4`:void 0}),(0,W.jsx)(`rect`,{x:a+6,y:d+6,width:e.occurrence_count>=100?36:e.occurrence_count>=10?30:24,height:16,rx:4,fill:e.resolved?`rgba(71, 85, 105, 0.4)`:`#38bdf8`}),(0,W.jsxs)(`text`,{x:a+6+(e.occurrence_count>=100?18:e.occurrence_count>=10?15:12),y:d+17,textAnchor:`middle`,className:`text-[10px] font-bold pointer-events-none `+(e.resolved?`fill-fg-muted`:`fill-bg`),children:[e.occurrence_count,`×`]}),e.resolved?(0,W.jsx)(`text`,{x:a+180-8,y:d+17,textAnchor:`end`,className:`fill-accent text-[10px] font-semibold pointer-events-none`,children:`✓ fixed`}):h?(0,W.jsx)(`text`,{x:a+180-8,y:d+17,textAnchor:`end`,className:`fill-warning text-[10px] font-mono pointer-events-none`,children:Ob(h,16)}):null,(0,W.jsx)(`text`,{x:t.x,y:d+36,textAnchor:`middle`,className:`fill-fg text-[12px] font-semibold pointer-events-none`,children:Ob(p,28)}),m&&(0,W.jsx)(`text`,{x:t.x,y:d+50,textAnchor:`middle`,className:`fill-fg-muted text-[10px] pointer-events-none`,children:m})]},e.id)})]})]}),!z&&(0,W.jsxs)(`div`,{className:`absolute bottom-3 right-3 bg-bg/90 border border-line rounded-lg p-1 flex flex-col items-stretch gap-0.5 backdrop-blur shadow-lg`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>A(1.2),title:`Zoom in`,className:`px-2 py-1 text-sm font-bold text-fg-dim hover:text-fg hover:bg-bg-elevated rounded`,children:`+`}),(0,W.jsxs)(`div`,{className:`text-[10px] text-fg-muted tabular-nums text-center px-1`,children:[Math.round(x*100),`%`]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>A(.83),title:`Zoom out`,className:`px-2 py-1 text-sm font-bold text-fg-dim hover:text-fg hover:bg-bg-elevated rounded`,children:`−`}),(0,W.jsx)(`button`,{type:`button`,onClick:k,title:`Reset zoom and pan`,className:`px-2 py-1 text-xs text-fg-dim hover:text-fg hover:bg-bg-elevated rounded mt-0.5 border-t border-line/50`,children:`⟲`})]}),(B||ne||V)&&(0,W.jsxs)(`div`,{className:`absolute top-3 right-3 max-w-sm bg-bg border border-line rounded-lg shadow-lg p-4 text-sm space-y-2 pointer-events-none`,children:[(B||ne)&&(0,W.jsx)(Mb,{cluster:B||ne}),V&&!B&&!ne&&(0,W.jsx)(Nb,{session:V})]}),(0,W.jsx)(Rb,{}),d&&(0,W.jsx)(Pb,{target:d.target,x:d.x,y:d.y,onClose:()=>f(null),onNavigate:e=>{t({q:``,view:null}),r(e),f(null)},onOpenSession:e=>{t({session:e,view:null}),f(null)},onSynthesize:e=>{m(e),f(null)},onViewSavedReports:e=>{g(e),f(null)},savedCountsByProject:y,savedCountsByCluster:b}),p&&(0,W.jsx)(pb,{scope:p.scope,targetId:p.targetId,mode:p.mode,targetLabel:p.targetLabel,memberSessionIds:p.memberSessionIds,onClose:()=>m(null)}),h&&(0,W.jsx)(wb,{scope:h.scope,targetId:h.targetId,targetLabel:h.targetLabel,onClose:()=>g(null)})]})]})}function Mb({cluster:e}){return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2 flex-wrap`,children:[(0,W.jsxs)(`span`,{className:`font-semibold text-fg`,children:[e.occurrence_count,`× cluster`]}),e.resolved&&(0,W.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 bg-accent/15 text-accent border border-accent/40 rounded font-medium`,children:`✓ fixed`}),e.error_type&&e.error_type!==`unknown`&&(0,W.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 bg-warning/10 text-warning border border-warning/40 rounded font-mono`,children:e.error_type})]}),e.snippet&&(0,W.jsx)(`div`,{className:`text-fg leading-relaxed`,children:e.snippet}),e.file&&(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted font-mono break-all`,children:[`📄 `,e.file]}),e.fix_summary&&(0,W.jsxs)(`div`,{className:`text-xs text-accent border-l-2 border-accent/40 pl-2`,children:[(0,W.jsx)(`strong`,{className:`text-fg`,children:`Fix:`}),` `,e.fix_summary]}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted pt-1 border-t border-line`,children:[e.projects.length,` project`,e.projects.length===1?``:`s`,`:`,` `,e.projects.join(`, `)]}),e.message_hash&&(0,W.jsxs)(`div`,{className:`text-xs font-mono text-fg-muted`,children:[`id: `,e.message_hash]})]})}function Nb({session:e}){return(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(`div`,{className:`font-semibold text-fg`,children:e.auto_title??e.session_id.slice(0,8)}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[(0,W.jsx)(`span`,{className:`px-1.5 py-0.5 bg-bg-elevated rounded border border-line/50 font-medium mr-2`,children:e.project}),(0,W.jsx)(`span`,{className:`font-mono`,children:e.session_id.slice(0,8)})]})]})}function Pb({target:e,x:t,y:n,onClose:r,onNavigate:i,onOpenSession:a,onSynthesize:o,onViewSavedReports:s,savedCountsByProject:c,savedCountsByCluster:l}){(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&r()}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]);function u(e,t){navigator.clipboard.writeText(e).then(()=>showToast({message:`Copied ${t}`,tone:`success`})).catch(()=>showToast({message:`Copy failed`,tone:`error`}))}return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-40`,onMouseDown:e=>{e.stopPropagation(),r()},onContextMenu:e=>{e.preventDefault(),e.stopPropagation(),r()}}),(0,W.jsxs)(`div`,{className:`absolute z-50 min-w-[320px] max-w-[440px] bg-bg border border-line rounded-lg shadow-2xl overflow-hidden`,style:{left:t,top:n},onMouseDown:e=>e.stopPropagation(),onContextMenu:e=>e.preventDefault(),children:[e.kind===`region`&&(0,W.jsx)(Fb,{project:e.project,clusterCount:e.clusterCount,onNavigate:i,onCopy:u,onClose:r,onSynthesize:o,savedReportCount:c.get(e.project)??0,onViewSavedReports:()=>s({scope:`project`,targetId:e.project,targetLabel:e.project})}),e.kind===`cluster`&&(0,W.jsx)(Ib,{cluster:e.cluster,onOpenSession:a,onCopy:u,onClose:r,onSynthesize:o,savedReportCount:e.cluster.message_hash?l.get(e.cluster.message_hash)??0:0,onViewSavedReports:()=>e.cluster.message_hash&&s({scope:`cluster`,targetId:e.cluster.message_hash,targetLabel:e.cluster.snippet.slice(0,60)||`cluster ${e.cluster.id.slice(0,8)}`})})]})]})}function Fb({project:e,clusterCount:t,onNavigate:n,onCopy:r,onClose:i,onSynthesize:a,savedReportCount:o,onViewSavedReports:s}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line bg-bg-elevated/40`,children:[(0,W.jsx)(`div`,{className:`text-xs uppercase tracking-wider text-fg-muted font-medium`,children:`Project`}),(0,W.jsx)(`div`,{className:`text-sm font-semibold text-fg break-words`,children:e}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted`,children:[t,` bug`,t===1?``:`s`]})]}),(0,W.jsxs)(`div`,{className:`py-1 text-sm`,children:[(0,W.jsx)(Lb,{icon:`📋`,label:`View all bugs in this repo`,hint:`Switch to the All Findings tab, filtered to this project`,onClick:()=>n(e)}),(0,W.jsx)(Lb,{icon:`🔗`,label:`Copy project name`,hint:`Useful for piping into a CLI command`,onClick:()=>{r(e,`project name`),i()}}),(0,W.jsx)(Lb,{icon:`⌨`,label:`Copy CLI extract command`,hint:`recall extract-outputs --project "${e}"`,onClick:()=>{r(`recall extract-outputs --project "${e}"`,`CLI command`),i()}})]}),(0,W.jsxs)(`div`,{className:`py-1 border-t border-line text-sm`,children:[(0,W.jsx)(Lb,{icon:`🤖`,label:`Synthesize all bugs in ${e}`,hint:`LLM-powered repo-wide bug synopsis`,onClick:()=>a({scope:`project`,targetId:e,mode:`priorities`,targetLabel:e})}),(0,W.jsx)(Lb,{icon:`🧠`,label:`Suggest fix priorities`,hint:`Rank bugs by severity and recurrence`,onClick:()=>a({scope:`project`,targetId:e,mode:`priorities`,targetLabel:e})}),o>0&&(0,W.jsx)(Lb,{icon:`💾`,label:`View saved reports (${o})`,hint:`Browse past synthesis runs without re-spending tokens`,onClick:s})]})]})}function Ib({cluster:e,onOpenSession:t,onCopy:n,onClose:r,onSynthesize:i,savedReportCount:a,onViewSavedReports:o}){let s=e.member_session_ids,c=s.length===1;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`px-3 py-2 border-b border-line bg-bg-elevated/40`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,W.jsxs)(`span`,{className:`text-xs uppercase tracking-wider text-fg-muted font-medium`,children:[e.occurrence_count,`× cluster`]}),e.resolved&&(0,W.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 bg-accent/15 text-accent border border-accent/40 rounded`,children:`✓ fixed`})]}),(0,W.jsx)(`div`,{className:`text-sm font-semibold text-fg line-clamp-2`,children:e.snippet||`(no snippet)`}),(0,W.jsxs)(`div`,{className:`text-xs text-fg-muted mt-0.5`,children:[e.projects.length,` project`,e.projects.length===1?``:`s`,` ·`,` `,s.length,` session`,s.length===1?``:`s`]})]}),(0,W.jsxs)(`div`,{className:`py-1 text-sm`,children:[s.length>0&&(0,W.jsx)(Lb,{icon:`↗`,label:c?`Open the originating session`:`Open first session (of ${s.length})`,hint:s[0].slice(0,8),onClick:()=>{t(s[0])}}),(0,W.jsx)(Lb,{icon:`📋`,label:`Copy snippet`,hint:`The bug description text`,onClick:()=>{n(e.snippet,`snippet`),r()}}),e.file&&(0,W.jsx)(Lb,{icon:`📁`,label:`Copy file path`,hint:e.file,onClick:()=>{n(e.file,`file path`),r()}}),e.message_hash&&(0,W.jsx)(Lb,{icon:`🔗`,label:`Copy finding reference ID`,hint:`recall://finding/${e.message_hash}`,onClick:()=>{n(`recall://finding/${e.message_hash}`,`reference ID`),r()}}),(0,W.jsx)(Lb,{icon:`🤖`,label:`Copy as Claude context`,hint:`Multi-line block to paste into a new claude session`,onClick:()=>{let t=[`Bug finding from a past Claude Code session:`];e.error_type&&e.error_type!==`unknown`&&t.push(`Type: ${e.error_type}`),e.snippet&&t.push(`Description: ${e.snippet}`),e.file&&t.push(`File: ${e.file}`),t.push(`Occurrences: ${e.occurrence_count} session${e.occurrence_count===1?``:`s`}`),t.push(`Projects: ${e.projects.join(`, `)}`),e.message_hash&&t.push(`Finding ID: ${e.message_hash}`),n(t.join(`