From c9a19ac66ee131051728e9553cd7f049ae766c84 Mon Sep 17 00:00:00 2001 From: Thang Luu Date: Wed, 7 Oct 2026 11:37:16 +0700 Subject: [PATCH 1/2] Consolidate compatible web dependency upgrades and React 19 integration --- CHANGELOG.md | 6 + .../proofline/web/assets/index-B6UyXvhp.js | 205 -- .../proofline/web/assets/index-C1wsYag2.css | 1 + .../proofline/web/assets/index-Cp1e0j7h.js | 9 + .../proofline/web/assets/index-Cq2uTymx.css | 1 - apps/api/proofline/web/index.html | 4 +- apps/web/package.json | 17 +- apps/web/scripts/check-egress.mjs | 4 + apps/web/scripts/check-egress.test.mjs | 8 + apps/web/src/App.tsx | 2 +- package-lock.json | 2586 +++++------------ 11 files changed, 819 insertions(+), 2024 deletions(-) delete mode 100644 apps/api/proofline/web/assets/index-B6UyXvhp.js create mode 100644 apps/api/proofline/web/assets/index-C1wsYag2.css create mode 100644 apps/api/proofline/web/assets/index-Cp1e0j7h.js delete mode 100644 apps/api/proofline/web/assets/index-Cq2uTymx.css diff --git a/CHANGELOG.md b/CHANGELOG.md index e523e15..7aae595 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Proofline changelog +## Unreleased + +- Upgrade React/ReactDOM and their types together with the Vite/React-plugin/jsdom toolchain; deduplicate the workspace runtime. +- Preserve spacing in navigation accessible names and recognize the narrow React 19 production diagnostic URL path in the static egress check. +- Rebuild the packaged web bundle from the upgraded toolchain. + ## [2.0.2] - 2026-08-24 ## [2.0.1] - 2026-08-24 diff --git a/apps/api/proofline/web/assets/index-B6UyXvhp.js b/apps/api/proofline/web/assets/index-B6UyXvhp.js deleted file mode 100644 index da0de5b..0000000 --- a/apps/api/proofline/web/assets/index-B6UyXvhp.js +++ /dev/null @@ -1,205 +0,0 @@ -(function(){const c=document.createElement("link").relList;if(c&&c.supports&&c.supports("modulepreload"))return;for(const j of document.querySelectorAll('link[rel="modulepreload"]'))E(j);new MutationObserver(j=>{for(const k of j)if(k.type==="childList")for(const O of k.addedNodes)O.tagName==="LINK"&&O.rel==="modulepreload"&&E(O)}).observe(document,{childList:!0,subtree:!0});function d(j){const k={};return j.integrity&&(k.integrity=j.integrity),j.referrerPolicy&&(k.referrerPolicy=j.referrerPolicy),j.crossOrigin==="use-credentials"?k.credentials="include":j.crossOrigin==="anonymous"?k.credentials="omit":k.credentials="same-origin",k}function E(j){if(j.ep)return;j.ep=!0;const k=d(j);fetch(j.href,k)}})();function Wu(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var Ts={exports:{}},Nr={},Is={exports:{}},de={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var zu;function Kd(){if(zu)return de;zu=1;var o=Symbol.for("react.element"),c=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),k=Symbol.for("react.provider"),O=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),D=Symbol.for("react.suspense"),B=Symbol.for("react.memo"),$=Symbol.for("react.lazy"),U=Symbol.iterator;function F(p){return p===null||typeof p!="object"?null:(p=U&&p[U]||p["@@iterator"],typeof p=="function"?p:null)}var V={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},K=Object.assign,J={};function z(p,_,ae){this.props=p,this.context=_,this.refs=J,this.updater=ae||V}z.prototype.isReactComponent={},z.prototype.setState=function(p,_){if(typeof p!="object"&&typeof p!="function"&&p!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,p,_,"setState")},z.prototype.forceUpdate=function(p){this.updater.enqueueForceUpdate(this,p,"forceUpdate")};function Z(){}Z.prototype=z.prototype;function oe(p,_,ae){this.props=p,this.context=_,this.refs=J,this.updater=ae||V}var H=oe.prototype=new Z;H.constructor=oe,K(H,z.prototype),H.isPureReactComponent=!0;var X=Array.isArray,ie=Object.prototype.hasOwnProperty,m={current:null},R={key:!0,ref:!0,__self:!0,__source:!0};function w(p,_,ae){var ce,A={},le=null,ve=null;if(_!=null)for(ce in _.ref!==void 0&&(ve=_.ref),_.key!==void 0&&(le=""+_.key),_)ie.call(_,ce)&&!R.hasOwnProperty(ce)&&(A[ce]=_[ce]);var fe=arguments.length-2;if(fe===1)A.children=ae;else if(1>>1,_=T[p];if(0>>1;pj(A,S))le<_&&0>j(ve,A)?(T[p]=ve,T[le]=S,p=le):(T[p]=A,T[ce]=S,p=ce);else if(le<_&&0>j(ve,S))T[p]=ve,T[le]=S,p=le;else break e}}return P}function j(T,P){var S=T.sortIndex-P.sortIndex;return S!==0?S:T.id-P.id}if(typeof performance=="object"&&typeof performance.now=="function"){var k=performance;o.unstable_now=function(){return k.now()}}else{var O=Date,Q=O.now();o.unstable_now=function(){return O.now()-Q}}var D=[],B=[],$=1,U=null,F=3,V=!1,K=!1,J=!1,z=typeof setTimeout=="function"?setTimeout:null,Z=typeof clearTimeout=="function"?clearTimeout:null,oe=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function H(T){for(var P=d(B);P!==null;){if(P.callback===null)E(B);else if(P.startTime<=T)E(B),P.sortIndex=P.expirationTime,c(D,P);else break;P=d(B)}}function X(T){if(J=!1,H(T),!K)if(d(D)!==null)K=!0,Te(ie);else{var P=d(B);P!==null&&M(X,P.startTime-T)}}function ie(T,P){K=!1,J&&(J=!1,Z(w),w=-1),V=!0;var S=F;try{for(H(P),U=d(D);U!==null&&(!(U.expirationTime>P)||T&&!je());){var p=U.callback;if(typeof p=="function"){U.callback=null,F=U.priorityLevel;var _=p(U.expirationTime<=P);P=o.unstable_now(),typeof _=="function"?U.callback=_:U===d(D)&&E(D),H(P)}else E(D);U=d(D)}if(U!==null)var ae=!0;else{var ce=d(B);ce!==null&&M(X,ce.startTime-P),ae=!1}return ae}finally{U=null,F=S,V=!1}}var m=!1,R=null,w=-1,re=5,Ce=-1;function je(){return!(o.unstable_now()-CeT||125p?(T.sortIndex=S,c(B,T),d(D)===null&&T===d(B)&&(J?(Z(w),w=-1):J=!0,M(X,S-p))):(T.sortIndex=_,c(D,T),K||V||(K=!0,Te(ie))),T},o.unstable_shouldYield=je,o.unstable_wrapCallback=function(T){var P=F;return function(){var S=F;F=P;try{return T.apply(this,arguments)}finally{F=S}}}})(Ds)),Ds}var $u;function Jd(){return $u||($u=1,zs.exports=Yd()),zs.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Uu;function Zd(){if(Uu)return tt;Uu=1;var o=Fs(),c=Jd();function d(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),D=Object.prototype.hasOwnProperty,B=/^[: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]*$/,$={},U={};function F(e){return D.call(U,e)?!0:D.call($,e)?!1:B.test(e)?U[e]=!0:($[e]=!0,!1)}function V(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function K(e,t,n,r){if(t===null||typeof t>"u"||V(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function J(e,t,n,r,i,s,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=a}var z={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){z[e]=new J(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];z[t]=new J(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){z[e]=new J(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){z[e]=new J(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){z[e]=new J(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){z[e]=new J(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){z[e]=new J(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){z[e]=new J(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){z[e]=new J(e,5,!1,e.toLowerCase(),null,!1,!1)});var Z=/[\-:]([a-z])/g;function oe(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Z,oe);z[t]=new J(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Z,oe);z[t]=new J(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Z,oe);z[t]=new J(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){z[e]=new J(e,1,!1,e.toLowerCase(),null,!1,!1)}),z.xlinkHref=new J("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){z[e]=new J(e,1,!1,e.toLowerCase(),null,!0,!0)});function H(e,t,n,r){var i=z.hasOwnProperty(t)?z[t]:null;(i!==null?i.type!==0:r||!(2u||i[a]!==s[u]){var f=` -`+i[a].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=a&&0<=u);break}}}finally{ae=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?_(e):""}function A(e){switch(e.tag){case 5:return _(e.type);case 16:return _("Lazy");case 13:return _("Suspense");case 19:return _("SuspenseList");case 0:case 2:case 15:return e=ce(e.type,!1),e;case 11:return e=ce(e.type.render,!1),e;case 1:return e=ce(e.type,!0),e;default:return""}}function le(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case R:return"Fragment";case m:return"Portal";case re:return"Profiler";case w:return"StrictMode";case ke:return"Suspense";case me:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case je:return(e.displayName||"Context")+".Consumer";case Ce:return(e._context.displayName||"Context")+".Provider";case Ee:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Le:return t=e.displayName||null,t!==null?t:le(e.type)||"Memo";case Te:t=e._payload,e=e._init;try{return le(e(t))}catch{}}return null}function ve(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return le(t);case 8:return t===w?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function fe(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ye(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function nt(e){var t=ye(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,s.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Er(e){e._valueTracker||(e._valueTracker=nt(e))}function $s(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ye(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Rr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Fl(e,t){var n=t.checked;return S({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Us(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=fe(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Vs(e,t){t=t.checked,t!=null&&H(e,"checked",t,!1)}function $l(e,t){Vs(e,t);var n=fe(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Ul(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ul(e,t.type,fe(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Bs(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ul(e,t,n){(t!=="number"||Rr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Un=Array.isArray;function pn(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Pr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Vn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Bn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Yu=["Webkit","ms","Moz","O"];Object.keys(Bn).forEach(function(e){Yu.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Bn[t]=Bn[e]})});function Gs(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Bn.hasOwnProperty(e)&&Bn[e]?(""+t).trim():t+"px"}function Xs(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=Gs(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var Ju=S({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Hl(e,t){if(t){if(Ju[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(d(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(d(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(d(61))}if(t.style!=null&&typeof t.style!="object")throw Error(d(62))}}function Wl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";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 Ql=null;function Kl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ql=null,hn=null,mn=null;function Ys(e){if(e=cr(e)){if(typeof ql!="function")throw Error(d(280));var t=e.stateNode;t&&(t=Zr(t),ql(e.stateNode,e.type,t))}}function Js(e){hn?mn?mn.push(e):mn=[e]:hn=e}function Zs(){if(hn){var e=hn,t=mn;if(mn=hn=null,Ys(e),t)for(e=0;e>>=0,e===0?32:31-(ac(e)/uc|0)|0}var zr=64,Dr=4194304;function Kn(e){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: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Or(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,s=e.pingedLanes,a=n&268435455;if(a!==0){var u=a&~i;u!==0?r=Kn(u):(s&=a,s!==0&&(r=Kn(s)))}else a=n&~i,a!==0?r=Kn(a):s!==0&&(r=Kn(s));if(r===0)return 0;if(t!==0&&t!==r&&(t&i)===0&&(i=r&-r,s=t&-t,i>=s||i===16&&(s&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function qn(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-pt(t),e[t]=n}function pc(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=tr),Eo=" ",Ro=!1;function Po(e,t){switch(e){case"keyup":return Vc.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Lo(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gn=!1;function Hc(e,t){switch(e){case"compositionend":return Lo(t);case"keypress":return t.which!==32?null:(Ro=!0,Eo);case"textInput":return e=t.data,e===Eo&&Ro?null:e;default:return null}}function Wc(e,t){if(gn)return e==="compositionend"||!di&&Po(e,t)?(e=jo(),Vr=ii=Ft=null,gn=!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)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Ao(n)}}function $o(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$o(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Uo(){for(var e=window,t=Rr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Rr(e.document)}return t}function hi(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")}function bc(e){var t=Uo(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&$o(n.ownerDocument.documentElement,n)){if(r!==null&&hi(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!e.extend&&s>r&&(i=r,r=s,s=i),i=Fo(n,s);var a=Fo(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),s>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,xn=null,mi=null,ir=null,vi=!1;function Vo(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;vi||xn==null||xn!==Rr(r)||(r=xn,"selectionStart"in r&&hi(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}),ir&&lr(ir,r)||(ir=r,r=Xr(mi,"onSelect"),0_n||(e.current=Ri[_n],Ri[_n]=null,_n--)}function we(e,t){_n++,Ri[_n]=e.current,e.current=t}var Bt={},We=Vt(Bt),Ye=Vt(!1),tn=Bt;function Nn(e,t){var n=e.type.contextTypes;if(!n)return Bt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=t[s];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Je(e){return e=e.childContextTypes,e!=null}function br(){_e(Ye),_e(We)}function na(e,t,n){if(We.current!==Bt)throw Error(d(168));we(We,t),we(Ye,n)}function ra(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(d(108,ve(e)||"Unknown",i));return S({},n,r)}function el(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Bt,tn=We.current,we(We,e),we(Ye,Ye.current),!0}function la(e,t,n){var r=e.stateNode;if(!r)throw Error(d(169));n?(e=ra(e,t,tn),r.__reactInternalMemoizedMergedChildContext=e,_e(Ye),_e(We),we(We,e)):_e(Ye),we(Ye,n)}var Et=null,tl=!1,Pi=!1;function ia(e){Et===null?Et=[e]:Et.push(e)}function dd(e){tl=!0,ia(e)}function Ht(){if(!Pi&&Et!==null){Pi=!0;var e=0,t=ge;try{var n=Et;for(ge=1;e>=a,i-=a,Rt=1<<32-pt(t)+i|n<ue?(Ve=ne,ne=null):Ve=ne.sibling;var he=N(v,ne,y[ue],I);if(he===null){ne===null&&(ne=Ve);break}e&&ne&&he.alternate===null&&t(v,ne),h=s(he,h,ue),te===null?b=he:te.sibling=he,te=he,ne=Ve}if(ue===y.length)return n(v,ne),Ne&&rn(v,ue),b;if(ne===null){for(;ueue?(Ve=ne,ne=null):Ve=ne.sibling;var Zt=N(v,ne,he.value,I);if(Zt===null){ne===null&&(ne=Ve);break}e&&ne&&Zt.alternate===null&&t(v,ne),h=s(Zt,h,ue),te===null?b=Zt:te.sibling=Zt,te=Zt,ne=Ve}if(he.done)return n(v,ne),Ne&&rn(v,ue),b;if(ne===null){for(;!he.done;ue++,he=y.next())he=L(v,he.value,I),he!==null&&(h=s(he,h,ue),te===null?b=he:te.sibling=he,te=he);return Ne&&rn(v,ue),b}for(ne=r(v,ne);!he.done;ue++,he=y.next())he=W(ne,v,ue,he.value,I),he!==null&&(e&&he.alternate!==null&&ne.delete(he.key===null?ue:he.key),h=s(he,h,ue),te===null?b=he:te.sibling=he,te=he);return e&&ne.forEach(function(Qd){return t(v,Qd)}),Ne&&rn(v,ue),b}function ze(v,h,y,I){if(typeof y=="object"&&y!==null&&y.type===R&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case ie:e:{for(var b=y.key,te=h;te!==null;){if(te.key===b){if(b=y.type,b===R){if(te.tag===7){n(v,te.sibling),h=i(te,y.props.children),h.return=v,v=h;break e}}else if(te.elementType===b||typeof b=="object"&&b!==null&&b.$$typeof===Te&&da(b)===te.type){n(v,te.sibling),h=i(te,y.props),h.ref=dr(v,te,y),h.return=v,v=h;break e}n(v,te);break}else t(v,te);te=te.sibling}y.type===R?(h=fn(y.props.children,v.mode,I,y.key),h.return=v,v=h):(I=Pl(y.type,y.key,y.props,null,v.mode,I),I.ref=dr(v,h,y),I.return=v,v=I)}return a(v);case m:e:{for(te=y.key;h!==null;){if(h.key===te)if(h.tag===4&&h.stateNode.containerInfo===y.containerInfo&&h.stateNode.implementation===y.implementation){n(v,h.sibling),h=i(h,y.children||[]),h.return=v,v=h;break e}else{n(v,h);break}else t(v,h);h=h.sibling}h=Cs(y,v.mode,I),h.return=v,v=h}return a(v);case Te:return te=y._init,ze(v,h,te(y._payload),I)}if(Un(y))return G(v,h,y,I);if(P(y))return Y(v,h,y,I);il(v,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,h!==null&&h.tag===6?(n(v,h.sibling),h=i(h,y),h.return=v,v=h):(n(v,h),h=Ns(y,v.mode,I),h.return=v,v=h),a(v)):n(v,h)}return ze}var Pn=fa(!0),pa=fa(!1),sl=Vt(null),ol=null,Ln=null,Di=null;function Oi(){Di=Ln=ol=null}function Ai(e){var t=sl.current;_e(sl),e._currentValue=t}function Fi(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Tn(e,t){ol=e,Di=Ln=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(Ze=!0),e.firstContext=null)}function ut(e){var t=e._currentValue;if(Di!==e)if(e={context:e,memoizedValue:t,next:null},Ln===null){if(ol===null)throw Error(d(308));Ln=e,ol.dependencies={lanes:0,firstContext:e}}else Ln=Ln.next=e;return t}var ln=null;function $i(e){ln===null?ln=[e]:ln.push(e)}function ha(e,t,n,r){var i=t.interleaved;return i===null?(n.next=n,$i(t)):(n.next=i.next,i.next=n),t.interleaved=n,Lt(e,r)}function Lt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Wt=!1;function Ui(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ma(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Tt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Qt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(pe&2)!==0){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,Lt(e,n)}return i=r.interleaved,i===null?(t.next=t,$i(r)):(t.next=i.next,i.next=t),r.interleaved=t,Lt(e,n)}function al(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ei(e,n)}}function va(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};s===null?i=s=a:s=s.next=a,n=n.next}while(n!==null);s===null?i=s=t:s=s.next=t}else i=s=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:s,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ul(e,t,n,r){var i=e.updateQueue;Wt=!1;var s=i.firstBaseUpdate,a=i.lastBaseUpdate,u=i.shared.pending;if(u!==null){i.shared.pending=null;var f=u,g=f.next;f.next=null,a===null?s=g:a.next=g,a=f;var C=e.alternate;C!==null&&(C=C.updateQueue,u=C.lastBaseUpdate,u!==a&&(u===null?C.firstBaseUpdate=g:u.next=g,C.lastBaseUpdate=f))}if(s!==null){var L=i.baseState;a=0,C=g=f=null,u=s;do{var N=u.lane,W=u.eventTime;if((r&N)===N){C!==null&&(C=C.next={eventTime:W,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var G=e,Y=u;switch(N=t,W=n,Y.tag){case 1:if(G=Y.payload,typeof G=="function"){L=G.call(W,L,N);break e}L=G;break e;case 3:G.flags=G.flags&-65537|128;case 0:if(G=Y.payload,N=typeof G=="function"?G.call(W,L,N):G,N==null)break e;L=S({},L,N);break e;case 2:Wt=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,N=i.effects,N===null?i.effects=[u]:N.push(u))}else W={eventTime:W,lane:N,tag:u.tag,payload:u.payload,callback:u.callback,next:null},C===null?(g=C=W,f=L):C=C.next=W,a|=N;if(u=u.next,u===null){if(u=i.shared.pending,u===null)break;N=u,u=N.next,N.next=null,i.lastBaseUpdate=N,i.shared.pending=null}}while(!0);if(C===null&&(f=L),i.baseState=f,i.firstBaseUpdate=g,i.lastBaseUpdate=C,t=i.shared.interleaved,t!==null){i=t;do a|=i.lane,i=i.next;while(i!==t)}else s===null&&(i.shared.lanes=0);an|=a,e.lanes=a,e.memoizedState=L}}function ya(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Qi.transition;Qi.transition={};try{e(!1),t()}finally{ge=n,Qi.transition=r}}function Oa(){return ct().memoizedState}function md(e,t,n){var r=Xt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Aa(e))Fa(t,n);else if(n=ha(e,t,n,r),n!==null){var i=Xe();xt(n,e,r,i),$a(n,t,r)}}function vd(e,t,n){var r=Xt(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Aa(e))Fa(t,i);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var a=t.lastRenderedState,u=s(a,n);if(i.hasEagerState=!0,i.eagerState=u,ht(u,a)){var f=t.interleaved;f===null?(i.next=i,$i(t)):(i.next=f.next,f.next=i),t.interleaved=i;return}}catch{}finally{}n=ha(e,t,i,r),n!==null&&(i=Xe(),xt(n,e,r,i),$a(n,t,r))}}function Aa(e){var t=e.alternate;return e===Pe||t!==null&&t===Pe}function Fa(e,t){mr=fl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function $a(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ei(e,n)}}var ml={readContext:ut,useCallback:Qe,useContext:Qe,useEffect:Qe,useImperativeHandle:Qe,useInsertionEffect:Qe,useLayoutEffect:Qe,useMemo:Qe,useReducer:Qe,useRef:Qe,useState:Qe,useDebugValue:Qe,useDeferredValue:Qe,useTransition:Qe,useMutableSource:Qe,useSyncExternalStore:Qe,useId:Qe,unstable_isNewReconciler:!1},yd={readContext:ut,useCallback:function(e,t){return St().memoizedState=[e,t===void 0?null:t],e},useContext:ut,useEffect:Ra,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,pl(4194308,4,Ta.bind(null,t,e),n)},useLayoutEffect:function(e,t){return pl(4194308,4,e,t)},useInsertionEffect:function(e,t){return pl(4,2,e,t)},useMemo:function(e,t){var n=St();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=St();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=md.bind(null,Pe,e),[r.memoizedState,e]},useRef:function(e){var t=St();return e={current:e},t.memoizedState=e},useState:Ca,useDebugValue:Zi,useDeferredValue:function(e){return St().memoizedState=e},useTransition:function(){var e=Ca(!1),t=e[0];return e=hd.bind(null,e[1]),St().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Pe,i=St();if(Ne){if(n===void 0)throw Error(d(407));n=n()}else{if(n=t(),Ue===null)throw Error(d(349));(on&30)!==0||ja(r,t,n)}i.memoizedState=n;var s={value:n,getSnapshot:t};return i.queue=s,Ra(Sa.bind(null,r,s,e),[e]),r.flags|=2048,gr(9,ka.bind(null,r,s,n,t),void 0,null),n},useId:function(){var e=St(),t=Ue.identifierPrefix;if(Ne){var n=Pt,r=Rt;n=(r&~(1<<32-pt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=vr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[jt]=t,e[ur]=r,iu(e,t,!1,!1),t.stateNode=e;e:{switch(a=Wl(n,r),n){case"dialog":Se("cancel",e),Se("close",e),i=r;break;case"iframe":case"object":case"embed":Se("load",e),i=r;break;case"video":case"audio":for(i=0;iOn&&(t.flags|=128,r=!0,xr(s,!1),t.lanes=4194304)}else{if(!r)if(e=cl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),xr(s,!0),s.tail===null&&s.tailMode==="hidden"&&!a.alternate&&!Ne)return Ke(t),null}else 2*Me()-s.renderingStartTime>On&&n!==1073741824&&(t.flags|=128,r=!0,xr(s,!1),t.lanes=4194304);s.isBackwards?(a.sibling=t.child,t.child=a):(n=s.last,n!==null?n.sibling=a:t.child=a,s.last=a)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=Me(),t.sibling=null,n=Re.current,we(Re,r?n&1|2:n&1),t):(Ke(t),null);case 22:case 23:return ks(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(st&1073741824)!==0&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),null;case 24:return null;case 25:return null}throw Error(d(156,t.tag))}function Nd(e,t){switch(Ti(t),t.tag){case 1:return Je(t.type)&&br(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return In(),_e(Ye),_e(We),Wi(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Bi(t),null;case 13:if(_e(Re),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(d(340));Rn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return _e(Re),null;case 4:return In(),null;case 10:return Ai(t.type._context),null;case 22:case 23:return ks(),null;case 24:return null;default:return null}}var xl=!1,qe=!1,Cd=typeof WeakSet=="function"?WeakSet:Set,q=null;function zn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ie(e,t,r)}else n.current=null}function cs(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var au=!1;function Ed(e,t){if(ki=$r,e=Uo(),hi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var a=0,u=-1,f=-1,g=0,C=0,L=e,N=null;t:for(;;){for(var W;L!==n||i!==0&&L.nodeType!==3||(u=a+i),L!==s||r!==0&&L.nodeType!==3||(f=a+r),L.nodeType===3&&(a+=L.nodeValue.length),(W=L.firstChild)!==null;)N=L,L=W;for(;;){if(L===e)break t;if(N===n&&++g===i&&(u=a),N===s&&++C===r&&(f=a),(W=L.nextSibling)!==null)break;L=N,N=L.parentNode}L=W}n=u===-1||f===-1?null:{start:u,end:f}}else n=null}n=n||{start:0,end:0}}else n=null;for(Si={focusedElem:e,selectionRange:n},$r=!1,q=t;q!==null;)if(t=q,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,q=e;else for(;q!==null;){t=q;try{var G=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(G!==null){var Y=G.memoizedProps,ze=G.memoizedState,v=t.stateNode,h=v.getSnapshotBeforeUpdate(t.elementType===t.type?Y:vt(t.type,Y),ze);v.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var y=t.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(d(163))}}catch(I){Ie(t,t.return,I)}if(e=t.sibling,e!==null){e.return=t.return,q=e;break}q=t.return}return G=au,au=!1,G}function wr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var s=i.destroy;i.destroy=void 0,s!==void 0&&cs(t,n,s)}i=i.next}while(i!==r)}}function wl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ds(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function uu(e){var t=e.alternate;t!==null&&(e.alternate=null,uu(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[jt],delete t[ur],delete t[Ei],delete t[ud],delete t[cd])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function cu(e){return e.tag===5||e.tag===3||e.tag===4}function du(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||cu(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.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function fs(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Jr));else if(r!==4&&(e=e.child,e!==null))for(fs(e,t,n),e=e.sibling;e!==null;)fs(e,t,n),e=e.sibling}function ps(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&&(e=e.child,e!==null))for(ps(e,t,n),e=e.sibling;e!==null;)ps(e,t,n),e=e.sibling}var Be=null,yt=!1;function Kt(e,t,n){for(n=n.child;n!==null;)fu(e,t,n),n=n.sibling}function fu(e,t,n){if(wt&&typeof wt.onCommitFiberUnmount=="function")try{wt.onCommitFiberUnmount(Mr,n)}catch{}switch(n.tag){case 5:qe||zn(n,t);case 6:var r=Be,i=yt;Be=null,Kt(e,t,n),Be=r,yt=i,Be!==null&&(yt?(e=Be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Be.removeChild(n.stateNode));break;case 18:Be!==null&&(yt?(e=Be,n=n.stateNode,e.nodeType===8?Ci(e.parentNode,n):e.nodeType===1&&Ci(e,n),Zn(e)):Ci(Be,n.stateNode));break;case 4:r=Be,i=yt,Be=n.stateNode.containerInfo,yt=!0,Kt(e,t,n),Be=r,yt=i;break;case 0:case 11:case 14:case 15:if(!qe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,a=s.destroy;s=s.tag,a!==void 0&&((s&2)!==0||(s&4)!==0)&&cs(n,t,a),i=i.next}while(i!==r)}Kt(e,t,n);break;case 1:if(!qe&&(zn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Ie(n,t,u)}Kt(e,t,n);break;case 21:Kt(e,t,n);break;case 22:n.mode&1?(qe=(r=qe)||n.memoizedState!==null,Kt(e,t,n),qe=r):Kt(e,t,n);break;default:Kt(e,t,n)}}function pu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Cd),t.forEach(function(r){var i=Od.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function gt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~s}if(r=i,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Pd(r/1960))-r,10e?16:e,Gt===null)var r=!1;else{if(e=Gt,Gt=null,Nl=0,(pe&6)!==0)throw Error(d(331));var i=pe;for(pe|=4,q=e.current;q!==null;){var s=q,a=s.child;if((q.flags&16)!==0){var u=s.deletions;if(u!==null){for(var f=0;fMe()-vs?cn(e,0):ms|=n),et(e,t)}function Cu(e,t){t===0&&((e.mode&1)===0?t=1:(t=Dr,Dr<<=1,(Dr&130023424)===0&&(Dr=4194304)));var n=Xe();e=Lt(e,t),e!==null&&(qn(e,t,n),et(e,n))}function Dd(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Cu(e,n)}function Od(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(d(314))}r!==null&&r.delete(t),Cu(e,n)}var Eu;Eu=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ye.current)Ze=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Ze=!1,Sd(e,t,n);Ze=(e.flags&131072)!==0}else Ze=!1,Ne&&(t.flags&1048576)!==0&&sa(t,rl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;gl(e,t),e=t.pendingProps;var i=Nn(t,We.current);Tn(t,n),i=qi(null,t,r,e,i,n);var s=Gi();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Je(r)?(s=!0,el(t)):s=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Ui(t),i.updater=vl,t.stateNode=i,i._reactInternals=t,es(t,r,e,n),t=ls(null,t,r,!0,s,n)):(t.tag=0,Ne&&s&&Li(t),Ge(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(gl(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=Fd(r),e=vt(r,e),i){case 0:t=rs(null,t,r,e,n);break e;case 1:t=ba(null,t,r,e,n);break e;case 11:t=Ga(null,t,r,e,n);break e;case 14:t=Xa(null,t,r,vt(r.type,e),n);break e}throw Error(d(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:vt(r,i),rs(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:vt(r,i),ba(e,t,r,i,n);case 3:e:{if(eu(t),e===null)throw Error(d(387));r=t.pendingProps,s=t.memoizedState,i=s.element,ma(e,t),ul(t,r,null,n);var a=t.memoizedState;if(r=a.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){i=Mn(Error(d(423)),t),t=tu(e,t,r,n,i);break e}else if(r!==i){i=Mn(Error(d(424)),t),t=tu(e,t,r,n,i);break e}else for(it=Ut(t.stateNode.containerInfo.firstChild),lt=t,Ne=!0,mt=null,n=pa(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Rn(),r===i){t=It(e,t,n);break e}Ge(e,t,r,n)}t=t.child}return t;case 5:return ga(t),e===null&&Mi(t),r=t.type,i=t.pendingProps,s=e!==null?e.memoizedProps:null,a=i.children,_i(r,i)?a=null:s!==null&&_i(r,s)&&(t.flags|=32),Za(e,t),Ge(e,t,a,n),t.child;case 6:return e===null&&Mi(t),null;case 13:return nu(e,t,n);case 4:return Vi(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Pn(t,null,r,n):Ge(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:vt(r,i),Ga(e,t,r,i,n);case 7:return Ge(e,t,t.pendingProps,n),t.child;case 8:return Ge(e,t,t.pendingProps.children,n),t.child;case 12:return Ge(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,s=t.memoizedProps,a=i.value,we(sl,r._currentValue),r._currentValue=a,s!==null)if(ht(s.value,a)){if(s.children===i.children&&!Ye.current){t=It(e,t,n);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var u=s.dependencies;if(u!==null){a=s.child;for(var f=u.firstContext;f!==null;){if(f.context===r){if(s.tag===1){f=Tt(-1,n&-n),f.tag=2;var g=s.updateQueue;if(g!==null){g=g.shared;var C=g.pending;C===null?f.next=f:(f.next=C.next,C.next=f),g.pending=f}}s.lanes|=n,f=s.alternate,f!==null&&(f.lanes|=n),Fi(s.return,n,t),u.lanes|=n;break}f=f.next}}else if(s.tag===10)a=s.type===t.type?null:s.child;else if(s.tag===18){if(a=s.return,a===null)throw Error(d(341));a.lanes|=n,u=a.alternate,u!==null&&(u.lanes|=n),Fi(a,n,t),a=s.sibling}else a=s.child;if(a!==null)a.return=s;else for(a=s;a!==null;){if(a===t){a=null;break}if(s=a.sibling,s!==null){s.return=a.return,a=s;break}a=a.return}s=a}Ge(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Tn(t,n),i=ut(i),r=r(i),t.flags|=1,Ge(e,t,r,n),t.child;case 14:return r=t.type,i=vt(r,t.pendingProps),i=vt(r.type,i),Xa(e,t,r,i,n);case 15:return Ya(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:vt(r,i),gl(e,t),t.tag=1,Je(r)?(e=!0,el(t)):e=!1,Tn(t,n),Va(t,r,i),es(t,r,i,n),ls(null,t,r,!0,e,n);case 19:return lu(e,t,n);case 22:return Ja(e,t,n)}throw Error(d(156,t.tag))};function Ru(e,t){return so(e,t)}function Ad(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.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 ft(e,t,n,r){return new Ad(e,t,n,r)}function _s(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Fd(e){if(typeof e=="function")return _s(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ee)return 11;if(e===Le)return 14}return 2}function Jt(e,t){var n=e.alternate;return n===null?(n=ft(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&14680064,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}function Pl(e,t,n,r,i,s){var a=2;if(r=e,typeof e=="function")_s(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case R:return fn(n.children,i,s,t);case w:a=8,i|=8;break;case re:return e=ft(12,n,t,i|2),e.elementType=re,e.lanes=s,e;case ke:return e=ft(13,n,t,i),e.elementType=ke,e.lanes=s,e;case me:return e=ft(19,n,t,i),e.elementType=me,e.lanes=s,e;case M:return Ll(n,i,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ce:a=10;break e;case je:a=9;break e;case Ee:a=11;break e;case Le:a=14;break e;case Te:a=16,r=null;break e}throw Error(d(130,e==null?e:typeof e,""))}return t=ft(a,n,t,i),t.elementType=e,t.type=r,t.lanes=s,t}function fn(e,t,n,r){return e=ft(7,e,r,t),e.lanes=n,e}function Ll(e,t,n,r){return e=ft(22,e,r,t),e.elementType=M,e.lanes=n,e.stateNode={isHidden:!1},e}function Ns(e,t,n){return e=ft(6,e,null,t),e.lanes=n,e}function Cs(e,t,n){return t=ft(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function $d(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=bl(0),this.expirationTimes=bl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=bl(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Es(e,t,n,r,i,s,a,u,f){return e=new $d(e,t,n,u,f),t===1?(t=1,s===!0&&(t|=8)):t=0,s=ft(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ui(s),e}function Ud(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(o)}catch(c){console.error(c)}}return o(),Ms.exports=Zd(),Ms.exports}var Bu;function ef(){if(Bu)return Al;Bu=1;var o=bd();return Al.createRoot=o.createRoot,Al.hydrateRoot=o.hydrateRoot,Al}var tf=ef();const nf=Wu(tf);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const rf=o=>o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Qu=(...o)=>o.filter((c,d,E)=>!!c&&c.trim()!==""&&E.indexOf(c)===d).join(" ").trim();/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var lf={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const sf=x.forwardRef(({color:o="currentColor",size:c=24,strokeWidth:d=2,absoluteStrokeWidth:E,className:j="",children:k,iconNode:O,...Q},D)=>x.createElement("svg",{ref:D,...lf,width:c,height:c,stroke:o,strokeWidth:E?Number(d)*24/Number(c):d,className:Qu("lucide",j),...Q},[...O.map(([B,$])=>x.createElement(B,$)),...Array.isArray(k)?k:[k]]));/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xe=(o,c)=>{const d=x.forwardRef(({className:E,...j},k)=>x.createElement(sf,{ref:k,iconNode:c,className:Qu(`lucide-${rf(o)}`,E),...j}));return d.displayName=`${o}`,d};/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const of=xe("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const af=xe("AudioLines",[["path",{d:"M2 10v3",key:"1fnikh"}],["path",{d:"M6 6v11",key:"11sgs0"}],["path",{d:"M10 3v18",key:"yhl04a"}],["path",{d:"M14 8v7",key:"3a1oy3"}],["path",{d:"M18 5v13",key:"123xd1"}],["path",{d:"M22 10v3",key:"154ddg"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const uf=xe("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const cf=xe("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const df=xe("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ku=xe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ff=xe("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pf=xe("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hf=xe("FileSearch",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"ms7g94"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}],["circle",{cx:"5",cy:"14",r:"3",key:"ufru5t"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const mf=xe("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const vf=xe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const yf=xe("GraduationCap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const gf=xe("Layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xf=xe("LayoutGrid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const wf=xe("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jf=xe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const kf=xe("Presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Sf=xe("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _f=xe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Nf=xe("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Cf=xe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ef=xe("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Rf=xe("SquareStack",[["path",{d:"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"4i38lg"}],["path",{d:"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"mlte4a"}],["rect",{width:"8",height:"8",x:"14",y:"14",rx:"2",key:"1fa9i4"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pf=xe("StickyNote",[["path",{d:"M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z",key:"qazsjp"}],["path",{d:"M15 3v4a2 2 0 0 0 2 2h4",key:"40519r"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Lf=xe("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Tf=xe("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const If=xe("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Mf=xe("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const qu=xe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),zf="00000000-0000-0000-0000-000000000001";let Fn=zf;async function se(o,c){const d=await fetch(o,{...c,headers:{"Content-Type":"application/json","X-Proofline-Workspace-ID":Fn,...c==null?void 0:c.headers}});if(!d.ok){const j=(await d.json().catch(()=>({}))).detail,k=typeof j=="string"?j:typeof(j==null?void 0:j.code)=="string"?j.code:`Request failed (${d.status})`;throw new Error(k)}return d.status===204?void 0:d.json()}const ee={setWorkspace:o=>{Fn=o},workspaces:()=>se("/api/v1/workspaces"),overview:()=>se("/api/v1/overview"),decisionHealthOverview:()=>se("/api/v1/decision-health/overview"),decisionImpacts:(o=Fn,c)=>se(`/api/v1/decision-impacts${c?`?as_of=${encodeURIComponent(c)}`:""}`,{headers:{"X-Proofline-Workspace-ID":o}}),decisionImpactSummary:(o=Fn,c)=>se(`/api/v1/decision-impacts/summary${c?`?as_of=${encodeURIComponent(c)}`:""}`,{headers:{"X-Proofline-Workspace-ID":o}}),decisionImpactSnapshot:(o=Fn,c)=>se(`/api/v1/decision-impacts/snapshot${c?`?as_of=${encodeURIComponent(c)}`:""}`,{headers:{"X-Proofline-Workspace-ID":o}}),decisionReviews:(o={})=>{const c=new URLSearchParams;return o.state&&c.set("state",o.state),o.anchorState&&c.set("anchor_state",o.anchorState),o.severity&&c.set("severity",o.severity),c.set("limit",String(o.limit??100)),se(`/api/v1/decision-reviews?${c.toString()}`)},decisionReview:o=>se(`/api/v1/decision-reviews/${o}`),refreshDecisionReviews:()=>se("/api/v1/decision-reviews/refresh",{method:"POST"}),updateDecisionReview:(o,c)=>se(`/api/v1/decision-reviews/${o}`,{method:"PATCH",body:JSON.stringify(c)}),reanchorDecisionReview:(o,c)=>se(`/api/v1/decision-reviews/${o}/reanchor`,{method:"POST",body:JSON.stringify(c)}),resolveDecisionReview:(o,c)=>se(`/api/v1/decision-reviews/${o}/resolve`,{method:"POST",body:JSON.stringify(c)}),sources:()=>se("/api/v1/sources"),notes:()=>se("/api/v1/notes"),studyCards:()=>se("/api/v1/study-cards?due_only=true"),studioArtifacts:()=>se("/api/v1/studio-artifacts"),createStudioArtifact:(o,c)=>se("/api/v1/studio-artifacts",{method:"POST",body:JSON.stringify({source_id:o,kind:c})}),deleteStudioArtifact:o=>se(`/api/v1/studio-artifacts/${o}`,{method:"DELETE"}),downloadStudioArtifact:async o=>{var O;const c=await fetch(`/api/v1/studio-artifacts/${o}/download`,{headers:{"X-Proofline-Workspace-ID":Fn}});if(!c.ok){const Q=await c.json().catch(()=>({}));throw new Error(Q.detail??`Download failed (${c.status})`)}const E=((O=(c.headers.get("Content-Disposition")??"").match(/filename="([^"]+)"/))==null?void 0:O[1])??"proofline-studio.zip",j=URL.createObjectURL(await c.blob()),k=document.createElement("a");k.href=j,k.download=E,k.click(),URL.revokeObjectURL(j)},actionProposals:()=>se("/api/v1/action-proposals"),createActionProposal:o=>se("/api/v1/action-proposals",{method:"POST",body:JSON.stringify({question:o})}),reviewActionProposal:(o,c)=>se(`/api/v1/action-proposals/${o}`,{method:"PATCH",body:JSON.stringify({status:c})}),createStudyCards:o=>se(`/api/v1/sources/${o}/study-cards`,{method:"POST"}),reviewStudyCard:(o,c)=>se(`/api/v1/study-cards/${o}/reviews`,{method:"POST",body:JSON.stringify({rating:c})}),createNote:(o,c)=>se("/api/v1/notes",{method:"POST",body:JSON.stringify({title:o,content:c})}),updateNote:(o,c,d)=>se(`/api/v1/notes/${o}`,{method:"PUT",body:JSON.stringify({title:c,content:d})}),noteBacklinks:o=>se(`/api/v1/notes/${o}/backlinks`),noteVersions:o=>se(`/api/v1/sources/${o}/versions`),deletionImpact:o=>se(`/api/v1/sources/${o}/deletion-impact`),deleteSource:o=>se(`/api/v1/sources/${o}`,{method:"DELETE"}),jobs:()=>se("/api/v1/jobs?limit=200"),modelRuns:(o={})=>{const c=new URLSearchParams({limit:String(o.limit??100)});return o.status&&c.set("status",o.status),o.operation&&c.set("operation",o.operation),o.providerId&&c.set("provider_id",o.providerId),o.parentRunId&&c.set("parent_run_id",o.parentRunId),se(`/api/v1/model/runs?${c.toString()}`)},modelRun:o=>se(`/api/v1/model/runs/${o}`),providerConfiguration:()=>se("/api/v1/model/configuration"),saveProviderConfiguration:o=>se("/api/v1/model/configuration",{method:"PUT",body:JSON.stringify(o)}),generationProviderStatus:()=>se("/api/v1/model/provider?check_health=true"),embeddingProviderStatus:()=>se("/api/v1/model/embedding-provider?check_health=true"),rerankingProviderStatus:()=>se("/api/v1/model/reranking-provider"),retryJob:o=>se(`/api/v1/jobs/${o}/retry`,{method:"POST"}),source:o=>se(`/api/v1/sources/${o}`),sourceVersion:(o,c)=>se(`/api/v1/sources/${o}/versions/${c}`),memories:()=>se("/api/v1/memories"),extractMemories:o=>se(`/api/v1/sources/${o}/extract-memories`,{method:"POST"}),decisionTimeline:o=>se(`/api/v1/decisions/${o}/timeline`),updateMemory:(o,c)=>se(`/api/v1/memories/${o}`,{method:"PATCH",body:JSON.stringify(c)}),search:async(o,c)=>{const d=new URLSearchParams({q:o});for(const E of(c==null?void 0:c.sourceIds)??[])d.append("source_id",E);return c!=null&&c.ingestedFrom&&d.set("ingested_from",c.ingestedFrom),c!=null&&c.ingestedBefore&&d.set("ingested_before",c.ingestedBefore),c!=null&&c.rerank&&d.set("rerank","true"),(await se(`/api/v1/search?${d.toString()}`)).hits},answer:(o,c)=>se("/api/v1/answers",{method:"POST",body:JSON.stringify({question:o,...c!=null&&c.sourceIds.length?{source_ids:c.sourceIds}:{},...c!=null&&c.ingestedFrom?{ingested_from:c.ingestedFrom}:{},...c!=null&&c.ingestedBefore?{ingested_before:c.ingestedBefore}:{},...c!=null&&c.rerank?{rerank:!0}:{}})}),importSource:(o,c,d)=>se("/api/v1/sources",{method:"POST",body:JSON.stringify({title:o,content:c,kind:"markdown",uri:d})}),importGitRepository:o=>se("/api/v1/git-repositories",{method:"POST",body:JSON.stringify({path:o})})};function Os(o){return o.slice(0,12)}function Df({detail:o,pending:c,error:d,onClose:E,onAcknowledge:j,onWaive:k,onReanchor:O,onObsolete:Q,onSupersede:D}){var H;const[B,$]=x.useState(""),[U,F]=x.useState(""),[V,K]=x.useState(""),[J,z]=x.useState(""),Z=["open","acknowledged"].includes(o.review.state),oe=`${((H=o.decision.status[0])==null?void 0:H.toUpperCase())??""}${o.decision.status.slice(1)}`;return l.jsxs("aside",{className:"decision-health-drawer",role:"dialog","aria-modal":"true","aria-label":"Decision review detail",children:[l.jsxs("header",{children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"DETERMINISTIC REVIEW"}),l.jsx("h2",{children:o.decision.title}),l.jsxs("span",{className:"decision-health-status",children:[oe,Z?" · review required":` · ${o.review.state}`]})]}),l.jsx("button",{type:"button",onClick:E,"aria-label":"Close review detail",children:l.jsx(qu,{size:19})})]}),l.jsx("p",{className:"decision-health-statement",children:o.decision.statement}),l.jsxs("dl",{className:"decision-health-facts",children:[l.jsxs("div",{children:[l.jsx("dt",{children:"Anchor"}),l.jsx("dd",{children:o.review.anchor_state})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Policy"}),l.jsx("dd",{children:o.policy.blocking?"Blocking":"Advisory"})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Fingerprint"}),l.jsx("dd",{title:o.review.finding_fingerprint,children:Os(o.review.finding_fingerprint)})]})]}),l.jsxs("section",{className:"decision-health-evidence","aria-label":"Cited evidence",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"CITED VERSION"}),l.jsxs("strong",{children:["L",o.cited.start_line,"–",o.cited.end_line," · ",Os(o.cited.content_sha256)]})]}),l.jsx("blockquote",{children:o.cited.quote})]}),l.jsxs("section",{className:"decision-health-evidence current","aria-label":"Current candidate",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"CURRENT VERSION"}),l.jsx("strong",{children:Os(o.current.content_sha256)})]}),o.current.candidate?l.jsxs(l.Fragment,{children:[l.jsxs("small",{children:["Suggested only · L",o.current.candidate.start_line,"–",o.current.candidate.end_line]}),l.jsx("blockquote",{children:o.current.candidate.quote})]}):l.jsx("p",{children:"No deterministic re-anchor candidate."})]}),d?l.jsx("p",{className:"decision-health-message error",role:"alert",children:d}):null,Z?l.jsxs("section",{className:"decision-health-actions","aria-label":"Review actions",children:[l.jsx("button",{className:"primary-action",type:"button",disabled:c||o.review.state!=="open",onClick:()=>void j(),children:"Acknowledge"}),l.jsxs("label",{children:["Waiver reason",l.jsx("textarea",{value:B,onChange:X=>$(X.target.value),rows:2})]}),l.jsx("button",{type:"button",disabled:c||!B.trim(),onClick:()=>void k(B.trim()),children:"Waive"}),o.current.candidate?l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Re-anchor reason",l.jsx("textarea",{value:U,onChange:X=>F(X.target.value),rows:2})]}),l.jsx("button",{type:"button",disabled:c||!U.trim(),onClick:()=>{window.confirm("Bind this decision to the exact current candidate span?")&&O(U.trim())},children:"Re-anchor candidate"})]}):null,l.jsx("button",{className:"danger-action",type:"button",disabled:c,onClick:()=>{window.confirm("Mark this accepted decision obsolete?")&&Q()},children:"Mark obsolete"}),l.jsxs("details",{children:[l.jsx("summary",{children:"Supersede with another accepted decision"}),l.jsxs("label",{children:["Replacement decision ID",l.jsx("input",{value:V,onChange:X=>K(X.target.value)})]}),l.jsxs("label",{children:["Supersede reason",l.jsx("textarea",{value:J,onChange:X=>z(X.target.value),rows:2})]}),l.jsx("button",{type:"button",disabled:c||!V.trim()||!J.trim(),onClick:()=>{window.confirm("Supersede this decision with the accepted replacement?")&&D(V.trim(),J.trim())},children:"Supersede decision"})]})]}):null,l.jsxs("section",{className:"decision-health-audit","aria-label":"Review audit timeline",children:[l.jsx("h3",{children:"Audit timeline"}),l.jsx("ol",{children:o.audit_events.map(X=>l.jsxs("li",{children:[l.jsx("strong",{children:X.action.replaceAll("_"," ")}),l.jsxs("span",{children:[X.actor," · ",new Date(X.created_at).toLocaleString()]})]},X.id))})]})]})}function Cr(o){return o instanceof Error?o.message:"Decision health unavailable"}function Of(o){var c;return`${((c=o[0])==null?void 0:c.toUpperCase())??""}${o.slice(1)}`}function Af(o,c){const d=new Set(o.map(k=>k.root_review_id)).size,E=new Set(o.map(k=>k.impacted_decision_id)).size,j=o.reduce((k,O)=>Math.max(k,O.depth),0);if(o.some(k=>k.evaluated_at!==c.evaluated_at)||c.finding_count!==o.length||c.root_review_count!==d||c.impacted_decision_count!==E||c.max_depth!==j)throw new Error("impact_snapshot_mismatch")}function Ff({overview:o,workspaceId:c,onOverviewChanged:d}){const[E,j]=x.useState([]),[k,O]=x.useState(""),[Q,D]=x.useState(""),[B,$]=x.useState(""),[U,F]=x.useState(!0),[V,K]=x.useState(""),[J,z]=x.useState(null),[Z,oe]=x.useState(null),[H,X]=x.useState(!1),[ie,m]=x.useState(""),[R,w]=x.useState(!1),[re,Ce]=x.useState([]),[je,Ee]=x.useState(null),[ke,me]=x.useState(!0),[Le,Te]=x.useState(""),M=x.useRef(0),T={...k?{state:k}:{},...Q?{anchorState:Q}:{},...B?{severity:B}:{},limit:100},P=x.useCallback(async()=>{if(c){F(!0);try{j(await ee.decisionReviews(T)),K("")}catch(A){K(Cr(A))}finally{F(!1)}}},[c,k,Q,B]),S=x.useCallback(async()=>{const A=++M.current;if(Ce([]),Ee(null),Te(""),!c){me(!1);return}me(!0);try{const le=new Date().toISOString(),ve=await ee.decisionImpactSnapshot(c,le);if(A!==M.current)return;const fe=ve.findings,ye=ve.summary;Af(fe,ye),Ce(fe),Ee(ye),Te("")}catch(le){if(A!==M.current)return;Ce([]),Ee(null),Te(Cr(le))}finally{A===M.current&&me(!1)}},[c]);x.useEffect(()=>{z(null),oe(null),P()},[P,c]),x.useEffect(()=>(S(),()=>{M.current+=1}),[S,c]);async function p(A){z(A),oe(null),X(!0),m("");try{oe(await ee.decisionReview(A))}catch(le){m(Cr(le))}finally{X(!1)}}async function _(A){const[le]=await Promise.all([ee.decisionReview(A),P(),S(),d()]);oe(le)}async function ae(A){if(J){w(!0),m("");try{await A(),await _(J)}catch(le){m(Cr(le))}finally{w(!1)}}}async function ce(){w(!0);try{await ee.refreshDecisionReviews(),await Promise.all([P(),S(),d()]),K("")}catch(A){K(Cr(A))}finally{w(!1)}}return l.jsxs("section",{className:"content decision-health-view","aria-label":"Decision health cockpit",children:[l.jsxs("div",{className:"decision-health-metrics","aria-label":"Decision health metrics",children:[l.jsxs("article",{children:[l.jsx("strong",{children:o.healthy_accepted}),l.jsx("span",{children:"Healthy accepted"})]}),l.jsxs("article",{className:"attention",children:[l.jsx("strong",{children:o.review_required}),l.jsx("span",{children:"Review required"})]}),l.jsxs("article",{children:[l.jsx("strong",{children:o.overdue}),l.jsx("span",{children:"Overdue"})]}),l.jsxs("article",{children:[l.jsx("strong",{children:o.waived}),l.jsx("span",{children:"Waived"})]}),l.jsxs("article",{className:re.length?"attention":"",children:[l.jsx("strong",{children:(je==null?void 0:je.impacted_decision_count)??0}),l.jsx("span",{children:"Transitively impacted"})]}),l.jsxs("article",{children:[l.jsx("strong",{children:(je==null?void 0:je.max_depth)??0}),l.jsx("span",{children:"Maximum impact depth"})]})]}),l.jsxs("section",{className:"decision-impact-panel","aria-labelledby":"decision-impact-title",children:[l.jsxs("header",{children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"EXPLICIT DEPENDENCY GRAPH"}),l.jsx("h2",{id:"decision-impact-title",children:"Transitive impact paths"})]}),je?l.jsxs("time",{dateTime:je.evaluated_at,children:["Evaluated ",new Date(je.evaluated_at).toLocaleString()]}):null]}),ke?l.jsx("p",{className:"decision-impact-state",children:"Loading transitive impacts…"}):null,Le?l.jsx("p",{role:"alert","aria-label":"Transitive impact error",className:"decision-impact-state error",children:Le}):null,!ke&&!Le&&re.length===0?l.jsx("p",{className:"decision-impact-state",children:"No transitive impacts."}):null,!ke&&!Le&&re.length?l.jsx("ol",{className:"decision-impact-list",children:re.map(A=>l.jsxs("li",{children:[l.jsxs("div",{children:[l.jsxs("strong",{children:[A.root_decision_title," → ",A.impacted_decision_title]}),l.jsxs("span",{children:["Depth ",A.depth," · ",A.relation_kinds.join(" → ")]})]}),l.jsx("code",{children:A.decision_path.join(" → ")})]},A.fingerprint))}):null]}),l.jsxs("div",{className:"decision-health-toolbar",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"REVIEW INBOX"}),l.jsx("h2",{children:"Evidence drift requiring human judgment"}),l.jsx("p",{children:"Decision status remains unchanged until you resolve the evidence binding."})]}),l.jsxs("button",{type:"button",disabled:R,onClick:()=>void ce(),children:[l.jsx(Sf,{size:15})," Refresh ledger"]})]}),l.jsxs("div",{className:"decision-health-filters","aria-label":"Review filters",children:[l.jsxs("label",{children:["Review state",l.jsxs("select",{value:k,onChange:A=>O(A.target.value),children:[l.jsx("option",{value:"",children:"All"}),["open","acknowledged","resolved","waived","superseded"].map(A=>l.jsx("option",{children:A},A))]})]}),l.jsxs("label",{children:["Anchor state",l.jsxs("select",{value:Q,onChange:A=>D(A.target.value),children:[l.jsx("option",{value:"",children:"All"}),["moved","ambiguous","changed","deleted"].map(A=>l.jsx("option",{children:A},A))]})]}),l.jsxs("label",{children:["Severity",l.jsxs("select",{value:B,onChange:A=>$(A.target.value),children:[l.jsx("option",{value:"",children:"All"}),l.jsx("option",{value:"warning",children:"warning"}),l.jsx("option",{value:"error",children:"error"})]})]})]}),U?l.jsx("p",{role:"status",className:"decision-health-message",children:"Loading decision reviews…"}):null,V?l.jsx("p",{role:"alert",className:"decision-health-message error",children:V}):null,!U&&!V&&E.length===0?l.jsx("p",{role:"status",className:"decision-health-empty",children:"No reviews match these filters."}):null,!U&&!V&&E.length?l.jsx("div",{className:"decision-health-table-wrap",children:l.jsxs("table",{className:"decision-health-table",children:[l.jsx("thead",{children:l.jsxs("tr",{children:[l.jsx("th",{children:"Decision"}),l.jsx("th",{children:"Anchor"}),l.jsx("th",{children:"Severity"}),l.jsx("th",{children:"Opened"}),l.jsx("th",{"aria-label":"Action"})]})}),l.jsx("tbody",{children:E.map(A=>l.jsxs("tr",{children:[l.jsxs("td",{children:[l.jsxs("strong",{children:[Of(A.decision_status)," · review required"]}),l.jsx("small",{children:A.decision_id})]}),l.jsx("td",{children:l.jsx("span",{className:`anchor-badge ${A.anchor_state}`,children:A.anchor_state})}),l.jsx("td",{children:A.severity}),l.jsx("td",{children:l.jsx("time",{dateTime:A.opened_at,children:new Date(A.opened_at).toLocaleDateString()})}),l.jsx("td",{children:l.jsx("button",{type:"button",onClick:()=>void p(A.id),"aria-label":`Open review ${A.id}`,children:"Review"})})]},A.id))})]})}):null,J&&H?l.jsx("div",{className:"decision-health-drawer",role:"status",children:"Loading review detail…"}):null,J&&!H&&!Z&&ie?l.jsx("aside",{className:"decision-health-drawer",role:"alert",children:ie}):null,Z?l.jsx(Df,{detail:Z,pending:R,error:ie,onClose:()=>{z(null),oe(null)},onAcknowledge:()=>ae(()=>ee.updateDecisionReview(Z.review.id,{action:"acknowledge"})),onWaive:A=>ae(()=>ee.updateDecisionReview(Z.review.id,{action:"waive",reason:A})),onReanchor:A=>{const le=Z.current.candidate;return le?ae(()=>ee.reanchorDecisionReview(Z.review.id,{expected_current_source_version_id:Z.current.source_version_id,start_offset:le.start_offset,end_offset:le.end_offset,reason:A})):Promise.resolve()},onObsolete:()=>ae(()=>ee.resolveDecisionReview(Z.review.id,{action:"obsolete_decision",reason:"Decision no longer applies."})),onSupersede:(A,le)=>ae(()=>ee.resolveDecisionReview(Z.review.id,{action:"supersede_decision",replacement_decision_id:A,reason:le}))}):null]})}const $f=[{kind:"audio_overview",label:"Audio overview",description:"Listen to a grounded narration",tone:"blue",icon:af},{kind:"presentation",label:"Presentation",description:"Turn evidence into slides",tone:"sand",icon:kf},{kind:"video_overview",label:"Video overview",description:"Preview an evidence storyboard",tone:"green",icon:Mf},{kind:"mind_map",label:"Mind map",description:"Explore the source as branches",tone:"purple",icon:wf},{kind:"report",label:"Report",description:"Build a structured source brief",tone:"gold",icon:mf},{kind:"flashcards",label:"Flashcards",description:"Review grounded concepts",tone:"coral",icon:gf},{kind:"quiz",label:"Quiz",description:"Check source comprehension",tone:"cyan",icon:Rf},{kind:"infographic",label:"Infographic",description:"Scan key facts and metrics",tone:"magenta",icon:cf},{kind:"data_table",label:"Data table",description:"Inspect evidence row by row",tone:"indigo",icon:Lf}];function Uf({artifacts:o,sources:c,onChanged:d}){var K,J;const[E,j]=x.useState(((K=c[0])==null?void 0:K.id)??""),[k,O]=x.useState(((J=o[0])==null?void 0:J.id)??null),[Q,D]=x.useState(null),[B,$]=x.useState(""),U=o.find(z=>z.id===k)??null;x.useEffect(()=>{!E&&c[0]&&j(c[0].id)},[E,c]),x.useEffect(()=>{var z;k&&o.some(Z=>Z.id===k)||O(((z=o[0])==null?void 0:z.id)??null)},[o,k]);async function F(z){if(E){D(z),$("");try{const Z=await ee.createStudioArtifact(E,z);O(Z.id),$(`${Z.title} is ready with ${Z.citations.length} exact citations.`),await d()}catch(Z){$(Z instanceof Error?Z.message:"Could not create Studio artifact")}finally{D(null)}}}async function V(z){await ee.deleteStudioArtifact(z.id),O(null),$(`${z.title} deleted.`),await d()}return l.jsxs("section",{className:"content studio-view","aria-label":"Evidence-backed Studio",children:[l.jsxs("div",{className:"studio-intro",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"EVIDENCE STUDIO"}),l.jsx("h2",{children:"Turn sources into learning artifacts"}),l.jsx("p",{children:"Every generated section points to an immutable source version and exact source lines."})]}),l.jsxs("label",{className:"studio-source",htmlFor:"studio-source",children:["Source",l.jsx("select",{id:"studio-source",value:E,onChange:z=>j(z.target.value),children:c.map(z=>l.jsx("option",{value:z.id,children:z.title},z.id))})]})]}),l.jsx("div",{className:"studio-grid",children:$f.map(({kind:z,label:Z,description:oe,tone:H,icon:X})=>l.jsxs("button",{className:`studio-tool studio-tool-${H}`,type:"button",disabled:!E||Q!==null,onClick:()=>void F(z),"aria-label":`Create ${Z}`,children:[l.jsxs("span",{className:"studio-tool-copy",children:[l.jsx(X,{size:23,strokeWidth:1.9}),l.jsx("strong",{children:Q===z?"Creating…":Z}),l.jsx("small",{children:oe})]}),l.jsx("span",{className:"studio-tool-arrow","aria-hidden":"true",children:l.jsx(Ku,{size:22})})]},z))}),B&&l.jsx("p",{className:"studio-message",role:"status",children:B}),o.length>0&&l.jsxs("div",{className:"studio-library","aria-label":"Saved Studio artifacts",children:[l.jsx("span",{className:"eyebrow",children:"SAVED IN THIS WORKSPACE"}),l.jsx("div",{children:o.map(z=>l.jsxs("button",{type:"button",className:z.id===k?"active":"",onClick:()=>O(z.id),children:[l.jsx("strong",{children:z.title}),l.jsxs("small",{children:[z.citations.length," citations · ",z.generation_method]})]},z.id))})]}),U&&l.jsx(Vf,{artifact:U,onDelete:()=>void V(U),onMessage:$}),!U&&o.length===0&&l.jsx("div",{className:"empty-card studio-empty",children:"Choose a source and create your first Studio artifact."})]})}function Vf({artifact:o,onDelete:c,onMessage:d}){var oe;const[E,j]=x.useState(0),[k,O]=x.useState(null),[Q,D]=x.useState({}),[B,$]=x.useState({}),U=o.content.items,F=["slides","storyboard"].includes(o.content.format),V=F?U.slice(E,E+1):U;x.useEffect(()=>{j(0),O(null),D({}),$({})},[o.id]);const K=x.useMemo(()=>[o.title,o.content.summary,...U.map(H=>H.body)].join(". "),[o,U]);function J(H){O(o.citations.find(X=>X.ordinal===H.citation)??null)}function z(){"speechSynthesis"in window&&(window.speechSynthesis.cancel(),window.speechSynthesis.speak(new SpeechSynthesisUtterance(K)))}async function Z(){try{await ee.downloadStudioArtifact(o.id),d(`${o.title} evidence package downloaded.`)}catch(H){d(H instanceof Error?H.message:"Could not download artifact")}}return l.jsxs("article",{className:`studio-preview studio-format-${o.content.format}`,children:[l.jsxs("header",{children:[l.jsxs("div",{children:[l.jsxs("span",{className:"eyebrow",children:[o.kind.replaceAll("_"," ").toUpperCase()," · READY"]}),l.jsx("h2",{children:o.title}),l.jsx("p",{children:o.content.summary})]}),l.jsxs("div",{className:"studio-preview-actions",children:[o.kind==="audio_overview"&&l.jsxs("button",{type:"button",onClick:z,children:[l.jsx(jf,{size:15})," Play narration"]}),l.jsxs("button",{type:"button",onClick:()=>void Z(),children:[l.jsx(pf,{size:15})," Download"]}),l.jsx("button",{className:"studio-delete",type:"button",onClick:c,"aria-label":`Delete ${o.title}`,children:l.jsx(Tf,{size:16})})]})]}),o.content.format==="table"?l.jsxs("div",{className:"studio-data-table",role:"table","aria-label":o.title,children:[l.jsx("div",{className:"studio-data-row studio-data-head",role:"row",children:(oe=o.content.columns)==null?void 0:oe.map(H=>l.jsx("strong",{role:"columnheader",children:H},H))}),U.map(H=>{var X;return l.jsx("button",{className:"studio-data-row",role:"row",type:"button",onClick:()=>J(H),children:(X=H.cells)==null?void 0:X.map(ie=>l.jsx("span",{role:"cell",children:ie},ie))},H.citation)})]}):o.content.format==="branches"?l.jsxs("div",{className:"mind-map-view",children:[l.jsx("strong",{children:o.source_title}),l.jsx("ul",{children:U.map(H=>l.jsx("li",{children:l.jsx("button",{type:"button",onClick:()=>J(H),children:H.title})},H.citation))})]}):l.jsx("div",{className:"studio-preview-items",children:V.map((H,X)=>{const ie=F?E:X;return l.jsxs("section",{className:"studio-preview-item",children:[l.jsx("span",{className:"studio-item-number",children:String(ie+1).padStart(2,"0")}),l.jsx("h3",{children:H.title}),o.content.format==="quiz"&&H.options?l.jsxs("div",{className:"quiz-options",children:[H.options.map(m=>l.jsx("button",{type:"button",className:Q[ie]===m?"selected":"",onClick:()=>D(R=>({...R,[ie]:m})),children:m},m)),Q[ie]&&l.jsx("strong",{children:Q[ie]===H.answer?"Correct — supported by the cited span.":"Try again and inspect the evidence."})]}):o.content.format==="flashcards"?l.jsx("button",{className:"flashcard-answer",type:"button",onClick:()=>$(m=>({...m,[ie]:!m[ie]})),children:B[ie]?H.answer:"Reveal grounded answer"}):l.jsx("p",{children:H.body}),l.jsxs("button",{className:"citation-link",type:"button",onClick:()=>J(H),children:["Evidence ",H.citation+1]})]},`${H.citation}-${H.title}`)})}),F&&U.length>1&&l.jsxs("div",{className:"studio-pager",children:[l.jsx("button",{type:"button","aria-label":"Previous item",disabled:E===0,onClick:()=>j(H=>H-1),children:l.jsx(df,{size:18})}),l.jsxs("span",{children:[E+1," / ",U.length]}),l.jsx("button",{type:"button","aria-label":"Next item",disabled:E===U.length-1,onClick:()=>j(H=>H+1),children:l.jsx(Ku,{size:18})})]}),k&&l.jsxs("aside",{className:"studio-citation","aria-label":"Exact Studio evidence",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"eyebrow",children:["EXACT EVIDENCE · L",k.start_line,"–",k.end_line]}),l.jsx("strong",{children:k.source_title}),l.jsxs("small",{children:["Immutable version ",k.source_version_id.slice(0,8)]})]}),l.jsx("blockquote",{children:k.quote}),l.jsx("button",{type:"button",onClick:()=>O(null),children:"Close evidence"})]})]})}function Bf(){const[o,c]=x.useState("decision health"),[d,E]=x.useState({sources:0,chunks:0,decisions:0,memories:0,evidence:0}),[j,k]=x.useState({healthy_accepted:0,review_required:0,overdue:0,waived:0}),[O,Q]=x.useState([]),[D,B]=x.useState([]),[$,U]=x.useState([]),[F,V]=x.useState([]),[K,J]=x.useState([]),[z,Z]=x.useState([]),[oe,H]=x.useState([]),[X,ie]=x.useState(null),[m,R]=x.useState(!1),[w,re]=x.useState(""),[Ce,je]=x.useState([]),[Ee,ke]=x.useState(""),me=x.useCallback(async()=>{var P,S;try{const[p,_,ae,ce,A,le,ve,fe,ye]=await Promise.all([ee.overview(),((P=ee.decisionHealthOverview)==null?void 0:P.call(ee))??Promise.resolve({healthy_accepted:0,review_required:0,overdue:0,waived:0}),ee.sources(),ee.notes(),ee.studyCards(),((S=ee.studioArtifacts)==null?void 0:S.call(ee))??Promise.resolve([]),ee.actionProposals(),ee.memories(),ee.jobs()]);E(p),k(_),Q(ae),B(ce),U(A),V(le),J(ve),Z(fe),H(ye),re("")}catch(p){re(p instanceof Error?p.message:"Cannot reach Proofline API")}},[]),Le=x.useCallback(async()=>{k(await ee.decisionHealthOverview())},[]);x.useEffect(()=>{(async()=>{var P;try{const S=await ee.workspaces(),p=((P=S[0])==null?void 0:P.id)??"";je(S),ke(p),p&&ee.setWorkspace(p),await me()}catch(S){re(S instanceof Error?S.message:"Cannot reach Proofline API")}})()},[me]);async function Te(P){R(!0);try{await ee.importSource(P.name,await P.text(),`file://${P.name}`),await me(),c("memories")}catch(S){re(S instanceof Error?S.message:"Import failed")}finally{R(!1)}}const M=P=>["failed","dead_letter"].includes(P.state),T=Gu(oe).some(P=>!!P.source_id&&M(P))||oe.some(P=>!P.source_id&&M(P));return l.jsxs("div",{className:"app-shell",children:[l.jsxs("aside",{className:"sidebar",children:[l.jsxs("div",{className:"brand",children:[l.jsx("span",{className:"brand-mark",children:"P"}),l.jsx("span",{children:"Proofline"})]}),l.jsxs("div",{className:"workspace",children:[l.jsx("span",{children:"LOCAL WORKSPACE"}),l.jsx("label",{htmlFor:"workspace-select",className:"sr-only",children:"Active workspace"}),l.jsx("select",{id:"workspace-select","aria-label":"Active workspace",value:Ee,disabled:Ce.length<2,onChange:P=>{const S=P.target.value;ee.setWorkspace(S),ke(S),ie(null),me()},children:Ce.map(P=>l.jsx("option",{value:P.id,children:P.title},P.id))})]}),l.jsxs("nav",{"aria-label":"Primary navigation",children:[l.jsx(Nt,{icon:l.jsx(Cf,{size:18}),active:o==="decision health",onClick:()=>c("decision health"),count:j.review_required,children:"Decision Health"}),l.jsx(Nt,{icon:l.jsx(Pf,{size:18}),active:o==="notes",onClick:()=>c("notes"),count:D.length,children:"Notes"}),l.jsx(Nt,{icon:l.jsx(yf,{size:18}),active:o==="study",onClick:()=>c("study"),count:$.length,children:"Study"}),l.jsx(Nt,{icon:l.jsx(xf,{size:18}),active:o==="studio",onClick:()=>c("studio"),count:F.length,children:"Studio"}),l.jsx(Nt,{icon:l.jsx(Ef,{size:18}),active:o==="proposals",onClick:()=>c("proposals"),count:K.filter(P=>P.status==="candidate").length,children:"Proposals"}),l.jsx(Nt,{icon:l.jsx(_f,{size:18}),active:o==="search",onClick:()=>c("search"),children:"Search"}),l.jsx(Nt,{icon:l.jsx(vf,{size:18}),active:o==="memories",onClick:()=>c("memories"),count:d.memories,children:"Memories"}),l.jsx(Nt,{icon:l.jsx(uf,{size:18}),active:o==="sources",onClick:()=>c("sources"),count:d.sources,children:"Sources"}),l.jsx(Nt,{icon:l.jsx(of,{size:18}),active:o==="model runs",onClick:()=>c("model runs"),children:"Model runs"}),l.jsx(Nt,{icon:l.jsx(Nf,{size:18}),active:o==="settings",onClick:()=>c("settings"),children:"Settings"})]}),l.jsxs("div",{className:"system-status",children:[l.jsx("span",{className:w||T?"dot error-dot":"dot"}),l.jsxs("div",{children:[l.jsx("strong",{children:w?"API unavailable":T?"Index degraded":"Index ready"}),l.jsxs("span",{children:[d.chunks," searchable chunks"]})]})]})]}),l.jsxs("main",{children:[w&&l.jsx("div",{className:"error-banner",children:w}),l.jsxs("header",{className:"topbar",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"EVIDENCE-FIRST MEMORY"}),l.jsx("h1",{children:o==="decision health"?"Decision Health":o[0].toUpperCase()+o.slice(1)})]}),l.jsxs("label",{className:"import-button",children:[l.jsx(If,{size:16}),m?"Indexing…":"Import Markdown",l.jsx("input",{type:"file",accept:".md,.txt,text/markdown,text/plain",disabled:m,onChange:P=>{var p;const S=(p=P.target.files)==null?void 0:p[0];S&&Te(S)}})]})]}),o==="decision health"&&l.jsx(Ff,{overview:j,workspaceId:Ee,onOverviewChanged:Le}),o==="search"&&l.jsx(Xf,{sources:O,onEvidence:(P,S)=>ie({item:P,sourceTitle:S})}),o==="notes"&&l.jsx(Qf,{notes:D,onChanged:me}),o==="study"&&l.jsx(Wf,{cards:$,sources:O,onChanged:me}),o==="studio"&&l.jsx(Uf,{artifacts:F,sources:O,onChanged:me}),o==="proposals"&&l.jsx(Hf,{proposals:K,onChanged:me}),o==="memories"&&l.jsx(tp,{memories:z,onChanged:me,onEvidence:(P,S)=>ie({item:P,sourceTitle:S})}),o==="sources"&&l.jsx(rp,{sources:O,jobs:oe,onChanged:me,onSourceDeleted:P=>ie(S=>(S==null?void 0:S.item.source_id)===P?null:S)}),o==="model runs"&&l.jsx(qf,{}),o==="settings"&&l.jsx(Kf,{})]}),X&&l.jsx(ip,{...X,onClose:()=>ie(null)})]})}function Nt({icon:o,active:c,onClick:d,count:E,children:j}){return l.jsxs("button",{className:c?"nav-item active":"nav-item",onClick:d,children:[o,l.jsx("span",{children:j}),E!==void 0&&l.jsx("b",{children:E})]})}function Hf({proposals:o,onChanged:c}){const[d,E]=x.useState(""),[j,k]=x.useState(!1),[O,Q]=x.useState("");async function D($){$.preventDefault(),k(!0);try{await ee.createActionProposal(d),E(""),Q("Grounded proposal created for human review."),await c()}catch(U){Q(Oe(U,"Could not create grounded proposal"))}finally{k(!1)}}async function B($,U){await ee.reviewActionProposal($,U),Q(`Proposal ${U}; no source content was changed.`),await c()}return l.jsxs("section",{className:"content proposals-view","aria-label":"Grounded action proposals",children:[l.jsxs("form",{className:"proposal-form",onSubmit:$=>void D($),children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"THIRD BRAIN · HUMAN-GOVERNED"}),l.jsx("h2",{children:"Ask for an evidence-backed next action"}),l.jsx("p",{children:"Only grounded model output becomes a candidate. Acceptance never writes to sources."})]}),l.jsxs("label",{children:["Goal or decision to plan",l.jsx("textarea",{required:!0,minLength:2,maxLength:2e3,value:d,onChange:$=>E($.target.value),placeholder:"What should we change next, and why?"})]}),l.jsx("button",{type:"submit",disabled:j,children:j?"Grounding…":"Create proposal"})]}),O&&l.jsx("p",{className:"proposal-message",children:O}),l.jsx("div",{className:"proposal-list",children:o.length===0?l.jsx("div",{className:"empty-card",children:"No proposals yet. Configure a generation provider and ask a grounded question."}):o.map($=>l.jsxs("article",{className:"proposal-card",children:[l.jsxs("header",{children:[l.jsxs("span",{className:"eyebrow",children:[$.status," · MODEL RUN ",$.model_run_id.slice(0,8)]}),l.jsx("h3",{children:$.goal})]}),l.jsx("p",{className:"proposal-body",children:$.body}),l.jsx("div",{className:"proposal-citations",children:$.citations.map(U=>l.jsxs("div",{children:[l.jsxs("strong",{children:[U.source_title," · L",U.start_line,"–",U.end_line]}),l.jsx("span",{children:U.quote}),l.jsxs("small",{children:["Immutable version ",U.source_version_id.slice(0,8)]})]},U.id))}),$.status==="candidate"&&l.jsxs("footer",{children:[l.jsx("button",{type:"button",onClick:()=>void B($.id,"rejected"),children:"Reject"}),l.jsx("button",{type:"button",onClick:()=>void B($.id,"accepted"),children:"Accept proposal"})]})]},$.id))})]})}function Wf({cards:o,sources:c,onChanged:d}){var F;const[E,j]=x.useState(((F=c[0])==null?void 0:F.id)??""),[k,O]=x.useState(!1),[Q,D]=x.useState(""),B=o[0]??null;async function $(){try{const V=await ee.createStudyCards(E);D(`${V.length} evidence-backed card${V.length===1?"":"s"} ready.`),await d()}catch(V){D(Oe(V,"Could not derive study cards"))}}async function U(V){B&&(await ee.reviewStudyCard(B.id,V),O(!1),D(`Review recorded: ${V}.`),await d())}return l.jsxs("section",{className:"content study-view","aria-label":"Evidence-backed study",children:[l.jsxs("div",{className:"study-toolbar",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"LEARNING BRAIN"}),l.jsx("h2",{children:"Deterministic study cards"}),l.jsxs("p",{children:["Derive cards only from adjacent ",l.jsx("code",{children:"Q:"})," and ",l.jsx("code",{children:"A:"})," lines."]})]}),l.jsxs("div",{className:"study-source",children:[l.jsx("label",{htmlFor:"study-source",children:"Source"}),l.jsx("select",{id:"study-source",value:E,onChange:V=>j(V.target.value),children:c.map(V=>l.jsx("option",{value:V.id,children:V.title},V.id))}),l.jsx("button",{type:"button",disabled:!E,onClick:()=>void $(),children:"Derive cards"})]})]}),Q&&l.jsx("p",{className:"study-message",children:Q}),B?l.jsxs("article",{className:"study-card",children:[l.jsxs("span",{className:"eyebrow",children:["DUE NOW · ",B.source_title]}),l.jsx("h3",{children:B.question}),k?l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"study-answer",children:B.answer}),l.jsxs("p",{className:"study-proof",children:["Exact evidence · L",B.start_line,"–",B.end_line," · immutable version ",B.source_version_id.slice(0,8)]}),l.jsx("div",{className:"study-ratings",children:["again","hard","good","easy"].map(V=>l.jsx("button",{type:"button",onClick:()=>void U(V),children:V},V))})]}):l.jsx("button",{className:"reveal-answer",type:"button",onClick:()=>O(!0),children:"Reveal answer"})]}):l.jsx("div",{className:"empty-card",children:"No active study cards. Add Q:/A: pairs to a source, then derive cards."})]})}function Qf({notes:o,onChanged:c}){const[d,E]=x.useState(null),j=o.find(w=>w.id===d)??null,[k,O]=x.useState(""),[Q,D]=x.useState(""),[B,$]=x.useState(!1),[U,F]=x.useState(""),[V,K]=x.useState([]),[J,z]=x.useState([]),[Z,oe]=x.useState(null),[H,X]=x.useState(""),ie=o.filter(w=>{const re=H.trim().toLocaleLowerCase();return!re||w.title.toLocaleLowerCase().includes(re)||w.tags.some(Ce=>Ce.name.toLocaleLowerCase().includes(re.replace(/^#/,"")))});x.useEffect(()=>{O((j==null?void 0:j.title)??""),D((j==null?void 0:j.content)??""),F(""),K([]),z([]),oe(null),j&&Promise.all([ee.noteBacklinks(j.id),ee.noteVersions(j.id)]).then(([w,re])=>{K(w),z(re)}).catch(w=>F(Oe(w,"Could not load note provenance")))},[j]);async function m(w){try{const re=await ee.sourceVersion(w.source_id,w.id);oe({version:w,content:re.content})}catch(re){F(Oe(re,"Could not load immutable revision"))}}async function R(w){w.preventDefault(),$(!0);try{const re=j?await ee.updateNote(j.id,k,Q):await ee.createNote(k,Q);await c(),E(re.id),F(j?re.version_count===j.version_count?"Metadata saved; immutable content unchanged.":`Saved immutable revision ${re.version_count}.`:"Note captured and indexed.")}catch(re){F(Oe(re,"Could not save note"))}finally{$(!1)}}return l.jsxs("section",{className:"content notes-view","aria-label":"Evidence-first notes",children:[l.jsxs("div",{className:"notes-list",children:[l.jsxs("div",{className:"notes-list-heading",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"PERSONAL SECOND BRAIN"}),l.jsx("h2",{children:"Markdown notes"})]}),l.jsx("button",{type:"button",onClick:()=>E(null),children:"New note"})]}),l.jsxs("label",{className:"note-filter",children:[l.jsx("span",{className:"sr-only",children:"Filter notes by title or tag"}),l.jsx("input",{"aria-label":"Filter notes by title or tag",value:H,onChange:w=>X(w.target.value),placeholder:"Filter title or #tag"})]}),o.length===0?l.jsx("p",{className:"empty-copy",children:"Capture a note to make it searchable."}):ie.map(w=>l.jsxs("button",{type:"button",className:w.id===d?"note-row active":"note-row",onClick:()=>E(w.id),children:[l.jsx("strong",{children:w.title}),l.jsxs("span",{children:[w.version_count," revision",w.version_count===1?"":"s"," · ",w.tags.length," tags"]})]},w.id))]}),l.jsxs("form",{className:"note-form",onSubmit:w=>void R(w),children:[l.jsx("span",{className:"eyebrow",children:j?"IMMUTABLE REVISION":"QUICK CAPTURE"}),l.jsxs("label",{children:["Title",l.jsx("input",{required:!0,maxLength:300,value:k,onChange:w=>O(w.target.value)})]}),l.jsxs("label",{children:["Markdown note",l.jsx("textarea",{required:!0,value:Q,onChange:w=>D(w.target.value),placeholder:"Write plain Markdown. Use #tags and [[Wiki links]]."})]}),j&&l.jsxs("div",{className:"note-provenance",children:[l.jsxs("div",{children:[l.jsx("strong",{children:"Tags"}),l.jsx("span",{children:j.tags.length?j.tags.map(w=>`#${w.name}`).join(" · "):"None"})]}),l.jsxs("div",{children:[l.jsx("strong",{children:"Wiki links"}),l.jsx("span",{children:j.links.length?j.links.map(w=>`${w.target_title}${w.resolved_source_id?"":" (unresolved)"}`).join(" · "):"None"})]}),l.jsxs("div",{children:[l.jsx("strong",{children:"Backlinks"}),l.jsx("span",{children:V.length?V.map(w=>`${w.source_title} · L${w.start_line}–${w.end_line} · ${w.source_version_id.slice(0,8)}`).join(" · "):"None"})]}),l.jsxs("div",{className:"note-versions",children:[l.jsx("strong",{children:"Revisions"}),l.jsx("span",{children:J.map(w=>l.jsxs("button",{type:"button",onClick:()=>void m(w),children:["v",w.version_number," · ",w.content_length," chars"]},w.id))})]})]}),Z&&l.jsxs("div",{className:"note-version-preview","aria-label":"Immutable revision preview",children:[l.jsxs("header",{children:[l.jsxs("strong",{children:["Revision ",Z.version.version_number]}),l.jsx("span",{children:Z.version.content_hash.slice(0,12)}),l.jsx("button",{type:"button",onClick:()=>oe(null),children:"Close preview"})]}),l.jsx("pre",{children:Z.content})]}),l.jsxs("div",{className:"note-form-footer",children:[l.jsx("span",{children:U||"Every content change preserves the previous version."}),l.jsx("button",{type:"submit",disabled:B,children:B?"Saving…":j?"Save revision":"Capture note"})]})]})]})}function Kf(){const[o,c]=x.useState(null),[d,E]=x.useState(null),[j,k]=x.useState(null),[O,Q]=x.useState(null),[D,B]=x.useState(""),[$,U]=x.useState(""),[F,V]=x.useState(!1),[K,J]=x.useState(!1),[z,Z]=x.useState(""),[oe,H]=x.useState(!1),X=x.useCallback(async()=>{const[m,R,w,re]=await Promise.all([ee.providerConfiguration(),ee.generationProviderStatus(),ee.embeddingProviderStatus(),ee.rerankingProviderStatus()]);c(m),E(R),k(w),Q(re)},[]);x.useEffect(()=>{X().catch(m=>Z(Oe(m,"Provider settings unavailable")))},[X]);async function ie(m){if(m.preventDefault(),!!o){H(!0),Z("");try{await ee.saveProviderConfiguration({ai_provider:o.ai_provider,ai_base_url:o.ai_base_url||null,ai_model:o.ai_model||null,ai_api_key:F?"":D||void 0,embedding_provider:o.embedding_provider,embedding_base_url:o.embedding_base_url||null,embedding_model:o.embedding_model||null,embedding_api_key:K?"":$||void 0,allow_remote_ai:o.allow_remote_ai}),B(""),U(""),V(!1),J(!1),await X(),Z("Provider configuration saved and capability health refreshed.")}catch(R){Z(Oe(R,"Provider configuration failed"))}finally{H(!1)}}}return o?l.jsxs("section",{className:"content",children:[l.jsxs("div",{className:"section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"LOCAL PROVIDER CONTROL"}),l.jsx("h2",{children:"Model providers"})]}),l.jsx("span",{className:"mode-badge",children:"No automatic fallback"})]}),l.jsxs("div",{className:"settings-note",role:"status",children:["API keys: ",o.secret_storage==="os_keyring"?"protected by this device's OS keyring":"stored in an owner-only local file"]}),l.jsxs("form",{className:"model-run-filters",onSubmit:m=>void ie(m),children:[l.jsxs("label",{children:["Generation provider",l.jsxs("select",{value:o.ai_provider,onChange:m=>c({...o,ai_provider:m.target.value}),children:[l.jsx("option",{value:"disabled",children:"Disabled"}),l.jsx("option",{value:"qwen",children:"Qwen"}),l.jsx("option",{value:"deepseek",children:"DeepSeek"}),l.jsx("option",{value:"ollama",children:"Ollama"}),l.jsx("option",{value:"vllm",children:"vLLM"}),l.jsx("option",{value:"openai_compatible",children:"OpenAI-compatible"})]})]}),l.jsxs("label",{children:["Generation base URL",l.jsx("input",{value:o.ai_base_url??"",onChange:m=>c({...o,ai_base_url:m.target.value})})]}),l.jsxs("label",{children:["Generation model",l.jsx("input",{value:o.ai_model??"",onChange:m=>c({...o,ai_model:m.target.value})})]}),l.jsxs("label",{children:["Generation API key",l.jsx("input",{type:"password",value:D,disabled:F,placeholder:o.ai_api_key_configured?"Configured; leave blank to keep":"Optional",onChange:m=>{B(m.target.value),V(!1)}})]}),o.ai_api_key_configured&&l.jsxs("label",{className:"secret-removal",children:[l.jsx("input",{type:"checkbox",checked:F,onChange:m=>{V(m.target.checked),m.target.checked&&B("")}}),"Remove saved generation key"]}),l.jsxs("label",{children:["Embedding provider",l.jsxs("select",{value:o.embedding_provider,onChange:m=>c({...o,embedding_provider:m.target.value}),children:[l.jsx("option",{value:"disabled",children:"Disabled"}),l.jsx("option",{value:"ollama",children:"Ollama"}),l.jsx("option",{value:"vllm",children:"vLLM"}),l.jsx("option",{value:"openai_compatible",children:"OpenAI-compatible"})]})]}),l.jsxs("label",{children:["Embedding base URL",l.jsx("input",{value:o.embedding_base_url??"",onChange:m=>c({...o,embedding_base_url:m.target.value})})]}),l.jsxs("label",{children:["Embedding model",l.jsx("input",{value:o.embedding_model??"",onChange:m=>c({...o,embedding_model:m.target.value})})]}),l.jsxs("label",{children:["Embedding API key",l.jsx("input",{type:"password",value:$,disabled:K,placeholder:o.embedding_api_key_configured?"Configured; leave blank to keep":"Optional",onChange:m=>{U(m.target.value),J(!1)}})]}),o.embedding_api_key_configured&&l.jsxs("label",{className:"secret-removal",children:[l.jsx("input",{type:"checkbox",checked:K,onChange:m=>{J(m.target.checked),m.target.checked&&U("")}}),"Remove saved embedding key"]}),l.jsxs("label",{children:[l.jsx("input",{type:"checkbox",checked:o.allow_remote_ai,onChange:m=>c({...o,allow_remote_ai:m.target.checked})})," ","Allow explicit remote model egress"]}),l.jsx("button",{disabled:oe,children:oe?"Saving…":"Save and check health"})]}),l.jsxs("div",{className:"metrics",children:[l.jsx($n,{value:(d==null?void 0:d.mode)??"unchecked",label:"Generation"}),l.jsx($n,{value:(j==null?void 0:j.mode)??"unchecked",label:"Embedding"}),l.jsx($n,{value:(O==null?void 0:O.mode)??"unchecked",label:"Reranking"})]}),((d==null?void 0:d.mode)==="degraded"||(j==null?void 0:j.mode)==="degraded")&&l.jsx("div",{className:"degraded-banner",role:"status",children:"Provider degraded. Deterministic ingestion and lexical retrieval remain available."}),z&&l.jsx("div",{role:"status",children:z})]}):l.jsxs("section",{className:"content",children:[l.jsx("div",{role:"status",children:"Loading provider settings…"}),z&&l.jsx("div",{className:"integrity-error",children:z})]})}function qf(){const[o,c]=x.useState([]),[d,E]=x.useState(""),[j,k]=x.useState(""),[O,Q]=x.useState(""),[D,B]=x.useState(""),[$,U]=x.useState(!0),[F,V]=x.useState(""),[K,J]=x.useState(null),[z,Z]=x.useState(!1),[oe,H]=x.useState(""),X=x.useCallback(async(w={})=>{U(!0),V("");try{c(await ee.modelRuns({...w,limit:100}))}catch(re){V(Oe(re,"Model-run diagnostics are unavailable"))}finally{U(!1)}},[]);x.useEffect(()=>{X()},[X]);async function ie(w){Z(!0),H("");try{const re=await ee.modelRun(w),[Ce,je]=await Promise.all([re.parent_run_id?ee.modelRun(re.parent_run_id):Promise.resolve(null),ee.modelRuns({parentRunId:re.id,limit:100})]);J({current:re,parent:Ce,children:je})}catch(re){H(Oe(re,"Model-run detail is unavailable"))}finally{Z(!1)}}function m(w){w.preventDefault(),J(null),X({status:d.trim()||void 0,operation:j.trim()||void 0,providerId:O.trim()||void 0,parentRunId:D.trim()||void 0})}function R(){E(""),k(""),Q(""),B(""),J(null),X()}return l.jsxs("section",{className:"content model-runs-view","aria-labelledby":"model-runs-heading",children:[l.jsxs("div",{className:"section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"SAFE MODEL DIAGNOSTICS"}),l.jsx("h2",{id:"model-runs-heading",children:"Model runs"})]}),l.jsx("span",{className:"mode-badge",children:"Metadata only"})]}),l.jsx("p",{className:"diagnostic-intro",children:"Inspect provider, operation, validation, timing, and repair lineage. Source text, prompts, model output, and credentials are never displayed."}),l.jsxs("form",{className:"model-run-filters",onSubmit:m,children:[l.jsxs("label",{children:["Status",l.jsxs("select",{value:d,onChange:w=>E(w.target.value),children:[l.jsx("option",{value:"",children:"Any status"}),l.jsx("option",{value:"running",children:"Running"}),l.jsx("option",{value:"succeeded",children:"Succeeded"}),l.jsx("option",{value:"failed",children:"Failed"})]})]}),l.jsxs("label",{children:["Operation",l.jsx("input",{value:j,onChange:w=>k(w.target.value),placeholder:"generate or embed"})]}),l.jsxs("label",{children:["Provider",l.jsx("input",{value:O,onChange:w=>Q(w.target.value),placeholder:"provider ID"})]}),l.jsxs("label",{children:["Parent run",l.jsx("input",{value:D,onChange:w=>B(w.target.value),placeholder:"parent run ID"})]}),l.jsxs("div",{children:[l.jsx("button",{type:"submit",disabled:$,children:"Apply filters"}),l.jsx("button",{type:"button",onClick:R,disabled:$,children:"Clear"})]})]}),$&&l.jsx("div",{className:"diagnostic-state",role:"status",children:"Loading safe model-run metadata…"}),F&&l.jsx("div",{className:"integrity-error",role:"alert",children:F}),!$&&!F&&o.length===0&&l.jsx("div",{className:"empty-card",role:"status",children:"No model runs match these filters."}),!$&&!F&&o.length>0&&l.jsxs("div",{className:"model-run-layout",children:[l.jsx("div",{className:"model-run-list","aria-label":"Model runs",children:o.map(w=>l.jsxs("button",{className:(K==null?void 0:K.current.id)===w.id?"model-run-row selected":"model-run-row",onClick:()=>void ie(w.id),"aria-label":`Open model run ${w.id}`,"aria-pressed":(K==null?void 0:K.current.id)===w.id,children:[l.jsxs("span",{children:[l.jsx("strong",{children:w.operation}),l.jsx("code",{children:w.id})]}),l.jsxs("span",{children:[w.provider_id,l.jsx("small",{children:w.model_id})]}),l.jsx("span",{className:`run-status ${w.status}`,children:w.status}),l.jsx("time",{dateTime:w.created_at,children:As(w.created_at)})]},w.id))}),l.jsxs("aside",{className:"model-run-detail","aria-live":"polite",children:[z&&l.jsx("div",{className:"diagnostic-state",role:"status",children:"Loading model-run detail and lineage…"}),oe&&l.jsx("div",{className:"integrity-error",role:"alert",children:oe}),!z&&!oe&&!K&&l.jsx("div",{className:"diagnostic-state",children:"Select a run to inspect safe details and repair lineage."}),!z&&!oe&&K&&l.jsx(Gf,{lineage:K,onOpen:ie})]})]})]})}function Gf({lineage:o,onOpen:c}){const d=o.current;return l.jsxs("article",{children:[l.jsxs("div",{className:"decision-top",children:[l.jsx("span",{className:`run-status ${d.status}`,children:d.status}),l.jsxs("span",{children:["Attempt ",d.attempt_number]})]}),l.jsxs("h3",{children:[d.operation," · ",d.provider_id]}),l.jsx("code",{className:"run-id",children:d.id}),l.jsxs("dl",{className:"run-metadata",children:[l.jsxs("div",{children:[l.jsx("dt",{children:"Model"}),l.jsx("dd",{children:d.model_id})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Template"}),l.jsx("dd",{children:d.template_version})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Validation"}),l.jsx("dd",{children:d.validation_status??"not recorded"})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Latency"}),l.jsx("dd",{children:d.latency_ms===null?"not recorded":`${d.latency_ms} ms`})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Prompt tokens"}),l.jsx("dd",{children:d.prompt_tokens??"not recorded"})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Completion tokens"}),l.jsx("dd",{children:d.completion_tokens??"not recorded"})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Created"}),l.jsx("dd",{children:As(d.created_at)})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Finished"}),l.jsx("dd",{children:d.finished_at?As(d.finished_at):"not finished"})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Error code"}),l.jsx("dd",{children:d.error_code??"none"})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Repair reason"}),l.jsx("dd",{children:d.repair_reason??"none"})]})]}),l.jsxs("section",{className:"run-lineage","aria-labelledby":"run-lineage-heading",children:[l.jsx("h4",{id:"run-lineage-heading",children:"Repair lineage"}),o.parent?l.jsxs("button",{onClick:()=>void c(o.parent.id),children:[l.jsx("span",{children:"Parent"}),l.jsx("code",{children:o.parent.id}),l.jsxs("small",{children:[o.parent.status," · attempt ",o.parent.attempt_number]})]}):l.jsx("p",{children:"No parent repair run."}),l.jsxs("div",{className:"lineage-current",children:[l.jsx("span",{children:"Current"}),l.jsx("code",{children:d.id}),l.jsxs("small",{children:[d.status," · attempt ",d.attempt_number]})]}),o.children.length>0?o.children.map(E=>l.jsxs("button",{onClick:()=>void c(E.id),children:[l.jsx("span",{children:"Child repair"}),l.jsx("code",{children:E.id}),l.jsxs("small",{children:[E.status," · attempt ",E.attempt_number]})]},E.id)):l.jsx("p",{children:"No child repair runs."})]})]})}function As(o){const c=new Date(o);return Number.isNaN(c.getTime())?"not recorded":c.toLocaleString()}function Xf({onEvidence:o,sources:c=[]}){const[d,E]=x.useState(""),[j,k]=x.useState([]),[O,Q]=x.useState(""),[D,B]=x.useState(""),[$,U]=x.useState(!1),[F,V]=x.useState([]),[K,J]=x.useState(null),[z,Z]=x.useState(!1),[oe,H]=x.useState(!1),[X,ie]=x.useState(""),[m,R]=x.useState("");async function w(M){if(M.preventDefault(),d.trim().length<2)return;const T=Yf(j,O,D);if($&&(T.rerank=!0),T.ingestedFrom&&T.ingestedBefore&&T.ingestedFrom>=T.ingestedBefore){ie("Indexed from must be earlier than indexed before.");return}H(!0),ie(""),R(""),J(null),V([]),Z(!1);try{const P=ee.search(d,T).then(p=>{V(p),Z(!0)},p=>{ie(Oe(p,"Search failed")),Z(!0)}),S=ee.answer(d,T).then(p=>{J(p),p.status==="provider_unavailable"&&R("Answer generation is unavailable. Showing raw retrieval results.")},p=>{R(`${Oe(p,"Answer generation failed")}. Showing raw retrieval results.`)});await Promise.allSettled([P,S])}finally{H(!1)}}function re(M){o({id:M.evidence_id,source_id:M.source_id,source_version_id:M.source_version_id,quote:M.content,start_offset:M.start_offset,end_offset:M.end_offset,start_line:M.start_line,end_line:M.end_line},M.source_title)}const Ce=new Map(K==null?void 0:K.citations.map(M=>[M.evidence_id,M])),je=K?[...new Set(K.statements.flatMap(M=>M.evidence_ids))].filter(M=>!Ce.has(M)):[],Ee=je.length>0,ke=(K==null?void 0:K.exclusions)??[],me=j.flatMap(M=>{const T=c.find(P=>P.id===M);return T?[T]:[]}),Le=me.length>0||!!O||!!D||$;function Te(M){k(T=>T.includes(M)?T.filter(P=>P!==M):[...T,M])}return l.jsxs("section",{className:"content search-view",children:[l.jsxs("form",{className:"search-box",onSubmit:w,children:[l.jsx(hf,{}),l.jsx("input",{value:d,onChange:M=>E(M.target.value),placeholder:"Search why a system was built this way…","aria-label":"Search engineering memory"}),l.jsx("button",{disabled:oe,children:oe?"Searching":"Search"})]}),l.jsxs("details",{className:"search-scope",children:[l.jsxs("summary",{children:["Search scope",Le?` · ${Jf(me.length,O,D)} active`:" · all indexed sources"]}),l.jsxs("div",{className:"scope-controls",children:[l.jsxs("fieldset",{children:[l.jsx("legend",{children:"Indexed sources"}),c.length===0?l.jsx("p",{children:"No indexed sources are available."}):l.jsx("div",{className:"source-scope-options",children:c.map(M=>l.jsxs("label",{children:[l.jsx("input",{type:"checkbox",checked:j.includes(M.id),onChange:()=>Te(M.id)}),l.jsx("span",{children:M.title})]},M.id))})]}),l.jsxs("fieldset",{className:"time-scope",children:[l.jsx("legend",{children:"Ingestion / indexed time"}),l.jsxs("label",{children:["Indexed from",l.jsx("input",{type:"datetime-local",value:O,onChange:M=>Q(M.target.value)})]}),l.jsxs("label",{children:["Indexed before",l.jsx("input",{type:"datetime-local",value:D,onChange:M=>B(M.target.value)})]}),l.jsx("small",{children:"This filters when a source version was indexed, not when its events or decisions occurred."})]}),l.jsxs("label",{children:[l.jsx("input",{type:"checkbox",checked:$,onChange:M=>U(M.target.checked)}),"Optional local reranking"]}),l.jsx("button",{type:"button",disabled:!Le,onClick:()=>{k([]),Q(""),B(""),U(!1)},children:"Clear scope"})]})]}),l.jsxs("div",{className:`scope-summary${Le?" active":""}`,"aria-label":"Active search scope",children:[l.jsx("strong",{children:Le?"Scoped search":"Workspace search"}),l.jsx("span",{children:me.length>0?me.map(M=>M.title).join(", "):"All indexed sources"}),l.jsx("span",{children:Zf(O,D)})]}),!z&&l.jsxs("div",{className:"hero-empty",children:[l.jsx("div",{className:"line-art",children:"↳"}),l.jsx("h2",{children:"Follow every claim back to its source."}),l.jsx("p",{children:"Search technical decisions, rationale, and implementation context. Proofline returns inspectable evidence—not an uncited answer."})]}),m&&l.jsx("div",{className:"degraded-banner",role:"status",children:m}),X&&l.jsx("div",{className:"error-banner inline-error",role:"alert",children:X}),ke.length>0&&l.jsxs("div",{className:"context-budget-notice",role:"status","aria-label":"Context budget notice",children:[l.jsxs("strong",{children:[ke.length," retrieved"," ",ke.length===1?"span was":"spans were"," ","excluded by the context budget."]}),l.jsxs("span",{children:["Evidence IDs:"," ",ke.map(M=>l.jsx("code",{title:M.evidence_id,children:M.evidence_id.slice(0,8)},M.evidence_id))]})]}),K&&l.jsxs("article",{className:"result-card answer-card",children:[l.jsxs("div",{className:"decision-top",children:[l.jsx("span",{className:`mode-badge${Ee?" integrity-failed":""}`,children:Ee?"integrity failure":K.status.replaceAll("_"," ")}),K.model_run_id&&l.jsxs("span",{children:["Run ",K.model_run_id.slice(0,8)]})]}),l.jsx("h2",{children:Ee?"Answer citation integrity failed":"Evidence-backed answer"}),Ee&&l.jsxs("div",{className:"integrity-error",role:"alert",children:["Citation integrity failed: ",je.length," ","referenced evidence"," ",je.length===1?"ID is":"IDs are"," ","unavailable."]}),!Ee&&l.jsxs(l.Fragment,{children:[l.jsx("p",{children:K.answer}),l.jsx("div",{className:"answer-statements",children:K.statements.map((M,T)=>{const P=[...new Set(M.evidence_ids)].flatMap(S=>{const p=Ce.get(S);return p?[p]:[]});return l.jsxs("article",{className:"answer-statement","aria-label":`Answer statement: ${M.kind}`,children:[l.jsxs("div",{children:[l.jsx("span",{className:`statement-kind ${M.kind}`,children:M.kind}),l.jsx("span",{className:"text-muted",children:M.support_status??"supported"}),l.jsx("p",{children:M.text})]}),P.length>0&&l.jsx("footer",{children:P.map(S=>l.jsxs("button",{onClick:()=>re(S),children:[S.source_title," · L",S.start_line,"–",S.end_line]},S.evidence_id))})]},`${M.kind}-${T}`)})})]})]}),z&&l.jsxs("div",{className:"results",children:[l.jsxs("div",{className:"section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"RAW RETRIEVAL"}),l.jsxs("h2",{children:[F.length," evidence matches"]})]}),l.jsx("span",{className:"mode-badge",children:F.some(M=>M.retrieval_channels.includes("semantic"))?"Hybrid · RRF":"Lexical · FTS5"})]}),F.length===0?l.jsx("div",{className:"empty-card",children:"Insufficient evidence. Try another phrase or import a source."}):F.map(M=>l.jsx(bf,{hit:M,onEvidence:o},M.chunk_id))]})]})}function Yf(o,c,d){return{sourceIds:o,ingestedFrom:Hu(c),ingestedBefore:Hu(d)}}function Hu(o){if(!o)return null;const c=new Date(o);return Number.isNaN(c.getTime())?null:c.toISOString()}function Jf(o,c,d){return o+ +!!c+ +!!d}function Zf(o,c){return o&&c?`Indexed from ${o} until before ${c}`:o?`Indexed from ${o}`:c?`Indexed before ${c}`:"Any ingestion time"}function bf({hit:o,onEvidence:c}){return l.jsxs("article",{className:"result-card",children:[l.jsxs("div",{className:"result-meta",children:[l.jsx("span",{children:o.source_title}),l.jsxs("button",{onClick:()=>c({id:o.chunk_id,source_id:o.source_id,source_version_id:o.source_version_id,quote:o.content,start_offset:o.start_offset,end_offset:o.end_offset,start_line:o.start_line,end_line:o.end_line},o.source_title),children:["Lines ",o.start_line,"–",o.end_line]})]}),l.jsx("p",{children:o.content}),l.jsxs("details",{className:"retrieval-debug",children:[l.jsx("summary",{children:"Why this result?"}),l.jsxs("dl",{children:[l.jsxs("div",{children:[l.jsx("dt",{children:"Channels"}),l.jsx("dd",{children:o.retrieval_channels.join(" + ")})]}),o.lexical_rank!==null&&l.jsxs("div",{children:[l.jsx("dt",{children:"Lexical rank"}),l.jsxs("dd",{children:["#",o.lexical_rank]})]}),o.semantic_rank!==null&&l.jsxs("div",{children:[l.jsx("dt",{children:"Semantic rank"}),l.jsxs("dd",{children:["#",o.semantic_rank]})]}),o.semantic_score!==null&&l.jsxs("div",{children:[l.jsx("dt",{children:"Semantic score"}),l.jsx("dd",{children:o.semantic_score.toFixed(4)})]}),o.fused_score!==null&&l.jsxs("div",{children:[l.jsx("dt",{children:"RRF score"}),l.jsx("dd",{children:o.fused_score.toFixed(4)})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Source version"}),l.jsx("dd",{children:l.jsx("code",{title:o.source_version_id,children:o.source_version_id.slice(0,8)})})]}),l.jsxs("div",{children:[l.jsx("dt",{children:"Exact location"}),l.jsxs("dd",{children:["Lines ",o.start_line,"–",o.end_line," · offsets ",o.start_offset,":",o.end_offset]})]})]})]})]})}function Oe(o,c){return o instanceof Error&&o.message?o.message:c}function Gu(o){const c=[...o].sort((j,k)=>k.updated_at.localeCompare(j.updated_at)),d=new Map;let E=null;for(const j of c)j.source_id?d.has(j.source_id)||d.set(j.source_id,j):E||(E=j);return E?[...d.values(),E]:[...d.values()]}const ep=["decision","assumption","constraint","alternative"],Xu=["candidate","active","accepted","rejected","obsolete"];function tp({memories:o,onEvidence:c,onChanged:d}){const[E,j]=x.useState("all"),[k,O]=x.useState("all"),Q=o.filter(D=>(E==="all"||D.kind===E)&&(k==="all"||D.status===k));return l.jsxs("section",{className:"content",children:[l.jsxs("div",{className:"section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"MEMORY REGISTRY"}),l.jsx("h2",{children:"Reviewable engineering context"})]}),l.jsxs("span",{className:"mode-badge",children:[Q.length," of ",o.length]})]}),l.jsxs("div",{className:"registry-filters",children:[l.jsxs("fieldset",{children:[l.jsx("legend",{children:"Kind"}),l.jsx("button",{"aria-pressed":E==="all",onClick:()=>j("all"),children:"All"}),ep.map(D=>l.jsxs("button",{"aria-pressed":E===D,onClick:()=>j(D),children:[D[0].toUpperCase()+D.slice(1),"s"]},D))]}),l.jsxs("fieldset",{children:[l.jsx("legend",{children:"Status"}),l.jsx("button",{"aria-pressed":k==="all",onClick:()=>O("all"),children:"All"}),Xu.map(D=>l.jsx("button",{"aria-pressed":k===D,onClick:()=>O(D),children:D},D))]})]}),Q.length===0?l.jsx("div",{className:"empty-card",children:"No memories match these filters. Import an ADR or change the selected kind and status."}):l.jsx("div",{className:"decision-grid",children:Q.map(D=>l.jsx(np,{memory:D,onEvidence:c,onChanged:d},D.id))})]})}function np({memory:o,onEvidence:c,onChanged:d}){const[E,j]=x.useState(!1),[k,O]=x.useState(o.statement),[Q,D]=x.useState(o.rationale??""),[B,$]=x.useState(!1),[U,F]=x.useState(""),[V,K]=x.useState(null),[J,z]=x.useState(!1);async function Z(){if(V){K(null);return}z(!0);try{K(await ee.decisionTimeline(o.id))}catch(m){F(Oe(m,"Decision timeline failed"))}finally{z(!1)}}function oe(){O(o.statement),D(o.rationale??""),F(""),j(!0)}function H(){B||(O(o.statement),D(o.rationale??""),F(""),j(!1))}function X(m){m.preventDefault();const R=k.trim();if(!R){F("Statement is required.");return}$(!0),F("");try{ee.updateMemory(o.id,{statement:R,rationale:Q.trim()||null}).then(async()=>{await d(),j(!1)},re=>{F(Oe(re,"Memory correction failed"))}).catch(re=>{F(Oe(re,"Memory correction failed"))}).finally(()=>{$(!1)})}catch(w){F(Oe(w,"Memory correction failed")),$(!1)}}async function ie(m){if(!(m===o.status||B)){$(!0),F("");try{await ee.updateMemory(o.id,{status:m}),await d()}catch(R){F(Oe(R,"Memory review failed"))}finally{$(!1)}}}return l.jsxs("article",{className:"decision-card memory-card","aria-label":`${o.kind} memory: ${o.statement}`,children:[l.jsxs("div",{className:"decision-top",children:[l.jsxs("span",{className:"memory-labels",children:[l.jsx("span",{className:`memory-kind ${o.kind}`,"aria-label":`Memory kind: ${o.kind}`,children:o.kind}),l.jsx("span",{className:`status ${o.status}`,children:o.status})]}),l.jsxs("span",{children:[Math.round(o.confidence*100),"% · ",o.extraction_method]})]}),E?l.jsxs("form",{className:"memory-edit-form","aria-label":`Edit ${o.kind} memory`,onSubmit:m=>void X(m),children:[l.jsxs("label",{children:["Statement",l.jsx("textarea",{value:k,"aria-invalid":!k.trim()&&!!U,onChange:m=>O(m.target.value)})]}),l.jsxs("label",{children:["Rationale",l.jsx("textarea",{value:Q,onChange:m=>D(m.target.value)})]}),l.jsxs("div",{className:"edit-actions",children:[l.jsx("button",{type:"button",disabled:B,onClick:H,children:"Cancel"}),l.jsx("button",{type:"submit",disabled:B,children:B?"Saving…":"Save correction"})]})]}):l.jsxs(l.Fragment,{children:[l.jsx("h3",{children:o.statement}),o.rationale&&l.jsx("p",{children:o.rationale})]}),o.kind==="decision"&&l.jsxs("div",{className:"decision-timeline-controls",children:[l.jsx("button",{type:"button",disabled:J,onClick:()=>void Z(),children:J?"Loading timeline…":V?"Hide timeline":"View timeline"}),V&&l.jsxs("div",{className:"decision-timeline","aria-label":`Timeline for ${o.statement}`,children:[l.jsxs("span",{children:["Valid ",V.decision.valid_from??"from ingestion"," →"," ",V.decision.valid_to??"current"]}),[...V.incoming,...V.outgoing].map(m=>l.jsxs("small",{children:[m.kind," · ",m.valid_from??m.created_at]},m.id))]})]}),l.jsxs("div",{className:"governance-actions",children:[l.jsxs("label",{children:["Status",l.jsx("select",{"aria-label":`Status for ${o.kind}: ${o.statement}`,value:o.status,disabled:B||E,onChange:m=>void ie(m.target.value),children:Xu.map(m=>l.jsx("option",{value:m,children:m},m))})]}),l.jsx("button",{disabled:B||E,onClick:oe,"aria-label":`Edit ${o.kind}: ${o.statement}`,children:"Edit"})]}),U&&l.jsx("div",{className:"action-error",role:"alert",children:U}),l.jsxs("footer",{children:[l.jsx("span",{children:o.source_title}),o.evidence.map(m=>l.jsxs("button",{onClick:()=>c(m,o.source_title),children:["View proof · L",m.start_line,"–",m.end_line]},m.id))]})]})}function rp({sources:o,jobs:c,onChanged:d,onSourceDeleted:E}){const[j,k]=x.useState(null),[O,Q]=x.useState(null),[D,B]=x.useState({}),[$,U]=x.useState({}),[F,V]=x.useState(null),K=x.useRef(null),J=new Map(Gu(c).flatMap(m=>m.source_id?[[m.source_id,m]]:[])),z=[...c].filter(m=>!m.source_id&&["failed","dead_letter"].includes(m.state)).sort((m,R)=>R.updated_at.localeCompare(m.updated_at)).slice(0,5);async function Z(m){k(m),B(R=>({...R,[m]:""}));try{await ee.extractMemories(m),await d()}catch(R){B(w=>({...w,[m]:Oe(R,"AI memory extraction failed")}))}finally{k(null)}}async function oe(m){Q(m.id),U(R=>({...R,[m.id]:""}));try{await ee.retryJob(m.id),await d()}catch(R){U(w=>({...w,[m.id]:Oe(R,"Ingestion retry failed")}))}finally{Q(null)}}async function H(m){K.current=document.activeElement,V({source:m,impact:null,loading:!0,pending:!1,error:""});try{const R=await ee.deletionImpact(m.id);V(w=>(w==null?void 0:w.source.id)===m.id?{...w,impact:R,loading:!1}:w)}catch(R){V(w=>(w==null?void 0:w.source.id)===m.id?{...w,loading:!1,error:Oe(R,"Deletion preview failed")}:w)}}function X(){if(F!=null&&F.pending)return;const m=K.current;V(null),queueMicrotask(()=>m==null?void 0:m.focus())}async function ie(){if(!(F!=null&&F.impact)||F.pending)return;const m=F.source.id;V(R=>R&&{...R,pending:!0,error:""});try{await ee.deleteSource(m),E==null||E(m),await d();const R=K.current;V(null),queueMicrotask(()=>R==null?void 0:R.focus())}catch(R){V(w=>(w==null?void 0:w.source.id)===m?{...w,pending:!1,error:Oe(R,"Source deletion failed")}:w)}}return l.jsxs("section",{className:"content",children:[l.jsxs("div",{className:"metrics",children:[l.jsx($n,{value:o.length,label:"Sources detected"}),l.jsx($n,{value:o.reduce((m,R)=>m+R.chunk_count,0),label:"Searchable chunks"}),l.jsx($n,{value:o.reduce((m,R)=>m+R.memory_count,0),label:"Memories found"})]}),z.length>0&&l.jsxs("section",{className:"recent-failures","aria-labelledby":"recent-ingestion-failures",children:[l.jsxs("div",{className:"section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"PIPELINE DIAGNOSTICS"}),l.jsx("h2",{id:"recent-ingestion-failures",children:"Recent ingestion failures"})]}),l.jsxs("span",{className:"mode-badge",children:[z.length," orphaned"]})]}),l.jsx("div",{className:"failure-list",children:z.map(m=>l.jsxs("article",{className:`failure-card ${m.state}`,children:[l.jsxs("div",{className:"failure-summary",children:[l.jsxs("strong",{children:["Job ",m.id.slice(0,8)]}),l.jsxs("span",{children:[m.state," · ",m.stage]})]}),l.jsxs("div",{className:"failure-metadata",children:[l.jsxs("span",{children:["Attempt ",m.attempts,"/",m.max_attempts]}),l.jsxs("span",{children:["Started ",m.started_at??"not recorded"]}),l.jsxs("span",{children:["Finished ",m.finished_at??"not recorded"]})]}),m.error_code&&l.jsx("code",{children:m.error_code}),m.error_detail&&l.jsx("p",{children:m.error_detail}),m.state==="failed"&&m.retryable&&l.jsx("button",{disabled:O===m.id,onClick:()=>void oe(m),"aria-label":`Retry ingestion job ${m.id.slice(0,8)}`,children:O===m.id?"Retrying…":"Retry"}),$[m.id]&&l.jsx("small",{className:"action-error",role:"alert",children:$[m.id]})]},m.id))})]}),l.jsxs("div",{className:"source-table source-diagnostics",children:[l.jsxs("div",{className:"table-row table-head",children:[l.jsx("span",{children:"Source"}),l.jsx("span",{children:"Type"}),l.jsx("span",{children:"Objects"}),l.jsx("span",{children:"Health"}),l.jsx("span",{children:"Actions"})]}),o.map(m=>{const R=J.get(m.id),w=D[m.id];return l.jsxs("div",{className:"table-row",children:[l.jsxs("span",{children:[l.jsx("strong",{children:m.title}),l.jsx("small",{children:m.uri??"Local import"})]}),l.jsx("span",{children:m.kind}),l.jsxs("span",{children:[m.chunk_count," chunks · ",m.memory_count," memories"]}),l.jsxs("span",{className:`job-health ${(R==null?void 0:R.state)??m.status}`,children:[l.jsx("strong",{children:R?`${R.state} · ${R.stage}`:m.status}),l.jsx("small",{children:R?`Attempt ${R.attempts}/${R.max_attempts} · ${R.retryable?"Retryable":"Not retryable"}`:"No ingestion job recorded"}),(R==null?void 0:R.error_code)&&l.jsx("small",{className:"job-error-code",children:R.error_code}),(R==null?void 0:R.error_detail)&&l.jsx("small",{className:"job-error-detail",children:R.error_detail})]}),l.jsxs("span",{className:"source-actions",children:[(R==null?void 0:R.state)==="failed"&&R.retryable&&l.jsx("button",{disabled:O===R.id,onClick:()=>void oe(R),"aria-label":`Retry ingestion for ${m.title}`,children:O===R.id?"Retrying…":"Retry ingestion"}),l.jsx("button",{disabled:j===m.id||O===(R==null?void 0:R.id),onClick:()=>void Z(m.id),"aria-label":`Extract AI memories from ${m.title}`,children:j===m.id?"Extracting…":"Extract AI memories"}),l.jsx("button",{className:"danger-action",onClick:()=>void H(m),"aria-label":`Delete ${m.title}`,children:"Delete"}),R&&$[R.id]&&l.jsx("small",{className:"action-error",role:"alert",children:$[R.id]}),w&&l.jsx("small",{className:"action-error",role:"alert",children:w})]})]},m.id)})]}),F&&l.jsx(lp,{state:F,onCancel:X,onConfirm:()=>void ie()})]})}function lp({state:o,onCancel:c,onConfirm:d}){const E=x.useRef(null);x.useEffect(()=>{var O;o.pending||(O=E.current)==null||O.focus();function k(Q){Q.key==="Escape"&&!o.pending&&c()}return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[c,o.pending]);const j=o.impact?[["Versions",o.impact.versions],["Chunks",o.impact.chunks],["Embeddings",o.impact.embeddings],["Vector index rows",o.impact.vector_index_rows??0],["Memories",o.impact.memories],["Decisions",o.impact.decisions],["Evidence",o.impact.evidence],["Decision relations",o.impact.decision_relations??0],["Study cards",o.impact.study_cards??0],["Study reviews",o.impact.study_reviews??0],["Action proposals",o.impact.action_proposals??0],["Proposal citations",o.impact.proposal_citations??0],["Studio artifacts",o.impact.studio_artifacts??0],["Studio citations",o.impact.studio_citations??0],["Jobs detached",o.impact.ingestion_jobs_to_detach],["Audit events",o.impact.audit_events_to_delete],["FTS rows",o.impact.fts_rows]]:[];return l.jsx("div",{className:"dialog-backdrop",children:l.jsxs("section",{className:"deletion-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"deletion-dialog-title",children:[l.jsx("span",{className:"eyebrow",children:"DELETION IMPACT"}),l.jsxs("h2",{id:"deletion-dialog-title",children:["Delete ",o.source.title,"?"]}),l.jsx("p",{children:"This permanently removes the source and its derived local data."}),o.loading&&l.jsx("div",{role:"status",children:"Loading deletion impact…"}),o.error&&l.jsx("div",{className:"integrity-error",role:"alert",children:o.error}),o.impact&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"deletion-identity",children:[l.jsx("span",{children:"Current version"}),l.jsx("code",{children:o.impact.current_version_id??"none"})]}),l.jsx("dl",{className:"impact-counts",children:j.map(([k,O])=>l.jsxs("div",{children:[l.jsx("dt",{children:k}),l.jsx("dd",{children:O})]},k))})]}),l.jsxs("footer",{children:[l.jsx("button",{ref:E,disabled:o.pending,onClick:c,children:"Cancel"}),l.jsx("button",{className:"confirm-delete",disabled:!o.impact||o.pending,onClick:d,children:o.pending?"Deleting…":"Delete permanently"})]})]})})}function $n({value:o,label:c}){return l.jsxs("div",{className:"metric",children:[l.jsx("strong",{children:o}),l.jsx("span",{children:c})]})}function ip({item:o,sourceTitle:c,onClose:d}){const[E,j]=x.useState("");x.useEffect(()=>{ee.sourceVersion(o.source_id,o.source_version_id).then(O=>j(O.content))},[o.source_id,o.source_version_id]);const k=o.quote||E.slice(o.start_offset,o.end_offset);return l.jsxs("aside",{className:"drawer",children:[l.jsxs("header",{children:[l.jsxs("div",{children:[l.jsx("span",{className:"eyebrow",children:"EXACT EVIDENCE"}),l.jsx("h2",{children:c})]}),l.jsx("button",{"aria-label":"Close evidence",onClick:d,children:l.jsx(qu,{})})]}),l.jsxs("div",{className:"locator",children:["Lines ",o.start_line,"–",o.end_line," ",l.jsx("span",{children:"·"})," offsets"," ",o.start_offset,":",o.end_offset]}),l.jsx("blockquote",{children:k}),l.jsxs("div",{className:"integrity",children:[l.jsx(ff,{size:16}),l.jsxs("span",{children:[l.jsx("strong",{children:"Source-backed span"}),"This quote is stored with its exact source offsets."]})]})]})}nf.createRoot(document.getElementById("root")).render(l.jsx(Xd.StrictMode,{children:l.jsx(Bf,{})})); diff --git a/apps/api/proofline/web/assets/index-C1wsYag2.css b/apps/api/proofline/web/assets/index-C1wsYag2.css new file mode 100644 index 0000000..ab9e9c9 --- /dev/null +++ b/apps/api/proofline/web/assets/index-C1wsYag2.css @@ -0,0 +1 @@ +.decision-health-view{max-width:1180px}.decision-health-metrics{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:30px;display:grid}.decision-health-metrics article{border:1px solid var(--color-border);background:var(--color-surface);border-radius:14px;padding:20px;box-shadow:0 8px 28px #1268de0f}.decision-health-metrics article.attention{background:var(--color-warning-soft);border-color:#e9c77e}.decision-health-metrics strong,.decision-health-metrics span{display:block}.decision-health-metrics strong{font:650 30px/1 var(--font-mono)}.decision-health-metrics span{color:var(--color-text-muted);margin-top:9px;font-size:12px}.decision-impact-panel{border:1px solid var(--color-border);background:var(--color-surface);border-radius:14px;margin-bottom:30px;padding:20px}.decision-impact-panel>header{justify-content:space-between;align-items:end;gap:20px;display:flex}.decision-impact-panel h2{margin:7px 0 0;font-size:19px}.decision-impact-panel time,.decision-impact-list span{color:var(--color-text-muted);font-size:11px}.decision-impact-list{gap:9px;margin:17px 0 0;padding:0;list-style:none;display:grid}.decision-impact-list li{background:var(--color-warning-soft);border-radius:9px;grid-template-columns:minmax(220px,.45fr) minmax(300px,1fr);align-items:center;gap:18px;padding:13px;display:grid}.decision-impact-list li>div{gap:4px;display:grid}.decision-impact-list code{overflow-wrap:anywhere;color:var(--color-ink-soft);font-size:10px}.decision-impact-state{color:var(--color-text-muted);margin:15px 0 0}.decision-impact-state.error{color:var(--color-danger)}.decision-health-toolbar{justify-content:space-between;align-items:end;gap:24px;display:flex}.decision-health-toolbar h2{margin:7px 0;font-size:23px}.decision-health-toolbar p{color:var(--color-text-muted);margin:0;font-size:13px}.decision-health-toolbar button,.decision-health-table button,.decision-health-actions button{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink-soft);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:9px 12px;display:inline-flex}.decision-health-toolbar button:disabled,.decision-health-actions button:disabled{cursor:not-allowed;opacity:.48}.decision-health-filters{grid-template-columns:repeat(3,minmax(150px,210px));gap:12px;margin:24px 0 14px;display:grid}.decision-health-filters label,.decision-health-actions label{color:var(--color-text-muted);gap:6px;font-size:11px;font-weight:650;display:grid}.decision-health-filters select,.decision-health-actions input,.decision-health-actions textarea{border:1px solid var(--color-border-strong);background:var(--color-surface);min-width:0;color:var(--color-ink);border-radius:8px;padding:9px 10px}.decision-health-table-wrap{border:1px solid var(--color-border);background:var(--color-surface);border-radius:13px;overflow-x:auto}.decision-health-table{border-collapse:collapse;text-align:left;width:100%;min-width:720px;font-size:13px}.decision-health-table th{background:var(--color-surface-subtle);color:var(--color-text-subtle);font:600 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding:12px 16px}.decision-health-table td{border-top:1px solid var(--color-border-subtle);vertical-align:middle;padding:15px 16px}.decision-health-table td:first-child{gap:4px;display:grid}.decision-health-table small{max-width:220px;color:var(--color-text-subtle);font:500 10px var(--font-mono);text-overflow:ellipsis;overflow:hidden}.anchor-badge,.decision-health-status{background:var(--color-warning-soft);width:fit-content;color:var(--color-warning);font:650 10px var(--font-mono);text-transform:uppercase;border-radius:999px;padding:4px 8px;display:inline-flex}.anchor-badge.deleted,.anchor-badge.ambiguous{background:var(--color-danger-soft);color:var(--color-danger)}.decision-health-message,.decision-health-empty{border:1px dashed var(--color-border-strong);color:var(--color-text-muted);background:var(--color-surface);border-radius:11px;margin-top:16px;padding:18px}.decision-health-message.error{background:var(--color-danger-soft);color:var(--color-danger);border-style:solid;border-color:#efb7aa}.decision-health-drawer{z-index:8;border-left:1px solid var(--color-border-strong);background:var(--color-surface);width:min(570px,94vw);padding:28px;position:fixed;inset:0 0 0 auto;overflow-y:auto;box-shadow:-18px 0 48px #0b285429}.decision-health-drawer>header{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.decision-health-drawer h2{margin:7px 0 10px}.decision-health-drawer>header>button{cursor:pointer;background:0 0;border:0;padding:5px}.decision-health-statement{margin:22px 0;font-size:18px;line-height:1.5}.decision-health-facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.decision-health-facts div{background:var(--color-surface-subtle);border-radius:9px;padding:12px}.decision-health-facts dt{color:var(--color-text-subtle);font:600 9px var(--font-mono);text-transform:uppercase}.decision-health-facts dd{font:600 11px var(--font-mono);text-overflow:ellipsis;margin:6px 0 0;overflow:hidden}.decision-health-evidence{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:11px;margin-top:18px;padding:17px}.decision-health-evidence.current{background:var(--color-warning-soft)}.decision-health-evidence>div{justify-content:space-between;align-items:center;gap:15px;display:flex}.decision-health-evidence strong,.decision-health-evidence small{color:var(--color-text-muted);font:550 10px var(--font-mono)}.decision-health-evidence blockquote{border-left:3px solid var(--color-mint);font:400 12px/1.65 var(--font-mono);white-space:pre-wrap;margin:14px 0 0;padding-left:13px}.decision-health-actions{border-top:1px solid var(--color-border);gap:10px;margin-top:22px;padding-top:20px;display:grid}.decision-health-actions .primary-action{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.decision-health-actions .danger-action{color:var(--color-danger);border-color:#d88775}.decision-health-actions details{border:1px solid var(--color-border);border-radius:9px;gap:10px;padding:12px;display:grid}.decision-health-actions details[open]{display:grid}.decision-health-actions summary{cursor:pointer;color:var(--color-text-muted);font-size:12px}.decision-health-audit{margin-top:26px}.decision-health-audit ol{gap:9px;margin:0;padding:0;list-style:none;display:grid}.decision-health-audit li{border-left:2px solid var(--color-border-strong);gap:4px;padding-left:12px;font-size:12px;display:grid}.decision-health-audit li span{color:var(--color-text-muted)}@media (width<=760px){.decision-health-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.decision-impact-panel>header{flex-direction:column;align-items:stretch}.decision-impact-list li{grid-template-columns:1fr}.decision-health-toolbar{flex-direction:column;align-items:stretch}.decision-health-filters{grid-template-columns:1fr}.decision-health-drawer{width:100vw;padding:20px}.decision-health-facts{grid-template-columns:1fr}}:root{--font-sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--color-ink:#0b2854;--color-ink-soft:#173f73;--color-text-muted:#58718f;--color-text-subtle:#748aa5;--color-page:#f7fbff;--color-surface:#fff;--color-surface-subtle:#f1f8ff;--color-nav:#e9fbff;--color-primary:#1268de;--color-primary-strong:#0b56bd;--color-primary-soft:#e6f1ff;--color-mint:#42cfbf;--color-mint-strong:#14796f;--color-mint-soft:#dff8f4;--color-border:#cbdff2;--color-border-strong:#afcce8;--color-border-subtle:#dceaf7;--color-warning:#8a5a12;--color-warning-soft:#fff4d6;--color-danger:#a83d2b;--color-danger-soft:#fff0ec;--color-on-primary:#fff;font-family:var(--font-sans);color:var(--color-ink);background:var(--color-page);font-synthesis:none}*{box-sizing:border-box}body{color:var(--color-ink);background:var(--color-page);margin:0}button,input,textarea{font:inherit}.app-shell{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--color-nav);color:var(--color-ink);flex-direction:column;width:232px;padding:24px 14px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:11px;padding:0 10px 26px;font-size:19px;font-weight:700;display:flex}.brand-mark{background:var(--color-mint);width:31px;height:31px;color:var(--color-ink);font-family:var(--font-mono);border-radius:8px;place-items:center;display:grid}.workspace{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);flex-direction:column;gap:4px;margin-bottom:17px;padding:16px 12px;display:flex}.workspace span,.eyebrow{font:500 10px/1.2 var(--font-mono);letter-spacing:.12em;color:var(--color-text-muted)}.workspace strong{font-size:13px}.workspace select{border:1px solid var(--color-border-strong);background:var(--color-surface);width:100%;color:var(--color-ink);border-radius:6px;padding:7px 8px;font-size:13px}.workspace select:disabled{opacity:1}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.nav-item{width:100%;color:var(--color-ink-soft);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:24px 1fr auto;align-items:center;margin:2px 0;padding:10px 12px;display:grid}.nav-item:hover,.nav-item.active{background:var(--color-surface);color:var(--color-primary-strong);box-shadow:0 4px 16px #1268de1a}.nav-item b{font:500 11px var(--font-mono);background:var(--color-primary-soft);border-radius:9px;padding:2px 7px}.system-status{border-top:1px solid var(--color-border);gap:10px;margin-top:auto;padding:17px 11px 4px;display:flex}.system-status div{flex-direction:column;font-size:12px;display:flex}.system-status span{color:var(--color-text-muted)}.dot{background:var(--color-mint);width:8px;height:8px;box-shadow:0 0 0 3px var(--color-mint-soft);border-radius:50%;margin-top:5px}.error-dot{box-shadow:0 0 0 3px var(--color-danger-soft);background:#f06f58}main{grid-column:2;min-width:0}.topbar{border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f7fbffe0;justify-content:space-between;align-items:center;height:104px;padding:25px 38px;display:flex}h1{margin:5px 0 0;font-size:25px}.import-button{background:var(--color-primary);color:var(--color-on-primary);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:10px 15px;font-size:13px;font-weight:600;display:flex}.import-button input{display:none}.import-button:hover,.search-box button:hover{background:var(--color-primary-strong)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,.import-button:focus-within{outline-offset:2px;outline:3px solid #42cfbf6b}.content{max-width:1060px;margin:0 auto;padding:42px 38px}.notes-view{grid-template-columns:minmax(220px,.38fr) minmax(420px,1fr);gap:22px;display:grid}.study-view{max-width:880px}.studio-view{max-width:1040px}.studio-intro{justify-content:space-between;align-items:end;gap:28px;margin-bottom:24px;display:flex}.studio-intro h2{margin:7px 0;font-size:24px}.studio-intro p,.studio-preview header p{color:var(--color-text-muted);margin:0}.studio-source{min-width:260px;color:var(--color-ink-soft);gap:7px;font-size:12px;font-weight:700;display:grid}.studio-source select{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink);border-radius:10px;padding:11px 12px}.studio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.studio-tool{text-align:left;min-height:126px;color:inherit;cursor:pointer;border:1px solid #0000;border-radius:18px;justify-content:space-between;align-items:center;padding:20px 18px 20px 22px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.studio-tool:hover:not(:disabled){border-color:#0b285429;transform:translateY(-2px);box-shadow:0 12px 26px #0b28541a}.studio-tool:disabled{cursor:wait;opacity:.68}.studio-tool-copy{gap:7px;display:grid}.studio-tool-copy strong{font-size:17px}.studio-tool-copy small{color:currentColor;opacity:.72}.studio-tool-arrow{background:#ffffff75;border-radius:50%;flex:none;place-items:center;width:52px;height:52px;display:grid}.studio-tool-blue{color:#24529b;background:#e8efff}.studio-tool-sand{color:#766325;background:#f4f2e5}.studio-tool-green{color:#176338;background:#e1f5e8}.studio-tool-purple{color:#852b82;background:#f3e8f4}.studio-tool-gold{color:#806a25;background:#f7f3df}.studio-tool-coral{color:#a33c32;background:#fff0ed}.studio-tool-cyan{color:#126b8e;background:#def5fa}.studio-tool-magenta{color:#84277d;background:#f2e7f1}.studio-tool-indigo{color:#264e96;background:#e8edff}.studio-message{border-left:3px solid var(--color-mint);background:var(--color-mint-soft);color:var(--color-mint-strong);margin:18px 0 0;padding:10px 13px;font-size:13px}.studio-library{border-top:1px solid var(--color-border);margin-top:34px;padding-top:24px}.studio-library>div{gap:9px;padding:12px 0 3px;display:flex;overflow-x:auto}.studio-library button{border:1px solid var(--color-border);text-align:left;background:var(--color-surface);min-width:220px;max-width:300px;color:var(--color-ink);cursor:pointer;border-radius:12px;gap:5px;padding:12px 14px;display:grid}.studio-library button.active{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-soft)}.studio-library small{color:var(--color-text-muted)}.studio-preview{border:1px solid var(--color-border);background:var(--color-surface);border-radius:20px;margin-top:22px;padding:26px;box-shadow:0 14px 42px #1268de14}.studio-preview>header{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;gap:24px;padding-bottom:21px;display:flex}.studio-preview h2{margin:7px 0}.studio-preview-actions{align-items:start;gap:8px;display:flex}.studio-preview-actions button,.studio-pager button,.studio-citation button{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink-soft);cursor:pointer;border-radius:9px;align-items:center;gap:7px;padding:9px 12px;display:inline-flex}.studio-preview-actions .studio-delete{color:var(--color-danger)}.studio-preview-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:20px;display:grid}.studio-format-slides .studio-preview-items,.studio-format-storyboard .studio-preview-items{grid-template-columns:1fr}.studio-preview-item{border:1px solid var(--color-border-subtle);background:var(--color-surface-subtle);border-radius:14px;padding:19px;position:relative}.studio-item-number{font:600 11px var(--font-mono);color:var(--color-primary)}.studio-preview-item h3{margin:9px 0;font-size:16px}.studio-preview-item p{color:var(--color-text-muted);line-height:1.55}.citation-link{color:var(--color-primary-strong);font:600 11px var(--font-mono);cursor:pointer;background:0 0;border:0;padding:0}.studio-pager{font:600 12px var(--font-mono);justify-content:center;align-items:center;gap:12px;margin-top:16px;display:flex}.studio-pager button:disabled{opacity:.4;cursor:default}.mind-map-view{grid-template-columns:minmax(150px,.35fr) 1fr;align-items:center;gap:18px;margin-top:21px;display:grid}.mind-map-view>strong{border:1px solid var(--color-primary);background:var(--color-primary-soft);text-align:center;border-radius:14px;padding:18px}.mind-map-view ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0;padding:0;list-style:none;display:grid}.mind-map-view button{color:#71276e;cursor:pointer;background:#f7edf7;border:1px solid #dfc9e2;border-radius:12px;width:100%;min-height:64px;padding:10px}.quiz-options{gap:7px;display:grid}.quiz-options button,.flashcard-answer{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-ink-soft);text-align:left;cursor:pointer;border-radius:8px;padding:9px 10px}.quiz-options button.selected{border-color:var(--color-primary);background:var(--color-primary-soft)}.quiz-options strong{color:var(--color-mint-strong);font-size:12px}.studio-data-table{border:1px solid var(--color-border);border-radius:12px;margin-top:20px;overflow:hidden}.studio-data-row{border:0;border-top:1px solid var(--color-border-subtle);background:var(--color-surface);width:100%;color:var(--color-ink-soft);text-align:left;cursor:pointer;grid-template-columns:.8fr 1.8fr .4fr;gap:12px;padding:12px 14px;font-size:12px;display:grid}.studio-data-head{background:var(--color-surface-subtle);font:600 10px var(--font-mono);text-transform:uppercase;border-top:0}.studio-citation{border:1px solid var(--color-border);background:var(--color-mint-soft);border-radius:13px;margin-top:20px;padding:17px}.studio-citation>div{gap:4px;display:grid}.studio-citation small{color:var(--color-mint-strong);font-family:var(--font-mono)}.studio-citation blockquote{border-left:3px solid var(--color-mint);white-space:pre-wrap;margin:14px 0;padding-left:14px;line-height:1.55}.studio-empty{margin-top:25px}.proposals-view{max-width:900px}.proposal-form,.proposal-card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:15px;padding:24px;box-shadow:0 9px 30px #1268de14}.proposal-form{grid-template-columns:1fr 1fr auto;align-items:end;gap:18px;display:grid}.proposal-form h2{margin:6px 0}.proposal-form p,.proposal-message{color:var(--color-text-muted);font-size:13px}.proposal-form label{gap:7px;font-size:13px;font-weight:600;display:grid}.proposal-form textarea{resize:vertical;border:1px solid var(--color-border-strong);border-radius:8px;min-height:86px;padding:10px}.proposal-form button,.proposal-card footer button{border:1px solid var(--color-primary);background:var(--color-primary);color:var(--color-on-primary);cursor:pointer;border-radius:8px;padding:10px 13px}.proposal-list{gap:16px;margin-top:22px;display:grid}.proposal-card h3{margin:8px 0 15px}.proposal-body{font-size:16px;line-height:1.6}.proposal-citations{gap:8px;display:grid}.proposal-citations div{border-left:3px solid var(--color-mint);background:var(--color-mint-soft);gap:5px;padding:12px;font-size:12px;display:grid}.proposal-citations small{color:var(--color-mint-strong);font-family:var(--font-mono)}.proposal-card footer{justify-content:flex-end;gap:9px;margin-top:18px;display:flex}.proposal-card footer button:first-child{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}@media (width<=900px){.proposal-form{grid-template-columns:1fr}}.study-toolbar{justify-content:space-between;align-items:flex-start;gap:28px;margin-bottom:24px;display:flex}.study-toolbar h2{margin:6px 0}.study-toolbar p,.study-proof,.study-message{color:var(--color-text-muted);font-size:13px}.study-source{gap:7px;min-width:280px;display:grid}.study-source label{font-size:12px;font-weight:600}.study-source select,.study-source button,.study-card button{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-ink);cursor:pointer;border-radius:8px;padding:9px 11px}.study-source button,.reveal-answer{background:var(--color-primary)!important;color:var(--color-on-primary)!important;border-color:var(--color-primary)!important}.study-source button:disabled{opacity:.5}.study-card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:16px;padding:34px;box-shadow:0 12px 36px #1268de17}.study-card h3{margin:18px 0 26px;font-size:24px}.study-answer{border-left:4px solid var(--color-mint);background:var(--color-mint-soft);padding:20px;font-size:17px}.study-ratings{grid-template-columns:repeat(4,1fr);gap:9px;margin-top:22px;display:grid}.study-ratings button{text-transform:capitalize}.notes-list,.note-form{border:1px solid var(--color-border);background:var(--color-surface);border-radius:14px;box-shadow:0 8px 28px #1268de12}.notes-list{padding:18px}.notes-list-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.notes-list-heading h2{margin:5px 0 0;font-size:18px}.notes-list-heading button,.note-form-footer button{background:var(--color-primary);color:var(--color-on-primary);cursor:pointer;border:0;border-radius:8px;padding:9px 12px}.note-row{text-align:left;width:100%;color:var(--color-ink);background:var(--color-surface-subtle);cursor:pointer;border:1px solid #0000;border-radius:9px;flex-direction:column;gap:4px;margin-top:7px;padding:12px;display:flex}.note-filter input{border:1px solid var(--color-border-strong);border-radius:8px;width:100%;margin-bottom:8px;padding:9px 10px}.note-row.active{border-color:var(--color-primary);background:var(--color-primary-soft)}.note-row span,.empty-copy,.note-form-footer span{color:var(--color-text-muted);font-size:12px}.note-form{flex-direction:column;gap:18px;padding:24px;display:flex}.note-form label{color:var(--color-ink-soft);flex-direction:column;gap:7px;font-size:13px;font-weight:600;display:flex}.note-form input,.note-form textarea{border:1px solid var(--color-border-strong);color:var(--color-ink);background:var(--color-surface);border-radius:8px;padding:11px}.note-form textarea{resize:vertical;min-height:330px;font-family:var(--font-mono);line-height:1.55}.note-form-footer{justify-content:space-between;align-items:center;gap:16px;display:flex}.note-provenance{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:9px;gap:8px;padding:13px;display:grid}.note-provenance div{grid-template-columns:90px 1fr;gap:10px;font-size:12px;display:grid}.note-provenance span{color:var(--color-text-muted);overflow-wrap:anywhere}.note-versions span{flex-wrap:wrap;gap:6px;display:flex}.note-versions button,.note-version-preview button{border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-primary-strong);cursor:pointer;border-radius:6px;padding:5px 8px}.note-version-preview{border:1px solid var(--color-border-strong);border-radius:9px;overflow:hidden}.note-version-preview header{background:var(--color-primary-soft);align-items:center;gap:10px;padding:9px 11px;font-size:12px;display:flex}.note-version-preview header span{color:var(--color-text-muted);font-family:var(--font-mono)}.note-version-preview header button{margin-left:auto}.note-version-preview pre{white-space:pre-wrap;max-height:260px;color:var(--color-ink);background:var(--color-surface);font:12px/1.55 var(--font-mono);margin:0;padding:14px;overflow:auto}.note-form-footer button:disabled{opacity:.6}@media (width<=840px){.notes-view{grid-template-columns:1fr}}.error-banner{background:var(--color-danger-soft);color:var(--color-danger);border-bottom:1px solid #f5b8ad;padding:10px 38px}.search-view{max-width:940px}.search-box{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:13px;grid-template-columns:28px 1fr auto;align-items:center;gap:9px;padding:8px 9px 8px 16px;display:grid;box-shadow:0 8px 28px #1268de17}.search-box input{background:0 0;border:0;outline:0;padding:9px;font-size:16px}.search-box button,.result-meta button,.decision-card footer button{cursor:pointer;border:0;border-radius:7px}.search-box button{background:var(--color-primary);color:var(--color-on-primary);padding:10px 17px;font-weight:700}.hero-empty{text-align:center;max-width:540px;margin:104px auto}.line-art{font:400 42px var(--font-mono);color:var(--color-mint);transform:rotate(25deg)}.hero-empty h2{margin:12px;font-size:27px}.hero-empty p{color:var(--color-text-muted);line-height:1.6}.section-heading{justify-content:space-between;align-items:end;margin-bottom:19px;display:flex}.section-heading h2{margin:6px 0 0;font-size:20px}.mode-badge{font:500 11px var(--font-mono);border:1px solid var(--color-border-strong);color:var(--color-text-muted);border-radius:20px;padding:6px 9px}.result-card,.decision-card,.empty-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;margin-bottom:11px;padding:19px}.result-meta{color:var(--color-text-muted);font:500 11px var(--font-mono);justify-content:space-between;display:flex}.result-meta button,.decision-card footer button{color:var(--color-primary-strong);background:var(--color-primary-soft);padding:5px 8px}.result-card p{white-space:pre-wrap;margin-bottom:0;line-height:1.6}.decision-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.decision-card{flex-direction:column;min-height:220px;margin:0;display:flex}.decision-top,.decision-card footer{color:var(--color-text-subtle);font:500 10px var(--font-mono);justify-content:space-between;align-items:center;display:flex}.decision-card h3{margin:20px 0 8px;font-size:18px;line-height:1.35}.decision-card p{color:var(--color-text-muted);margin-top:0;line-height:1.55}.decision-card footer{border-top:1px solid var(--color-border-subtle);margin-top:auto;padding-top:13px}.status{text-transform:uppercase;color:var(--color-mint-strong);background:var(--color-mint-soft);border-radius:4px;padding:4px 7px}.status.superseded{background:var(--color-surface-subtle);color:var(--color-text-muted)}.metrics{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:28px;display:grid}.metric{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:18px}.metric strong{font:600 28px var(--font-mono);display:block}.metric span{color:var(--color-text-subtle);font-size:12px}.source-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;overflow:hidden}.table-row{border-top:1px solid var(--color-border-subtle);grid-template-columns:2fr .7fr 1fr .7fr;align-items:center;gap:15px;padding:15px 18px;font-size:13px;display:grid}.table-head{background:var(--color-surface-subtle);color:var(--color-text-subtle);font:500 10px var(--font-mono);text-transform:uppercase;letter-spacing:.08em;border:0}.table-row>span:first-child{flex-direction:column;display:flex}.table-row small{color:var(--color-text-subtle);margin-top:3px}.ready{color:var(--color-mint-strong)}.ready i{background:var(--color-mint);border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.drawer{z-index:5;background:var(--color-surface-subtle);border-left:1px solid var(--color-border-strong);width:min(490px,90vw);padding:27px;position:fixed;top:0;bottom:0;right:0;overflow:auto;box-shadow:-12px 0 40px #0b28541f}.drawer header{justify-content:space-between;display:flex}.drawer header h2{font-size:18px}.drawer header button{cursor:pointer;background:0 0;border:0}.locator{font:500 11px var(--font-mono);color:var(--color-text-muted);border-top:1px solid var(--color-border-subtle);margin-top:10px;padding-top:18px}.locator span{margin:0 7px}.drawer blockquote{border-left:3px solid var(--color-mint);background:var(--color-mint-soft);font:400 13px/1.75 var(--font-mono);white-space:pre-wrap;margin:20px 0;padding:19px}.integrity{border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:8px;gap:11px;padding:15px;display:flex}.integrity span{flex-direction:column;font-size:12px;display:flex}.integrity strong{color:var(--color-ink-soft);margin-bottom:3px}@media (width<=760px){.app-shell{grid-template-columns:1fr}.sidebar{width:auto;height:auto;position:static;overflow:hidden}.workspace,.system-status{display:none}.sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;display:grid}.nav-item{grid-template-columns:20px minmax(0,1fr) auto;min-width:0;padding:9px 8px;font-size:12px}.nav-item b{padding:2px 5px;font-size:9px}.brand{padding-bottom:10px}main{grid-column:1}.topbar{gap:14px;height:auto;padding:20px}.import-button{flex:none;padding:9px 11px;font-size:12px}.content{padding:28px 18px}.search-box{grid-template-columns:24px minmax(0,1fr) auto;padding-left:12px}.search-box input{width:100%;min-width:0}.search-box button{padding-inline:12px}.decision-grid,.metrics{grid-template-columns:1fr}.table-row{grid-template-columns:1fr 1fr}.table-row span:nth-child(2){display:none}.studio-intro,.studio-preview>header{flex-direction:column;align-items:stretch}.studio-source{min-width:0}.studio-preview-items{grid-template-columns:1fr}.studio-tool{min-height:112px}.mind-map-view,.mind-map-view ul{grid-template-columns:1fr}.studio-data-table{overflow-x:auto}.studio-data-row{min-width:680px}}@media (width<=520px){.studio-grid{grid-template-columns:1fr}}.inline-error,.degraded-banner,.integrity-error{border:1px solid;border-radius:8px;margin:14px 0;padding:11px 13px}.inline-error{padding:11px 13px}.degraded-banner{background:var(--color-warning-soft);color:var(--color-warning);border-color:#e7d79a}.context-budget-notice{background:var(--color-primary-soft);color:var(--color-ink-soft);border:1px solid #c8d8df;border-radius:8px;flex-wrap:wrap;justify-content:space-between;gap:7px 14px;margin:14px 0;padding:10px 12px;font-size:11px;display:flex}.context-budget-notice span{flex-wrap:wrap;gap:5px;display:flex}.context-budget-notice code{background:var(--color-border-subtle);border-radius:4px;padding:1px 4px}.search-scope{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:9px;margin-top:12px}.search-scope>summary{cursor:pointer;color:var(--color-text-muted);font:500 11px var(--font-mono);padding:10px 13px}.scope-controls{border-top:1px solid var(--color-border-subtle);grid-template-columns:1fr 1fr auto;align-items:start;gap:18px;padding:14px;display:grid}.scope-controls fieldset{border:0;min-width:0;margin:0;padding:0}.scope-controls legend{color:var(--color-text-muted);font:500 10px var(--font-mono);text-transform:uppercase;margin-bottom:8px}.source-scope-options{gap:6px;max-height:150px;display:grid;overflow:auto}.source-scope-options label,.time-scope label{color:var(--color-ink-soft);align-items:center;gap:7px;font-size:12px;display:flex}.time-scope{gap:8px;display:grid}.time-scope label{justify-content:space-between}.time-scope input{border:1px solid var(--color-border-strong);min-width:0;color:var(--color-ink-soft);background:#fff;border-radius:6px;padding:6px;font-size:11px}.time-scope small{color:var(--color-text-subtle);font-size:10px;line-height:1.4}.scope-controls>button{border:1px solid var(--color-border-strong);cursor:pointer;background:#fff;border-radius:7px;padding:7px 9px}.scope-controls>button:disabled{cursor:default;opacity:.5}.scope-summary{color:var(--color-text-subtle);flex-wrap:wrap;gap:6px 14px;margin:10px 2px 0;font-size:11px;display:flex}.scope-summary strong{color:var(--color-text-muted)}.scope-summary.active{color:var(--color-mint-strong)}.integrity-error{background:var(--color-danger-soft);color:var(--color-danger);border-color:#f5b8ad}.mode-badge.integrity-failed{color:var(--color-danger);background:var(--color-danger-soft);border-color:#dc846f}.answer-statements{gap:10px;margin-top:18px;display:grid}.answer-statement{border:1px solid var(--color-border-subtle);border-radius:8px;padding:13px}.answer-statement p{margin-top:7px}.answer-statement footer{flex-wrap:wrap;gap:7px;margin-top:12px;display:flex}.answer-statement footer button{cursor:pointer;color:var(--color-primary-strong);background:var(--color-primary-soft);border:0;border-radius:7px;padding:5px 8px}.statement-kind{font:500 10px var(--font-mono);text-transform:uppercase;background:var(--color-surface-subtle);color:var(--color-text-muted);border-radius:4px;padding:4px 7px;display:inline-block}.statement-kind.direct{background:var(--color-mint-soft);color:var(--color-mint-strong)}.statement-kind.synthesis{background:var(--color-primary-soft);color:var(--color-primary-strong)}.statement-kind.inference{color:#65459a;background:#f0eaff}.retrieval-debug{border-top:1px solid var(--color-border-subtle);margin-top:14px;padding-top:10px}.retrieval-debug summary{width:fit-content;color:var(--color-text-muted);cursor:pointer;font:500 11px var(--font-mono)}.retrieval-debug[open] summary{color:var(--color-mint-strong)}.retrieval-debug dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:10px 0 0;display:grid}.retrieval-debug dl div{border:1px solid var(--color-border-subtle);background:var(--color-surface-subtle);border-radius:6px;min-width:0;padding:7px 8px}.retrieval-debug dt{color:var(--color-text-subtle);font:500 9px var(--font-mono);text-transform:uppercase}.retrieval-debug dd{color:var(--color-ink-soft);overflow-wrap:anywhere;margin:4px 0 0;font-size:11px}@media (width<=760px){.scope-controls{grid-template-columns:1fr}.retrieval-debug dl{grid-template-columns:1fr 1fr}}.registry-filters{gap:10px;margin-bottom:20px;display:grid}.registry-filters fieldset{border:0;flex-wrap:wrap;gap:7px;margin:0;padding:0;display:flex}.registry-filters legend{float:left;min-width:54px;color:var(--color-text-muted);font:500 10px var(--font-mono);text-transform:uppercase;padding:7px 0}.registry-filters button{border:1px solid var(--color-border-strong);color:var(--color-text-muted);cursor:pointer;text-transform:capitalize;background:0 0;border-radius:18px;padding:6px 10px}.registry-filters button[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.memory-labels{align-items:center;gap:6px;display:flex}.memory-kind{font:500 10px var(--font-mono);text-transform:uppercase;background:var(--color-primary-soft);color:var(--color-primary-strong);border-radius:4px;padding:4px 7px}.memory-kind.assumption{background:var(--color-warning-soft);color:var(--color-warning)}.memory-kind.constraint{color:#65459a;background:#f0eaff}.memory-kind.alternative{background:var(--color-surface-subtle);color:var(--color-text-muted)}.governance-actions,.edit-actions{align-items:end;gap:8px;margin:14px 0;display:flex}.governance-actions label{color:var(--color-text-muted);flex-direction:column;gap:4px;font-size:11px;display:flex}.governance-actions select,.governance-actions button,.edit-actions button{border:1px solid var(--color-border-strong);min-height:34px;color:var(--color-ink-soft);background:#fff;border-radius:7px;padding:6px 9px}.governance-actions button,.edit-actions button{cursor:pointer}.governance-actions button:disabled,.edit-actions button:disabled{cursor:wait;opacity:.6}.memory-edit-form{gap:10px;margin-top:16px;display:grid}.memory-edit-form label{color:var(--color-text-muted);gap:5px;font-size:11px;display:grid}.memory-edit-form textarea{resize:vertical;border:1px solid var(--color-border-strong);width:100%;min-height:74px;color:var(--color-ink);font:inherit;background:#fff;border-radius:7px;padding:9px}.memory-edit-form textarea[aria-invalid=true]{border-color:#c85d48}.edit-actions{justify-content:flex-end;margin:0}.edit-actions button[type=submit]{background:var(--color-primary);color:var(--color-on-primary)}.source-diagnostics .table-row{grid-template-columns:1.7fr .55fr .9fr 1.15fr 1fr}.job-health,.source-actions{flex-direction:column;align-items:flex-start;gap:3px;min-width:0;display:flex}.job-health strong{color:var(--color-mint-strong);text-transform:capitalize}.job-health.failed strong,.job-error-code,.job-error-detail,.action-error{color:var(--color-danger)}.job-health small,.source-actions small{overflow-wrap:anywhere}.job-error-code{font-family:var(--font-mono)}.source-actions button{cursor:pointer;color:var(--color-primary-strong);background:var(--color-primary-soft);border:0;border-radius:7px;padding:6px 8px}.source-actions button:disabled{cursor:wait;opacity:.65}.source-actions .danger-action{background:var(--color-danger-soft);color:var(--color-danger)}.dialog-backdrop{z-index:20;background:#17201d7a;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.deletion-dialog{background:var(--color-surface-subtle);border-radius:12px;width:min(560px,100%);max-height:calc(100vh - 40px);padding:25px;overflow:auto;box-shadow:0 20px 70px #0f181447}.deletion-dialog h2{margin:7px 0 8px}.deletion-dialog>p{color:var(--color-text-muted)}.deletion-identity{border:1px solid var(--color-border);border-radius:8px;flex-direction:column;gap:5px;padding:11px 13px;display:flex}.deletion-identity span{color:var(--color-text-subtle);font-size:11px}.deletion-identity code{overflow-wrap:anywhere}.impact-counts{grid-template-columns:repeat(4,1fr);gap:8px;margin:15px 0;display:grid}.impact-counts div{border:1px solid var(--color-border-subtle);border-radius:7px;padding:9px}.impact-counts dt{color:var(--color-text-subtle);font-size:10px}.impact-counts dd{font:600 18px var(--font-mono);margin:4px 0 0}.deletion-dialog footer{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.deletion-dialog footer button{cursor:pointer;border:0;border-radius:7px;padding:9px 13px}.deletion-dialog footer button:disabled{cursor:wait;opacity:.6}.deletion-dialog .confirm-delete{background:var(--color-danger);color:#fff}.recent-failures{margin-bottom:28px}.failure-list{gap:10px;display:grid}.failure-card{background:#fff;border:1px solid #efb9ae;border-radius:9px;grid-template-columns:minmax(150px,.8fr) minmax(260px,1.7fr) minmax(120px,1fr) auto;align-items:center;gap:12px;padding:13px 15px;display:grid}.failure-card.dead_letter{background:var(--color-danger-soft)}.failure-summary,.failure-metadata{flex-direction:column;gap:3px;display:flex}.failure-summary span,.failure-metadata,.failure-card p,.failure-card small{color:var(--color-danger);font-size:11px}.failure-card code{color:var(--color-danger);overflow-wrap:anywhere}.failure-card p{overflow-wrap:anywhere;margin:0}.failure-card button{cursor:pointer;background:var(--color-primary);color:var(--color-on-primary);border:0;border-radius:7px;padding:7px 10px}.failure-card button:disabled{cursor:wait;opacity:.65}.diagnostic-intro{max-width:760px;color:var(--color-text-muted);margin:-7px 0 20px;font-size:13px;line-height:1.55}.model-run-filters{border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:10px;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;align-items:end;gap:10px;margin-bottom:20px;padding:14px;display:grid}.settings-note{color:var(--color-text-muted);margin:-7px 0 14px;font-size:13px}.model-run-filters label{color:var(--color-text-muted);font:500 10px var(--font-mono);text-transform:uppercase;gap:6px;display:grid}.model-run-filters .secret-removal{text-transform:none;align-self:center;align-items:center;gap:7px;padding-bottom:8px;display:flex}.model-run-filters .secret-removal input{width:auto}.model-run-filters input,.model-run-filters select{border:1px solid var(--color-border-strong);min-width:0;color:var(--color-ink-soft);font:400 12px var(--font-sans);text-transform:none;background:#fff;border-radius:7px;padding:8px 9px}.model-run-filters>div{gap:6px;display:flex}.model-run-filters button,.run-lineage button{border:1px solid var(--color-border-strong);cursor:pointer;background:#fff;border-radius:7px;padding:8px 10px}.model-run-filters button[type=submit]{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.model-run-filters button:disabled{cursor:wait;opacity:.6}.diagnostic-state{border:1px dashed var(--color-border-strong);color:var(--color-text-muted);text-align:center;border-radius:9px;padding:22px}.model-run-layout{grid-template-columns:minmax(390px,1.15fr) minmax(310px,.85fr);align-items:start;gap:16px;display:grid}.model-run-list{gap:7px;display:grid}.model-run-row{border:1px solid var(--color-border);width:100%;color:var(--color-ink-soft);text-align:left;cursor:pointer;background:#fff;border-radius:9px;grid-template-columns:minmax(140px,1.2fr) minmax(120px,1fr) auto minmax(130px,.8fr);align-items:center;gap:12px;padding:12px;display:grid}.model-run-row:hover,.model-run-row.selected{border-color:var(--color-primary);box-shadow:0 0 0 2px #1268de29}.model-run-row>span{flex-direction:column;gap:3px;min-width:0;display:flex}.model-run-row code,.model-run-row small,.model-run-row time{color:var(--color-text-subtle);font:400 10px var(--font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.run-status{background:var(--color-surface-subtle);width:fit-content;color:var(--color-text-muted);font:600 9px var(--font-mono);text-transform:uppercase;border-radius:4px;padding:4px 7px}.run-status.succeeded{background:var(--color-mint-soft);color:var(--color-mint-strong)}.run-status.failed{background:var(--color-danger-soft);color:var(--color-danger)}.run-status.running{background:var(--color-primary-soft);color:var(--color-primary-strong)}.model-run-detail{border:1px solid var(--color-border);background:#fff;border-radius:10px;padding:18px;position:sticky;top:16px}.model-run-detail h3{margin:16px 0 5px;font-size:17px}.run-id{overflow-wrap:anywhere;color:var(--color-text-subtle);font-size:10px;display:block}.run-metadata{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:18px 0;display:grid}.run-metadata div{border:1px solid var(--color-border-subtle);border-radius:7px;min-width:0;padding:8px}.run-metadata dt,.run-lineage span{color:var(--color-text-subtle);font:500 9px var(--font-mono);text-transform:uppercase}.run-metadata dd{overflow-wrap:anywhere;color:var(--color-ink-soft);margin:4px 0 0;font-size:11px}.run-lineage{border-top:1px solid var(--color-border-subtle);padding-top:15px}.run-lineage h4{margin:0 0 10px}.run-lineage button,.lineage-current{text-align:left;gap:3px;width:100%;margin-top:7px;display:grid}.lineage-current{border-left:3px solid var(--color-mint);background:var(--color-mint-soft);padding:8px 10px}.run-lineage code{overflow-wrap:anywhere;font-size:10px}.run-lineage small,.run-lineage p{color:var(--color-text-subtle);margin:5px 0;font-size:10px}@media (width<=1100px){.model-run-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.source-diagnostics .table-row{grid-template-columns:1fr 1fr}.failure-card{grid-template-columns:1fr}.impact-counts{grid-template-columns:repeat(2,1fr)}.model-run-filters,.model-run-layout{grid-template-columns:1fr}.model-run-row{grid-template-columns:1fr auto}.model-run-detail{position:static}} diff --git a/apps/api/proofline/web/assets/index-Cp1e0j7h.js b/apps/api/proofline/web/assets/index-Cp1e0j7h.js new file mode 100644 index 0000000..70a6e7f --- /dev/null +++ b/apps/api/proofline/web/assets/index-Cp1e0j7h.js @@ -0,0 +1,9 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var ee=Array.isArray;function te(){}var C={H:null,A:null,T:null,S:null},ne=Object.prototype.hasOwnProperty;function w(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function T(e,t){return w(e.type,t,e.props)}function re(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(te,te):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(re(o)&&(o=T(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,T());else{var t=n(l);t!==null&&ae(x,t.startTime-e)}}}var S=!1,ee=-1,te=5,C=-1;function ne(){return g?!0:!(e.unstable_now()-Ct&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ae(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?T():S=!1}}}var T;if(typeof y==`function`)T=function(){y(w)};else if(typeof MessageChannel<`u`){var re=new MessageChannel,ie=re.port2;re.port1.onmessage=w,T=function(){ie.postMessage(null)}}else T=function(){_(w,0)};function ae(t,n){ee=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(ee),ee=-1):h=!0,ae(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,T()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{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=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1A||(e.current=k[A],k[A]=null,A--)}function M(e,t){A++,k[A]=e.current,e.current=t}var Ee=Te(null),De=Te(null),Oe=Te(null),ke=Te(null);function Ae(e,t){switch(M(Oe,t),M(De,e),M(Ee,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}j(Ee),M(Ee,e)}function je(){j(Ee),j(De),j(Oe)}function Me(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,M(ke,e)),t=Ee.current;var n=dp(t,e.type);t!==n&&(M(De,e),M(Ee,n))}function Ne(e){De.current===e&&(j(Ee),j(De)),ke.current===e&&(j(ke),sh._currentValue=we)}var Pe,Fe;function Ie(e){if(Pe===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Pe=t&&t[1]||``,Fe=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Le=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ie(n):``}function ze(e,t){switch(e.tag){case 26:case 27:case 5:return Ie(e.type);case 16:return Ie(`Lazy`);case 13:return e.child!==t&&t!==null?Ie(`Suspense Fallback`):Ie(`Suspense`);case 19:return Ie(`SuspenseList`);case 0:case 15:return Re(e.type,!1);case 11:return Re(e.type.render,!1);case 1:return Re(e.type,!0);case 31:return Ie(`Activity`);case 30:return Ie(`ViewTransition`);default:return``}}function Be(e){try{var t=``,n=null;do t+=ze(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Ve=Object.prototype.hasOwnProperty,He=t.unstable_scheduleCallback,Ue=t.unstable_cancelCallback,We=t.unstable_shouldYield,Ge=t.unstable_requestPaint,Ke=t.unstable_now,qe=t.unstable_getCurrentPriorityLevel,Je=t.unstable_ImmediatePriority,N=t.unstable_UserBlockingPriority,Ye=t.unstable_NormalPriority,Xe=t.unstable_LowPriority,Ze=t.unstable_IdlePriority,Qe=t.log,$e=t.unstable_setDisableYieldValue,et=null,tt=null;function nt(e){if(typeof Qe==`function`&&$e(e),tt&&typeof tt.setStrictMode==`function`)try{tt.setStrictMode(et,e)}catch{}}var rt=Math.clz32?Math.clz32:ot,it=Math.log,at=Math.LN2;function ot(e){return e>>>=0,e===0?32:31-(it(e)/at|0)|0}var st=256,ct=262144,lt=4194304;function ut(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&-e;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 dt(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=ut(n))):i=ut(o):i=ut(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ut(n))):i=ut(o)):i=ut(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 ft(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function pt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function _t(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function vt(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=_r),br=` `,xr=!1;function Sr(e,t){switch(e){case`keyup`:return hr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Cr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var wr=!1;function Tr(e,t){switch(e){case`compositionend`:return Cr(t);case`keypress`:return t.which===32?(xr=!0,br):null;case`textInput`:return e=t.data,e===br&&xr?null:e;default:return null}}function Er(e,t){if(wr)return e===`compositionend`||!gr&&Sr(e,t)?(e=Rn(),Ln=In=Fn=null,wr=!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)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=Yr(n)}}function Zr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Zr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Qr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Jr(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=Jr(e.document)}return t}function $r(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 ei=Mn&&`documentMode`in document&&11>=document.documentMode,ti=null,ni=null,ri=null,ii=!1;function ai(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ii||ti==null||ti!==Jr(r)||(r=ti,`selectionStart`in r&&$r(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}),ri&&qr(ri,r)||(ri=r,r=Jf(ni,`onSelect`),0>=o,i-=o,ta=1<<32-rt(t)+i|n<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),I&&ra(i,h),l;if(d===null){for(;hg?(_=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),I&&ra(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 I&&ra(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(_.key===null?g:_.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)}),I&&ra(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===ae&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case re:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===ae){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),po(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===pe&&ao(l)===r.type){n(e,r.sibling),c=a(r,o.props),po(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===ae?(c=Hi(o.props.children,e.mode,c,o.key),po(c,o),c.return=e,e=c):(c=Vi(o.type,o.key,o.props,null,e.mode,c),po(c,o),c.return=e,e=c)}return s(e);case ie:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Gi(o,e.mode,c),c.return=e,e=c}return s(e);case pe:return o=ao(o),_(e,r,o,c)}if(Ce(o))return h(e,r,o,c);if(be(o)){if(l=be(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,fo(o),c);if(o.$$typeof===E)return _(e,r,Aa(e,o),c);mo(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=Ui(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{uo=0;var i=_(e,t,n,r);return lo=null,i}catch(t){if(t===$a||t===to)throw t;var a=Li(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var go=ho(!0),_o=ho(!1),vo=!1;function yo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function bo(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 xo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function So(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Pi(e),Ni(e,null,n),t}return Ai(e,r,t,n),Pi(e)}function Co(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,bt(e,n)}}function wo(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 To=!1;function Eo(){if(To){var e=Wa;if(e!==null)throw e}}function Do(e,t,n,r){To=!1;var i=e.updateQueue;vo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===Ua&&(To=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=w({},d,f);break a;case 2:vo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),sd|=o,e.lanes=o,e.memoizedState=d}}function Oo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function ko(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=D.T,s={};s.types=o===null?null:o.types,D.T=s,pc(e,!1,t,n);try{var c=i(),l=D.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?fc(e,t,qa(c,r),jd(e)):fc(e,t,r,jd(e))}catch(n){fc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{O.p=a,o!==null&&s.types!==null&&(o.types=s.types),D.T=o}}function nc(){}function rc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=ic(e).queue;tc(e,a,t,we,n===null?nc:function(){return ac(e),n(r)})}function ic(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:we,baseState:we,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ms,lastRenderedState:we},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ms,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ac(e){var t=ic(e);t.next===null&&(t=e.alternate.memoizedState),fc(e,t.next.queue,{},jd())}function oc(){return ka(sh)}function sc(){return B().memoizedState}function cc(){return B().memoizedState}function lc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=xo(n);var r=So(t,e,n);r!==null&&(Pd(r,t,n),Co(r,t,n)),t={cache:Ia()},e.payload=t;return}t=t.return}}function uc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},mc(e)?hc(t,n):(n=ji(e,t,n,r),n!==null&&(Pd(n,e,r),gc(n,t,r)))}function dc(e,t,n){fc(e,t,n,jd())}function fc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(mc(e))hc(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,Kr(s,o))return Ai(e,t,i,0),G===null&&ki(),!1}catch{}if(n=ji(e,t,i,r),n!==null)return Pd(n,e,r),gc(n,t,r),!0}return!1}function pc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},mc(e)){if(t)throw Error(i(479))}else t=ji(e,n,r,2),t!==null&&Pd(t,e,2)}function mc(e){var t=e.alternate;return e===L||t!==null&&t===L}function hc(e,t){Yo=Jo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function gc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bt(e,n)}}var _c={readContext:ka,use:fs,useCallback:z,useContext:z,useEffect:z,useImperativeHandle:z,useLayoutEffect:z,useInsertionEffect:z,useMemo:z,useReducer:z,useRef:z,useState:z,useDebugValue:z,useDeferredValue:z,useTransition:z,useSyncExternalStore:z,useId:z,useHostTransitionStatus:z,useFormState:z,useActionState:z,useOptimistic:z,useMemoCache:z,useCacheRefresh:z,useEffectEvent:z},vc={readContext:ka,use:fs,useCallback:function(e,t){return ls().memoizedState=[e,t===void 0?null:t],e},useContext:ka,useEffect:Hs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Bs(4194308,4,Js.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Bs(4194308,4,e,t)},useInsertionEffect:function(e,t){Bs(4,2,e,t)},useMemo:function(e,t){var n=ls();t=t===void 0?null:t;var r=e();if(Xo){nt(!0);try{e()}finally{nt(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ls();if(n!==void 0){var i=n(t);if(Xo){nt(!0);try{n(t)}finally{nt(!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=uc.bind(null,L,e),[r.memoizedState,e]},useRef:function(e){var t=ls();return e={current:e},t.memoizedState=e},useState:function(e){e=ws(e);var t=e.queue,n=dc.bind(null,L,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Xs,useDeferredValue:function(e,t){return $s(ls(),e,t)},useTransition:function(){var e=ws(!1);return e=tc.bind(null,L,e.queue,!0,!1),ls().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=L,a=ls();if(I){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),G===null)throw Error(i(349));q&127||ys(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Hs(xs.bind(null,r,o,e),[e]),r.flags|=2048,Rs(9,{destroy:void 0},bs.bind(null,r,o,n,t),null),n},useId:function(){var e=ls(),t=G.identifierPrefix;if(I){var n=na,r=ta;n=(r&~(1<<32-rt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Zo++,0<\/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[Dt]=t,o[Ot]=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(np(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&&gl(t)}}return V(t),t.subtreeFlags&=-33554433,_l(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&gl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Oe.current,ha(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ca,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Dt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||fa(t,!0)}else e=lp(e).createTextNode(r),e[Dt]=t,t.stateNode=e}return V(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=ha(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[Dt]=t}else ga(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;V(t),e=!1}else n=_a(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Vo(t),t):(Vo(t),null);if(t.flags&128)throw Error(i(558))}return V(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=ha(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[Dt]=t}else ga(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;V(t),a=!1}else a=_a(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Vo(t),t):(Vo(t),null)}return Vo(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),yl(t,t.updateQueue),V(t),null);case 4:return je(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,V(t),null;case 10:return Ca(t.type),V(t),null;case 19:if(Wo(t),r=t.memoizedState,r===null)return V(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)bl(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Go(e),o!==null){for(t.flags|=128,bl(r,!1),e=o.updateQueue,t.updateQueue=e,yl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Bi(n,e),n=n.sibling;return Uo(t,Ho.current&1|2),I&&ra(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ke()>_d&&(t.flags|=128,a=!0,bl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Go(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,yl(t,e),bl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!I)return V(t),null}else 2*Ke()-r.renderingStartTime>_d&&n!==536870912&&(t.flags|=128,a=!0,bl(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)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ke(),e.sibling=null,o=Ho.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||I?Uo(t,o):(n=o,M(Fo,t),M(Ho,n),Io===null&&(Io=t)),I&&ra(t,r.treeForkCount),e}return V(t),null;case 22:case 23:return Vo(t),Po(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(V(t),t.subtreeFlags&6&&(t.flags|=8192)):V(t),n=t.updateQueue,n!==null&&yl(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&&j(Ya),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ca(Fa),V(t),null;case 25:return null;case 30:return t.flags|=33554432,V(t),null}throw Error(i(156,t.tag))}function Sl(e,t){switch(oa(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ca(Fa),je(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ne(t),null;case 31:if(t.memoizedState!==null){if(Vo(t),t.alternate===null)throw Error(i(340));ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Vo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Wo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return je(),null;case 10:return Ca(t.type),null;case 22:case 23:return Vo(t),Po(),e!==null&&j(Ya),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ca(Fa),null;case 25:return null;default:return null}}function Cl(e,t){switch(oa(t),t.tag){case 3:Ca(Fa),je();break;case 26:case 27:case 5:Ne(t);break;case 4:je();break;case 31:t.memoizedState!==null&&Vo(t);break;case 13:Vo(t);break;case 19:Wo(t);break;case 10:Ca(t.type);break;case 22:case 23:Vo(t),Po(),e!==null&&j(Ya);break;case 24:Ca(Fa)}}function wl(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){Z(t,t.return,e)}}function Tl(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){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function El(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{ko(t,n)}catch(t){Z(e,e.return,t)}}}function Dl(e,t,n){n.props=Tc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Ol(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:var i=e.stateNode,a=Si(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function kl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(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){Z(e,t,n)}else n.current=null}}function Al(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[Dt]=e,Vt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Xr(s,h),v=Xr(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;sn?32:n,D.T=null,n=wd,wd=null;var o=bd,s=Sd;if(X=0,xd=bd=null,Sd=0,W&6)throw Error(i(331));var c=W;if(W|=4,Zu(o.current),Uu(o,o.current,s,n),W=c,Df(0,!1),tt&&typeof tt.onPostCommitFiberRoot==`function`)try{tt.onPostCommitFiberRoot(et,o)}catch{}return!0}finally{O.p=a,D.T=r,uf(e,t)}}function pf(e,t,n){t=qi(n,t),t=jc(e.stateNode,t,2),e=So(e,t,2),e!==null&&(_t(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(yd===null||!yd.has(r))){e=qi(n,e),n=Mc(2),r=So(t,n,2),r!==null&&(Nc(n,r,t,e),_t(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new td;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)||(ad=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>Ke()-hd?W&2?ld|=n:Vd(e,0):ld|=n,dd===q&&(dd=0)),Ef(e)}function gf(e,t){t===0&&(t=ht()),e=Mi(e,t),e!==null&&(_t(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(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),gf(e,n)}function yf(e,t){return He(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;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-rt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=q,a=dt(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||ft(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Ke(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}X!==0&&X!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=cn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Vt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+cn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+cn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+cn(n.imageSizes)+`"]`)):i+=`[href="`+cn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=w({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Ft]=!0,o.onload=o.onerror=function(){Ht(o)}),Vt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+cn(r)+`"][href="`+cn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=w({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Vt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Bt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=w({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Vt(c),np(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,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Bt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=w({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Vt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Bt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=w({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Vt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Oe.current)?bm(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`?(n=Pm(n.href),t=Bt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,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=Pm(n.href);var o=Bt(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(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,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`?(n=Rm(n),t=Bt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+cn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return w({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ft]){r.loading=1;return}}else t=e.createElement(`link`),t[Ft]=!0,t.onload=t.onerror=Ht.bind(null,t),np(t,`link`,n),Vt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+cn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+cn(n.href)+`"]`);if(r)return t.instance=r,Vt(r),r;var a=w({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Vt(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,Vt(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),Vt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,Vt(a),a):(r=n,(a=vm.get(o))&&(r=w({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Vt(a),np(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,Vm(r,n.precedence,e));return t.instance}function Vm(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 title`):null)}function qm(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 Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(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=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Vt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Vt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(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=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{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=h()})),_=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},b=c(u()),x=(0,b.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,b.createElement)(`svg`,{ref:c,...y,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:v(`lucide`,i),...s},[...o.map(([e,t])=>(0,b.createElement)(e,t)),...Array.isArray(a)?a:[a]])),S=(e,t)=>{let n=(0,b.forwardRef)(({className:n,...r},i)=>(0,b.createElement)(x,{ref:i,iconNode:t,className:v(`lucide-${_(e)}`,n),...r}));return n.displayName=`${e}`,n},ee=S(`Activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),te=S(`AudioLines`,[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]),C=S(`BookOpen`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),ne=S(`ChartColumn`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]]),w=S(`ChevronLeft`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),T=S(`ChevronRight`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),re=S(`Database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ie=S(`Download`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`7 10 12 15 17 10`,key:`2ggqvy`}],[`line`,{x1:`12`,x2:`12`,y1:`15`,y2:`3`,key:`1vk2je`}]]),ae=S(`FileSearch`,[[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3`,key:`ms7g94`}],[`path`,{d:`m9 18-1.5-1.5`,key:`1j6qii`}],[`circle`,{cx:`5`,cy:`14`,r:`3`,key:`ufru5t`}]]),oe=S(`FileText`,[[`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`,key:`1rqfz7`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),se=S(`GitBranch`,[[`line`,{x1:`6`,x2:`6`,y1:`3`,y2:`15`,key:`17qcm7`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M18 9a9 9 0 0 1-9 9`,key:`n2h4wq`}]]),ce=S(`GraduationCap`,[[`path`,{d:`M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z`,key:`j76jl0`}],[`path`,{d:`M22 10v6`,key:`1lu8f3`}],[`path`,{d:`M6 12.5V16a6 3 0 0 0 12 0v-3.5`,key:`1r8lef`}]]),E=S(`Layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),le=S(`LayoutGrid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),ue=S(`Network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),de=S(`Play`,[[`polygon`,{points:`6 3 20 12 6 21 6 3`,key:`1oa8hb`}]]),fe=S(`Presentation`,[[`path`,{d:`M2 3h20`,key:`91anmk`}],[`path`,{d:`M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3`,key:`2k9sn8`}],[`path`,{d:`m7 21 5-5 5 5`,key:`bip4we`}]]),pe=S(`RefreshCw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),me=S(`Search`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),he=S(`Settings`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),ge=S(`ShieldCheck`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),_e=S(`Sparkles`,[[`path`,{d:`M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z`,key:`4pj2yx`}],[`path`,{d:`M20 3v4`,key:`1olli1`}],[`path`,{d:`M22 5h-4`,key:`1gvqau`}],[`path`,{d:`M4 17v2`,key:`vumght`}],[`path`,{d:`M5 18H3`,key:`zchphs`}]]),ve=S(`SquareStack`,[[`path`,{d:`M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2`,key:`4i38lg`}],[`path`,{d:`M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2`,key:`mlte4a`}],[`rect`,{width:`8`,height:`8`,x:`14`,y:`14`,rx:`2`,key:`1fa9i4`}]]),ye=S(`StickyNote`,[[`path`,{d:`M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z`,key:`qazsjp`}],[`path`,{d:`M15 3v4a2 2 0 0 0 2 2h4`,key:`40519r`}]]),be=S(`Table2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]),xe=S(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),Se=S(`Upload`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`17 8 12 3 7 8`,key:`t8dd8p`}],[`line`,{x1:`12`,x2:`12`,y1:`3`,y2:`15`,key:`widbto`}]]),Ce=S(`Video`,[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]),D=S(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),O=c(g(),1),we=`00000000-0000-0000-0000-000000000001`;async function k(e,t){let n=await fetch(e,{...t,headers:{"Content-Type":`application/json`,"X-Proofline-Workspace-ID":we,...t?.headers}});if(!n.ok){let e=(await n.json().catch(()=>({}))).detail,t=typeof e==`string`?e:typeof e?.code==`string`?e.code:`Request failed (${n.status})`;throw Error(t)}return n.status===204?void 0:n.json()}var A={setWorkspace:e=>{we=e},workspaces:()=>k(`/api/v1/workspaces`),overview:()=>k(`/api/v1/overview`),decisionHealthOverview:()=>k(`/api/v1/decision-health/overview`),decisionImpacts:(e=we,t)=>k(`/api/v1/decision-impacts${t?`?as_of=${encodeURIComponent(t)}`:``}`,{headers:{"X-Proofline-Workspace-ID":e}}),decisionImpactSummary:(e=we,t)=>k(`/api/v1/decision-impacts/summary${t?`?as_of=${encodeURIComponent(t)}`:``}`,{headers:{"X-Proofline-Workspace-ID":e}}),decisionImpactSnapshot:(e=we,t)=>k(`/api/v1/decision-impacts/snapshot${t?`?as_of=${encodeURIComponent(t)}`:``}`,{headers:{"X-Proofline-Workspace-ID":e}}),decisionReviews:(e={})=>{let t=new URLSearchParams;return e.state&&t.set(`state`,e.state),e.anchorState&&t.set(`anchor_state`,e.anchorState),e.severity&&t.set(`severity`,e.severity),t.set(`limit`,String(e.limit??100)),k(`/api/v1/decision-reviews?${t.toString()}`)},decisionReview:e=>k(`/api/v1/decision-reviews/${e}`),refreshDecisionReviews:()=>k(`/api/v1/decision-reviews/refresh`,{method:`POST`}),updateDecisionReview:(e,t)=>k(`/api/v1/decision-reviews/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),reanchorDecisionReview:(e,t)=>k(`/api/v1/decision-reviews/${e}/reanchor`,{method:`POST`,body:JSON.stringify(t)}),resolveDecisionReview:(e,t)=>k(`/api/v1/decision-reviews/${e}/resolve`,{method:`POST`,body:JSON.stringify(t)}),sources:()=>k(`/api/v1/sources`),notes:()=>k(`/api/v1/notes`),studyCards:()=>k(`/api/v1/study-cards?due_only=true`),studioArtifacts:()=>k(`/api/v1/studio-artifacts`),createStudioArtifact:(e,t)=>k(`/api/v1/studio-artifacts`,{method:`POST`,body:JSON.stringify({source_id:e,kind:t})}),deleteStudioArtifact:e=>k(`/api/v1/studio-artifacts/${e}`,{method:`DELETE`}),downloadStudioArtifact:async e=>{let t=await fetch(`/api/v1/studio-artifacts/${e}/download`,{headers:{"X-Proofline-Workspace-ID":we}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.detail??`Download failed (${t.status})`)}let n=(t.headers.get(`Content-Disposition`)??``).match(/filename="([^"]+)"/)?.[1]??`proofline-studio.zip`,r=URL.createObjectURL(await t.blob()),i=document.createElement(`a`);i.href=r,i.download=n,i.click(),URL.revokeObjectURL(r)},actionProposals:()=>k(`/api/v1/action-proposals`),createActionProposal:e=>k(`/api/v1/action-proposals`,{method:`POST`,body:JSON.stringify({question:e})}),reviewActionProposal:(e,t)=>k(`/api/v1/action-proposals/${e}`,{method:`PATCH`,body:JSON.stringify({status:t})}),createStudyCards:e=>k(`/api/v1/sources/${e}/study-cards`,{method:`POST`}),reviewStudyCard:(e,t)=>k(`/api/v1/study-cards/${e}/reviews`,{method:`POST`,body:JSON.stringify({rating:t})}),createNote:(e,t)=>k(`/api/v1/notes`,{method:`POST`,body:JSON.stringify({title:e,content:t})}),updateNote:(e,t,n)=>k(`/api/v1/notes/${e}`,{method:`PUT`,body:JSON.stringify({title:t,content:n})}),noteBacklinks:e=>k(`/api/v1/notes/${e}/backlinks`),noteVersions:e=>k(`/api/v1/sources/${e}/versions`),deletionImpact:e=>k(`/api/v1/sources/${e}/deletion-impact`),deleteSource:e=>k(`/api/v1/sources/${e}`,{method:`DELETE`}),jobs:()=>k(`/api/v1/jobs?limit=200`),modelRuns:(e={})=>{let t=new URLSearchParams({limit:String(e.limit??100)});return e.status&&t.set(`status`,e.status),e.operation&&t.set(`operation`,e.operation),e.providerId&&t.set(`provider_id`,e.providerId),e.parentRunId&&t.set(`parent_run_id`,e.parentRunId),k(`/api/v1/model/runs?${t.toString()}`)},modelRun:e=>k(`/api/v1/model/runs/${e}`),providerConfiguration:()=>k(`/api/v1/model/configuration`),saveProviderConfiguration:e=>k(`/api/v1/model/configuration`,{method:`PUT`,body:JSON.stringify(e)}),generationProviderStatus:()=>k(`/api/v1/model/provider?check_health=true`),embeddingProviderStatus:()=>k(`/api/v1/model/embedding-provider?check_health=true`),rerankingProviderStatus:()=>k(`/api/v1/model/reranking-provider`),retryJob:e=>k(`/api/v1/jobs/${e}/retry`,{method:`POST`}),source:e=>k(`/api/v1/sources/${e}`),sourceVersion:(e,t)=>k(`/api/v1/sources/${e}/versions/${t}`),memories:()=>k(`/api/v1/memories`),extractMemories:e=>k(`/api/v1/sources/${e}/extract-memories`,{method:`POST`}),decisionTimeline:e=>k(`/api/v1/decisions/${e}/timeline`),updateMemory:(e,t)=>k(`/api/v1/memories/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),search:async(e,t)=>{let n=new URLSearchParams({q:e});for(let e of t?.sourceIds??[])n.append(`source_id`,e);return t?.ingestedFrom&&n.set(`ingested_from`,t.ingestedFrom),t?.ingestedBefore&&n.set(`ingested_before`,t.ingestedBefore),t?.rerank&&n.set(`rerank`,`true`),(await k(`/api/v1/search?${n.toString()}`)).hits},answer:(e,t)=>k(`/api/v1/answers`,{method:`POST`,body:JSON.stringify({question:e,...t?.sourceIds.length?{source_ids:t.sourceIds}:{},...t?.ingestedFrom?{ingested_from:t.ingestedFrom}:{},...t?.ingestedBefore?{ingested_before:t.ingestedBefore}:{},...t?.rerank?{rerank:!0}:{}})}),importSource:(e,t,n)=>k(`/api/v1/sources`,{method:`POST`,body:JSON.stringify({title:e,content:t,kind:`markdown`,uri:n})}),importGitRepository:e=>k(`/api/v1/git-repositories`,{method:`POST`,body:JSON.stringify({path:e})})},Te=o((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})),j=o(((e,t)=>{t.exports=Te()}))();function M(e){return e.slice(0,12)}function Ee({detail:e,pending:t,error:n,onClose:r,onAcknowledge:i,onWaive:a,onReanchor:o,onObsolete:s,onSupersede:c}){let[l,u]=(0,b.useState)(``),[d,f]=(0,b.useState)(``),[p,m]=(0,b.useState)(``),[h,g]=(0,b.useState)(``),_=[`open`,`acknowledged`].includes(e.review.state),v=`${e.decision.status[0]?.toUpperCase()??``}${e.decision.status.slice(1)}`;return(0,j.jsxs)(`aside`,{className:`decision-health-drawer`,role:`dialog`,"aria-modal":`true`,"aria-label":`Decision review detail`,children:[(0,j.jsxs)(`header`,{children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`DETERMINISTIC REVIEW`}),(0,j.jsx)(`h2`,{children:e.decision.title}),(0,j.jsxs)(`span`,{className:`decision-health-status`,children:[v,_?` · review required`:` · ${e.review.state}`]})]}),(0,j.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Close review detail`,children:(0,j.jsx)(D,{size:19})})]}),(0,j.jsx)(`p`,{className:`decision-health-statement`,children:e.decision.statement}),(0,j.jsxs)(`dl`,{className:`decision-health-facts`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Anchor`}),(0,j.jsx)(`dd`,{children:e.review.anchor_state})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Policy`}),(0,j.jsx)(`dd`,{children:e.policy.blocking?`Blocking`:`Advisory`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Fingerprint`}),(0,j.jsx)(`dd`,{title:e.review.finding_fingerprint,children:M(e.review.finding_fingerprint)})]})]}),(0,j.jsxs)(`section`,{className:`decision-health-evidence`,"aria-label":`Cited evidence`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`CITED VERSION`}),(0,j.jsxs)(`strong`,{children:[`L`,e.cited.start_line,`–`,e.cited.end_line,` · `,M(e.cited.content_sha256)]})]}),(0,j.jsx)(`blockquote`,{children:e.cited.quote})]}),(0,j.jsxs)(`section`,{className:`decision-health-evidence current`,"aria-label":`Current candidate`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`CURRENT VERSION`}),(0,j.jsx)(`strong`,{children:M(e.current.content_sha256)})]}),e.current.candidate?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`small`,{children:[`Suggested only · L`,e.current.candidate.start_line,`–`,e.current.candidate.end_line]}),(0,j.jsx)(`blockquote`,{children:e.current.candidate.quote})]}):(0,j.jsx)(`p`,{children:`No deterministic re-anchor candidate.`})]}),n?(0,j.jsx)(`p`,{className:`decision-health-message error`,role:`alert`,children:n}):null,_?(0,j.jsxs)(`section`,{className:`decision-health-actions`,"aria-label":`Review actions`,children:[(0,j.jsx)(`button`,{className:`primary-action`,type:`button`,disabled:t||e.review.state!==`open`,onClick:()=>void i(),children:`Acknowledge`}),(0,j.jsxs)(`label`,{children:[`Waiver reason`,(0,j.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),rows:2})]}),(0,j.jsx)(`button`,{type:`button`,disabled:t||!l.trim(),onClick:()=>void a(l.trim()),children:`Waive`}),e.current.candidate?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`label`,{children:[`Re-anchor reason`,(0,j.jsx)(`textarea`,{value:d,onChange:e=>f(e.target.value),rows:2})]}),(0,j.jsx)(`button`,{type:`button`,disabled:t||!d.trim(),onClick:()=>{window.confirm(`Bind this decision to the exact current candidate span?`)&&o(d.trim())},children:`Re-anchor candidate`})]}):null,(0,j.jsx)(`button`,{className:`danger-action`,type:`button`,disabled:t,onClick:()=>{window.confirm(`Mark this accepted decision obsolete?`)&&s()},children:`Mark obsolete`}),(0,j.jsxs)(`details`,{children:[(0,j.jsx)(`summary`,{children:`Supersede with another accepted decision`}),(0,j.jsxs)(`label`,{children:[`Replacement decision ID`,(0,j.jsx)(`input`,{value:p,onChange:e=>m(e.target.value)})]}),(0,j.jsxs)(`label`,{children:[`Supersede reason`,(0,j.jsx)(`textarea`,{value:h,onChange:e=>g(e.target.value),rows:2})]}),(0,j.jsx)(`button`,{type:`button`,disabled:t||!p.trim()||!h.trim(),onClick:()=>{window.confirm(`Supersede this decision with the accepted replacement?`)&&c(p.trim(),h.trim())},children:`Supersede decision`})]})]}):null,(0,j.jsxs)(`section`,{className:`decision-health-audit`,"aria-label":`Review audit timeline`,children:[(0,j.jsx)(`h3`,{children:`Audit timeline`}),(0,j.jsx)(`ol`,{children:e.audit_events.map(e=>(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`strong`,{children:e.action.replaceAll(`_`,` `)}),(0,j.jsxs)(`span`,{children:[e.actor,` · `,new Date(e.created_at).toLocaleString()]})]},e.id))})]})]})}function De(e){return e instanceof Error?e.message:`Decision health unavailable`}function Oe(e){return`${e[0]?.toUpperCase()??``}${e.slice(1)}`}function ke(e,t){let n=new Set(e.map(e=>e.root_review_id)).size,r=new Set(e.map(e=>e.impacted_decision_id)).size,i=e.reduce((e,t)=>Math.max(e,t.depth),0);if(e.some(e=>e.evaluated_at!==t.evaluated_at)||t.finding_count!==e.length||t.root_review_count!==n||t.impacted_decision_count!==r||t.max_depth!==i)throw Error(`impact_snapshot_mismatch`)}function Ae({overview:e,workspaceId:t,onOverviewChanged:n}){let[r,i]=(0,b.useState)([]),[a,o]=(0,b.useState)(``),[s,c]=(0,b.useState)(``),[l,u]=(0,b.useState)(``),[d,f]=(0,b.useState)(!0),[p,m]=(0,b.useState)(``),[h,g]=(0,b.useState)(null),[_,v]=(0,b.useState)(null),[y,x]=(0,b.useState)(!1),[S,ee]=(0,b.useState)(``),[te,C]=(0,b.useState)(!1),[ne,w]=(0,b.useState)([]),[T,re]=(0,b.useState)(null),[ie,ae]=(0,b.useState)(!0),[oe,se]=(0,b.useState)(``),ce=(0,b.useRef)(0),E={...a?{state:a}:{},...s?{anchorState:s}:{},...l?{severity:l}:{},limit:100},le=(0,b.useCallback)(async()=>{if(t){f(!0);try{i(await A.decisionReviews(E)),m(``)}catch(e){m(De(e))}finally{f(!1)}}},[t,a,s,l]),ue=(0,b.useCallback)(async()=>{let e=++ce.current;if(w([]),re(null),se(``),!t){ae(!1);return}ae(!0);try{let n=new Date().toISOString(),r=await A.decisionImpactSnapshot(t,n);if(e!==ce.current)return;let i=r.findings,a=r.summary;ke(i,a),w(i),re(a),se(``)}catch(t){if(e!==ce.current)return;w([]),re(null),se(De(t))}finally{e===ce.current&&ae(!1)}},[t]);(0,b.useEffect)(()=>{g(null),v(null),le()},[le,t]),(0,b.useEffect)(()=>(ue(),()=>{ce.current+=1}),[ue,t]);async function de(e){g(e),v(null),x(!0),ee(``);try{v(await A.decisionReview(e))}catch(e){ee(De(e))}finally{x(!1)}}async function fe(e){let[t]=await Promise.all([A.decisionReview(e),le(),ue(),n()]);v(t)}async function me(e){if(h){C(!0),ee(``);try{await e(),await fe(h)}catch(e){ee(De(e))}finally{C(!1)}}}async function he(){C(!0);try{await A.refreshDecisionReviews(),await Promise.all([le(),ue(),n()]),m(``)}catch(e){m(De(e))}finally{C(!1)}}return(0,j.jsxs)(`section`,{className:`content decision-health-view`,"aria-label":`Decision health cockpit`,children:[(0,j.jsxs)(`div`,{className:`decision-health-metrics`,"aria-label":`Decision health metrics`,children:[(0,j.jsxs)(`article`,{children:[(0,j.jsx)(`strong`,{children:e.healthy_accepted}),(0,j.jsx)(`span`,{children:`Healthy accepted`})]}),(0,j.jsxs)(`article`,{className:`attention`,children:[(0,j.jsx)(`strong`,{children:e.review_required}),(0,j.jsx)(`span`,{children:`Review required`})]}),(0,j.jsxs)(`article`,{children:[(0,j.jsx)(`strong`,{children:e.overdue}),(0,j.jsx)(`span`,{children:`Overdue`})]}),(0,j.jsxs)(`article`,{children:[(0,j.jsx)(`strong`,{children:e.waived}),(0,j.jsx)(`span`,{children:`Waived`})]}),(0,j.jsxs)(`article`,{className:ne.length?`attention`:``,children:[(0,j.jsx)(`strong`,{children:T?.impacted_decision_count??0}),(0,j.jsx)(`span`,{children:`Transitively impacted`})]}),(0,j.jsxs)(`article`,{children:[(0,j.jsx)(`strong`,{children:T?.max_depth??0}),(0,j.jsx)(`span`,{children:`Maximum impact depth`})]})]}),(0,j.jsxs)(`section`,{className:`decision-impact-panel`,"aria-labelledby":`decision-impact-title`,children:[(0,j.jsxs)(`header`,{children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`EXPLICIT DEPENDENCY GRAPH`}),(0,j.jsx)(`h2`,{id:`decision-impact-title`,children:`Transitive impact paths`})]}),T?(0,j.jsxs)(`time`,{dateTime:T.evaluated_at,children:[`Evaluated `,new Date(T.evaluated_at).toLocaleString()]}):null]}),ie?(0,j.jsx)(`p`,{className:`decision-impact-state`,children:`Loading transitive impacts…`}):null,oe?(0,j.jsx)(`p`,{role:`alert`,"aria-label":`Transitive impact error`,className:`decision-impact-state error`,children:oe}):null,!ie&&!oe&&ne.length===0?(0,j.jsx)(`p`,{className:`decision-impact-state`,children:`No transitive impacts.`}):null,!ie&&!oe&&ne.length?(0,j.jsx)(`ol`,{className:`decision-impact-list`,children:ne.map(e=>(0,j.jsxs)(`li`,{children:[(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`strong`,{children:[e.root_decision_title,` → `,e.impacted_decision_title]}),(0,j.jsxs)(`span`,{children:[`Depth `,e.depth,` · `,e.relation_kinds.join(` → `)]})]}),(0,j.jsx)(`code`,{children:e.decision_path.join(` → `)})]},e.fingerprint))}):null]}),(0,j.jsxs)(`div`,{className:`decision-health-toolbar`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`REVIEW INBOX`}),(0,j.jsx)(`h2`,{children:`Evidence drift requiring human judgment`}),(0,j.jsx)(`p`,{children:`Decision status remains unchanged until you resolve the evidence binding.`})]}),(0,j.jsxs)(`button`,{type:`button`,disabled:te,onClick:()=>void he(),children:[(0,j.jsx)(pe,{size:15}),` Refresh ledger`]})]}),(0,j.jsxs)(`div`,{className:`decision-health-filters`,"aria-label":`Review filters`,children:[(0,j.jsxs)(`label`,{children:[`Review state`,(0,j.jsxs)(`select`,{value:a,onChange:e=>o(e.target.value),children:[(0,j.jsx)(`option`,{value:``,children:`All`}),[`open`,`acknowledged`,`resolved`,`waived`,`superseded`].map(e=>(0,j.jsx)(`option`,{children:e},e))]})]}),(0,j.jsxs)(`label`,{children:[`Anchor state`,(0,j.jsxs)(`select`,{value:s,onChange:e=>c(e.target.value),children:[(0,j.jsx)(`option`,{value:``,children:`All`}),[`moved`,`ambiguous`,`changed`,`deleted`].map(e=>(0,j.jsx)(`option`,{children:e},e))]})]}),(0,j.jsxs)(`label`,{children:[`Severity`,(0,j.jsxs)(`select`,{value:l,onChange:e=>u(e.target.value),children:[(0,j.jsx)(`option`,{value:``,children:`All`}),(0,j.jsx)(`option`,{value:`warning`,children:`warning`}),(0,j.jsx)(`option`,{value:`error`,children:`error`})]})]})]}),d?(0,j.jsx)(`p`,{role:`status`,className:`decision-health-message`,children:`Loading decision reviews…`}):null,p?(0,j.jsx)(`p`,{role:`alert`,className:`decision-health-message error`,children:p}):null,!d&&!p&&r.length===0?(0,j.jsx)(`p`,{role:`status`,className:`decision-health-empty`,children:`No reviews match these filters.`}):null,!d&&!p&&r.length?(0,j.jsx)(`div`,{className:`decision-health-table-wrap`,children:(0,j.jsxs)(`table`,{className:`decision-health-table`,children:[(0,j.jsx)(`thead`,{children:(0,j.jsxs)(`tr`,{children:[(0,j.jsx)(`th`,{children:`Decision`}),(0,j.jsx)(`th`,{children:`Anchor`}),(0,j.jsx)(`th`,{children:`Severity`}),(0,j.jsx)(`th`,{children:`Opened`}),(0,j.jsx)(`th`,{"aria-label":`Action`})]})}),(0,j.jsx)(`tbody`,{children:r.map(e=>(0,j.jsxs)(`tr`,{children:[(0,j.jsxs)(`td`,{children:[(0,j.jsxs)(`strong`,{children:[Oe(e.decision_status),` · review required`]}),(0,j.jsx)(`small`,{children:e.decision_id})]}),(0,j.jsx)(`td`,{children:(0,j.jsx)(`span`,{className:`anchor-badge ${e.anchor_state}`,children:e.anchor_state})}),(0,j.jsx)(`td`,{children:e.severity}),(0,j.jsx)(`td`,{children:(0,j.jsx)(`time`,{dateTime:e.opened_at,children:new Date(e.opened_at).toLocaleDateString()})}),(0,j.jsx)(`td`,{children:(0,j.jsx)(`button`,{type:`button`,onClick:()=>void de(e.id),"aria-label":`Open review ${e.id}`,children:`Review`})})]},e.id))})]})}):null,h&&y?(0,j.jsx)(`div`,{className:`decision-health-drawer`,role:`status`,children:`Loading review detail…`}):null,h&&!y&&!_&&S?(0,j.jsx)(`aside`,{className:`decision-health-drawer`,role:`alert`,children:S}):null,_?(0,j.jsx)(Ee,{detail:_,pending:te,error:S,onClose:()=>{g(null),v(null)},onAcknowledge:()=>me(()=>A.updateDecisionReview(_.review.id,{action:`acknowledge`})),onWaive:e=>me(()=>A.updateDecisionReview(_.review.id,{action:`waive`,reason:e})),onReanchor:e=>{let t=_.current.candidate;return t?me(()=>A.reanchorDecisionReview(_.review.id,{expected_current_source_version_id:_.current.source_version_id,start_offset:t.start_offset,end_offset:t.end_offset,reason:e})):Promise.resolve()},onObsolete:()=>me(()=>A.resolveDecisionReview(_.review.id,{action:`obsolete_decision`,reason:`Decision no longer applies.`})),onSupersede:(e,t)=>me(()=>A.resolveDecisionReview(_.review.id,{action:`supersede_decision`,replacement_decision_id:e,reason:t}))}):null]})}var je=[{kind:`audio_overview`,label:`Audio overview`,description:`Listen to a grounded narration`,tone:`blue`,icon:te},{kind:`presentation`,label:`Presentation`,description:`Turn evidence into slides`,tone:`sand`,icon:fe},{kind:`video_overview`,label:`Video overview`,description:`Preview an evidence storyboard`,tone:`green`,icon:Ce},{kind:`mind_map`,label:`Mind map`,description:`Explore the source as branches`,tone:`purple`,icon:ue},{kind:`report`,label:`Report`,description:`Build a structured source brief`,tone:`gold`,icon:oe},{kind:`flashcards`,label:`Flashcards`,description:`Review grounded concepts`,tone:`coral`,icon:E},{kind:`quiz`,label:`Quiz`,description:`Check source comprehension`,tone:`cyan`,icon:ve},{kind:`infographic`,label:`Infographic`,description:`Scan key facts and metrics`,tone:`magenta`,icon:ne},{kind:`data_table`,label:`Data table`,description:`Inspect evidence row by row`,tone:`indigo`,icon:be}];function Me({artifacts:e,sources:t,onChanged:n}){let[r,i]=(0,b.useState)(t[0]?.id??``),[a,o]=(0,b.useState)(e[0]?.id??null),[s,c]=(0,b.useState)(null),[l,u]=(0,b.useState)(``),d=e.find(e=>e.id===a)??null;(0,b.useEffect)(()=>{!r&&t[0]&&i(t[0].id)},[r,t]),(0,b.useEffect)(()=>{a&&e.some(e=>e.id===a)||o(e[0]?.id??null)},[e,a]);async function f(e){if(r){c(e),u(``);try{let t=await A.createStudioArtifact(r,e);o(t.id),u(`${t.title} is ready with ${t.citations.length} exact citations.`),await n()}catch(e){u(e instanceof Error?e.message:`Could not create Studio artifact`)}finally{c(null)}}}async function p(e){await A.deleteStudioArtifact(e.id),o(null),u(`${e.title} deleted.`),await n()}return(0,j.jsxs)(`section`,{className:`content studio-view`,"aria-label":`Evidence-backed Studio`,children:[(0,j.jsxs)(`div`,{className:`studio-intro`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`EVIDENCE STUDIO`}),(0,j.jsx)(`h2`,{children:`Turn sources into learning artifacts`}),(0,j.jsx)(`p`,{children:`Every generated section points to an immutable source version and exact source lines.`})]}),(0,j.jsxs)(`label`,{className:`studio-source`,htmlFor:`studio-source`,children:[`Source`,(0,j.jsx)(`select`,{id:`studio-source`,value:r,onChange:e=>i(e.target.value),children:t.map(e=>(0,j.jsx)(`option`,{value:e.id,children:e.title},e.id))})]})]}),(0,j.jsx)(`div`,{className:`studio-grid`,children:je.map(({kind:e,label:t,description:n,tone:i,icon:a})=>(0,j.jsxs)(`button`,{className:`studio-tool studio-tool-${i}`,type:`button`,disabled:!r||s!==null,onClick:()=>void f(e),"aria-label":`Create ${t}`,children:[(0,j.jsxs)(`span`,{className:`studio-tool-copy`,children:[(0,j.jsx)(a,{size:23,strokeWidth:1.9}),(0,j.jsx)(`strong`,{children:s===e?`Creating…`:t}),(0,j.jsx)(`small`,{children:n})]}),(0,j.jsx)(`span`,{className:`studio-tool-arrow`,"aria-hidden":`true`,children:(0,j.jsx)(T,{size:22})})]},e))}),l&&(0,j.jsx)(`p`,{className:`studio-message`,role:`status`,children:l}),e.length>0&&(0,j.jsxs)(`div`,{className:`studio-library`,"aria-label":`Saved Studio artifacts`,children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`SAVED IN THIS WORKSPACE`}),(0,j.jsx)(`div`,{children:e.map(e=>(0,j.jsxs)(`button`,{type:`button`,className:e.id===a?`active`:``,onClick:()=>o(e.id),children:[(0,j.jsx)(`strong`,{children:e.title}),(0,j.jsxs)(`small`,{children:[e.citations.length,` citations · `,e.generation_method]})]},e.id))})]}),d&&(0,j.jsx)(Ne,{artifact:d,onDelete:()=>void p(d),onMessage:u}),!d&&e.length===0&&(0,j.jsx)(`div`,{className:`empty-card studio-empty`,children:`Choose a source and create your first Studio artifact.`})]})}function Ne({artifact:e,onDelete:t,onMessage:n}){let[r,i]=(0,b.useState)(0),[a,o]=(0,b.useState)(null),[s,c]=(0,b.useState)({}),[l,u]=(0,b.useState)({}),d=e.content.items,f=[`slides`,`storyboard`].includes(e.content.format),p=f?d.slice(r,r+1):d;(0,b.useEffect)(()=>{i(0),o(null),c({}),u({})},[e.id]);let m=(0,b.useMemo)(()=>[e.title,e.content.summary,...d.map(e=>e.body)].join(`. `),[e,d]);function h(t){o(e.citations.find(e=>e.ordinal===t.citation)??null)}function g(){`speechSynthesis`in window&&(window.speechSynthesis.cancel(),window.speechSynthesis.speak(new SpeechSynthesisUtterance(m)))}async function _(){try{await A.downloadStudioArtifact(e.id),n(`${e.title} evidence package downloaded.`)}catch(e){n(e instanceof Error?e.message:`Could not download artifact`)}}return(0,j.jsxs)(`article`,{className:`studio-preview studio-format-${e.content.format}`,children:[(0,j.jsxs)(`header`,{children:[(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`eyebrow`,children:[e.kind.replaceAll(`_`,` `).toUpperCase(),` · READY`]}),(0,j.jsx)(`h2`,{children:e.title}),(0,j.jsx)(`p`,{children:e.content.summary})]}),(0,j.jsxs)(`div`,{className:`studio-preview-actions`,children:[e.kind===`audio_overview`&&(0,j.jsxs)(`button`,{type:`button`,onClick:g,children:[(0,j.jsx)(de,{size:15}),` Play narration`]}),(0,j.jsxs)(`button`,{type:`button`,onClick:()=>void _(),children:[(0,j.jsx)(ie,{size:15}),` Download`]}),(0,j.jsx)(`button`,{className:`studio-delete`,type:`button`,onClick:t,"aria-label":`Delete ${e.title}`,children:(0,j.jsx)(xe,{size:16})})]})]}),e.content.format===`table`?(0,j.jsxs)(`div`,{className:`studio-data-table`,role:`table`,"aria-label":e.title,children:[(0,j.jsx)(`div`,{className:`studio-data-row studio-data-head`,role:`row`,children:e.content.columns?.map(e=>(0,j.jsx)(`strong`,{role:`columnheader`,children:e},e))}),d.map(e=>(0,j.jsx)(`button`,{className:`studio-data-row`,role:`row`,type:`button`,onClick:()=>h(e),children:e.cells?.map(e=>(0,j.jsx)(`span`,{role:`cell`,children:e},e))},e.citation))]}):e.content.format===`branches`?(0,j.jsxs)(`div`,{className:`mind-map-view`,children:[(0,j.jsx)(`strong`,{children:e.source_title}),(0,j.jsx)(`ul`,{children:d.map(e=>(0,j.jsx)(`li`,{children:(0,j.jsx)(`button`,{type:`button`,onClick:()=>h(e),children:e.title})},e.citation))})]}):(0,j.jsx)(`div`,{className:`studio-preview-items`,children:p.map((t,n)=>{let i=f?r:n;return(0,j.jsxs)(`section`,{className:`studio-preview-item`,children:[(0,j.jsx)(`span`,{className:`studio-item-number`,children:String(i+1).padStart(2,`0`)}),(0,j.jsx)(`h3`,{children:t.title}),e.content.format===`quiz`&&t.options?(0,j.jsxs)(`div`,{className:`quiz-options`,children:[t.options.map(e=>(0,j.jsx)(`button`,{type:`button`,className:s[i]===e?`selected`:``,onClick:()=>c(t=>({...t,[i]:e})),children:e},e)),s[i]&&(0,j.jsx)(`strong`,{children:s[i]===t.answer?`Correct — supported by the cited span.`:`Try again and inspect the evidence.`})]}):e.content.format===`flashcards`?(0,j.jsx)(`button`,{className:`flashcard-answer`,type:`button`,onClick:()=>u(e=>({...e,[i]:!e[i]})),children:l[i]?t.answer:`Reveal grounded answer`}):(0,j.jsx)(`p`,{children:t.body}),(0,j.jsxs)(`button`,{className:`citation-link`,type:`button`,onClick:()=>h(t),children:[`Evidence `,t.citation+1]})]},`${t.citation}-${t.title}`)})}),f&&d.length>1&&(0,j.jsxs)(`div`,{className:`studio-pager`,children:[(0,j.jsx)(`button`,{type:`button`,"aria-label":`Previous item`,disabled:r===0,onClick:()=>i(e=>e-1),children:(0,j.jsx)(w,{size:18})}),(0,j.jsxs)(`span`,{children:[r+1,` / `,d.length]}),(0,j.jsx)(`button`,{type:`button`,"aria-label":`Next item`,disabled:r===d.length-1,onClick:()=>i(e=>e+1),children:(0,j.jsx)(T,{size:18})})]}),a&&(0,j.jsxs)(`aside`,{className:`studio-citation`,"aria-label":`Exact Studio evidence`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`span`,{className:`eyebrow`,children:[`EXACT EVIDENCE · L`,a.start_line,`–`,a.end_line]}),(0,j.jsx)(`strong`,{children:a.source_title}),(0,j.jsxs)(`small`,{children:[`Immutable version `,a.source_version_id.slice(0,8)]})]}),(0,j.jsx)(`blockquote`,{children:a.quote}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>o(null),children:`Close evidence`})]})]})}function Pe(){let[e,t]=(0,b.useState)(`decision health`),[n,r]=(0,b.useState)({sources:0,chunks:0,decisions:0,memories:0,evidence:0}),[i,a]=(0,b.useState)({healthy_accepted:0,review_required:0,overdue:0,waived:0}),[o,s]=(0,b.useState)([]),[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)([]),[f,p]=(0,b.useState)([]),[m,h]=(0,b.useState)([]),[g,_]=(0,b.useState)([]),[v,y]=(0,b.useState)([]),[x,S]=(0,b.useState)(null),[te,ne]=(0,b.useState)(!1),[w,T]=(0,b.useState)(``),[re,ie]=(0,b.useState)([]),[ae,oe]=(0,b.useState)(``),E=(0,b.useCallback)(async()=>{try{let[e,t,n,i,o,c,u,f,m]=await Promise.all([A.overview(),A.decisionHealthOverview?.()??Promise.resolve({healthy_accepted:0,review_required:0,overdue:0,waived:0}),A.sources(),A.notes(),A.studyCards(),A.studioArtifacts?.()??Promise.resolve([]),A.actionProposals(),A.memories(),A.jobs()]);r(e),a(t),s(n),l(i),d(o),p(c),h(u),_(f),y(m),T(``)}catch(e){T(e instanceof Error?e.message:`Cannot reach Proofline API`)}},[]),ue=(0,b.useCallback)(async()=>{a(await A.decisionHealthOverview())},[]);(0,b.useEffect)(()=>{(async()=>{try{let e=await A.workspaces(),t=e[0]?.id??``;ie(e),oe(t),t&&A.setWorkspace(t),await E()}catch(e){T(e instanceof Error?e.message:`Cannot reach Proofline API`)}})()},[E]);async function de(e){ne(!0);try{await A.importSource(e.name,await e.text(),`file://${e.name}`),await E(),t(`memories`)}catch(e){T(e instanceof Error?e.message:`Import failed`)}finally{ne(!1)}}let fe=e=>[`failed`,`dead_letter`].includes(e.state),pe=Ye(v).some(e=>!!e.source_id&&fe(e))||v.some(e=>!e.source_id&&fe(e));return(0,j.jsxs)(`div`,{className:`app-shell`,children:[(0,j.jsxs)(`aside`,{className:`sidebar`,children:[(0,j.jsxs)(`div`,{className:`brand`,children:[(0,j.jsx)(`span`,{className:`brand-mark`,children:`P`}),(0,j.jsx)(`span`,{children:`Proofline`})]}),(0,j.jsxs)(`div`,{className:`workspace`,children:[(0,j.jsx)(`span`,{children:`LOCAL WORKSPACE`}),(0,j.jsx)(`label`,{htmlFor:`workspace-select`,className:`sr-only`,children:`Active workspace`}),(0,j.jsx)(`select`,{id:`workspace-select`,"aria-label":`Active workspace`,value:ae,disabled:re.length<2,onChange:e=>{let t=e.target.value;A.setWorkspace(t),oe(t),S(null),E()},children:re.map(e=>(0,j.jsx)(`option`,{value:e.id,children:e.title},e.id))})]}),(0,j.jsxs)(`nav`,{"aria-label":`Primary navigation`,children:[(0,j.jsx)(Fe,{icon:(0,j.jsx)(ge,{size:18}),active:e===`decision health`,onClick:()=>t(`decision health`),count:i.review_required,children:`Decision Health`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(ye,{size:18}),active:e===`notes`,onClick:()=>t(`notes`),count:c.length,children:`Notes`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(ce,{size:18}),active:e===`study`,onClick:()=>t(`study`),count:u.length,children:`Study`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(le,{size:18}),active:e===`studio`,onClick:()=>t(`studio`),count:f.length,children:`Studio`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(_e,{size:18}),active:e===`proposals`,onClick:()=>t(`proposals`),count:m.filter(e=>e.status===`candidate`).length,children:`Proposals`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(me,{size:18}),active:e===`search`,onClick:()=>t(`search`),children:`Search`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(se,{size:18}),active:e===`memories`,onClick:()=>t(`memories`),count:n.memories,children:`Memories`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(C,{size:18}),active:e===`sources`,onClick:()=>t(`sources`),count:n.sources,children:`Sources`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(ee,{size:18}),active:e===`model runs`,onClick:()=>t(`model runs`),children:`Model runs`}),(0,j.jsx)(Fe,{icon:(0,j.jsx)(he,{size:18}),active:e===`settings`,onClick:()=>t(`settings`),children:`Settings`})]}),(0,j.jsxs)(`div`,{className:`system-status`,children:[(0,j.jsx)(`span`,{className:w||pe?`dot error-dot`:`dot`}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`strong`,{children:w?`API unavailable`:pe?`Index degraded`:`Index ready`}),(0,j.jsxs)(`span`,{children:[n.chunks,` searchable chunks`]})]})]})]}),(0,j.jsxs)(`main`,{children:[w&&(0,j.jsx)(`div`,{className:`error-banner`,children:w}),(0,j.jsxs)(`header`,{className:`topbar`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`EVIDENCE-FIRST MEMORY`}),(0,j.jsx)(`h1`,{children:e===`decision health`?`Decision Health`:e[0].toUpperCase()+e.slice(1)})]}),(0,j.jsxs)(`label`,{className:`import-button`,children:[(0,j.jsx)(Se,{size:16}),te?`Indexing…`:`Import Markdown`,(0,j.jsx)(`input`,{type:`file`,accept:`.md,.txt,text/markdown,text/plain`,disabled:te,onChange:e=>{let t=e.target.files?.[0];t&&de(t)}})]})]}),e===`decision health`&&(0,j.jsx)(Ae,{overview:i,workspaceId:ae,onOverviewChanged:ue}),e===`search`&&(0,j.jsx)(Ue,{sources:o,onEvidence:(e,t)=>S({item:e,sourceTitle:t})}),e===`notes`&&(0,j.jsx)(Re,{notes:c,onChanged:E}),e===`study`&&(0,j.jsx)(Le,{cards:u,sources:o,onChanged:E}),e===`studio`&&(0,j.jsx)(Me,{artifacts:f,sources:o,onChanged:E}),e===`proposals`&&(0,j.jsx)(Ie,{proposals:m,onChanged:E}),e===`memories`&&(0,j.jsx)(Qe,{memories:g,onChanged:E,onEvidence:(e,t)=>S({item:e,sourceTitle:t})}),e===`sources`&&(0,j.jsx)(et,{sources:o,jobs:v,onChanged:E,onSourceDeleted:e=>S(t=>t?.item.source_id===e?null:t)}),e===`model runs`&&(0,j.jsx)(Be,{}),e===`settings`&&(0,j.jsx)(ze,{})]}),x&&(0,j.jsx)(rt,{...x,onClose:()=>S(null)})]})}function Fe({icon:e,active:t,onClick:n,count:r,children:i}){return(0,j.jsxs)(`button`,{className:t?`nav-item active`:`nav-item`,onClick:n,children:[e,(0,j.jsx)(`span`,{children:i}),` `,r!==void 0&&(0,j.jsx)(`b`,{children:r})]})}function Ie({proposals:e,onChanged:t}){let[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)(!1),[o,s]=(0,b.useState)(``);async function c(e){e.preventDefault(),a(!0);try{await A.createActionProposal(n),r(``),s(`Grounded proposal created for human review.`),await t()}catch(e){s(N(e,`Could not create grounded proposal`))}finally{a(!1)}}async function l(e,n){await A.reviewActionProposal(e,n),s(`Proposal ${n}; no source content was changed.`),await t()}return(0,j.jsxs)(`section`,{className:`content proposals-view`,"aria-label":`Grounded action proposals`,children:[(0,j.jsxs)(`form`,{className:`proposal-form`,onSubmit:e=>void c(e),children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`THIRD BRAIN · HUMAN-GOVERNED`}),(0,j.jsx)(`h2`,{children:`Ask for an evidence-backed next action`}),(0,j.jsx)(`p`,{children:`Only grounded model output becomes a candidate. Acceptance never writes to sources.`})]}),(0,j.jsxs)(`label`,{children:[`Goal or decision to plan`,(0,j.jsx)(`textarea`,{required:!0,minLength:2,maxLength:2e3,value:n,onChange:e=>r(e.target.value),placeholder:`What should we change next, and why?`})]}),(0,j.jsx)(`button`,{type:`submit`,disabled:i,children:i?`Grounding…`:`Create proposal`})]}),o&&(0,j.jsx)(`p`,{className:`proposal-message`,children:o}),(0,j.jsx)(`div`,{className:`proposal-list`,children:e.length===0?(0,j.jsx)(`div`,{className:`empty-card`,children:`No proposals yet. Configure a generation provider and ask a grounded question.`}):e.map(e=>(0,j.jsxs)(`article`,{className:`proposal-card`,children:[(0,j.jsxs)(`header`,{children:[(0,j.jsxs)(`span`,{className:`eyebrow`,children:[e.status,` · MODEL RUN `,e.model_run_id.slice(0,8)]}),(0,j.jsx)(`h3`,{children:e.goal})]}),(0,j.jsx)(`p`,{className:`proposal-body`,children:e.body}),(0,j.jsx)(`div`,{className:`proposal-citations`,children:e.citations.map(e=>(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`strong`,{children:[e.source_title,` · L`,e.start_line,`–`,e.end_line]}),(0,j.jsx)(`span`,{children:e.quote}),(0,j.jsxs)(`small`,{children:[`Immutable version `,e.source_version_id.slice(0,8)]})]},e.id))}),e.status===`candidate`&&(0,j.jsxs)(`footer`,{children:[(0,j.jsx)(`button`,{type:`button`,onClick:()=>void l(e.id,`rejected`),children:`Reject`}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>void l(e.id,`accepted`),children:`Accept proposal`})]})]},e.id))})]})}function Le({cards:e,sources:t,onChanged:n}){let[r,i]=(0,b.useState)(t[0]?.id??``),[a,o]=(0,b.useState)(!1),[s,c]=(0,b.useState)(``),l=e[0]??null;async function u(){try{let e=await A.createStudyCards(r);c(`${e.length} evidence-backed card${e.length===1?``:`s`} ready.`),await n()}catch(e){c(N(e,`Could not derive study cards`))}}async function d(e){l&&(await A.reviewStudyCard(l.id,e),o(!1),c(`Review recorded: ${e}.`),await n())}return(0,j.jsxs)(`section`,{className:`content study-view`,"aria-label":`Evidence-backed study`,children:[(0,j.jsxs)(`div`,{className:`study-toolbar`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`LEARNING BRAIN`}),(0,j.jsx)(`h2`,{children:`Deterministic study cards`}),(0,j.jsxs)(`p`,{children:[`Derive cards only from adjacent `,(0,j.jsx)(`code`,{children:`Q:`}),` and `,(0,j.jsx)(`code`,{children:`A:`}),` lines.`]})]}),(0,j.jsxs)(`div`,{className:`study-source`,children:[(0,j.jsx)(`label`,{htmlFor:`study-source`,children:`Source`}),(0,j.jsx)(`select`,{id:`study-source`,value:r,onChange:e=>i(e.target.value),children:t.map(e=>(0,j.jsx)(`option`,{value:e.id,children:e.title},e.id))}),(0,j.jsx)(`button`,{type:`button`,disabled:!r,onClick:()=>void u(),children:`Derive cards`})]})]}),s&&(0,j.jsx)(`p`,{className:`study-message`,children:s}),l?(0,j.jsxs)(`article`,{className:`study-card`,children:[(0,j.jsxs)(`span`,{className:`eyebrow`,children:[`DUE NOW · `,l.source_title]}),(0,j.jsx)(`h3`,{children:l.question}),a?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`study-answer`,children:l.answer}),(0,j.jsxs)(`p`,{className:`study-proof`,children:[`Exact evidence · L`,l.start_line,`–`,l.end_line,` · immutable version `,l.source_version_id.slice(0,8)]}),(0,j.jsx)(`div`,{className:`study-ratings`,children:[`again`,`hard`,`good`,`easy`].map(e=>(0,j.jsx)(`button`,{type:`button`,onClick:()=>void d(e),children:e},e))})]}):(0,j.jsx)(`button`,{className:`reveal-answer`,type:`button`,onClick:()=>o(!0),children:`Reveal answer`})]}):(0,j.jsx)(`div`,{className:`empty-card`,children:`No active study cards. Add Q:/A: pairs to a source, then derive cards.`})]})}function Re({notes:e,onChanged:t}){let[n,r]=(0,b.useState)(null),i=e.find(e=>e.id===n)??null,[a,o]=(0,b.useState)(``),[s,c]=(0,b.useState)(``),[l,u]=(0,b.useState)(!1),[d,f]=(0,b.useState)(``),[p,m]=(0,b.useState)([]),[h,g]=(0,b.useState)([]),[_,v]=(0,b.useState)(null),[y,x]=(0,b.useState)(``),S=e.filter(e=>{let t=y.trim().toLocaleLowerCase();return!t||e.title.toLocaleLowerCase().includes(t)||e.tags.some(e=>e.name.toLocaleLowerCase().includes(t.replace(/^#/,``)))});(0,b.useEffect)(()=>{o(i?.title??``),c(i?.content??``),f(``),m([]),g([]),v(null),i&&Promise.all([A.noteBacklinks(i.id),A.noteVersions(i.id)]).then(([e,t])=>{m(e),g(t)}).catch(e=>f(N(e,`Could not load note provenance`)))},[i]);async function ee(e){try{let t=await A.sourceVersion(e.source_id,e.id);v({version:e,content:t.content})}catch(e){f(N(e,`Could not load immutable revision`))}}async function te(e){e.preventDefault(),u(!0);try{let e=i?await A.updateNote(i.id,a,s):await A.createNote(a,s);await t(),r(e.id),f(i?e.version_count===i.version_count?`Metadata saved; immutable content unchanged.`:`Saved immutable revision ${e.version_count}.`:`Note captured and indexed.`)}catch(e){f(N(e,`Could not save note`))}finally{u(!1)}}return(0,j.jsxs)(`section`,{className:`content notes-view`,"aria-label":`Evidence-first notes`,children:[(0,j.jsxs)(`div`,{className:`notes-list`,children:[(0,j.jsxs)(`div`,{className:`notes-list-heading`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`PERSONAL SECOND BRAIN`}),(0,j.jsx)(`h2`,{children:`Markdown notes`})]}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>r(null),children:`New note`})]}),(0,j.jsxs)(`label`,{className:`note-filter`,children:[(0,j.jsx)(`span`,{className:`sr-only`,children:`Filter notes by title or tag`}),(0,j.jsx)(`input`,{"aria-label":`Filter notes by title or tag`,value:y,onChange:e=>x(e.target.value),placeholder:`Filter title or #tag`})]}),e.length===0?(0,j.jsx)(`p`,{className:`empty-copy`,children:`Capture a note to make it searchable.`}):S.map(e=>(0,j.jsxs)(`button`,{type:`button`,className:e.id===n?`note-row active`:`note-row`,onClick:()=>r(e.id),children:[(0,j.jsx)(`strong`,{children:e.title}),(0,j.jsxs)(`span`,{children:[e.version_count,` revision`,e.version_count===1?``:`s`,` · `,e.tags.length,` tags`]})]},e.id))]}),(0,j.jsxs)(`form`,{className:`note-form`,onSubmit:e=>void te(e),children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:i?`IMMUTABLE REVISION`:`QUICK CAPTURE`}),(0,j.jsxs)(`label`,{children:[`Title`,(0,j.jsx)(`input`,{required:!0,maxLength:300,value:a,onChange:e=>o(e.target.value)})]}),(0,j.jsxs)(`label`,{children:[`Markdown note`,(0,j.jsx)(`textarea`,{required:!0,value:s,onChange:e=>c(e.target.value),placeholder:`Write plain Markdown. Use #tags and [[Wiki links]].`})]}),i&&(0,j.jsxs)(`div`,{className:`note-provenance`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`strong`,{children:`Tags`}),(0,j.jsx)(`span`,{children:i.tags.length?i.tags.map(e=>`#${e.name}`).join(` · `):`None`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`strong`,{children:`Wiki links`}),(0,j.jsx)(`span`,{children:i.links.length?i.links.map(e=>`${e.target_title}${e.resolved_source_id?``:` (unresolved)`}`).join(` · `):`None`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`strong`,{children:`Backlinks`}),(0,j.jsx)(`span`,{children:p.length?p.map(e=>`${e.source_title} · L${e.start_line}–${e.end_line} · ${e.source_version_id.slice(0,8)}`).join(` · `):`None`})]}),(0,j.jsxs)(`div`,{className:`note-versions`,children:[(0,j.jsx)(`strong`,{children:`Revisions`}),(0,j.jsx)(`span`,{children:h.map(e=>(0,j.jsxs)(`button`,{type:`button`,onClick:()=>void ee(e),children:[`v`,e.version_number,` · `,e.content_length,` chars`]},e.id))})]})]}),_&&(0,j.jsxs)(`div`,{className:`note-version-preview`,"aria-label":`Immutable revision preview`,children:[(0,j.jsxs)(`header`,{children:[(0,j.jsxs)(`strong`,{children:[`Revision `,_.version.version_number]}),(0,j.jsx)(`span`,{children:_.version.content_hash.slice(0,12)}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>v(null),children:`Close preview`})]}),(0,j.jsx)(`pre`,{children:_.content})]}),(0,j.jsxs)(`div`,{className:`note-form-footer`,children:[(0,j.jsx)(`span`,{children:d||`Every content change preserves the previous version.`}),(0,j.jsx)(`button`,{type:`submit`,disabled:l,children:l?`Saving…`:i?`Save revision`:`Capture note`})]})]})]})}function ze(){let[e,t]=(0,b.useState)(null),[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)(null),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(``),[f,p]=(0,b.useState)(!1),[m,h]=(0,b.useState)(!1),[g,_]=(0,b.useState)(``),[v,y]=(0,b.useState)(!1),x=(0,b.useCallback)(async()=>{let[e,n,i,o]=await Promise.all([A.providerConfiguration(),A.generationProviderStatus(),A.embeddingProviderStatus(),A.rerankingProviderStatus()]);t(e),r(n),a(i),s(o)},[]);(0,b.useEffect)(()=>{x().catch(e=>_(N(e,`Provider settings unavailable`)))},[x]);async function S(t){if(t.preventDefault(),e){y(!0),_(``);try{await A.saveProviderConfiguration({ai_provider:e.ai_provider,ai_base_url:e.ai_base_url||null,ai_model:e.ai_model||null,ai_api_key:f?``:c||void 0,embedding_provider:e.embedding_provider,embedding_base_url:e.embedding_base_url||null,embedding_model:e.embedding_model||null,embedding_api_key:m?``:u||void 0,allow_remote_ai:e.allow_remote_ai}),l(``),d(``),p(!1),h(!1),await x(),_(`Provider configuration saved and capability health refreshed.`)}catch(e){_(N(e,`Provider configuration failed`))}finally{y(!1)}}}return e?(0,j.jsxs)(`section`,{className:`content`,children:[(0,j.jsxs)(`div`,{className:`section-heading`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`LOCAL PROVIDER CONTROL`}),(0,j.jsx)(`h2`,{children:`Model providers`})]}),(0,j.jsx)(`span`,{className:`mode-badge`,children:`No automatic fallback`})]}),(0,j.jsxs)(`div`,{className:`settings-note`,role:`status`,children:[`API keys: `,e.secret_storage===`os_keyring`?`protected by this device's OS keyring`:`stored in an owner-only local file`]}),(0,j.jsxs)(`form`,{className:`model-run-filters`,onSubmit:e=>void S(e),children:[(0,j.jsxs)(`label`,{children:[`Generation provider`,(0,j.jsxs)(`select`,{value:e.ai_provider,onChange:n=>t({...e,ai_provider:n.target.value}),children:[(0,j.jsx)(`option`,{value:`disabled`,children:`Disabled`}),(0,j.jsx)(`option`,{value:`qwen`,children:`Qwen`}),(0,j.jsx)(`option`,{value:`deepseek`,children:`DeepSeek`}),(0,j.jsx)(`option`,{value:`ollama`,children:`Ollama`}),(0,j.jsx)(`option`,{value:`vllm`,children:`vLLM`}),(0,j.jsx)(`option`,{value:`openai_compatible`,children:`OpenAI-compatible`})]})]}),(0,j.jsxs)(`label`,{children:[`Generation base URL`,(0,j.jsx)(`input`,{value:e.ai_base_url??``,onChange:n=>t({...e,ai_base_url:n.target.value})})]}),(0,j.jsxs)(`label`,{children:[`Generation model`,(0,j.jsx)(`input`,{value:e.ai_model??``,onChange:n=>t({...e,ai_model:n.target.value})})]}),(0,j.jsxs)(`label`,{children:[`Generation API key`,(0,j.jsx)(`input`,{type:`password`,value:c,disabled:f,placeholder:e.ai_api_key_configured?`Configured; leave blank to keep`:`Optional`,onChange:e=>{l(e.target.value),p(!1)}})]}),e.ai_api_key_configured&&(0,j.jsxs)(`label`,{className:`secret-removal`,children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>{p(e.target.checked),e.target.checked&&l(``)}}),`Remove saved generation key`]}),(0,j.jsxs)(`label`,{children:[`Embedding provider`,(0,j.jsxs)(`select`,{value:e.embedding_provider,onChange:n=>t({...e,embedding_provider:n.target.value}),children:[(0,j.jsx)(`option`,{value:`disabled`,children:`Disabled`}),(0,j.jsx)(`option`,{value:`ollama`,children:`Ollama`}),(0,j.jsx)(`option`,{value:`vllm`,children:`vLLM`}),(0,j.jsx)(`option`,{value:`openai_compatible`,children:`OpenAI-compatible`})]})]}),(0,j.jsxs)(`label`,{children:[`Embedding base URL`,(0,j.jsx)(`input`,{value:e.embedding_base_url??``,onChange:n=>t({...e,embedding_base_url:n.target.value})})]}),(0,j.jsxs)(`label`,{children:[`Embedding model`,(0,j.jsx)(`input`,{value:e.embedding_model??``,onChange:n=>t({...e,embedding_model:n.target.value})})]}),(0,j.jsxs)(`label`,{children:[`Embedding API key`,(0,j.jsx)(`input`,{type:`password`,value:u,disabled:m,placeholder:e.embedding_api_key_configured?`Configured; leave blank to keep`:`Optional`,onChange:e=>{d(e.target.value),h(!1)}})]}),e.embedding_api_key_configured&&(0,j.jsxs)(`label`,{className:`secret-removal`,children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:m,onChange:e=>{h(e.target.checked),e.target.checked&&d(``)}}),`Remove saved embedding key`]}),(0,j.jsxs)(`label`,{children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:e.allow_remote_ai,onChange:n=>t({...e,allow_remote_ai:n.target.checked})}),` `,`Allow explicit remote model egress`]}),(0,j.jsx)(`button`,{disabled:v,children:v?`Saving…`:`Save and check health`})]}),(0,j.jsxs)(`div`,{className:`metrics`,children:[(0,j.jsx)(nt,{value:n?.mode??`unchecked`,label:`Generation`}),(0,j.jsx)(nt,{value:i?.mode??`unchecked`,label:`Embedding`}),(0,j.jsx)(nt,{value:o?.mode??`unchecked`,label:`Reranking`})]}),(n?.mode===`degraded`||i?.mode===`degraded`)&&(0,j.jsx)(`div`,{className:`degraded-banner`,role:`status`,children:`Provider degraded. Deterministic ingestion and lexical retrieval remain available.`}),g&&(0,j.jsx)(`div`,{role:`status`,children:g})]}):(0,j.jsxs)(`section`,{className:`content`,children:[(0,j.jsx)(`div`,{role:`status`,children:`Loading provider settings…`}),g&&(0,j.jsx)(`div`,{className:`integrity-error`,children:g})]})}function Be(){let[e,t]=(0,b.useState)([]),[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(!0),[f,p]=(0,b.useState)(``),[m,h]=(0,b.useState)(null),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(``),x=(0,b.useCallback)(async(e={})=>{d(!0),p(``);try{t(await A.modelRuns({...e,limit:100}))}catch(e){p(N(e,`Model-run diagnostics are unavailable`))}finally{d(!1)}},[]);(0,b.useEffect)(()=>{x()},[x]);async function S(e){_(!0),y(``);try{let t=await A.modelRun(e),[n,r]=await Promise.all([t.parent_run_id?A.modelRun(t.parent_run_id):Promise.resolve(null),A.modelRuns({parentRunId:t.id,limit:100})]);h({current:t,parent:n,children:r})}catch(e){y(N(e,`Model-run detail is unavailable`))}finally{_(!1)}}function ee(e){e.preventDefault(),h(null),x({status:n.trim()||void 0,operation:i.trim()||void 0,providerId:o.trim()||void 0,parentRunId:c.trim()||void 0})}function te(){r(``),a(``),s(``),l(``),h(null),x()}return(0,j.jsxs)(`section`,{className:`content model-runs-view`,"aria-labelledby":`model-runs-heading`,children:[(0,j.jsxs)(`div`,{className:`section-heading`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`SAFE MODEL DIAGNOSTICS`}),(0,j.jsx)(`h2`,{id:`model-runs-heading`,children:`Model runs`})]}),(0,j.jsx)(`span`,{className:`mode-badge`,children:`Metadata only`})]}),(0,j.jsx)(`p`,{className:`diagnostic-intro`,children:`Inspect provider, operation, validation, timing, and repair lineage. Source text, prompts, model output, and credentials are never displayed.`}),(0,j.jsxs)(`form`,{className:`model-run-filters`,onSubmit:ee,children:[(0,j.jsxs)(`label`,{children:[`Status`,(0,j.jsxs)(`select`,{value:n,onChange:e=>r(e.target.value),children:[(0,j.jsx)(`option`,{value:``,children:`Any status`}),(0,j.jsx)(`option`,{value:`running`,children:`Running`}),(0,j.jsx)(`option`,{value:`succeeded`,children:`Succeeded`}),(0,j.jsx)(`option`,{value:`failed`,children:`Failed`})]})]}),(0,j.jsxs)(`label`,{children:[`Operation`,(0,j.jsx)(`input`,{value:i,onChange:e=>a(e.target.value),placeholder:`generate or embed`})]}),(0,j.jsxs)(`label`,{children:[`Provider`,(0,j.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),placeholder:`provider ID`})]}),(0,j.jsxs)(`label`,{children:[`Parent run`,(0,j.jsx)(`input`,{value:c,onChange:e=>l(e.target.value),placeholder:`parent run ID`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`button`,{type:`submit`,disabled:u,children:`Apply filters`}),(0,j.jsx)(`button`,{type:`button`,onClick:te,disabled:u,children:`Clear`})]})]}),u&&(0,j.jsx)(`div`,{className:`diagnostic-state`,role:`status`,children:`Loading safe model-run metadata…`}),f&&(0,j.jsx)(`div`,{className:`integrity-error`,role:`alert`,children:f}),!u&&!f&&e.length===0&&(0,j.jsx)(`div`,{className:`empty-card`,role:`status`,children:`No model runs match these filters.`}),!u&&!f&&e.length>0&&(0,j.jsxs)(`div`,{className:`model-run-layout`,children:[(0,j.jsx)(`div`,{className:`model-run-list`,"aria-label":`Model runs`,children:e.map(e=>(0,j.jsxs)(`button`,{className:m?.current.id===e.id?`model-run-row selected`:`model-run-row`,onClick:()=>void S(e.id),"aria-label":`Open model run ${e.id}`,"aria-pressed":m?.current.id===e.id,children:[(0,j.jsxs)(`span`,{children:[(0,j.jsx)(`strong`,{children:e.operation}),(0,j.jsx)(`code`,{children:e.id})]}),(0,j.jsxs)(`span`,{children:[e.provider_id,(0,j.jsx)(`small`,{children:e.model_id})]}),(0,j.jsx)(`span`,{className:`run-status ${e.status}`,children:e.status}),(0,j.jsx)(`time`,{dateTime:e.created_at,children:He(e.created_at)})]},e.id))}),(0,j.jsxs)(`aside`,{className:`model-run-detail`,"aria-live":`polite`,children:[g&&(0,j.jsx)(`div`,{className:`diagnostic-state`,role:`status`,children:`Loading model-run detail and lineage…`}),v&&(0,j.jsx)(`div`,{className:`integrity-error`,role:`alert`,children:v}),!g&&!v&&!m&&(0,j.jsx)(`div`,{className:`diagnostic-state`,children:`Select a run to inspect safe details and repair lineage.`}),!g&&!v&&m&&(0,j.jsx)(Ve,{lineage:m,onOpen:S})]})]})]})}function Ve({lineage:e,onOpen:t}){let n=e.current;return(0,j.jsxs)(`article`,{children:[(0,j.jsxs)(`div`,{className:`decision-top`,children:[(0,j.jsx)(`span`,{className:`run-status ${n.status}`,children:n.status}),(0,j.jsxs)(`span`,{children:[`Attempt `,n.attempt_number]})]}),(0,j.jsxs)(`h3`,{children:[n.operation,` · `,n.provider_id]}),(0,j.jsx)(`code`,{className:`run-id`,children:n.id}),(0,j.jsxs)(`dl`,{className:`run-metadata`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Model`}),(0,j.jsx)(`dd`,{children:n.model_id})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Template`}),(0,j.jsx)(`dd`,{children:n.template_version})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Validation`}),(0,j.jsx)(`dd`,{children:n.validation_status??`not recorded`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Latency`}),(0,j.jsx)(`dd`,{children:n.latency_ms===null?`not recorded`:`${n.latency_ms} ms`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Prompt tokens`}),(0,j.jsx)(`dd`,{children:n.prompt_tokens??`not recorded`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Completion tokens`}),(0,j.jsx)(`dd`,{children:n.completion_tokens??`not recorded`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Created`}),(0,j.jsx)(`dd`,{children:He(n.created_at)})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Finished`}),(0,j.jsx)(`dd`,{children:n.finished_at?He(n.finished_at):`not finished`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Error code`}),(0,j.jsx)(`dd`,{children:n.error_code??`none`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Repair reason`}),(0,j.jsx)(`dd`,{children:n.repair_reason??`none`})]})]}),(0,j.jsxs)(`section`,{className:`run-lineage`,"aria-labelledby":`run-lineage-heading`,children:[(0,j.jsx)(`h4`,{id:`run-lineage-heading`,children:`Repair lineage`}),e.parent?(0,j.jsxs)(`button`,{onClick:()=>void t(e.parent.id),children:[(0,j.jsx)(`span`,{children:`Parent`}),(0,j.jsx)(`code`,{children:e.parent.id}),(0,j.jsxs)(`small`,{children:[e.parent.status,` · attempt `,e.parent.attempt_number]})]}):(0,j.jsx)(`p`,{children:`No parent repair run.`}),(0,j.jsxs)(`div`,{className:`lineage-current`,children:[(0,j.jsx)(`span`,{children:`Current`}),(0,j.jsx)(`code`,{children:n.id}),(0,j.jsxs)(`small`,{children:[n.status,` · attempt `,n.attempt_number]})]}),e.children.length>0?e.children.map(e=>(0,j.jsxs)(`button`,{onClick:()=>void t(e.id),children:[(0,j.jsx)(`span`,{children:`Child repair`}),(0,j.jsx)(`code`,{children:e.id}),(0,j.jsxs)(`small`,{children:[e.status,` · attempt `,e.attempt_number]})]},e.id)):(0,j.jsx)(`p`,{children:`No child repair runs.`})]})]})}function He(e){let t=new Date(e);return Number.isNaN(t.getTime())?`not recorded`:t.toLocaleString()}function Ue({onEvidence:e,sources:t=[]}){let[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(!1),[f,p]=(0,b.useState)([]),[m,h]=(0,b.useState)(null),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(!1),[x,S]=(0,b.useState)(``),[ee,te]=(0,b.useState)(``);async function C(e){if(e.preventDefault(),n.trim().length<2)return;let t=We(i,o,c);if(u&&(t.rerank=!0),t.ingestedFrom&&t.ingestedBefore&&t.ingestedFrom>=t.ingestedBefore){S(`Indexed from must be earlier than indexed before.`);return}y(!0),S(``),te(``),h(null),p([]),_(!1);try{let e=A.search(n,t).then(e=>{p(e),_(!0)},e=>{S(N(e,`Search failed`)),_(!0)}),r=A.answer(n,t).then(e=>{h(e),e.status===`provider_unavailable`&&te(`Answer generation is unavailable. Showing raw retrieval results.`)},e=>{te(`${N(e,`Answer generation failed`)}. Showing raw retrieval results.`)});await Promise.allSettled([e,r])}finally{y(!1)}}function ne(t){e({id:t.evidence_id,source_id:t.source_id,source_version_id:t.source_version_id,quote:t.content,start_offset:t.start_offset,end_offset:t.end_offset,start_line:t.start_line,end_line:t.end_line},t.source_title)}let w=new Map(m?.citations.map(e=>[e.evidence_id,e])),T=m?[...new Set(m.statements.flatMap(e=>e.evidence_ids))].filter(e=>!w.has(e)):[],re=T.length>0,ie=m?.exclusions??[],oe=i.flatMap(e=>{let n=t.find(t=>t.id===e);return n?[n]:[]}),se=oe.length>0||!!o||!!c||u;function ce(e){a(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}return(0,j.jsxs)(`section`,{className:`content search-view`,children:[(0,j.jsxs)(`form`,{className:`search-box`,onSubmit:C,children:[(0,j.jsx)(ae,{}),(0,j.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),placeholder:`Search why a system was built this way…`,"aria-label":`Search engineering memory`}),(0,j.jsx)(`button`,{disabled:v,children:v?`Searching`:`Search`})]}),(0,j.jsxs)(`details`,{className:`search-scope`,children:[(0,j.jsxs)(`summary`,{children:[`Search scope`,se?` · ${Ke(oe.length,o,c)} active`:` · all indexed sources`]}),(0,j.jsxs)(`div`,{className:`scope-controls`,children:[(0,j.jsxs)(`fieldset`,{children:[(0,j.jsx)(`legend`,{children:`Indexed sources`}),t.length===0?(0,j.jsx)(`p`,{children:`No indexed sources are available.`}):(0,j.jsx)(`div`,{className:`source-scope-options`,children:t.map(e=>(0,j.jsxs)(`label`,{children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:i.includes(e.id),onChange:()=>ce(e.id)}),(0,j.jsx)(`span`,{children:e.title})]},e.id))})]}),(0,j.jsxs)(`fieldset`,{className:`time-scope`,children:[(0,j.jsx)(`legend`,{children:`Ingestion / indexed time`}),(0,j.jsxs)(`label`,{children:[`Indexed from`,(0,j.jsx)(`input`,{type:`datetime-local`,value:o,onChange:e=>s(e.target.value)})]}),(0,j.jsxs)(`label`,{children:[`Indexed before`,(0,j.jsx)(`input`,{type:`datetime-local`,value:c,onChange:e=>l(e.target.value)})]}),(0,j.jsx)(`small`,{children:`This filters when a source version was indexed, not when its events or decisions occurred.`})]}),(0,j.jsxs)(`label`,{children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d(e.target.checked)}),`Optional local reranking`]}),(0,j.jsx)(`button`,{type:`button`,disabled:!se,onClick:()=>{a([]),s(``),l(``),d(!1)},children:`Clear scope`})]})]}),(0,j.jsxs)(`div`,{className:`scope-summary${se?` active`:``}`,"aria-label":`Active search scope`,children:[(0,j.jsx)(`strong`,{children:se?`Scoped search`:`Workspace search`}),(0,j.jsx)(`span`,{children:oe.length>0?oe.map(e=>e.title).join(`, `):`All indexed sources`}),(0,j.jsx)(`span`,{children:qe(o,c)})]}),!g&&(0,j.jsxs)(`div`,{className:`hero-empty`,children:[(0,j.jsx)(`div`,{className:`line-art`,children:`↳`}),(0,j.jsx)(`h2`,{children:`Follow every claim back to its source.`}),(0,j.jsx)(`p`,{children:`Search technical decisions, rationale, and implementation context. Proofline returns inspectable evidence—not an uncited answer.`})]}),ee&&(0,j.jsx)(`div`,{className:`degraded-banner`,role:`status`,children:ee}),x&&(0,j.jsx)(`div`,{className:`error-banner inline-error`,role:`alert`,children:x}),ie.length>0&&(0,j.jsxs)(`div`,{className:`context-budget-notice`,role:`status`,"aria-label":`Context budget notice`,children:[(0,j.jsxs)(`strong`,{children:[ie.length,` retrieved`,` `,ie.length===1?`span was`:`spans were`,` `,`excluded by the context budget.`]}),(0,j.jsxs)(`span`,{children:[`Evidence IDs:`,` `,ie.map(e=>(0,j.jsx)(`code`,{title:e.evidence_id,children:e.evidence_id.slice(0,8)},e.evidence_id))]})]}),m&&(0,j.jsxs)(`article`,{className:`result-card answer-card`,children:[(0,j.jsxs)(`div`,{className:`decision-top`,children:[(0,j.jsx)(`span`,{className:`mode-badge${re?` integrity-failed`:``}`,children:re?`integrity failure`:m.status.replaceAll(`_`,` `)}),m.model_run_id&&(0,j.jsxs)(`span`,{children:[`Run `,m.model_run_id.slice(0,8)]})]}),(0,j.jsx)(`h2`,{children:re?`Answer citation integrity failed`:`Evidence-backed answer`}),re&&(0,j.jsxs)(`div`,{className:`integrity-error`,role:`alert`,children:[`Citation integrity failed: `,T.length,` `,`referenced evidence`,` `,T.length===1?`ID is`:`IDs are`,` `,`unavailable.`]}),!re&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`p`,{children:m.answer}),(0,j.jsx)(`div`,{className:`answer-statements`,children:m.statements.map((e,t)=>{let n=[...new Set(e.evidence_ids)].flatMap(e=>{let t=w.get(e);return t?[t]:[]});return(0,j.jsxs)(`article`,{className:`answer-statement`,"aria-label":`Answer statement: ${e.kind}`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`statement-kind ${e.kind}`,children:e.kind}),(0,j.jsx)(`span`,{className:`text-muted`,children:e.support_status??`supported`}),(0,j.jsx)(`p`,{children:e.text})]}),n.length>0&&(0,j.jsx)(`footer`,{children:n.map(e=>(0,j.jsxs)(`button`,{onClick:()=>ne(e),children:[e.source_title,` · L`,e.start_line,`–`,e.end_line]},e.evidence_id))})]},`${e.kind}-${t}`)})})]})]}),g&&(0,j.jsxs)(`div`,{className:`results`,children:[(0,j.jsxs)(`div`,{className:`section-heading`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`RAW RETRIEVAL`}),(0,j.jsxs)(`h2`,{children:[f.length,` evidence matches`]})]}),(0,j.jsx)(`span`,{className:`mode-badge`,children:f.some(e=>e.retrieval_channels.includes(`semantic`))?`Hybrid · RRF`:`Lexical · FTS5`})]}),f.length===0?(0,j.jsx)(`div`,{className:`empty-card`,children:`Insufficient evidence. Try another phrase or import a source.`}):f.map(t=>(0,j.jsx)(Je,{hit:t,onEvidence:e},t.chunk_id))]})]})}function We(e,t,n){return{sourceIds:e,ingestedFrom:Ge(t),ingestedBefore:Ge(n)}}function Ge(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function Ke(e,t,n){return e+Number(!!t)+Number(!!n)}function qe(e,t){return e&&t?`Indexed from ${e} until before ${t}`:e?`Indexed from ${e}`:t?`Indexed before ${t}`:`Any ingestion time`}function Je({hit:e,onEvidence:t}){return(0,j.jsxs)(`article`,{className:`result-card`,children:[(0,j.jsxs)(`div`,{className:`result-meta`,children:[(0,j.jsx)(`span`,{children:e.source_title}),(0,j.jsxs)(`button`,{onClick:()=>t({id:e.chunk_id,source_id:e.source_id,source_version_id:e.source_version_id,quote:e.content,start_offset:e.start_offset,end_offset:e.end_offset,start_line:e.start_line,end_line:e.end_line},e.source_title),children:[`Lines `,e.start_line,`–`,e.end_line]})]}),(0,j.jsx)(`p`,{children:e.content}),(0,j.jsxs)(`details`,{className:`retrieval-debug`,children:[(0,j.jsx)(`summary`,{children:`Why this result?`}),(0,j.jsxs)(`dl`,{children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Channels`}),(0,j.jsx)(`dd`,{children:e.retrieval_channels.join(` + `)})]}),e.lexical_rank!==null&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Lexical rank`}),(0,j.jsxs)(`dd`,{children:[`#`,e.lexical_rank]})]}),e.semantic_rank!==null&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Semantic rank`}),(0,j.jsxs)(`dd`,{children:[`#`,e.semantic_rank]})]}),e.semantic_score!==null&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Semantic score`}),(0,j.jsx)(`dd`,{children:e.semantic_score.toFixed(4)})]}),e.fused_score!==null&&(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`RRF score`}),(0,j.jsx)(`dd`,{children:e.fused_score.toFixed(4)})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Source version`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(`code`,{title:e.source_version_id,children:e.source_version_id.slice(0,8)})})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:`Exact location`}),(0,j.jsxs)(`dd`,{children:[`Lines `,e.start_line,`–`,e.end_line,` · offsets `,e.start_offset,`:`,e.end_offset]})]})]})]})]})}function N(e,t){return e instanceof Error&&e.message?e.message:t}function Ye(e){let t=[...e].sort((e,t)=>t.updated_at.localeCompare(e.updated_at)),n=new Map,r=null;for(let e of t)e.source_id?n.has(e.source_id)||n.set(e.source_id,e):r||=e;return r?[...n.values(),r]:[...n.values()]}var Xe=[`decision`,`assumption`,`constraint`,`alternative`],Ze=[`candidate`,`active`,`accepted`,`rejected`,`obsolete`];function Qe({memories:e,onEvidence:t,onChanged:n}){let[r,i]=(0,b.useState)(`all`),[a,o]=(0,b.useState)(`all`),s=e.filter(e=>(r===`all`||e.kind===r)&&(a===`all`||e.status===a));return(0,j.jsxs)(`section`,{className:`content`,children:[(0,j.jsxs)(`div`,{className:`section-heading`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`MEMORY REGISTRY`}),(0,j.jsx)(`h2`,{children:`Reviewable engineering context`})]}),(0,j.jsxs)(`span`,{className:`mode-badge`,children:[s.length,` of `,e.length]})]}),(0,j.jsxs)(`div`,{className:`registry-filters`,children:[(0,j.jsxs)(`fieldset`,{children:[(0,j.jsx)(`legend`,{children:`Kind`}),(0,j.jsx)(`button`,{"aria-pressed":r===`all`,onClick:()=>i(`all`),children:`All`}),Xe.map(e=>(0,j.jsxs)(`button`,{"aria-pressed":r===e,onClick:()=>i(e),children:[e[0].toUpperCase()+e.slice(1),`s`]},e))]}),(0,j.jsxs)(`fieldset`,{children:[(0,j.jsx)(`legend`,{children:`Status`}),(0,j.jsx)(`button`,{"aria-pressed":a===`all`,onClick:()=>o(`all`),children:`All`}),Ze.map(e=>(0,j.jsx)(`button`,{"aria-pressed":a===e,onClick:()=>o(e),children:e},e))]})]}),s.length===0?(0,j.jsx)(`div`,{className:`empty-card`,children:`No memories match these filters. Import an ADR or change the selected kind and status.`}):(0,j.jsx)(`div`,{className:`decision-grid`,children:s.map(e=>(0,j.jsx)($e,{memory:e,onEvidence:t,onChanged:n},e.id))})]})}function $e({memory:e,onEvidence:t,onChanged:n}){let[r,i]=(0,b.useState)(!1),[a,o]=(0,b.useState)(e.statement),[s,c]=(0,b.useState)(e.rationale??``),[l,u]=(0,b.useState)(!1),[d,f]=(0,b.useState)(``),[p,m]=(0,b.useState)(null),[h,g]=(0,b.useState)(!1);async function _(){if(p){m(null);return}g(!0);try{m(await A.decisionTimeline(e.id))}catch(e){f(N(e,`Decision timeline failed`))}finally{g(!1)}}function v(){o(e.statement),c(e.rationale??``),f(``),i(!0)}function y(){l||(o(e.statement),c(e.rationale??``),f(``),i(!1))}function x(t){t.preventDefault();let r=a.trim();if(!r){f(`Statement is required.`);return}u(!0),f(``);try{A.updateMemory(e.id,{statement:r,rationale:s.trim()||null}).then(async()=>{await n(),i(!1)},e=>{f(N(e,`Memory correction failed`))}).catch(e=>{f(N(e,`Memory correction failed`))}).finally(()=>{u(!1)})}catch(e){f(N(e,`Memory correction failed`)),u(!1)}}async function S(t){if(!(t===e.status||l)){u(!0),f(``);try{await A.updateMemory(e.id,{status:t}),await n()}catch(e){f(N(e,`Memory review failed`))}finally{u(!1)}}}return(0,j.jsxs)(`article`,{className:`decision-card memory-card`,"aria-label":`${e.kind} memory: ${e.statement}`,children:[(0,j.jsxs)(`div`,{className:`decision-top`,children:[(0,j.jsxs)(`span`,{className:`memory-labels`,children:[(0,j.jsx)(`span`,{className:`memory-kind ${e.kind}`,"aria-label":`Memory kind: ${e.kind}`,children:e.kind}),(0,j.jsx)(`span`,{className:`status ${e.status}`,children:e.status})]}),(0,j.jsxs)(`span`,{children:[Math.round(e.confidence*100),`% · `,e.extraction_method]})]}),r?(0,j.jsxs)(`form`,{className:`memory-edit-form`,"aria-label":`Edit ${e.kind} memory`,onSubmit:e=>void x(e),children:[(0,j.jsxs)(`label`,{children:[`Statement`,(0,j.jsx)(`textarea`,{value:a,"aria-invalid":!a.trim()&&!!d,onChange:e=>o(e.target.value)})]}),(0,j.jsxs)(`label`,{children:[`Rationale`,(0,j.jsx)(`textarea`,{value:s,onChange:e=>c(e.target.value)})]}),(0,j.jsxs)(`div`,{className:`edit-actions`,children:[(0,j.jsx)(`button`,{type:`button`,disabled:l,onClick:y,children:`Cancel`}),(0,j.jsx)(`button`,{type:`submit`,disabled:l,children:l?`Saving…`:`Save correction`})]})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`h3`,{children:e.statement}),e.rationale&&(0,j.jsx)(`p`,{children:e.rationale})]}),e.kind===`decision`&&(0,j.jsxs)(`div`,{className:`decision-timeline-controls`,children:[(0,j.jsx)(`button`,{type:`button`,disabled:h,onClick:()=>void _(),children:h?`Loading timeline…`:p?`Hide timeline`:`View timeline`}),p&&(0,j.jsxs)(`div`,{className:`decision-timeline`,"aria-label":`Timeline for ${e.statement}`,children:[(0,j.jsxs)(`span`,{children:[`Valid `,p.decision.valid_from??`from ingestion`,` →`,` `,p.decision.valid_to??`current`]}),[...p.incoming,...p.outgoing].map(e=>(0,j.jsxs)(`small`,{children:[e.kind,` · `,e.valid_from??e.created_at]},e.id))]})]}),(0,j.jsxs)(`div`,{className:`governance-actions`,children:[(0,j.jsxs)(`label`,{children:[`Status`,(0,j.jsx)(`select`,{"aria-label":`Status for ${e.kind}: ${e.statement}`,value:e.status,disabled:l||r,onChange:e=>void S(e.target.value),children:Ze.map(e=>(0,j.jsx)(`option`,{value:e,children:e},e))})]}),(0,j.jsx)(`button`,{disabled:l||r,onClick:v,"aria-label":`Edit ${e.kind}: ${e.statement}`,children:`Edit`})]}),d&&(0,j.jsx)(`div`,{className:`action-error`,role:`alert`,children:d}),(0,j.jsxs)(`footer`,{children:[(0,j.jsx)(`span`,{children:e.source_title}),e.evidence.map(n=>(0,j.jsxs)(`button`,{onClick:()=>t(n,e.source_title),children:[`View proof · L`,n.start_line,`–`,n.end_line]},n.id))]})]})}function et({sources:e,jobs:t,onChanged:n,onSourceDeleted:r}){let[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)(null),[c,l]=(0,b.useState)({}),[u,d]=(0,b.useState)({}),[f,p]=(0,b.useState)(null),m=(0,b.useRef)(null),h=new Map(Ye(t).flatMap(e=>e.source_id?[[e.source_id,e]]:[])),g=[...t].filter(e=>!e.source_id&&[`failed`,`dead_letter`].includes(e.state)).sort((e,t)=>t.updated_at.localeCompare(e.updated_at)).slice(0,5);async function _(e){a(e),l(t=>({...t,[e]:``}));try{await A.extractMemories(e),await n()}catch(t){l(n=>({...n,[e]:N(t,`AI memory extraction failed`)}))}finally{a(null)}}async function v(e){s(e.id),d(t=>({...t,[e.id]:``}));try{await A.retryJob(e.id),await n()}catch(t){d(n=>({...n,[e.id]:N(t,`Ingestion retry failed`)}))}finally{s(null)}}async function y(e){m.current=document.activeElement,p({source:e,impact:null,loading:!0,pending:!1,error:``});try{let t=await A.deletionImpact(e.id);p(n=>n?.source.id===e.id?{...n,impact:t,loading:!1}:n)}catch(t){p(n=>n?.source.id===e.id?{...n,loading:!1,error:N(t,`Deletion preview failed`)}:n)}}function x(){if(f?.pending)return;let e=m.current;p(null),queueMicrotask(()=>e?.focus())}async function S(){if(!f?.impact||f.pending)return;let e=f.source.id;p(e=>e&&{...e,pending:!0,error:``});try{await A.deleteSource(e),r?.(e),await n();let t=m.current;p(null),queueMicrotask(()=>t?.focus())}catch(t){p(n=>n?.source.id===e?{...n,pending:!1,error:N(t,`Source deletion failed`)}:n)}}return(0,j.jsxs)(`section`,{className:`content`,children:[(0,j.jsxs)(`div`,{className:`metrics`,children:[(0,j.jsx)(nt,{value:e.length,label:`Sources detected`}),(0,j.jsx)(nt,{value:e.reduce((e,t)=>e+t.chunk_count,0),label:`Searchable chunks`}),(0,j.jsx)(nt,{value:e.reduce((e,t)=>e+t.memory_count,0),label:`Memories found`})]}),g.length>0&&(0,j.jsxs)(`section`,{className:`recent-failures`,"aria-labelledby":`recent-ingestion-failures`,children:[(0,j.jsxs)(`div`,{className:`section-heading`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`PIPELINE DIAGNOSTICS`}),(0,j.jsx)(`h2`,{id:`recent-ingestion-failures`,children:`Recent ingestion failures`})]}),(0,j.jsxs)(`span`,{className:`mode-badge`,children:[g.length,` orphaned`]})]}),(0,j.jsx)(`div`,{className:`failure-list`,children:g.map(e=>(0,j.jsxs)(`article`,{className:`failure-card ${e.state}`,children:[(0,j.jsxs)(`div`,{className:`failure-summary`,children:[(0,j.jsxs)(`strong`,{children:[`Job `,e.id.slice(0,8)]}),(0,j.jsxs)(`span`,{children:[e.state,` · `,e.stage]})]}),(0,j.jsxs)(`div`,{className:`failure-metadata`,children:[(0,j.jsxs)(`span`,{children:[`Attempt `,e.attempts,`/`,e.max_attempts]}),(0,j.jsxs)(`span`,{children:[`Started `,e.started_at??`not recorded`]}),(0,j.jsxs)(`span`,{children:[`Finished `,e.finished_at??`not recorded`]})]}),e.error_code&&(0,j.jsx)(`code`,{children:e.error_code}),e.error_detail&&(0,j.jsx)(`p`,{children:e.error_detail}),e.state===`failed`&&e.retryable&&(0,j.jsx)(`button`,{disabled:o===e.id,onClick:()=>void v(e),"aria-label":`Retry ingestion job ${e.id.slice(0,8)}`,children:o===e.id?`Retrying…`:`Retry`}),u[e.id]&&(0,j.jsx)(`small`,{className:`action-error`,role:`alert`,children:u[e.id]})]},e.id))})]}),(0,j.jsxs)(`div`,{className:`source-table source-diagnostics`,children:[(0,j.jsxs)(`div`,{className:`table-row table-head`,children:[(0,j.jsx)(`span`,{children:`Source`}),(0,j.jsx)(`span`,{children:`Type`}),(0,j.jsx)(`span`,{children:`Objects`}),(0,j.jsx)(`span`,{children:`Health`}),(0,j.jsx)(`span`,{children:`Actions`})]}),e.map(e=>{let t=h.get(e.id),n=c[e.id];return(0,j.jsxs)(`div`,{className:`table-row`,children:[(0,j.jsxs)(`span`,{children:[(0,j.jsx)(`strong`,{children:e.title}),(0,j.jsx)(`small`,{children:e.uri??`Local import`})]}),(0,j.jsx)(`span`,{children:e.kind}),(0,j.jsxs)(`span`,{children:[e.chunk_count,` chunks · `,e.memory_count,` memories`]}),(0,j.jsxs)(`span`,{className:`job-health ${t?.state??e.status}`,children:[(0,j.jsx)(`strong`,{children:t?`${t.state} · ${t.stage}`:e.status}),(0,j.jsx)(`small`,{children:t?`Attempt ${t.attempts}/${t.max_attempts} · ${t.retryable?`Retryable`:`Not retryable`}`:`No ingestion job recorded`}),t?.error_code&&(0,j.jsx)(`small`,{className:`job-error-code`,children:t.error_code}),t?.error_detail&&(0,j.jsx)(`small`,{className:`job-error-detail`,children:t.error_detail})]}),(0,j.jsxs)(`span`,{className:`source-actions`,children:[t?.state===`failed`&&t.retryable&&(0,j.jsx)(`button`,{disabled:o===t.id,onClick:()=>void v(t),"aria-label":`Retry ingestion for ${e.title}`,children:o===t.id?`Retrying…`:`Retry ingestion`}),(0,j.jsx)(`button`,{disabled:i===e.id||o===t?.id,onClick:()=>void _(e.id),"aria-label":`Extract AI memories from ${e.title}`,children:i===e.id?`Extracting…`:`Extract AI memories`}),(0,j.jsx)(`button`,{className:`danger-action`,onClick:()=>void y(e),"aria-label":`Delete ${e.title}`,children:`Delete`}),t&&u[t.id]&&(0,j.jsx)(`small`,{className:`action-error`,role:`alert`,children:u[t.id]}),n&&(0,j.jsx)(`small`,{className:`action-error`,role:`alert`,children:n})]})]},e.id)})]}),f&&(0,j.jsx)(tt,{state:f,onCancel:x,onConfirm:()=>void S()})]})}function tt({state:e,onCancel:t,onConfirm:n}){let r=(0,b.useRef)(null);(0,b.useEffect)(()=>{e.pending||r.current?.focus();function n(n){n.key===`Escape`&&!e.pending&&t()}return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[t,e.pending]);let i=e.impact?[[`Versions`,e.impact.versions],[`Chunks`,e.impact.chunks],[`Embeddings`,e.impact.embeddings],[`Vector index rows`,e.impact.vector_index_rows??0],[`Memories`,e.impact.memories],[`Decisions`,e.impact.decisions],[`Evidence`,e.impact.evidence],[`Decision relations`,e.impact.decision_relations??0],[`Study cards`,e.impact.study_cards??0],[`Study reviews`,e.impact.study_reviews??0],[`Action proposals`,e.impact.action_proposals??0],[`Proposal citations`,e.impact.proposal_citations??0],[`Studio artifacts`,e.impact.studio_artifacts??0],[`Studio citations`,e.impact.studio_citations??0],[`Jobs detached`,e.impact.ingestion_jobs_to_detach],[`Audit events`,e.impact.audit_events_to_delete],[`FTS rows`,e.impact.fts_rows]]:[];return(0,j.jsx)(`div`,{className:`dialog-backdrop`,children:(0,j.jsxs)(`section`,{className:`deletion-dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`deletion-dialog-title`,children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`DELETION IMPACT`}),(0,j.jsxs)(`h2`,{id:`deletion-dialog-title`,children:[`Delete `,e.source.title,`?`]}),(0,j.jsx)(`p`,{children:`This permanently removes the source and its derived local data.`}),e.loading&&(0,j.jsx)(`div`,{role:`status`,children:`Loading deletion impact…`}),e.error&&(0,j.jsx)(`div`,{className:`integrity-error`,role:`alert`,children:e.error}),e.impact&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`deletion-identity`,children:[(0,j.jsx)(`span`,{children:`Current version`}),(0,j.jsx)(`code`,{children:e.impact.current_version_id??`none`})]}),(0,j.jsx)(`dl`,{className:`impact-counts`,children:i.map(([e,t])=>(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{children:e}),(0,j.jsx)(`dd`,{children:t})]},e))})]}),(0,j.jsxs)(`footer`,{children:[(0,j.jsx)(`button`,{ref:r,disabled:e.pending,onClick:t,children:`Cancel`}),(0,j.jsx)(`button`,{className:`confirm-delete`,disabled:!e.impact||e.pending,onClick:n,children:e.pending?`Deleting…`:`Delete permanently`})]})]})})}function nt({value:e,label:t}){return(0,j.jsxs)(`div`,{className:`metric`,children:[(0,j.jsx)(`strong`,{children:e}),(0,j.jsx)(`span`,{children:t})]})}function rt({item:e,sourceTitle:t,onClose:n}){let[r,i]=(0,b.useState)(``);(0,b.useEffect)(()=>{A.sourceVersion(e.source_id,e.source_version_id).then(e=>i(e.content))},[e.source_id,e.source_version_id]);let a=e.quote||r.slice(e.start_offset,e.end_offset);return(0,j.jsxs)(`aside`,{className:`drawer`,children:[(0,j.jsxs)(`header`,{children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{className:`eyebrow`,children:`EXACT EVIDENCE`}),(0,j.jsx)(`h2`,{children:t})]}),(0,j.jsx)(`button`,{"aria-label":`Close evidence`,onClick:n,children:(0,j.jsx)(D,{})})]}),(0,j.jsxs)(`div`,{className:`locator`,children:[`Lines `,e.start_line,`–`,e.end_line,` `,(0,j.jsx)(`span`,{children:`·`}),` offsets`,` `,e.start_offset,`:`,e.end_offset]}),(0,j.jsx)(`blockquote`,{children:a}),(0,j.jsxs)(`div`,{className:`integrity`,children:[(0,j.jsx)(re,{size:16}),(0,j.jsxs)(`span`,{children:[(0,j.jsx)(`strong`,{children:`Source-backed span`}),`This quote is stored with its exact source offsets.`]})]})]})}O.createRoot(document.getElementById(`root`)).render((0,j.jsx)(b.StrictMode,{children:(0,j.jsx)(Pe,{})})); \ No newline at end of file diff --git a/apps/api/proofline/web/assets/index-Cq2uTymx.css b/apps/api/proofline/web/assets/index-Cq2uTymx.css deleted file mode 100644 index fa0a8c4..0000000 --- a/apps/api/proofline/web/assets/index-Cq2uTymx.css +++ /dev/null @@ -1 +0,0 @@ -.decision-health-view{max-width:1180px}.decision-health-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:30px}.decision-health-metrics article{padding:20px;border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface);box-shadow:0 8px 28px #1268de0f}.decision-health-metrics article.attention{border-color:#e9c77e;background:var(--color-warning-soft)}.decision-health-metrics strong,.decision-health-metrics span{display:block}.decision-health-metrics strong{font:650 30px/1 var(--font-mono)}.decision-health-metrics span{margin-top:9px;color:var(--color-text-muted);font-size:12px}.decision-impact-panel{margin-bottom:30px;border:1px solid var(--color-border);border-radius:14px;padding:20px;background:var(--color-surface)}.decision-impact-panel>header{display:flex;align-items:end;justify-content:space-between;gap:20px}.decision-impact-panel h2{margin:7px 0 0;font-size:19px}.decision-impact-panel time,.decision-impact-list span{color:var(--color-text-muted);font-size:11px}.decision-impact-list{display:grid;gap:9px;margin:17px 0 0;padding:0;list-style:none}.decision-impact-list li{display:grid;grid-template-columns:minmax(220px,.45fr) minmax(300px,1fr);gap:18px;align-items:center;padding:13px;border-radius:9px;background:var(--color-warning-soft)}.decision-impact-list li>div{display:grid;gap:4px}.decision-impact-list code{overflow-wrap:anywhere;color:var(--color-ink-soft);font-size:10px}.decision-impact-state{margin:15px 0 0;color:var(--color-text-muted)}.decision-impact-state.error{color:var(--color-danger)}.decision-health-toolbar{display:flex;align-items:end;justify-content:space-between;gap:24px}.decision-health-toolbar h2{margin:7px 0;font-size:23px}.decision-health-toolbar p{margin:0;color:var(--color-text-muted);font-size:13px}.decision-health-toolbar button,.decision-health-table button,.decision-health-actions button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--color-border-strong);border-radius:8px;padding:9px 12px;background:var(--color-surface);color:var(--color-ink-soft);cursor:pointer}.decision-health-toolbar button:disabled,.decision-health-actions button:disabled{cursor:not-allowed;opacity:.48}.decision-health-filters{display:grid;grid-template-columns:repeat(3,minmax(150px,210px));gap:12px;margin:24px 0 14px}.decision-health-filters label,.decision-health-actions label{display:grid;gap:6px;color:var(--color-text-muted);font-size:11px;font-weight:650}.decision-health-filters select,.decision-health-actions input,.decision-health-actions textarea{min-width:0;border:1px solid var(--color-border-strong);border-radius:8px;padding:9px 10px;background:var(--color-surface);color:var(--color-ink)}.decision-health-table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:13px;background:var(--color-surface)}.decision-health-table{width:100%;min-width:720px;border-collapse:collapse;text-align:left;font-size:13px}.decision-health-table th{padding:12px 16px;background:var(--color-surface-subtle);color:var(--color-text-subtle);font:600 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.decision-health-table td{padding:15px 16px;border-top:1px solid var(--color-border-subtle);vertical-align:middle}.decision-health-table td:first-child{display:grid;gap:4px}.decision-health-table small{max-width:220px;overflow:hidden;color:var(--color-text-subtle);font:500 10px var(--font-mono);text-overflow:ellipsis}.anchor-badge,.decision-health-status{display:inline-flex;width:fit-content;border-radius:999px;padding:4px 8px;background:var(--color-warning-soft);color:var(--color-warning);font:650 10px var(--font-mono);text-transform:uppercase}.anchor-badge.deleted,.anchor-badge.ambiguous{background:var(--color-danger-soft);color:var(--color-danger)}.decision-health-message,.decision-health-empty{margin-top:16px;padding:18px;border:1px dashed var(--color-border-strong);border-radius:11px;color:var(--color-text-muted);background:var(--color-surface)}.decision-health-message.error{border-style:solid;border-color:#efb7aa;background:var(--color-danger-soft);color:var(--color-danger)}.decision-health-drawer{position:fixed;z-index:8;inset:0 0 0 auto;width:min(570px,94vw);overflow-y:auto;border-left:1px solid var(--color-border-strong);padding:28px;background:var(--color-surface);box-shadow:-18px 0 48px #0b285429}.decision-health-drawer>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.decision-health-drawer h2{margin:7px 0 10px}.decision-health-drawer>header>button{border:0;padding:5px;background:transparent;cursor:pointer}.decision-health-statement{margin:22px 0;font-size:18px;line-height:1.5}.decision-health-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.decision-health-facts div{padding:12px;border-radius:9px;background:var(--color-surface-subtle)}.decision-health-facts dt{color:var(--color-text-subtle);font:600 9px var(--font-mono);text-transform:uppercase}.decision-health-facts dd{margin:6px 0 0;overflow:hidden;font:600 11px var(--font-mono);text-overflow:ellipsis}.decision-health-evidence{margin-top:18px;padding:17px;border:1px solid var(--color-border);border-radius:11px;background:var(--color-surface-subtle)}.decision-health-evidence.current{background:var(--color-warning-soft)}.decision-health-evidence>div{display:flex;align-items:center;justify-content:space-between;gap:15px}.decision-health-evidence strong,.decision-health-evidence small{color:var(--color-text-muted);font:550 10px var(--font-mono)}.decision-health-evidence blockquote{margin:14px 0 0;padding-left:13px;border-left:3px solid var(--color-mint);font:400 12px/1.65 var(--font-mono);white-space:pre-wrap}.decision-health-actions{display:grid;gap:10px;margin-top:22px;padding-top:20px;border-top:1px solid var(--color-border)}.decision-health-actions .primary-action{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.decision-health-actions .danger-action{border-color:#d88775;color:var(--color-danger)}.decision-health-actions details{display:grid;gap:10px;padding:12px;border:1px solid var(--color-border);border-radius:9px}.decision-health-actions details[open]{display:grid}.decision-health-actions summary{cursor:pointer;color:var(--color-text-muted);font-size:12px}.decision-health-audit{margin-top:26px}.decision-health-audit ol{display:grid;gap:9px;margin:0;padding:0;list-style:none}.decision-health-audit li{display:grid;gap:4px;padding-left:12px;border-left:2px solid var(--color-border-strong);font-size:12px}.decision-health-audit li span{color:var(--color-text-muted)}@media(max-width:760px){.decision-health-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.decision-impact-panel>header{align-items:stretch;flex-direction:column}.decision-impact-list li{grid-template-columns:1fr}.decision-health-toolbar{align-items:stretch;flex-direction:column}.decision-health-filters{grid-template-columns:1fr}.decision-health-drawer{width:100vw;padding:20px}.decision-health-facts{grid-template-columns:1fr}}:root{--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--color-ink: #0b2854;--color-ink-soft: #173f73;--color-text-muted: #58718f;--color-text-subtle: #748aa5;--color-page: #f7fbff;--color-surface: #ffffff;--color-surface-subtle: #f1f8ff;--color-nav: #e9fbff;--color-primary: #1268de;--color-primary-strong: #0b56bd;--color-primary-soft: #e6f1ff;--color-mint: #42cfbf;--color-mint-strong: #14796f;--color-mint-soft: #dff8f4;--color-border: #cbdff2;--color-border-strong: #afcce8;--color-border-subtle: #dceaf7;--color-warning: #8a5a12;--color-warning-soft: #fff4d6;--color-danger: #a83d2b;--color-danger-soft: #fff0ec;--color-on-primary: #ffffff}:root{font-family:var(--font-sans);color:var(--color-ink);background:var(--color-page);font-synthesis:none}*{box-sizing:border-box}body{margin:0;color:var(--color-ink);background:var(--color-page)}button,input,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{background:var(--color-nav);color:var(--color-ink);padding:24px 14px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:232px}.brand{display:flex;align-items:center;gap:11px;font-size:19px;font-weight:700;padding:0 10px 26px}.brand-mark{display:grid;place-items:center;width:31px;height:31px;background:var(--color-mint);color:var(--color-ink);border-radius:8px;font-family:var(--font-mono)}.workspace{padding:16px 12px;margin-bottom:17px;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:4px}.workspace span,.eyebrow{font:500 10px/1.2 var(--font-mono);letter-spacing:.12em;color:var(--color-text-muted)}.workspace strong{font-size:13px}.workspace select{width:100%;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface);color:var(--color-ink);padding:7px 8px;font-size:13px}.workspace select:disabled{opacity:1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.nav-item{width:100%;border:0;background:transparent;color:var(--color-ink-soft);display:grid;grid-template-columns:24px 1fr auto;align-items:center;text-align:left;padding:10px 12px;border-radius:8px;margin:2px 0;cursor:pointer}.nav-item:hover,.nav-item.active{background:var(--color-surface);color:var(--color-primary-strong);box-shadow:0 4px 16px #1268de1a}.nav-item b{font:500 11px var(--font-mono);background:var(--color-primary-soft);padding:2px 7px;border-radius:9px}.system-status{margin-top:auto;border-top:1px solid var(--color-border);padding:17px 11px 4px;display:flex;gap:10px}.system-status div{display:flex;flex-direction:column;font-size:12px}.system-status span{color:var(--color-text-muted)}.dot{width:8px;height:8px;margin-top:5px;border-radius:50%;background:var(--color-mint);box-shadow:0 0 0 3px var(--color-mint-soft)}.error-dot{background:#f06f58;box-shadow:0 0 0 3px var(--color-danger-soft)}main{grid-column:2;min-width:0}.topbar{height:104px;padding:25px 38px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border);background:#f7fbffe0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}h1{font-size:25px;margin:5px 0 0}.import-button{display:flex;gap:8px;align-items:center;background:var(--color-primary);color:var(--color-on-primary);padding:10px 15px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.import-button input{display:none}.import-button:hover,.search-box button:hover{background:var(--color-primary-strong)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,.import-button:focus-within{outline:3px solid rgb(66 207 191 / 42%);outline-offset:2px}.content{max-width:1060px;margin:0 auto;padding:42px 38px}.notes-view{display:grid;grid-template-columns:minmax(220px,.38fr) minmax(420px,1fr);gap:22px}.study-view{max-width:880px}.studio-view{max-width:1040px}.studio-intro{display:flex;justify-content:space-between;gap:28px;align-items:end;margin-bottom:24px}.studio-intro h2{margin:7px 0;font-size:24px}.studio-intro p,.studio-preview header p{margin:0;color:var(--color-text-muted)}.studio-source{display:grid;gap:7px;min-width:260px;font-size:12px;font-weight:700;color:var(--color-ink-soft)}.studio-source select{border:1px solid var(--color-border-strong);border-radius:10px;padding:11px 12px;background:var(--color-surface);color:var(--color-ink)}.studio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.studio-tool{border:1px solid transparent;border-radius:18px;min-height:126px;padding:20px 18px 20px 22px;display:flex;align-items:center;justify-content:space-between;text-align:left;color:inherit;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.studio-tool:hover:not(:disabled){transform:translateY(-2px);border-color:#0b285429;box-shadow:0 12px 26px #0b28541a}.studio-tool:disabled{cursor:wait;opacity:.68}.studio-tool-copy{display:grid;gap:7px}.studio-tool-copy strong{font-size:17px}.studio-tool-copy small{color:currentColor;opacity:.72}.studio-tool-arrow{display:grid;place-items:center;width:52px;height:52px;flex:0 0 auto;border-radius:50%;background:#ffffff75}.studio-tool-blue{background:#e8efff;color:#24529b}.studio-tool-sand{background:#f4f2e5;color:#766325}.studio-tool-green{background:#e1f5e8;color:#176338}.studio-tool-purple{background:#f3e8f4;color:#852b82}.studio-tool-gold{background:#f7f3df;color:#806a25}.studio-tool-coral{background:#fff0ed;color:#a33c32}.studio-tool-cyan{background:#def5fa;color:#126b8e}.studio-tool-magenta{background:#f2e7f1;color:#84277d}.studio-tool-indigo{background:#e8edff;color:#264e96}.studio-message{margin:18px 0 0;border-left:3px solid var(--color-mint);padding:10px 13px;background:var(--color-mint-soft);color:var(--color-mint-strong);font-size:13px}.studio-library{margin-top:34px;padding-top:24px;border-top:1px solid var(--color-border)}.studio-library>div{display:flex;gap:9px;overflow-x:auto;padding:12px 0 3px}.studio-library button{min-width:220px;max-width:300px;border:1px solid var(--color-border);border-radius:12px;padding:12px 14px;display:grid;gap:5px;text-align:left;background:var(--color-surface);color:var(--color-ink);cursor:pointer}.studio-library button.active{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-soft)}.studio-library small{color:var(--color-text-muted)}.studio-preview{margin-top:22px;border:1px solid var(--color-border);border-radius:20px;background:var(--color-surface);padding:26px;box-shadow:0 14px 42px #1268de14}.studio-preview>header{display:flex;justify-content:space-between;gap:24px;padding-bottom:21px;border-bottom:1px solid var(--color-border-subtle)}.studio-preview h2{margin:7px 0}.studio-preview-actions{display:flex;gap:8px;align-items:start}.studio-preview-actions button,.studio-pager button,.studio-citation button{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--color-border-strong);border-radius:9px;padding:9px 12px;background:var(--color-surface);color:var(--color-ink-soft);cursor:pointer}.studio-preview-actions .studio-delete{color:var(--color-danger)}.studio-preview-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:20px}.studio-format-slides .studio-preview-items,.studio-format-storyboard .studio-preview-items{grid-template-columns:1fr}.studio-preview-item{position:relative;border:1px solid var(--color-border-subtle);border-radius:14px;padding:19px;background:var(--color-surface-subtle)}.studio-item-number{font:600 11px var(--font-mono);color:var(--color-primary)}.studio-preview-item h3{margin:9px 0;font-size:16px}.studio-preview-item p{color:var(--color-text-muted);line-height:1.55}.citation-link{border:0;padding:0;background:transparent;color:var(--color-primary-strong);font:600 11px var(--font-mono);cursor:pointer}.studio-pager{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:16px;font:600 12px var(--font-mono)}.studio-pager button:disabled{opacity:.4;cursor:default}.mind-map-view{margin-top:21px;display:grid;grid-template-columns:minmax(150px,.35fr) 1fr;gap:18px;align-items:center}.mind-map-view>strong{padding:18px;border:1px solid var(--color-primary);border-radius:14px;background:var(--color-primary-soft);text-align:center}.mind-map-view ul{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0;padding:0}.mind-map-view button{width:100%;min-height:64px;border:1px solid #dfc9e2;border-radius:12px;padding:10px;background:#f7edf7;color:#71276e;cursor:pointer}.quiz-options{display:grid;gap:7px}.quiz-options button,.flashcard-answer{border:1px solid var(--color-border);border-radius:8px;padding:9px 10px;background:var(--color-surface);color:var(--color-ink-soft);text-align:left;cursor:pointer}.quiz-options button.selected{border-color:var(--color-primary);background:var(--color-primary-soft)}.quiz-options strong{color:var(--color-mint-strong);font-size:12px}.studio-data-table{margin-top:20px;border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.studio-data-row{width:100%;display:grid;grid-template-columns:.8fr 1.8fr .4fr;gap:12px;padding:12px 14px;border:0;border-top:1px solid var(--color-border-subtle);background:var(--color-surface);color:var(--color-ink-soft);text-align:left;font-size:12px;cursor:pointer}.studio-data-head{border-top:0;background:var(--color-surface-subtle);font:600 10px var(--font-mono);text-transform:uppercase}.studio-citation{margin-top:20px;border:1px solid var(--color-border);border-radius:13px;padding:17px;background:var(--color-mint-soft)}.studio-citation>div{display:grid;gap:4px}.studio-citation small{color:var(--color-mint-strong);font-family:var(--font-mono)}.studio-citation blockquote{margin:14px 0;padding-left:14px;border-left:3px solid var(--color-mint);white-space:pre-wrap;line-height:1.55}.studio-empty{margin-top:25px}.proposals-view{max-width:900px}.proposal-form,.proposal-card{border:1px solid var(--color-border);border-radius:15px;background:var(--color-surface);padding:24px;box-shadow:0 9px 30px #1268de14}.proposal-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:18px}.proposal-form h2{margin:6px 0}.proposal-form p,.proposal-message{color:var(--color-text-muted);font-size:13px}.proposal-form label{display:grid;gap:7px;font-size:13px;font-weight:600}.proposal-form textarea{min-height:86px;resize:vertical;border:1px solid var(--color-border-strong);border-radius:8px;padding:10px}.proposal-form button,.proposal-card footer button{border:1px solid var(--color-primary);border-radius:8px;padding:10px 13px;background:var(--color-primary);color:var(--color-on-primary);cursor:pointer}.proposal-list{display:grid;gap:16px;margin-top:22px}.proposal-card h3{margin:8px 0 15px}.proposal-body{font-size:16px;line-height:1.6}.proposal-citations{display:grid;gap:8px}.proposal-citations div{display:grid;gap:5px;padding:12px;border-left:3px solid var(--color-mint);background:var(--color-mint-soft);font-size:12px}.proposal-citations small{color:var(--color-mint-strong);font-family:var(--font-mono)}.proposal-card footer{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.proposal-card footer button:first-child{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}@media(max-width:900px){.proposal-form{grid-template-columns:1fr}}.study-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:28px;margin-bottom:24px}.study-toolbar h2{margin:6px 0}.study-toolbar p,.study-proof,.study-message{color:var(--color-text-muted);font-size:13px}.study-source{min-width:280px;display:grid;gap:7px}.study-source label{font-size:12px;font-weight:600}.study-source select,.study-source button,.study-card button{border:1px solid var(--color-border-strong);border-radius:8px;padding:9px 11px;background:var(--color-surface);color:var(--color-ink);cursor:pointer}.study-source button,.reveal-answer{background:var(--color-primary)!important;color:var(--color-on-primary)!important;border-color:var(--color-primary)!important}.study-source button:disabled{opacity:.5}.study-card{border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface);padding:34px;box-shadow:0 12px 36px #1268de17}.study-card h3{font-size:24px;margin:18px 0 26px}.study-answer{padding:20px;border-left:4px solid var(--color-mint);background:var(--color-mint-soft);font-size:17px}.study-ratings{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:22px}.study-ratings button{text-transform:capitalize}.notes-list,.note-form{border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface);box-shadow:0 8px 28px #1268de12}.notes-list{padding:18px}.notes-list-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.notes-list-heading h2{margin:5px 0 0;font-size:18px}.notes-list-heading button,.note-form-footer button{border:0;border-radius:8px;background:var(--color-primary);color:var(--color-on-primary);padding:9px 12px;cursor:pointer}.note-row{display:flex;flex-direction:column;gap:4px;width:100%;padding:12px;margin-top:7px;text-align:left;color:var(--color-ink);background:var(--color-surface-subtle);border:1px solid transparent;border-radius:9px;cursor:pointer}.note-filter input{width:100%;border:1px solid var(--color-border-strong);border-radius:8px;padding:9px 10px;margin-bottom:8px}.note-row.active{border-color:var(--color-primary);background:var(--color-primary-soft)}.note-row span,.empty-copy,.note-form-footer span{color:var(--color-text-muted);font-size:12px}.note-form{display:flex;flex-direction:column;gap:18px;padding:24px}.note-form label{display:flex;flex-direction:column;gap:7px;color:var(--color-ink-soft);font-size:13px;font-weight:600}.note-form input,.note-form textarea{border:1px solid var(--color-border-strong);border-radius:8px;padding:11px;color:var(--color-ink);background:var(--color-surface)}.note-form textarea{min-height:330px;resize:vertical;font-family:var(--font-mono);line-height:1.55}.note-form-footer{display:flex;justify-content:space-between;align-items:center;gap:16px}.note-provenance{display:grid;gap:8px;padding:13px;border:1px solid var(--color-border);border-radius:9px;background:var(--color-surface-subtle)}.note-provenance div{display:grid;grid-template-columns:90px 1fr;gap:10px;font-size:12px}.note-provenance span{color:var(--color-text-muted);overflow-wrap:anywhere}.note-versions span{display:flex;flex-wrap:wrap;gap:6px}.note-versions button,.note-version-preview button{border:1px solid var(--color-border-strong);border-radius:6px;padding:5px 8px;background:var(--color-surface);color:var(--color-primary-strong);cursor:pointer}.note-version-preview{border:1px solid var(--color-border-strong);border-radius:9px;overflow:hidden}.note-version-preview header{display:flex;align-items:center;gap:10px;padding:9px 11px;background:var(--color-primary-soft);font-size:12px}.note-version-preview header span{color:var(--color-text-muted);font-family:var(--font-mono)}.note-version-preview header button{margin-left:auto}.note-version-preview pre{max-height:260px;margin:0;padding:14px;overflow:auto;white-space:pre-wrap;color:var(--color-ink);background:var(--color-surface);font:12px/1.55 var(--font-mono)}.note-form-footer button:disabled{opacity:.6}@media(max-width:840px){.notes-view{grid-template-columns:1fr}}.error-banner{background:var(--color-danger-soft);color:var(--color-danger);padding:10px 38px;border-bottom:1px solid #f5b8ad}.search-view{max-width:940px}.search-box{display:grid;grid-template-columns:28px 1fr auto;gap:9px;align-items:center;background:var(--color-surface);border:1px solid var(--color-border-strong);padding:8px 9px 8px 16px;border-radius:13px;box-shadow:0 8px 28px #1268de17}.search-box input{border:0;outline:0;background:transparent;font-size:16px;padding:9px}.search-box button,.result-meta button,.decision-card footer button{border:0;border-radius:7px;cursor:pointer}.search-box button{background:var(--color-primary);padding:10px 17px;font-weight:700;color:var(--color-on-primary)}.hero-empty{text-align:center;max-width:540px;margin:104px auto}.line-art{font:400 42px var(--font-mono);color:var(--color-mint);transform:rotate(25deg)}.hero-empty h2{font-size:27px;margin:12px}.hero-empty p{color:var(--color-text-muted);line-height:1.6}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:19px}.section-heading h2{margin:6px 0 0;font-size:20px}.mode-badge{font:500 11px var(--font-mono);padding:6px 9px;border:1px solid var(--color-border-strong);border-radius:20px;color:var(--color-text-muted)}.result-card,.decision-card,.empty-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:19px;margin-bottom:11px}.result-meta{display:flex;justify-content:space-between;color:var(--color-text-muted);font:500 11px var(--font-mono)}.result-meta button,.decision-card footer button{color:var(--color-primary-strong);background:var(--color-primary-soft);padding:5px 8px}.result-card p{line-height:1.6;margin-bottom:0;white-space:pre-wrap}.decision-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.decision-card{margin:0;display:flex;flex-direction:column;min-height:220px}.decision-top,.decision-card footer{display:flex;justify-content:space-between;align-items:center;color:var(--color-text-subtle);font:500 10px var(--font-mono)}.decision-card h3{font-size:18px;line-height:1.35;margin:20px 0 8px}.decision-card p{color:var(--color-text-muted);line-height:1.55;margin-top:0}.decision-card footer{margin-top:auto;border-top:1px solid var(--color-border-subtle);padding-top:13px}.status{text-transform:uppercase;padding:4px 7px;border-radius:4px;color:var(--color-mint-strong);background:var(--color-mint-soft)}.status.superseded{background:var(--color-surface-subtle);color:var(--color-text-muted)}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:28px}.metric{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:18px}.metric strong{display:block;font:600 28px var(--font-mono)}.metric span{font-size:12px;color:var(--color-text-subtle)}.source-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;overflow:hidden}.table-row{display:grid;grid-template-columns:2fr .7fr 1fr .7fr;align-items:center;gap:15px;padding:15px 18px;border-top:1px solid var(--color-border-subtle);font-size:13px}.table-head{border:0;background:var(--color-surface-subtle);color:var(--color-text-subtle);font:500 10px var(--font-mono);text-transform:uppercase;letter-spacing:.08em}.table-row>span:first-child{display:flex;flex-direction:column}.table-row small{color:var(--color-text-subtle);margin-top:3px}.ready{color:var(--color-mint-strong)}.ready i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--color-mint);margin-right:7px}.drawer{position:fixed;z-index:5;right:0;top:0;bottom:0;width:min(490px,90vw);background:var(--color-surface-subtle);border-left:1px solid var(--color-border-strong);box-shadow:-12px 0 40px #0b28541f;padding:27px;overflow:auto}.drawer header{display:flex;justify-content:space-between}.drawer header h2{font-size:18px}.drawer header button{background:transparent;border:0;cursor:pointer}.locator{font:500 11px var(--font-mono);color:var(--color-text-muted);border-top:1px solid var(--color-border-subtle);padding-top:18px;margin-top:10px}.locator span{margin:0 7px}.drawer blockquote{margin:20px 0;padding:19px;border-left:3px solid var(--color-mint);background:var(--color-mint-soft);font:400 13px/1.75 var(--font-mono);white-space:pre-wrap}.integrity{display:flex;gap:11px;padding:15px;border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-muted)}.integrity span{display:flex;flex-direction:column;font-size:12px}.integrity strong{color:var(--color-ink-soft);margin-bottom:3px}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;width:auto;height:auto;overflow:hidden}.workspace,.system-status{display:none}.sidebar nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.nav-item{min-width:0;grid-template-columns:20px minmax(0,1fr) auto;padding:9px 8px;font-size:12px}.nav-item b{padding:2px 5px;font-size:9px}.brand{padding-bottom:10px}main{grid-column:1}.topbar{gap:14px;padding:20px;height:auto}.import-button{flex:0 0 auto;padding:9px 11px;font-size:12px}.content{padding:28px 18px}.search-box{grid-template-columns:24px minmax(0,1fr) auto;padding-left:12px}.search-box input{width:100%;min-width:0}.search-box button{padding-inline:12px}.decision-grid,.metrics{grid-template-columns:1fr}.table-row{grid-template-columns:1fr 1fr}.table-row span:nth-child(2){display:none}.studio-intro,.studio-preview>header{align-items:stretch;flex-direction:column}.studio-source{min-width:0}.studio-preview-items{grid-template-columns:1fr}.studio-tool{min-height:112px}.mind-map-view,.mind-map-view ul{grid-template-columns:1fr}.studio-data-table{overflow-x:auto}.studio-data-row{min-width:680px}}@media(max-width:520px){.studio-grid{grid-template-columns:1fr}}.inline-error,.degraded-banner,.integrity-error{margin:14px 0;border:1px solid;border-radius:8px;padding:11px 13px}.inline-error{padding:11px 13px}.degraded-banner{background:var(--color-warning-soft);border-color:#e7d79a;color:var(--color-warning)}.context-budget-notice{display:flex;flex-wrap:wrap;justify-content:space-between;gap:7px 14px;margin:14px 0;border:1px solid #c8d8df;border-radius:8px;background:var(--color-primary-soft);color:var(--color-ink-soft);padding:10px 12px;font-size:11px}.context-budget-notice span{display:flex;flex-wrap:wrap;gap:5px}.context-budget-notice code{border-radius:4px;background:var(--color-border-subtle);padding:1px 4px}.search-scope{margin-top:12px;border:1px solid var(--color-border);border-radius:9px;background:var(--color-surface-subtle)}.search-scope>summary{cursor:pointer;padding:10px 13px;color:var(--color-text-muted);font:500 11px var(--font-mono)}.scope-controls{display:grid;grid-template-columns:1fr 1fr auto;gap:18px;align-items:start;border-top:1px solid var(--color-border-subtle);padding:14px}.scope-controls fieldset{min-width:0;margin:0;border:0;padding:0}.scope-controls legend{margin-bottom:8px;color:var(--color-text-muted);font:500 10px var(--font-mono);text-transform:uppercase}.source-scope-options{display:grid;max-height:150px;gap:6px;overflow:auto}.source-scope-options label,.time-scope label{display:flex;align-items:center;gap:7px;color:var(--color-ink-soft);font-size:12px}.time-scope{display:grid;gap:8px}.time-scope label{justify-content:space-between}.time-scope input{min-width:0;border:1px solid var(--color-border-strong);border-radius:6px;background:#fff;padding:6px;color:var(--color-ink-soft);font-size:11px}.time-scope small{color:var(--color-text-subtle);font-size:10px;line-height:1.4}.scope-controls>button{border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;padding:7px 9px;cursor:pointer}.scope-controls>button:disabled{cursor:default;opacity:.5}.scope-summary{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 2px 0;color:var(--color-text-subtle);font-size:11px}.scope-summary strong{color:var(--color-text-muted)}.scope-summary.active{color:var(--color-mint-strong)}.integrity-error{background:var(--color-danger-soft);border-color:#f5b8ad;color:var(--color-danger)}.mode-badge.integrity-failed{border-color:#dc846f;color:var(--color-danger);background:var(--color-danger-soft)}.answer-statements{display:grid;gap:10px;margin-top:18px}.answer-statement{border:1px solid var(--color-border-subtle);border-radius:8px;padding:13px}.answer-statement p{margin-top:7px}.answer-statement footer{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.answer-statement footer button{border:0;border-radius:7px;cursor:pointer;color:var(--color-primary-strong);background:var(--color-primary-soft);padding:5px 8px}.statement-kind{display:inline-block;border-radius:4px;padding:4px 7px;font:500 10px var(--font-mono);text-transform:uppercase;background:var(--color-surface-subtle);color:var(--color-text-muted)}.statement-kind.direct{background:var(--color-mint-soft);color:var(--color-mint-strong)}.statement-kind.synthesis{background:var(--color-primary-soft);color:var(--color-primary-strong)}.statement-kind.inference{background:#f0eaff;color:#65459a}.retrieval-debug{margin-top:14px;border-top:1px solid var(--color-border-subtle);padding-top:10px}.retrieval-debug summary{width:fit-content;color:var(--color-text-muted);cursor:pointer;font:500 11px var(--font-mono)}.retrieval-debug[open] summary{color:var(--color-mint-strong)}.retrieval-debug dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:10px 0 0}.retrieval-debug dl div{min-width:0;border:1px solid var(--color-border-subtle);border-radius:6px;background:var(--color-surface-subtle);padding:7px 8px}.retrieval-debug dt{color:var(--color-text-subtle);font:500 9px var(--font-mono);text-transform:uppercase}.retrieval-debug dd{margin:4px 0 0;color:var(--color-ink-soft);font-size:11px;overflow-wrap:anywhere}@media(max-width:760px){.scope-controls{grid-template-columns:1fr}.retrieval-debug dl{grid-template-columns:1fr 1fr}}.registry-filters{display:grid;gap:10px;margin-bottom:20px}.registry-filters fieldset{display:flex;flex-wrap:wrap;gap:7px;margin:0;padding:0;border:0}.registry-filters legend{float:left;min-width:54px;padding:7px 0;color:var(--color-text-muted);font:500 10px var(--font-mono);text-transform:uppercase}.registry-filters button{border:1px solid var(--color-border-strong);border-radius:18px;background:transparent;color:var(--color-text-muted);cursor:pointer;padding:6px 10px;text-transform:capitalize}.registry-filters button[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.memory-labels{display:flex;align-items:center;gap:6px}.memory-kind{border-radius:4px;padding:4px 7px;font:500 10px var(--font-mono);text-transform:uppercase;background:var(--color-primary-soft);color:var(--color-primary-strong)}.memory-kind.assumption{background:var(--color-warning-soft);color:var(--color-warning)}.memory-kind.constraint{background:#f0eaff;color:#65459a}.memory-kind.alternative{background:var(--color-surface-subtle);color:var(--color-text-muted)}.governance-actions,.edit-actions{display:flex;align-items:end;gap:8px;margin:14px 0}.governance-actions label{display:flex;flex-direction:column;gap:4px;color:var(--color-text-muted);font-size:11px}.governance-actions select,.governance-actions button,.edit-actions button{min-height:34px;border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;color:var(--color-ink-soft);padding:6px 9px}.governance-actions button,.edit-actions button{cursor:pointer}.governance-actions button:disabled,.edit-actions button:disabled{cursor:wait;opacity:.6}.memory-edit-form{display:grid;gap:10px;margin-top:16px}.memory-edit-form label{display:grid;gap:5px;color:var(--color-text-muted);font-size:11px}.memory-edit-form textarea{width:100%;min-height:74px;resize:vertical;border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;color:var(--color-ink);padding:9px;font:inherit}.memory-edit-form textarea[aria-invalid=true]{border-color:#c85d48}.edit-actions{justify-content:flex-end;margin:0}.edit-actions button[type=submit]{background:var(--color-primary);color:var(--color-on-primary)}.source-diagnostics .table-row{grid-template-columns:1.7fr .55fr .9fr 1.15fr 1fr}.job-health,.source-actions{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}.job-health strong{color:var(--color-mint-strong);text-transform:capitalize}.job-health.failed strong,.job-error-code,.job-error-detail,.action-error{color:var(--color-danger)}.job-health small,.source-actions small{overflow-wrap:anywhere}.job-error-code{font-family:var(--font-mono)}.source-actions button{border:0;border-radius:7px;cursor:pointer;color:var(--color-primary-strong);background:var(--color-primary-soft);padding:6px 8px}.source-actions button:disabled{cursor:wait;opacity:.65}.source-actions .danger-action{background:var(--color-danger-soft);color:var(--color-danger)}.dialog-backdrop{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#17201d7a}.deletion-dialog{width:min(560px,100%);max-height:calc(100vh - 40px);overflow:auto;border-radius:12px;background:var(--color-surface-subtle);box-shadow:0 20px 70px #0f181447;padding:25px}.deletion-dialog h2{margin:7px 0 8px}.deletion-dialog>p{color:var(--color-text-muted)}.deletion-identity{display:flex;flex-direction:column;gap:5px;padding:11px 13px;border:1px solid var(--color-border);border-radius:8px}.deletion-identity span{color:var(--color-text-subtle);font-size:11px}.deletion-identity code{overflow-wrap:anywhere}.impact-counts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:15px 0}.impact-counts div{border:1px solid var(--color-border-subtle);border-radius:7px;padding:9px}.impact-counts dt{color:var(--color-text-subtle);font-size:10px}.impact-counts dd{margin:4px 0 0;font:600 18px var(--font-mono)}.deletion-dialog footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.deletion-dialog footer button{border:0;border-radius:7px;cursor:pointer;padding:9px 13px}.deletion-dialog footer button:disabled{cursor:wait;opacity:.6}.deletion-dialog .confirm-delete{background:var(--color-danger);color:#fff}.recent-failures{margin-bottom:28px}.failure-list{display:grid;gap:10px}.failure-card{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(260px,1.7fr) minmax(120px,1fr) auto;align-items:center;gap:12px;background:#fff;border:1px solid #efb9ae;border-radius:9px;padding:13px 15px}.failure-card.dead_letter{background:var(--color-danger-soft)}.failure-summary,.failure-metadata{display:flex;flex-direction:column;gap:3px}.failure-summary span,.failure-metadata,.failure-card p,.failure-card small{color:var(--color-danger);font-size:11px}.failure-card code{color:var(--color-danger);overflow-wrap:anywhere}.failure-card p{margin:0;overflow-wrap:anywhere}.failure-card button{border:0;border-radius:7px;cursor:pointer;background:var(--color-primary);color:var(--color-on-primary);padding:7px 10px}.failure-card button:disabled{cursor:wait;opacity:.65}.diagnostic-intro{max-width:760px;margin:-7px 0 20px;color:var(--color-text-muted);font-size:13px;line-height:1.55}.model-run-filters{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;gap:10px;align-items:end;margin-bottom:20px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface-subtle);padding:14px}.settings-note{margin:-7px 0 14px;color:var(--color-text-muted);font-size:13px}.model-run-filters label{display:grid;gap:6px;color:var(--color-text-muted);font:500 10px var(--font-mono);text-transform:uppercase}.model-run-filters .secret-removal{display:flex;align-items:center;align-self:center;gap:7px;padding-bottom:8px;text-transform:none}.model-run-filters .secret-removal input{width:auto}.model-run-filters input,.model-run-filters select{min-width:0;border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;padding:8px 9px;color:var(--color-ink-soft);font:400 12px var(--font-sans);text-transform:none}.model-run-filters>div{display:flex;gap:6px}.model-run-filters button,.run-lineage button{border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;padding:8px 10px;cursor:pointer}.model-run-filters button[type=submit]{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary)}.model-run-filters button:disabled{cursor:wait;opacity:.6}.diagnostic-state{border:1px dashed var(--color-border-strong);border-radius:9px;padding:22px;color:var(--color-text-muted);text-align:center}.model-run-layout{display:grid;grid-template-columns:minmax(390px,1.15fr) minmax(310px,.85fr);gap:16px;align-items:start}.model-run-list{display:grid;gap:7px}.model-run-row{display:grid;grid-template-columns:minmax(140px,1.2fr) minmax(120px,1fr) auto minmax(130px,.8fr);gap:12px;align-items:center;width:100%;border:1px solid var(--color-border);border-radius:9px;background:#fff;padding:12px;color:var(--color-ink-soft);text-align:left;cursor:pointer}.model-run-row:hover,.model-run-row.selected{border-color:var(--color-primary);box-shadow:0 0 0 2px #1268de29}.model-run-row>span{display:flex;min-width:0;flex-direction:column;gap:3px}.model-run-row code,.model-run-row small,.model-run-row time{overflow:hidden;color:var(--color-text-subtle);font:400 10px var(--font-mono);text-overflow:ellipsis;white-space:nowrap}.run-status{width:fit-content;border-radius:4px;background:var(--color-surface-subtle);padding:4px 7px;color:var(--color-text-muted);font:600 9px var(--font-mono);text-transform:uppercase}.run-status.succeeded{background:var(--color-mint-soft);color:var(--color-mint-strong)}.run-status.failed{background:var(--color-danger-soft);color:var(--color-danger)}.run-status.running{background:var(--color-primary-soft);color:var(--color-primary-strong)}.model-run-detail{position:sticky;top:16px;border:1px solid var(--color-border);border-radius:10px;background:#fff;padding:18px}.model-run-detail h3{margin:16px 0 5px;font-size:17px}.run-id{display:block;overflow-wrap:anywhere;color:var(--color-text-subtle);font-size:10px}.run-metadata{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:18px 0}.run-metadata div{min-width:0;border:1px solid var(--color-border-subtle);border-radius:7px;padding:8px}.run-metadata dt,.run-lineage span{color:var(--color-text-subtle);font:500 9px var(--font-mono);text-transform:uppercase}.run-metadata dd{margin:4px 0 0;overflow-wrap:anywhere;color:var(--color-ink-soft);font-size:11px}.run-lineage{border-top:1px solid var(--color-border-subtle);padding-top:15px}.run-lineage h4{margin:0 0 10px}.run-lineage button,.lineage-current{display:grid;width:100%;gap:3px;margin-top:7px;text-align:left}.lineage-current{border-left:3px solid var(--color-mint);background:var(--color-mint-soft);padding:8px 10px}.run-lineage code{overflow-wrap:anywhere;font-size:10px}.run-lineage small,.run-lineage p{margin:5px 0;color:var(--color-text-subtle);font-size:10px}@media(max-width:1100px){.model-run-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.source-diagnostics .table-row{grid-template-columns:1fr 1fr}.failure-card{grid-template-columns:1fr}.impact-counts{grid-template-columns:repeat(2,1fr)}.model-run-filters,.model-run-layout{grid-template-columns:1fr}.model-run-row{grid-template-columns:1fr auto}.model-run-detail{position:static}} diff --git a/apps/api/proofline/web/index.html b/apps/api/proofline/web/index.html index 0e11e8d..0e63d8d 100644 --- a/apps/api/proofline/web/index.html +++ b/apps/api/proofline/web/index.html @@ -5,8 +5,8 @@ Proofline - - + +
diff --git a/apps/web/package.json b/apps/web/package.json index fc09f5d..de15e98 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -12,19 +12,22 @@ }, "dependencies": { "lucide-react": "^0.468.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.3.0", + "react-dom": "^19.3.0" }, "devDependencies": { "@playwright/test": "^1.61.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "jsdom": "^25.0.1", + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", + "@vitejs/plugin-react": "^6.1.2", + "jsdom": "^30.1.2", "typescript": "^5.7.2", - "vite": "^6.4.3", + "vite": "^8.3.3", "vitest": "^4.1.11" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" } } diff --git a/apps/web/scripts/check-egress.mjs b/apps/web/scripts/check-egress.mjs index ae7b658..ff26c68 100644 --- a/apps/web/scripts/check-egress.mjs +++ b/apps/web/scripts/check-egress.mjs @@ -20,6 +20,10 @@ function isApprovedAbsoluteUrl(rawUrl) { const url = new URL(rawUrl); if (LOOPBACK_HOSTS.has(url.hostname)) return true; if (url.hostname === "www.w3.org") return true; + if ( + url.protocol === "https:" && url.host === "react.dev" && + !url.username && !url.password && /^\/errors\/(?:[0-9]+)?$/u.test(url.pathname) + ) return true; return ( url.hostname === "reactjs.org" && url.pathname === "/docs/error-decoder.html" diff --git a/apps/web/scripts/check-egress.test.mjs b/apps/web/scripts/check-egress.test.mjs index b0d1e9e..ef12cb2 100644 --- a/apps/web/scripts/check-egress.test.mjs +++ b/apps/web/scripts/check-egress.test.mjs @@ -36,7 +36,15 @@ test("allows inert standards namespaces and React production diagnostics", () => 'const svgNamespace = "http://www.w3.org/2000/svg";', 'const xlinkNamespace = "http://www.w3.org/1999/xlink";', 'const decoder = "https://reactjs.org/docs/error-decoder.html?invariant=31";', + 'const react19Prefix = "https://react.dev/errors/";', + 'const react19Decoder = "https://react.dev/errors/31?args[]=object";', ].join("\n"); assert.deepEqual(findDisallowedUrls(text), []); }); + +test("keeps non-diagnostic React URLs and lookalike hosts blocked", () => { + for (const url of ["https://react.dev/api/collect", "https://react.dev/errors/31/more", "https://react.dev.evil.test/errors/31", "http://react.dev/errors/31", "https://react.dev:8443/errors/31"]) { + assert.equal(findDisallowedUrls(`fetch("${url}")`).length, 1, url); + } +}); diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index a045028..23c2030 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -413,7 +413,7 @@ function Nav({ onClick={onClick} > {icon} - {children} + {children}{" "} {count !== undefined && {count}} ); diff --git a/package-lock.json b/package-lock.json index aae6a19..bfec550 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,65 +22,53 @@ "version": "2.0.2", "dependencies": { "lucide-react": "^0.468.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": "^19.3.0", + "react-dom": "^19.3.0" }, "devDependencies": { "@playwright/test": "^1.61.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "jsdom": "^25.0.1", + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", + "@vitejs/plugin-react": "^6.1.2", + "jsdom": "^30.1.2", "typescript": "^5.7.2", - "vite": "^6.4.3", + "vite": "^8.3.3", "vitest": "^4.1.11" - } - }, - "apps/web/node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", - "dev": true - }, - "apps/web/node_modules/@types/react": { - "version": "18.3.31", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", - "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.2.2" - } - }, - "apps/web/node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "peerDependencies": { - "@types/react": "^18.0.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, "apps/web/node_modules/@vitejs/plugin-react": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", - "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.1.2.tgz", + "integrity": "sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.27", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" + "@rolldown/pluginutils": "^1.0.1" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "oxc-transform-react": "^0.152.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "oxc-transform-react": { + "optional": true + } } }, "apps/web/node_modules/lucide-react": { @@ -112,164 +100,49 @@ "license": "MIT" }, "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-7.1.3.tgz", + "integrity": "sha512-1t1U8Cm3RBl9vh3RAZhjkPaduzLSvQJRToRrxpGR/eDRW99mOREleuu+mWfiFa795bUzjwht7NgphCKTs2ianQ==", "dev": true, "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", - "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", - "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helpers": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@csstools/css-calc": "^3.4.2", + "@csstools/css-color-parser": "^4.2.5", + "@csstools/css-parser-algorithms": "^4.0.2", + "@csstools/css-tokenizer": "^4.0.2", + "lru-cache": "^11.5.3" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", - "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", - "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "node_modules/@asamuzakjp/dom-selector": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-9.2.4.tgz", + "integrity": "sha512-YnVzxDxLaqL0t7Q4wfcgHZjg55Wm6y5EaO7Bhu3q9J7wq/8iw3PhsnWiOQhYekx4VexnbkgWpTT6n+QIV7kczw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" + "bidi-js": "^1.1.0", + "css-tree": "^3.2.1", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.5.3" }, "engines": { - "node": ">=6.9.0" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, - "node_modules/@babel/helper-module-transforms": { + "node_modules/@babel/code-frame": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", - "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, + "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", - "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -279,77 +152,11 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", - "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", - "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", - "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", @@ -360,55 +167,23 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", - "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "node_modules/@bramus/specificity": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.3.tgz", + "integrity": "sha512-0GEz8qJWokkUVYQYRukmkSHIFNoBH8QTreeHrAFbvz1XFYc3Y+puhMs8PQ5x8GNugiC2l5jvDBXKLbBIByeSBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" + "css-tree": "^3.2.1" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "specificity": "bin/cli.js" } }, "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.2.tgz", + "integrity": "sha512-grhRy3OKmniaAEKXMjua5z/EODX0MSqBGjunw8+j/3HQjOnahs2AGhvEOIYVUWcU6ScApbhLhVrQTX8XqrMrow==", "dev": true, "funding": [ { @@ -422,13 +197,13 @@ ], "license": "MIT-0", "engines": { - "node": ">=18" + "node": ">=20.19.0" } }, "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.4.3.tgz", + "integrity": "sha512-iex20d8CHVkyvg6B7UKV7uHnI2Bqo9g+EFfT9E0y+GvTvhZ/DwONJ+9aKb1dlqm0ZiGsL5RXjp0fCoJYnkeDjA==", "dev": true, "funding": [ { @@ -442,17 +217,17 @@ ], "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^4.0.2", + "@csstools/css-tokenizer": "^4.0.2" } }, "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.6.tgz", + "integrity": "sha512-iiPQ3iRWwnJkeEn6RIu6SJPr7hYrLz6XZ9s/QZl+2/LI5KQVjpl2fdmDSZKuD4xP6GMmMPgHFFXg6k1Wkz0Trg==", "dev": true, "funding": [ { @@ -466,503 +241,101 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" + "@csstools/color-helpers": "^6.1.2", + "@csstools/css-calc": "^3.4.3" }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], "engines": { - "node": ">=18" + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.2", + "@csstools/css-tokenizer": "^4.0.2" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.2.tgz", + "integrity": "sha512-40cSKyMvK+tq4qz6Awrlye2WGuOKt3FwPgtGg6KTfbHOWNw+Rk1rzbAtZnZ6IBhsY491HLRnDXwoyBAijmmILA==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.2" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.15.tgz", + "integrity": "sha512-J0u7HkVl2nzSlhsiTOp4AmwcUQ3D+mGEEKfBy/7To5/y7F2OHwyLrXfrhR0SMgr4p5Lo+eaMVSeai24zUcBIxA==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], - "engines": { - "node": ">=18" + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.2.tgz", + "integrity": "sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { - "node": ">=18" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "node": ">=20.19.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@exodus/bytes": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.16.0.tgz", + "integrity": "sha512-IcpW84uEn3N7ETtNZMlxKhfl6Pec8rUNGOTBtWbK1FKhJxIFAptZyVrvVRVBimAJxJCgc3PxepxkdWWG4DVzfA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -971,14 +344,14 @@ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/@oxc-project/types": { + "version": "0.152.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz", + "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==", "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" } }, "node_modules/@playwright/test": { @@ -1005,330 +378,285 @@ "resolved": "apps/web", "link": true }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", - "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz", + "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", - "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz", + "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", - "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz", + "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", - "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz", + "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", - "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", - "cpu": [ - "arm64" ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", - "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz", + "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", - "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", - "cpu": [ - "arm" ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", - "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz", + "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", - "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", - "cpu": [ - "arm64" ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", - "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz", + "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==", "cpu": [ "arm64" ], "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", - "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", - "cpu": [ - "loong64" + "libc": [ + "glibc" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", - "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", - "cpu": [ - "loong64" ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", - "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz", + "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==", "cpu": [ - "ppc64" + "arm64" ], "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", - "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz", + "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==", "cpu": [ "ppc64" ], "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", - "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", - "cpu": [ - "riscv64" + "libc": [ + "glibc" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", - "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", - "cpu": [ - "riscv64" ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", - "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz", + "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", - "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz", + "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", - "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz", + "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", - "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", - "cpu": [ - "x64" ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", - "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz", + "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", - "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz", + "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", - "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", - "cpu": [ - "ia32" ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", - "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz", + "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", - "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", - "cpu": [ - "x64" ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", @@ -1638,47 +966,6 @@ "license": "MIT", "peer": true }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.28.2" - } - }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -1703,11 +990,25 @@ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "dev": true + "node_modules/@types/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.3.0" + } }, "node_modules/@vitest/expect": { "version": "4.1.11", @@ -1822,16 +1123,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1877,95 +1168,16 @@ "node": ">=12" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.11.22", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.22.tgz", - "integrity": "sha512-pWc4w51fBFd7mav43/zKRC+RI6f4yfzQoVlfvE8dECePyfkn1bzLp01Fj0QACcyCZyFhiEMyD2qScfKRWgWibA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/browserslist": { - "version": "4.28.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz", - "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.11.20", - "caniuse-lite": "^1.0.30001810", - "electron-to-chromium": "^1.5.420", - "node-releases": "^2.0.54", - "update-browserslist-db": "^1.3.2" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/bidi-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.1.0.tgz", + "integrity": "sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "require-from-string": "^2.0.2" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001810", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", - "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "node_modules/chai": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", @@ -1976,50 +1188,30 @@ "node": ">=18" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "dev": true, "license": "MIT", "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=18" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true, "license": "MIT" }, @@ -2030,34 +1222,17 @@ "dev": true }, "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-8.0.0.tgz", + "integrity": "sha512-JQUCCK+/CAGbGGx618PlFZMXH81Jtj7t73CHv9dd/zVWvxgGT2zLFRjnKb+Ng46GIwcy+f7f88qd4duqllK+WQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^17.1.2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^22.14.0 || >=24.0.0" } }, "node_modules/decimal.js": { @@ -2067,16 +1242,6 @@ "dev": true, "license": "MIT" }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2087,6 +1252,16 @@ "node": ">=6" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", @@ -2095,61 +1270,19 @@ "license": "MIT", "peer": true }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.422", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.422.tgz", - "integrity": "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==", - "dev": true, - "license": "ISC" - }, "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=20.19.0" }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-module-lexer": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", @@ -2157,86 +1290,6 @@ "dev": true, "license": "MIT" }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -2274,23 +1327,6 @@ } } }, - "node_modules/form-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2305,278 +1341,364 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/html-encoding-sniffer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-7.0.0.tgz", + "integrity": "sha512-UikN5yr7xsCDAq87Or5or0PAlD3HJJOKVzM05az588WnpDJ4Ux7a2A53Qi6gofGg2/EtvF/H4hCi/TXfCW4Y6w==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, + "dependencies": { + "@exodus/bytes": "^1.15.1" + }, "engines": { - "node": ">=6.9.0" + "node": "^22.13.0 || >=24.0.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/get-proto": { + "node_modules/is-potential-custom-element-name": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "peer": true + }, + "node_modules/jsdom": { + "version": "30.1.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-30.1.2.tgz", + "integrity": "sha512-0FFE/jE1rppmVfUrJUgxqXjcwolZYIGtAgj1pTussMhNZxIxi7W/PvfWaMNroGi2B36X1IKHbexpZ9DhkoOPiQ==", "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "@asamuzakjp/css-color": "^7.1.3", + "@asamuzakjp/dom-selector": "^9.2.4", + "@bramus/specificity": "^2.4.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.15", + "@exodus/bytes": "^1.16.0", + "css-tree": "^3.2.1", + "data-urls": "^8.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^7.0.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.5.3", + "parse5": "^8.0.1", + "saxes": "^6.0.0", + "tough-cookie": "^6.0.2", + "undici": "^8.11.2", + "w3c-xmlserializer": "^6.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^17.2.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" + }, + "peerDependencies": { + "canvas": "^3.2.3" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, - "license": "MIT", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, "engines": { - "node": ">= 0.4" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 0.4" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=18" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 14" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 14" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsdom": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", - "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.1.0", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "json5": "lib/cli.js" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "node": ">= 12.0.0" }, - "bin": { - "loose-envify": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, "node_modules/lz-string": { @@ -2600,38 +1722,12 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } + "license": "CC0-1.0" }, "node_modules/min-indent": { "version": "1.0.1", @@ -2643,12 +1739,6 @@ "node": ">=4" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/nanoid": { "version": "3.3.18", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", @@ -2668,23 +1758,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-releases": { - "version": "2.0.54", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz", - "integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/nwsapi": { - "version": "2.2.24", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.24.tgz", - "integrity": "sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==", - "dev": true, - "license": "MIT" - }, "node_modules/obug": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", @@ -2700,13 +1773,13 @@ } }, "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^6.0.0" + "entities": "^8.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -2726,10 +1799,11 @@ "dev": true }, "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2785,9 +1859,9 @@ } }, "node_modules/postcss": { - "version": "8.5.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz", - "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==", + "version": "8.5.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.29.tgz", + "integrity": "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==", "dev": true, "funding": [ { @@ -2805,9 +1879,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.16", + "nanoid": "^3.3.19", "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -2840,28 +1914,24 @@ } }, "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", + "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" + "scheduler": "^0.28.0" }, "peerDependencies": { - "react": "^18.3.1" + "react": "^19.3.0" } }, "node_modules/react-is": { @@ -2872,15 +1942,6 @@ "license": "MIT", "peer": true }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -2895,63 +1956,49 @@ "node": ">=8" } }, - "node_modules/rollup": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", - "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rolldown": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz", + "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.9" + "@oxc-project/types": "=0.152.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.62.2", - "@rollup/rollup-android-arm64": "4.62.2", - "@rollup/rollup-darwin-arm64": "4.62.2", - "@rollup/rollup-darwin-x64": "4.62.2", - "@rollup/rollup-freebsd-arm64": "4.62.2", - "@rollup/rollup-freebsd-x64": "4.62.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", - "@rollup/rollup-linux-arm-musleabihf": "4.62.2", - "@rollup/rollup-linux-arm64-gnu": "4.62.2", - "@rollup/rollup-linux-arm64-musl": "4.62.2", - "@rollup/rollup-linux-loong64-gnu": "4.62.2", - "@rollup/rollup-linux-loong64-musl": "4.62.2", - "@rollup/rollup-linux-ppc64-gnu": "4.62.2", - "@rollup/rollup-linux-ppc64-musl": "4.62.2", - "@rollup/rollup-linux-riscv64-gnu": "4.62.2", - "@rollup/rollup-linux-riscv64-musl": "4.62.2", - "@rollup/rollup-linux-s390x-gnu": "4.62.2", - "@rollup/rollup-linux-x64-gnu": "4.62.2", - "@rollup/rollup-linux-x64-musl": "4.62.2", - "@rollup/rollup-openbsd-x64": "4.62.2", - "@rollup/rollup-openharmony-arm64": "4.62.2", - "@rollup/rollup-win32-arm64-msvc": "4.62.2", - "@rollup/rollup-win32-ia32-msvc": "4.62.2", - "@rollup/rollup-win32-x64-gnu": "4.62.2", - "@rollup/rollup-win32-x64-msvc": "4.62.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" + "@rolldown/binding-android-arm-eabi": "1.2.12", + "@rolldown/binding-android-arm64": "1.2.12", + "@rolldown/binding-darwin-arm64": "1.2.12", + "@rolldown/binding-darwin-x64": "1.2.12", + "@rolldown/binding-freebsd-x64": "1.2.12", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", + "@rolldown/binding-linux-arm64-gnu": "1.2.12", + "@rolldown/binding-linux-arm64-musl": "1.2.12", + "@rolldown/binding-linux-ppc64-gnu": "1.2.12", + "@rolldown/binding-linux-s390x-gnu": "1.2.12", + "@rolldown/binding-linux-x64-gnu": "1.2.12", + "@rolldown/binding-linux-x64-musl": "1.2.12", + "@rolldown/binding-openharmony-arm64": "1.2.12", + "@rolldown/binding-win32-arm64-msvc": "1.2.12", + "@rolldown/binding-win32-x64-msvc": "1.2.12" + } }, "node_modules/saxes": { "version": "6.0.0", @@ -2967,22 +2014,10 @@ } }, "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" }, "node_modules/siginfo": { "version": "2.0.0", @@ -3028,13 +2063,6 @@ "node": ">=8" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -3079,100 +2107,79 @@ } }, "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "version": "7.4.16", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.16.tgz", + "integrity": "sha512-QwBER5KMR86IIjpIiO7H/Z3IMJPsZ1A6RKPAqzTTgOyUQUSt9FdnKcqhTaJmkY6HVrgouZHZR0ncK5QxvmnQeg==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.86" + "tldts-core": "^7.4.16" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "version": "7.4.16", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.16.tgz", + "integrity": "sha512-MDolfaSJtlSK5Y0A1xl3277ekubZwobpBjugknDizI9O5Rm60a1m8k4ICK+MRsCDzPygT81mp3BBf5RKDlFRfA==", "dev": true, "license": "MIT" }, "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.2.tgz", + "integrity": "sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "tldts": "^6.1.32" + "tldts": "^7.0.5" }, "engines": { "node": ">=16" } }, "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-7.0.0.tgz", + "integrity": "sha512-BcDSDW+SIGWVOns1Zm6Yg91q9AEj7eaID0QDY9oIqJD1A8dscNwMcl9Sms2DeuWCNov1X0/oXanHGYQBSLwZsg==", "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, "engines": { - "node": ">=18" + "node": "^22.14.0 || >=24.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz", - "integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==", + "node_modules/undici": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz", + "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "engines": { + "node": ">=22.19.0" } }, "node_modules/vite": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", - "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.3.tgz", + "integrity": "sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.28", + "rolldown": "~1.2.11", + "tinyglobby": "^0.2.17" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -3181,14 +2188,15 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.7.1", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -3197,13 +2205,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { + "optional": true + }, + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { @@ -3320,64 +2331,51 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-6.0.0.tgz", + "integrity": "sha512-4Nsy8K5Tr6SPDH9jhKJOHf7ChDrc1zufZTVSF7x72hwuEXBqxqk9G6cK+K2NRUtB3iELRJqjXb4JPDMBjMTl2Q==", "dev": true, "license": "MIT", "dependencies": { "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=18" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-17.2.0.tgz", + "integrity": "sha512-IhLIHNcBrzIixC5XXsbr4DxdjajyA5vQ5RwGZMtrUp+GbtE5Nrsge9QKau7jXrC0aTXLYGV0xiW7Tb4YS2aomw==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" + "@exodus/bytes": "^1.16.0", + "tr46": "^7.0.0", + "webidl-conversions": "^8.0.1" }, "engines": { - "node": ">=18" + "node": "^22.14.0 || >=24.0.0" } }, "node_modules/why-is-node-running": { @@ -3397,28 +2395,6 @@ "node": ">=8" } }, - "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/xml-name-validator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", @@ -3435,12 +2411,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true, "license": "MIT" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } } From ed3f823b193f7d64362b5f7c7f678ff201a49e4c Mon Sep 17 00:00:00 2001 From: Thang Luu Date: Wed, 7 Oct 2026 11:40:13 +0700 Subject: [PATCH 2/2] Align web CI and development Node with jsdom 30 requirements --- .github/workflows/ci.yml | 4 ++-- .github/workflows/desktop-artifacts.yml | 2 +- CHANGELOG.md | 1 + apps/web/package.json | 2 +- docs/getting-started.md | 6 +++--- package-lock.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a414e4c..4dfbebe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: python-version: "3.11" - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: - node-version: "20" + node-version: "22.22.2" cache: npm - run: python -m venv .venv && .venv/bin/python -m pip install -e '.[dev]' - run: npm ci @@ -46,7 +46,7 @@ jobs: ref: ${{ inputs.source_ref || github.sha }} - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: - node-version: "20" + node-version: "22.22.2" cache: npm - run: npm ci - run: npm run test:web diff --git a/.github/workflows/desktop-artifacts.yml b/.github/workflows/desktop-artifacts.yml index 20fc8be..331e477 100644 --- a/.github/workflows/desktop-artifacts.yml +++ b/.github/workflows/desktop-artifacts.yml @@ -38,7 +38,7 @@ jobs: python-version: "3.11" - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: - node-version: "20" + node-version: "22.22.2" cache: npm - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable 2026-08-05 - name: Install build dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aae595..d331aad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- Align development and CI Node.js with jsdom 30 requirements. - Upgrade React/ReactDOM and their types together with the Vite/React-plugin/jsdom toolchain; deduplicate the workspace runtime. - Preserve spacing in navigation accessible names and recognize the narrow React 19 production diagnostic URL path in the static egress check. - Rebuild the packaged web bundle from the upgraded toolchain. diff --git a/apps/web/package.json b/apps/web/package.json index de15e98..7fc2db5 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -28,6 +28,6 @@ "vitest": "^4.1.11" }, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } } diff --git a/docs/getting-started.md b/docs/getting-started.md index 96656b5..ee6d3cb 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -4,7 +4,7 @@ ### Requirements and install -Use Python 3.11 or newer, `uv`, Node.js 20 or newer, and npm. Repository development uses an isolated virtual environment; it does not require a global `proofline` install. +Use Python 3.11 or newer, `uv`, Node.js 22.22.2 (or compatible 24.15+/26+), and npm. Repository development uses an isolated virtual environment; it does not require a global `proofline` install. ```bash git clone https://github.com/thangldw/proofline @@ -39,7 +39,7 @@ Next: [architecture](architecture.md), [decision lifecycle](decision-lifecycle.m ### Yêu cầu và cài đặt -Dùng Python 3.11 trở lên, `uv`, Node.js 20 trở lên và npm. Development từ repository dùng virtual environment độc lập; không cần cài global `proofline`. +Dùng Python 3.11 trở lên, `uv`, Node.js 22.22.2 (hoặc bản tương thích 24.15+/26+) và npm. Development từ repository dùng virtual environment độc lập; không cần cài global `proofline`. ```bash git clone https://github.com/thangldw/proofline @@ -74,7 +74,7 @@ Tiếp theo: [architecture](architecture.md), [decision lifecycle](decision-life ### 要件と install -Python 3.11 以上、`uv`、Node.js 20 以上、npm を使います。Repository development は独立 virtual environment を使い、global `proofline` install は不要です。 +Python 3.11 以上、`uv`、Node.js 22.22.2(互換の 24.15+/26+ も可)、npm を使います。Repository development は独立 virtual environment を使い、global `proofline` install は不要です。 ```bash git clone https://github.com/thangldw/proofline diff --git a/package-lock.json b/package-lock.json index bfec550..e0ffb94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "vitest": "^4.1.11" }, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, "apps/web/node_modules/@vitejs/plugin-react": {