diff --git a/actionagent/app/assets/builds/action_agent.js b/actionagent/app/assets/builds/action_agent.js index cceab6b7..9dd3d71d 100644 --- a/actionagent/app/assets/builds/action_agent.js +++ b/actionagent/app/assets/builds/action_agent.js @@ -1,97 +1,97 @@ -var IZ=Object.create;var E_=Object.defineProperty;var jZ=Object.getOwnPropertyDescriptor;var $Z=Object.getOwnPropertyNames;var LZ=Object.getPrototypeOf,zZ=Object.prototype.hasOwnProperty;var io=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),BZ=(e,t)=>{for(var r in t)E_(e,r,{get:t[r],enumerable:!0})},FZ=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $Z(t))!zZ.call(e,o)&&o!==r&&E_(e,o,{get:()=>t[o],enumerable:!(n=jZ(t,o))||n.enumerable});return e};var G=(e,t,r)=>(r=e!=null?IZ(LZ(e)):{},FZ(t||!e||!e.__esModule?E_(r,"default",{value:e,enumerable:!0}):r,e));var R3=io(Tt=>{"use strict";var O_=Symbol.for("react.transitional.element"),UZ=Symbol.for("react.portal"),WZ=Symbol.for("react.fragment"),HZ=Symbol.for("react.strict_mode"),KZ=Symbol.for("react.profiler"),qZ=Symbol.for("react.consumer"),VZ=Symbol.for("react.context"),GZ=Symbol.for("react.forward_ref"),YZ=Symbol.for("react.suspense"),XZ=Symbol.for("react.memo"),G3=Symbol.for("react.lazy"),ZZ=Symbol.for("react.activity"),H3=Symbol.iterator;function JZ(e){return e===null||typeof e!="object"?null:(e=H3&&e[H3]||e["@@iterator"],typeof e=="function"?e:null)}var Y3={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},X3=Object.assign,Z3={};function hf(e,t,r){this.props=e,this.context=t,this.refs=Z3,this.updater=r||Y3}hf.prototype.isReactComponent={};hf.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")};hf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function J3(){}J3.prototype=hf.prototype;function P_(e,t,r){this.props=e,this.context=t,this.refs=Z3,this.updater=r||Y3}var M_=P_.prototype=new J3;M_.constructor=P_;X3(M_,hf.prototype);M_.isPureReactComponent=!0;var K3=Array.isArray;function T_(){}var qr={H:null,A:null,T:null,S:null},Q3=Object.prototype.hasOwnProperty;function D_(e,t,r){var n=r.ref;return{$$typeof:O_,type:e,key:t,ref:n!==void 0?n:null,props:r}}function QZ(e,t){return D_(e.type,t,e.props)}function I_(e){return typeof e=="object"&&e!==null&&e.$$typeof===O_}function RZ(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var q3=/\/+/g;function N_(e,t){return typeof e=="object"&&e!==null&&e.key!=null?RZ(""+e.key):t.toString(36)}function eJ(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(T_,T_):(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 gf(e,t,r,n,o){var a=typeof e;(a==="undefined"||a==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(a){case"bigint":case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case O_:case UZ:i=!0;break;case G3:return i=e._init,gf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+N_(e,0):n,K3(o)?(r="",i!=null&&(r=i.replace(q3,"$&/")+"/"),gf(o,t,r,"",function(u){return u})):o!=null&&(I_(o)&&(o=QZ(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(q3,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(K3(e))for(var l=0;l{"use strict";eD.exports=R3()});var cD=io(rn=>{"use strict";function z_(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nF0(s,r))lF0(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lF0(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function F0(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}rn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(tD=performance,rn.unstable_now=function(){return tD.now()}):(j_=Date,rD=j_.now(),rn.unstable_now=function(){return j_.now()-rD});var tD,j_,rD,Us=[],Yl=[],nJ=1,ti=null,Mo=3,B_=!1,Og=!1,Pg=!1,F_=!1,aD=typeof setTimeout=="function"?setTimeout:null,iD=typeof clearTimeout=="function"?clearTimeout:null,nD=typeof setImmediate<"u"?setImmediate:null;function U0(e){for(var t=fs(Yl);t!==null;){if(t.callback===null)W0(Yl);else if(t.startTime<=e)W0(Yl),t.sortIndex=t.expirationTime,z_(Us,t);else break;t=fs(Yl)}}function U_(e){if(Pg=!1,U0(e),!Og)if(fs(Us)!==null)Og=!0,vf||(vf=!0,yf());else{var t=fs(Yl);t!==null&&W_(U_,t.startTime-e)}}var vf=!1,Mg=-1,sD=5,lD=-1;function uD(){return F_?!0:!(rn.unstable_now()-lDe&&uD());){var n=ti.callback;if(typeof n=="function"){ti.callback=null,Mo=ti.priorityLevel;var o=n(ti.expirationTime<=e);if(e=rn.unstable_now(),typeof o=="function"){ti.callback=o,U0(e),t=!0;break t}ti===fs(Us)&&W0(Us),U0(e)}else W0(Us);ti=fs(Us)}if(ti!==null)t=!0;else{var a=fs(Yl);a!==null&&W_(U_,a.startTime-e),t=!1}}break e}finally{ti=null,Mo=r,B_=!1}t=void 0}}finally{t?yf():vf=!1}}}var yf;typeof nD=="function"?yf=function(){nD($_)}:typeof MessageChannel<"u"?(L_=new MessageChannel,oD=L_.port2,L_.port1.onmessage=$_,yf=function(){oD.postMessage(null)}):yf=function(){aD($_,0)};var L_,oD;function W_(e,t){Mg=aD(function(){e(rn.unstable_now())},t)}rn.unstable_IdlePriority=5;rn.unstable_ImmediatePriority=1;rn.unstable_LowPriority=4;rn.unstable_NormalPriority=3;rn.unstable_Profiling=null;rn.unstable_UserBlockingPriority=2;rn.unstable_cancelCallback=function(e){e.callback=null};rn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,z_(Yl,e),fs(Us)===null&&e===fs(Yl)&&(Pg?(iD(Mg),Mg=-1):Pg=!0,W_(U_,r-n))):(e.sortIndex=o,z_(Us,e),Og||B_||(Og=!0,vf||(vf=!0,yf()))),e};rn.unstable_shouldYield=uD;rn.unstable_wrapCallback=function(e){var t=Mo;return function(){var r=Mo;Mo=t;try{return e.apply(this,arguments)}finally{Mo=r}}}});var fD=io((aSe,dD)=>{"use strict";dD.exports=cD()});var mD=io(Go=>{"use strict";var oJ=Y();function pD(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function gD(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(gD)}catch(e){console.error(e)}}gD(),hD.exports=mD()});var N8=io(mb=>{"use strict";var Yn=fD(),W4=Y(),sJ=Ig();function ke(e){var t="https://react.dev/errors/"+e;if(1Af||(e.current=EA[Af],EA[Af]=null,Af--)}function Lr(e,t){Af++,EA[Af]=e.current,e.current=t}var hs=ys(null),ih=ys(null),su=ys(null),kx=ys(null);function _x(e,t){switch(Lr(su,t),Lr(ih,e),Lr(hs,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?A4(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=A4(t),e=m8(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}uo(hs),Lr(hs,e)}function Hf(){uo(hs),uo(ih),uo(su)}function NA(e){e.memoizedState!==null&&Lr(kx,e);var t=hs.current,r=m8(t,e.type);t!==r&&(Lr(ih,e),Lr(hs,r))}function Ax(e){ih.current===e&&(uo(hs),uo(ih)),kx.current===e&&(uo(kx),yh._currentValue=Ec)}var H_,xD;function kc(e){if(H_===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);H_=t&&t[1]||"",xD=-1()=>(t||e((t={exports:{}}).exports,t),t.exports),gJ=(e,t)=>{for(var r in t)B2(e,r,{get:t[r],enumerable:!0})},hJ=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fJ(t))!mJ.call(e,o)&&o!==r&&B2(e,o,{get:()=>t[o],enumerable:!(n=dJ(t,o))||n.enumerable});return e};var V=(e,t,r)=>(r=e!=null?cJ(pJ(e)):{},hJ(t||!e||!e.__esModule?B2(r,"default",{value:e,enumerable:!0}):r,e));var gI=po(It=>{"use strict";var W2=Symbol.for("react.transitional.element"),yJ=Symbol.for("react.portal"),vJ=Symbol.for("react.fragment"),xJ=Symbol.for("react.strict_mode"),bJ=Symbol.for("react.profiler"),wJ=Symbol.for("react.consumer"),SJ=Symbol.for("react.context"),kJ=Symbol.for("react.forward_ref"),_J=Symbol.for("react.suspense"),CJ=Symbol.for("react.memo"),uI=Symbol.for("react.lazy"),AJ=Symbol.for("react.activity"),aI=Symbol.iterator;function EJ(e){return e===null||typeof e!="object"?null:(e=aI&&e[aI]||e["@@iterator"],typeof e=="function"?e:null)}var cI={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},dI=Object.assign,fI={};function Ef(e,t,r){this.props=e,this.context=t,this.refs=fI,this.updater=r||cI}Ef.prototype.isReactComponent={};Ef.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")};Ef.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function pI(){}pI.prototype=Ef.prototype;function H2(e,t,r){this.props=e,this.context=t,this.refs=fI,this.updater=r||cI}var K2=H2.prototype=new pI;K2.constructor=H2;dI(K2,Ef.prototype);K2.isPureReactComponent=!0;var iI=Array.isArray;function U2(){}var Xr={H:null,A:null,T:null,S:null},mI=Object.prototype.hasOwnProperty;function q2(e,t,r){var n=r.ref;return{$$typeof:W2,type:e,key:t,ref:n!==void 0?n:null,props:r}}function NJ(e,t){return q2(e.type,t,e.props)}function V2(e){return typeof e=="object"&&e!==null&&e.$$typeof===W2}function TJ(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var sI=/\/+/g;function F2(e,t){return typeof e=="object"&&e!==null&&e.key!=null?TJ(""+e.key):t.toString(36)}function OJ(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(U2,U2):(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 Af(e,t,r,n,o){var a=typeof e;(a==="undefined"||a==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(a){case"bigint":case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case W2:case yJ:i=!0;break;case uI:return i=e._init,Af(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+F2(e,0):n,iI(o)?(r="",i!=null&&(r=i.replace(sI,"$&/")+"/"),Af(o,t,r,"",function(u){return u})):o!=null&&(V2(o)&&(o=NJ(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(sI,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(iI(e))for(var l=0;l{"use strict";hI.exports=gI()});var AI=po(un=>{"use strict";function Z2(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nZ0(s,r))lZ0(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lZ0(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function Z0(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}un.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(yI=performance,un.unstable_now=function(){return yI.now()}):(G2=Date,vI=G2.now(),un.unstable_now=function(){return G2.now()-vI});var yI,G2,vI,Xs=[],ru=[],IJ=1,li=null,Lo=3,J2=!1,Ug=!1,Wg=!1,Q2=!1,wI=typeof setTimeout=="function"?setTimeout:null,SI=typeof clearTimeout=="function"?clearTimeout:null,xI=typeof setImmediate<"u"?setImmediate:null;function J0(e){for(var t=bs(ru);t!==null;){if(t.callback===null)Q0(ru);else if(t.startTime<=e)Q0(ru),t.sortIndex=t.expirationTime,Z2(Xs,t);else break;t=bs(ru)}}function R2(e){if(Wg=!1,J0(e),!Ug)if(bs(Xs)!==null)Ug=!0,Tf||(Tf=!0,Nf());else{var t=bs(ru);t!==null&&eC(R2,t.startTime-e)}}var Tf=!1,Hg=-1,kI=5,_I=-1;function CI(){return Q2?!0:!(un.unstable_now()-_Ie&&CI());){var n=li.callback;if(typeof n=="function"){li.callback=null,Lo=li.priorityLevel;var o=n(li.expirationTime<=e);if(e=un.unstable_now(),typeof o=="function"){li.callback=o,J0(e),t=!0;break t}li===bs(Xs)&&Q0(Xs),J0(e)}else Q0(Xs);li=bs(Xs)}if(li!==null)t=!0;else{var a=bs(ru);a!==null&&eC(R2,a.startTime-e),t=!1}}break e}finally{li=null,Lo=r,J2=!1}t=void 0}}finally{t?Nf():Tf=!1}}}var Nf;typeof xI=="function"?Nf=function(){xI(Y2)}:typeof MessageChannel<"u"?(X2=new MessageChannel,bI=X2.port2,X2.port1.onmessage=Y2,Nf=function(){bI.postMessage(null)}):Nf=function(){wI(Y2,0)};var X2,bI;function eC(e,t){Hg=wI(function(){e(un.unstable_now())},t)}un.unstable_IdlePriority=5;un.unstable_ImmediatePriority=1;un.unstable_LowPriority=4;un.unstable_NormalPriority=3;un.unstable_Profiling=null;un.unstable_UserBlockingPriority=2;un.unstable_cancelCallback=function(e){e.callback=null};un.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,Z2(ru,e),bs(Xs)===null&&e===bs(ru)&&(Wg?(SI(Hg),Hg=-1):Wg=!0,eC(R2,r-n))):(e.sortIndex=o,Z2(Xs,e),Ug||J2||(Ug=!0,Tf||(Tf=!0,Nf()))),e};un.unstable_shouldYield=CI;un.unstable_wrapCallback=function(e){var t=Lo;return function(){var r=Lo;Lo=t;try{return e.apply(this,arguments)}finally{Lo=r}}}});var NI=po((VSe,EI)=>{"use strict";EI.exports=AI()});var OI=po(Ro=>{"use strict";var DJ=Y();function TI(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function PI(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(PI)}catch(e){console.error(e)}}PI(),MI.exports=OI()});var K8=po(_b=>{"use strict";var eo=NI(),o4=Y(),LJ=qg();function ke(e){var t="https://react.dev/errors/"+e;if(1$f||(e.current=BC[$f],BC[$f]=null,$f--)}function Ur(e,t){$f++,BC[$f]=e.current,e.current=t}var _s=Cs(null),yh=Cs(null),gu=Cs(null),Ix=Cs(null);function Dx(e,t){switch(Ur(gu,t),Ur(yh,e),Ur(_s,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?UD(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=UD(t),e=O8(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}ho(_s),Ur(_s,e)}function ep(){ho(_s),ho(yh),ho(gu)}function FC(e){e.memoizedState!==null&&Ur(Ix,e);var t=_s.current,r=O8(t,e.type);t!==r&&(Ur(yh,e),Ur(_s,r))}function jx(e){yh.current===e&&(ho(_s),ho(yh)),Ix.current===e&&(ho(Ix),Nh._currentValue=jc)}var tC,jI;function Pc(e){if(tC===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);tC=t&&t[1]||"",jI=-1)":-1o||l[n]!==u[o]){var c=` -`+l[n].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=n&&0<=o);break}}}finally{K_=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?kc(r):""}function fJ(e,t){switch(e.tag){case 26:case 27:case 5:return kc(e.type);case 16:return kc("Lazy");case 13:return e.child!==t&&t!==null?kc("Suspense Fallback"):kc("Suspense");case 19:return kc("SuspenseList");case 0:case 15:return q_(e.type,!1);case 11:return q_(e.type.render,!1);case 1:return q_(e.type,!0);case 31:return kc("Activity");default:return""}}function bD(e){try{var t="",r=null;do t+=fJ(e,r),r=e,e=e.return;while(e);return t}catch(n){return` +`+l[n].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=n&&0<=o);break}}}finally{rC=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?Pc(r):""}function WJ(e,t){switch(e.tag){case 26:case 27:case 5:return Pc(e.type);case 16:return Pc("Lazy");case 13:return e.child!==t&&t!==null?Pc("Suspense Fallback"):Pc("Suspense");case 19:return Pc("SuspenseList");case 0:case 15:return nC(e.type,!1);case 11:return nC(e.type.render,!1);case 1:return nC(e.type,!0);case 31:return Pc("Activity");default:return""}}function $I(e){try{var t="",r=null;do t+=WJ(e,r),r=e,e=e.return;while(e);return t}catch(n){return` Error generating stack: `+n.message+` -`+n.stack}}var TA=Object.prototype.hasOwnProperty,xC=Yn.unstable_scheduleCallback,V_=Yn.unstable_cancelCallback,pJ=Yn.unstable_shouldYield,mJ=Yn.unstable_requestPaint,Ma=Yn.unstable_now,gJ=Yn.unstable_getCurrentPriorityLevel,X4=Yn.unstable_ImmediatePriority,Z4=Yn.unstable_UserBlockingPriority,Cx=Yn.unstable_NormalPriority,hJ=Yn.unstable_LowPriority,J4=Yn.unstable_IdlePriority,yJ=Yn.log,vJ=Yn.unstable_setDisableYieldValue,wh=null,Da=null;function ru(e){if(typeof yJ=="function"&&vJ(e),Da&&typeof Da.setStrictMode=="function")try{Da.setStrictMode(wh,e)}catch{}}var Ia=Math.clz32?Math.clz32:wJ,xJ=Math.log,bJ=Math.LN2;function wJ(e){return e>>>=0,e===0?32:31-(xJ(e)/bJ|0)|0}var q0=256,V0=262144,G0=4194304;function _c(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Qx(e,t,r){var n=e.pendingLanes;if(n===0)return 0;var o=0,a=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var s=n&134217727;return s!==0?(n=s&~a,n!==0?o=_c(n):(i&=s,i!==0?o=_c(i):r||(r=s&~e,r!==0&&(o=_c(r))))):(s=n&~a,s!==0?o=_c(s):i!==0?o=_c(i):r||(r=n&~e,r!==0&&(o=_c(r)))),o===0?0:t!==0&&t!==o&&(t&a)===0&&(a=o&-o,r=t&-t,a>=r||a===32&&(r&4194048)!==0)?t:o}function Sh(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function SJ(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Q4(){var e=G0;return G0<<=1,(G0&62914560)===0&&(G0=4194304),e}function G_(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function kh(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function kJ(e,t,r,n,o,a){var i=e.pendingLanes;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=r,e.entangledLanes&=r,e.errorRecoveryDisabledLanes&=r,e.shellSuspendCounter=0;var s=e.entanglements,l=e.expirationTimes,u=e.hiddenUpdates;for(r=i&~r;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var TJ=/[\n"\\]/g;function ii(e){return e.replace(TJ,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function MA(e,t,r,n,o,a,i,s){e.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?e.type=i:e.removeAttribute("type"),t!=null?i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+ni(t)):e.value!==""+ni(t)&&(e.value=""+ni(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?DA(e,i,ni(t)):r!=null?DA(e,i,ni(r)):n!=null&&e.removeAttribute("value"),o==null&&a!=null&&(e.defaultChecked=!!a),o!=null&&(e.checked=o&&typeof o!="function"&&typeof o!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+ni(s):e.removeAttribute("name")}function sI(e,t,r,n,o,a,i,s){if(a!=null&&typeof a!="function"&&typeof a!="symbol"&&typeof a!="boolean"&&(e.type=a),t!=null||r!=null){if(!(a!=="submit"&&a!=="reset"||t!=null)){PA(e);return}r=r!=null?""+ni(r):"",t=t!=null?""+ni(t):r,s||t===e.value||(e.value=t),e.defaultValue=t}n=n??o,n=typeof n!="function"&&typeof n!="symbol"&&!!n,e.checked=s?e.checked:!!n,e.defaultChecked=!!n,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.name=i),PA(e)}function DA(e,t,r){t==="number"&&Ex(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Lf(e,t,r,n){if(e=e.options,t){t={};for(var o=0;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),jA=!1;if(tl)try{xf={},Object.defineProperty(xf,"passive",{get:function(){jA=!0}}),window.addEventListener("test",xf,xf),window.removeEventListener("test",xf,xf)}catch{jA=!1}var xf,nu=null,AC=null,cx=null;function fI(){if(cx)return cx;var e,t=AC,r=t.length,n,o="value"in nu?nu.value:nu.textContent,a=o.length;for(e=0;e=Gg),PD=" ",MD=!1;function mI(e,t){switch(e){case"keyup":return nQ.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gI(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Nf=!1;function aQ(e,t){switch(e){case"compositionend":return gI(t);case"keypress":return t.which!==32?null:(MD=!0,PD);case"textInput":return e=t.data,e===PD&&MD?null:e;default:return null}}function iQ(e,t){if(Nf)return e==="compositionend"||!EC&&mI(e,t)?(e=fI(),cx=AC=nu=null,Nf=!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:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=$D(r)}}function xI(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?xI(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function bI(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ex(e.document);t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=Ex(e.document)}return t}function NC(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 mQ=tl&&"documentMode"in document&&11>=document.documentMode,Tf=null,$A=null,Xg=null,LA=!1;function zD(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;LA||Tf==null||Tf!==Ex(n)||(n=Tf,"selectionStart"in n&&NC(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Xg&&uh(Xg,n)||(Xg=n,n=qx($A,"onSelect"),0>=i,o-=i,ps=1<<32-Ia(t)+o|r<S?(k=C,C=null):k=C.sibling;var A=f(h,C,v[S],b);if(A===null){C===null&&(C=k);break}e&&C&&A.alternate===null&&t(h,C),g=a(A,g,S),w===null?_=A:w.sibling=A,w=A,C=k}if(S===v.length)return r(h,C),rr&&Gs(h,S),_;if(C===null){for(;SS?(k=C,C=null):k=C.sibling;var O=f(h,C,A.value,b);if(O===null){C===null&&(C=k);break}e&&C&&O.alternate===null&&t(h,C),g=a(O,g,S),w===null?_=O:w.sibling=O,w=O,C=k}if(A.done)return r(h,C),rr&&Gs(h,S),_;if(C===null){for(;!A.done;S++,A=v.next())A=d(h,A.value,b),A!==null&&(g=a(A,g,S),w===null?_=A:w.sibling=A,w=A);return rr&&Gs(h,S),_}for(C=n(C);!A.done;S++,A=v.next())A=p(C,h,S,A.value,b),A!==null&&(e&&A.alternate!==null&&C.delete(A.key===null?S:A.key),g=a(A,g,S),w===null?_=A:w.sibling=A,w=A);return e&&C.forEach(function($){return t(h,$)}),rr&&Gs(h,S),_}function x(h,g,v,b){if(typeof v=="object"&&v!==null&&v.type===_f&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case K0:e:{for(var _=v.key;g!==null;){if(g.key===_){if(_=v.type,_===_f){if(g.tag===7){r(h,g.sibling),b=o(g,v.props.children),b.return=h,h=b;break e}}else if(g.elementType===_||typeof _=="object"&&_!==null&&_.$$typeof===Zl&&Ac(_)===g.type){r(h,g.sibling),b=o(g,v.props),Lg(b,v),b.return=h,h=b;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===_f?(b=Nc(v.props.children,h.mode,b,v.key),b.return=h,h=b):(b=fx(v.type,v.key,v.props,null,h.mode,b),Lg(b,v),b.return=h,h=b)}return i(h);case Wg:e:{for(_=v.key;g!==null;){if(g.key===_)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){r(h,g.sibling),b=o(g,v.children||[]),b.return=h,h=b;break e}else{r(h,g);break}else t(h,g);g=g.sibling}b=tA(v,h.mode,b),b.return=h,h=b}return i(h);case Zl:return v=Ac(v),x(h,g,v,b)}if(Hg(v))return m(h,g,v,b);if(jg(v)){if(_=jg(v),typeof _!="function")throw Error(ke(150));return v=_.call(v),y(h,g,v,b)}if(typeof v.then=="function")return x(h,g,R0(v),b);if(v.$$typeof===Xs)return x(h,g,Q0(h,v),b);ex(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,g!==null&&g.tag===6?(r(h,g.sibling),b=o(g,v),b.return=h,h=b):(r(h,g),b=eA(v,h.mode,b),b.return=h,h=b),i(h)):r(h,g)}return function(h,g,v,b){try{fh=0;var _=x(h,g,v,b);return Ff=null,_}catch(C){if(C===np||C===ob)throw C;var w=Oa(29,C,null,h.mode);return w.lanes=b,w.return=h,w}}}var Ic=jI(!0),$I=jI(!1),Jl=!1;function LC(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function KA(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function uu(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function cu(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(yr&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=Tx(e),EI(e,null,r),t}return nb(e,n,t,r),Tx(e)}function Jg(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194048)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,eI(e,r)}}function nA(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var o=null,a=null;if(r=r.firstBaseUpdate,r!==null){do{var i={lane:r.lane,tag:r.tag,payload:r.payload,callback:null,next:null};a===null?o=a=i:a=a.next=i,r=r.next}while(r!==null);a===null?o=a=t:a=a.next=t}else o=a=t;r={baseState:n.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:n.shared,callbacks:n.callbacks},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}var qA=!1;function Qg(){if(qA){var e=Bf;if(e!==null)throw e}}function Rg(e,t,r,n){qA=!1;var o=e.updateQueue;Jl=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,s=o.shared.pending;if(s!==null){o.shared.pending=null;var l=s,u=l.next;l.next=null,i===null?a=u:i.next=u,i=l;var c=e.alternate;c!==null&&(c=c.updateQueue,s=c.lastBaseUpdate,s!==i&&(s===null?c.firstBaseUpdate=u:s.next=u,c.lastBaseUpdate=l))}if(a!==null){var d=o.baseState;i=0,c=u=l=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Jt&f)===f:(n&f)===f){f!==0&&f===Vf&&(qA=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,y=s;f=t;var x=r;switch(y.tag){case 1:if(m=y.payload,typeof m=="function"){d=m.call(x,d,f);break e}d=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=y.payload,f=typeof m=="function"?m.call(x,d,f):m,f==null)break e;d=Yr({},d,f);break e;case 2:Jl=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=o.callbacks,p===null?o.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},c===null?(u=c=p,l=d):c=c.next=p,i|=f;if(s=s.next,s===null){if(s=o.shared.pending,s===null)break;p=s,s=p.next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}while(!0);c===null&&(l=d),o.baseState=l,o.firstBaseUpdate=u,o.lastBaseUpdate=c,a===null&&(o.shared.lanes=0),xu|=i,e.lanes=i,e.memoizedState=d}}function LI(e,t){if(typeof e!="function")throw Error(ke(191,e));e.call(t)}function zI(e,t){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;ea?a:8;var i=bt.T,s={};bt.T=s,ZC(e,!1,t,r);try{var l=o(),u=bt.S;if(u!==null&&u(s,l),l!==null&&typeof l=="object"&&typeof l.then=="function"){var c=kQ(l,n);eh(e,t,c,ja(e))}else eh(e,t,n,ja(e))}catch(d){eh(e,t,{then:function(){},status:"rejected",reason:d},ja())}finally{vr.p=a,i!==null&&s.types!==null&&(i.types=s.types),bt.T=i}}function TQ(){}function ZA(e,t,r,n){if(e.tag!==5)throw Error(ke(476));var o=uj(e).queue;lj(e,o,t,Ec,r===null?TQ:function(){return cj(e),r(n)})}function uj(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ec,baseState:Ec,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:nl,lastRenderedState:Ec},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:nl,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function cj(e){var t=uj(e);t.next===null&&(t=e.alternate.memoizedState),eh(e,t.next.queue,{},ja())}function XC(){return So(yh)}function dj(){return On().memoizedState}function fj(){return On().memoizedState}function OQ(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=ja();e=uu(r);var n=cu(t,e,r);n!==null&&(ca(n,t,r),Jg(n,t,r)),t={cache:IC()},e.payload=t;return}t=t.return}}function PQ(e,t,r){var n=ja();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},lb(e)?mj(t,r):(r=OC(e,t,r,n),r!==null&&(ca(r,e,n),gj(r,t,n)))}function pj(e,t,r){var n=ja();eh(e,t,r,n)}function eh(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(lb(e))mj(t,o);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var i=t.lastRenderedState,s=a(i,r);if(o.hasEagerState=!0,o.eagerState=s,$a(s,i))return nb(e,t,o,0),Pr===null&&rb(),!1}catch{}if(r=OC(e,t,o,n),r!==null)return ca(r,e,n),gj(r,t,n),!0}return!1}function ZC(e,t,r,n){if(n={lane:2,revertLane:aE(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},lb(e)){if(t)throw Error(ke(479))}else t=OC(e,r,n,2),t!==null&&ca(t,e,2)}function lb(e){var t=e.alternate;return e===Mt||t!==null&&t===Mt}function mj(e,t){Uf=jx=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function gj(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,eI(e,r)}}var mh={readContext:So,use:ib,useCallback:xn,useContext:xn,useEffect:xn,useImperativeHandle:xn,useLayoutEffect:xn,useInsertionEffect:xn,useMemo:xn,useReducer:xn,useRef:xn,useState:xn,useDebugValue:xn,useDeferredValue:xn,useTransition:xn,useSyncExternalStore:xn,useId:xn,useHostTransitionStatus:xn,useFormState:xn,useActionState:xn,useOptimistic:xn,useMemoCache:xn,useCacheRefresh:xn};mh.useEffectEvent=xn;var hj={readContext:So,use:ib,useCallback:function(e,t){return Yo().memoizedState=[e,t===void 0?null:t],e},useContext:So,useEffect:RD,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,gx(4194308,4,nj.bind(null,t,e),r)},useLayoutEffect:function(e,t){return gx(4194308,4,e,t)},useInsertionEffect:function(e,t){gx(4,2,e,t)},useMemo:function(e,t){var r=Yo();t=t===void 0?null:t;var n=e();if(jc){ru(!0);try{e()}finally{ru(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=Yo();if(r!==void 0){var o=r(t);if(jc){ru(!0);try{r(t)}finally{ru(!1)}}}else o=t;return n.memoizedState=n.baseState=o,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:o},n.queue=e,e=e.dispatch=PQ.bind(null,Mt,e),[n.memoizedState,e]},useRef:function(e){var t=Yo();return e={current:e},t.memoizedState=e},useState:function(e){e=YA(e);var t=e.queue,r=pj.bind(null,Mt,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:GC,useDeferredValue:function(e,t){var r=Yo();return YC(r,e,t)},useTransition:function(){var e=YA(!1);return e=lj.bind(null,Mt,e.queue,!0,!1),Yo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=Mt,o=Yo();if(rr){if(r===void 0)throw Error(ke(407));r=r()}else{if(r=t(),Pr===null)throw Error(ke(349));(Jt&127)!==0||HI(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,RD(qI.bind(null,n,a,e),[e]),n.flags|=2048,Yf(9,{destroy:void 0},KI.bind(null,n,a,r,t),null),r},useId:function(){var e=Yo(),t=Pr.identifierPrefix;if(rr){var r=ms,n=ps;r=(n&~(1<<32-Ia(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=$x++,0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a=typeof n.is=="string"?i.createElement("select",{is:n.is}):i.createElement("select"),n.multiple?a.multiple=!0:n.size&&(a.size=n.size);break;default:a=typeof n.is=="string"?i.createElement(o,{is:n.is}):i.createElement(o)}}a[bo]=t,a[da]=n;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)a.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=a;e:switch(ko(a,o,n),o){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break e;case"img":n=!0;break e;default:n=!1}n&&Hs(t)}}return Vr(t),dA(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Hs(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(ke(166));if(e=su.current,bf(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=wo,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[bo]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||p8(e.nodeValue,r)),e||yu(t,!0)}else e=Vx(e).createTextNode(n),e[bo]=t,t.stateNode=e}return Vr(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=bf(t),r!==null){if(e===null){if(!n)throw Error(ke(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(ke(557));e[bo]=t}else Mc(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Vr(t),e=!1}else r=rA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(Ta(t),t):(Ta(t),null);if((t.flags&128)!==0)throw Error(ke(558))}return Vr(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=bf(t),n!==null&&n.dehydrated!==null){if(e===null){if(!o)throw Error(ke(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(ke(317));o[bo]=t}else Mc(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Vr(t),o=!1}else o=rA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(Ta(t),t):(Ta(t),null)}return Ta(t),(t.flags&128)!==0?(t.lanes=r,t):(r=n!==null,e=e!==null&&e.memoizedState!==null,r&&(n=t.child,o=null,n.alternate!==null&&n.alternate.memoizedState!==null&&n.alternate.memoizedState.cachePool!==null&&(o=n.alternate.memoizedState.cachePool.pool),a=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(a=n.memoizedState.cachePool.pool),a!==o&&(n.flags|=2048)),r!==e&&r&&(t.child.flags|=8192),tx(t,t.updateQueue),Vr(t),null);case 4:return Hf(),e===null&&iE(t.stateNode.containerInfo),Vr(t),null;case 10:return Rs(t.type),Vr(t),null;case 19:if(uo(Tn),n=t.memoizedState,n===null)return Vr(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)zg(n,!1);else{if(bn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=Ix(e),a!==null){for(t.flags|=128,zg(n,!1),e=a.updateQueue,t.updateQueue=e,tx(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)NI(r,e),r=r.sibling;return Lr(Tn,Tn.current&1|2),rr&&Gs(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&Ma()>Fx&&(t.flags|=128,o=!0,zg(n,!1),t.lanes=4194304)}else{if(!o)if(e=Ix(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,tx(t,e),zg(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!rr)return Vr(t),null}else 2*Ma()-n.renderingStartTime>Fx&&r!==536870912&&(t.flags|=128,o=!0,zg(n,!1),t.lanes=4194304);n.isBackwards?(a.sibling=t.child,t.child=a):(e=n.last,e!==null?e.sibling=a:t.child=a,n.last=a)}return n.tail!==null?(e=n.tail,n.rendering=e,n.tail=e.sibling,n.renderingStartTime=Ma(),e.sibling=null,r=Tn.current,Lr(Tn,o?r&1|2:r&1),rr&&Gs(t,n.treeForkCount),e):(Vr(t),null);case 22:case 23:return Ta(t),zC(),n=t.memoizedState!==null,e!==null?e.memoizedState!==null!==n&&(t.flags|=8192):n&&(t.flags|=8192),n?(r&536870912)!==0&&(t.flags&128)===0&&(Vr(t),t.subtreeFlags&6&&(t.flags|=8192)):Vr(t),r=t.updateQueue,r!==null&&tx(t,r.retryQueue),r=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(r=e.memoizedState.cachePool.pool),n=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(n=t.memoizedState.cachePool.pool),n!==r&&(t.flags|=2048),e!==null&&uo(Tc),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Rs(Bn),Vr(t),null;case 25:return null;case 30:return null}throw Error(ke(156,t.tag))}function $Q(e,t){switch(DC(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Rs(Bn),Hf(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ax(t),null;case 31:if(t.memoizedState!==null){if(Ta(t),t.alternate===null)throw Error(ke(340));Mc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ta(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ke(340));Mc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return uo(Tn),null;case 4:return Hf(),null;case 10:return Rs(t.type),null;case 22:case 23:return Ta(t),zC(),e!==null&&uo(Tc),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Rs(Bn),null;case 25:return null;default:return null}}function Nj(e,t){switch(DC(t),t.tag){case 3:Rs(Bn),Hf();break;case 26:case 27:case 5:Ax(t);break;case 4:Hf();break;case 31:t.memoizedState!==null&&Ta(t);break;case 13:Ta(t);break;case 19:uo(Tn);break;case 10:Rs(t.type);break;case 22:case 23:Ta(t),zC(),e!==null&&uo(Tc);break;case 24:Rs(Bn)}}function Nh(e,t){try{var r=t.updateQueue,n=r!==null?r.lastEffect:null;if(n!==null){var o=n.next;r=o;do{if((r.tag&e)===e){n=void 0;var a=r.create,i=r.inst;n=a(),i.destroy=n}r=r.next}while(r!==o)}}catch(s){_r(t,t.return,s)}}function vu(e,t,r){try{var n=t.updateQueue,o=n!==null?n.lastEffect:null;if(o!==null){var a=o.next;n=a;do{if((n.tag&e)===e){var i=n.inst,s=i.destroy;if(s!==void 0){i.destroy=void 0,o=t;var l=r,u=s;try{u()}catch(c){_r(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){_r(t,t.return,c)}}function Tj(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{zI(t,r)}catch(n){_r(e,e.return,n)}}}function Oj(e,t,r){r.props=$c(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){_r(e,t,n)}}function th(e,t){try{var r=e.ref;if(r!==null){switch(e.tag){case 26:case 27:case 5:var n=e.stateNode;break;case 30:n=e.stateNode;break;default:n=e.stateNode}typeof r=="function"?e.refCleanup=r(n):r.current=n}}catch(o){_r(e,t,o)}}function gs(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){_r(e,t,o)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof r=="function")try{r(null)}catch(o){_r(e,t,o)}else r.current=null}function Pj(e){var t=e.type,r=e.memoizedProps,n=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":r.autoFocus&&n.focus();break e;case"img":r.src?n.src=r.src:r.srcSet&&(n.srcset=r.srcSet)}}catch(o){_r(e,e.return,o)}}function fA(e,t,r){try{var n=e.stateNode;rR(n,e.type,r,t),n[da]=t}catch(o){_r(e,e.return,o)}}function Mj(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&wu(e.type)||e.tag===4}function pA(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Mj(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&wu(e.type)||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 tC(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?(r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r).insertBefore(e,t):(t=r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r,t.appendChild(e),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=Zs));else if(n!==4&&(n===27&&wu(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(tC(e,t,r),e=e.sibling;e!==null;)tC(e,t,r),e=e.sibling}function Bx(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(n===27&&wu(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(Bx(e,t,r),e=e.sibling;e!==null;)Bx(e,t,r),e=e.sibling}function Dj(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);ko(t,n,r),t[bo]=e,t[da]=r}catch(a){_r(e,e.return,a)}}var Ys=!1,zn=!1,mA=!1,f4=typeof WeakSet=="function"?WeakSet:Set,so=null;function LQ(e,t){if(e=e.containerInfo,lC=Zx,e=bI(e),NC(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,a=n.focusNode;n=n.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var i=0,s=-1,l=-1,u=0,c=0,d=e,f=null;t:for(;;){for(var p;d!==r||o!==0&&d.nodeType!==3||(s=i+o),d!==a||n!==0&&d.nodeType!==3||(l=i+n),d.nodeType===3&&(i+=d.nodeValue.length),(p=d.firstChild)!==null;)f=d,d=p;for(;;){if(d===e)break t;if(f===r&&++u===o&&(s=i),f===a&&++c===n&&(l=i),(p=d.nextSibling)!==null)break;d=f,f=d.parentNode}d=p}r=s===-1||l===-1?null:{start:s,end:l}}else r=null}r=r||{start:0,end:0}}else r=null;for(uC={focusedElem:e,selectionRange:r},Zx=!1,so=t;so!==null;)if(t=so,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,so=e;else for(;so!==null;){switch(t=so,a=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(r=0;r title"))),ko(a,n,r),a[bo]=e,lo(a),n=a;break e;case"link":var i=I4("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sx&&(i=x,x=y,y=i);var h=LD(s,y),g=LD(s,x);if(h&&g&&(p.rangeCount!==1||p.anchorNode!==h.node||p.anchorOffset!==h.offset||p.focusNode!==g.node||p.focusOffset!==g.offset)){var v=d.createRange();v.setStart(h.node,h.offset),p.removeAllRanges(),y>x?(p.addRange(v),p.extend(g.node,g.offset)):(v.setEnd(g.node,g.offset),p.addRange(v))}}}}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;sr?32:r,bt.T=null,r=oC,oC=null;var a=fu,i=el;if(Gn=0,Zf=fu=null,el=0,(yr&6)!==0)throw Error(ke(331));var s=yr;if(yr|=4,Kj(a.current),Uj(a,a.current,i,r),yr=s,Th(0,!1),Da&&typeof Da.onPostCommitFiberRoot=="function")try{Da.onPostCommitFiberRoot(wh,a)}catch{}return!0}finally{vr.p=o,bt.T=n,a8(e,t)}}function h4(e,t,r){t=si(r,t),t=QA(e.stateNode,t,2),e=cu(e,t,2),e!==null&&(kh(e,2),vs(e))}function _r(e,t,r){if(e.tag===3)h4(e,e,r);else for(;t!==null;){if(t.tag===3){h4(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(du===null||!du.has(n))){e=si(r,e),r=wj(2),n=cu(t,r,2),n!==null&&(Sj(r,n,t,e),kh(n,2),vs(n));break}}t=t.return}}function hA(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new FQ;var o=new Set;n.set(t,o)}else o=n.get(t),o===void 0&&(o=new Set,n.set(t,o));o.has(r)||(rE=!0,o.add(r),e=qQ.bind(null,e,t,r),t.then(e,e))}function qQ(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Pr===e&&(Jt&r)===r&&(bn===4||bn===3&&(Jt&62914560)===Jt&&300>Ma()-ub?(yr&2)===0&&Jf(e,0):nE|=r,Xf===Jt&&(Xf=0)),vs(e)}function s8(e,t){t===0&&(t=Q4()),e=Fc(e,t),e!==null&&(kh(e,t),vs(e))}function VQ(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),s8(e,r)}function GQ(e,t){var r=0;switch(e.tag){case 31:case 13:var n=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=e.stateNode;break;case 22:n=e.stateNode._retryCache;break;default:throw Error(ke(314))}n!==null&&n.delete(t),s8(e,r)}function YQ(e,t){return xC(e,t)}var Hx=null,kf=null,iC=!1,Kx=!1,yA=!1,iu=0;function vs(e){e!==kf&&e.next===null&&(kf===null?Hx=kf=e:kf=kf.next=e),Kx=!0,iC||(iC=!0,ZQ())}function Th(e,t){if(!yA&&Kx){yA=!0;do for(var r=!1,n=Hx;n!==null;){if(!t)if(e!==0){var o=n.pendingLanes;if(o===0)var a=0;else{var i=n.suspendedLanes,s=n.pingedLanes;a=(1<<31-Ia(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,y4(n,a))}else a=Jt,a=Qx(n,n===Pr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Sh(n,a)||(r=!0,y4(n,a));n=n.next}while(r);yA=!1}}function XQ(){l8()}function l8(){Kx=iC=!1;var e=0;iu!==0&&oR()&&(e=iu);for(var t=Ma(),r=null,n=Hx;n!==null;){var o=n.next,a=u8(n,t);a===0?(n.next=null,r===null?Hx=o:r.next=o,o===null&&(kf=r)):(r=n,(e!==0||(a&3)!==0)&&(Kx=!0)),n=o}Gn!==0&&Gn!==5||Th(e,!1),iu!==0&&(iu=0)}function u8(e,t){for(var r=e.suspendedLanes,n=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var c=l.transferSize,d=l.initiatorType;c&&_4(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function v8(e,t,r){var n=ap;if(n&&typeof t=="string"&&t){var o=ii(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),P4.has(o)||(P4.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),ko(t,"link",e),lo(t),n.head.appendChild(t)))}}function pR(e){il.D(e),v8("dns-prefetch",e,null)}function mR(e,t){il.C(e,t),v8("preconnect",e,t)}function gR(e,t,r){il.L(e,t,r);var n=ap;if(n&&e&&t){var o='link[rel="preload"][as="'+ii(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+ii(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+ii(r.imageSizes)+'"]')):o+='[href="'+ii(e)+'"]';var a=o;switch(t){case"style":a=Qf(e);break;case"script":a=ip(e)}di.has(a)||(e=Yr({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),di.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(Oh(a))||t==="script"&&n.querySelector(Ph(a))||(t=n.createElement("link"),ko(t,"link",e),lo(t),n.head.appendChild(t)))}}function hR(e,t){il.m(e,t);var r=ap;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+ii(n)+'"][href="'+ii(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=ip(e)}if(!di.has(a)&&(e=Yr({rel:"modulepreload",href:e},t),di.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Ph(a)))return}n=r.createElement("link"),ko(n,"link",e),lo(n),r.head.appendChild(n)}}}function yR(e,t,r){il.S(e,t,r);var n=ap;if(n&&e){var o=$f(n).hoistableStyles,a=Qf(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(Oh(a)))s.loading=5;else{e=Yr({rel:"stylesheet",href:e,"data-precedence":t},r),(r=di.get(a))&&sE(e,r);var l=i=n.createElement("link");lo(l),ko(l,"link",e),l._p=new Promise(function(u,c){l.onload=u,l.onerror=c}),l.addEventListener("load",function(){s.loading|=1}),l.addEventListener("error",function(){s.loading|=2}),s.loading|=4,xx(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function vR(e,t){il.X(e,t);var r=ap;if(r&&e){var n=$f(r).hoistableScripts,o=ip(e),a=n.get(o);a||(a=r.querySelector(Ph(o)),a||(e=Yr({src:e,async:!0},t),(t=di.get(o))&&lE(e,t),a=r.createElement("script"),lo(a),ko(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function xR(e,t){il.M(e,t);var r=ap;if(r&&e){var n=$f(r).hoistableScripts,o=ip(e),a=n.get(o);a||(a=r.querySelector(Ph(o)),a||(e=Yr({src:e,async:!0,type:"module"},t),(t=di.get(o))&&lE(e,t),a=r.createElement("script"),lo(a),ko(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function M4(e,t,r,n){var o=(o=su.current)?Gx(o):null;if(!o)throw Error(ke(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=Qf(r.href),r=$f(o).hoistableStyles,n=r.get(t),n||(n={type:"style",instance:null,count:0,state:null},r.set(t,n)),n):{type:"void",instance:null,count:0,state:null};case"link":if(r.rel==="stylesheet"&&typeof r.href=="string"&&typeof r.precedence=="string"){e=Qf(r.href);var a=$f(o).hoistableStyles,i=a.get(e);if(i||(o=o.ownerDocument||o,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},a.set(e,i),(a=o.querySelector(Oh(e)))&&!a._p&&(i.instance=a,i.state.loading=5),di.has(e)||(r={rel:"preload",as:"style",href:r.href,crossOrigin:r.crossOrigin,integrity:r.integrity,media:r.media,hrefLang:r.hrefLang,referrerPolicy:r.referrerPolicy},di.set(e,r),a||bR(o,e,r,i.state))),t&&n===null)throw Error(ke(528,""));return i}if(t&&n!==null)throw Error(ke(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ip(r),r=$f(o).hoistableScripts,n=r.get(t),n||(n={type:"script",instance:null,count:0,state:null},r.set(t,n)),n):{type:"void",instance:null,count:0,state:null};default:throw Error(ke(444,e))}}function Qf(e){return'href="'+ii(e)+'"'}function Oh(e){return'link[rel="stylesheet"]['+e+"]"}function x8(e){return Yr({},e,{"data-precedence":e.precedence,precedence:null})}function bR(e,t,r,n){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?n.loading=1:(t=e.createElement("link"),n.preload=t,t.addEventListener("load",function(){return n.loading|=1}),t.addEventListener("error",function(){return n.loading|=2}),ko(t,"link",r),lo(t),e.head.appendChild(t))}function ip(e){return'[src="'+ii(e)+'"]'}function Ph(e){return"script[async]"+e}function D4(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+ii(r.href)+'"]');if(n)return t.instance=n,lo(n),n;var o=Yr({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),lo(n),ko(n,"style",o),xx(n,r.precedence,e),t.instance=n;case"stylesheet":o=Qf(r.href);var a=e.querySelector(Oh(o));if(a)return t.state.loading|=4,t.instance=a,lo(a),a;n=x8(r),(o=di.get(o))&&sE(n,o),a=(e.ownerDocument||e).createElement("link"),lo(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),ko(a,"link",n),t.state.loading|=4,xx(a,r.precedence,e),t.instance=a;case"script":return a=ip(r.src),(o=e.querySelector(Ph(a)))?(t.instance=o,lo(o),o):(n=r,(o=di.get(a))&&(n=Yr({},r),lE(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),lo(o),ko(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(ke(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,xx(n,r.precedence,e));return t.instance}function xx(e,t,r){for(var n=r.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),o=n.length?n[n.length-1]:null,a=o,i=0;i title"):null)}function wR(e,t,r){if(r===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;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!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 b8(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function SR(e,t,r,n){if(r.type==="stylesheet"&&(typeof n.media!="string"||matchMedia(n.media).matches!==!1)&&(r.state.loading&4)===0){if(r.instance===null){var o=Qf(n.href),a=t.querySelector(Oh(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Yx.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,lo(a);return}a=t.ownerDocument||t,n=x8(n),(o=di.get(o))&&sE(n,o),a=a.createElement("link"),lo(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),ko(a,"link",n),r.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(r,t),(t=r.state.preload)&&(r.state.loading&3)===0&&(e.count++,r=Yx.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var wA=0;function kR(e,t){return e.stylesheets&&e.count===0&&wx(e,e.stylesheets),0wA?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function Yx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)wx(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Xx=null;function wx(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Xx=new Map,t.forEach(_R,e),Xx=null,Yx.call(e))}function _R(e,t){if(!(t.state.loading&4)){var r=Xx.get(e);if(r)var n=r.get(null);else{r=new Map,Xx.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function T8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(T8)}catch(e){console.error(e)}}T8(),O8.exports=N8()});var F$=io(B$=>{"use strict";var Ep=Y();function Uee(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Wee=typeof Object.is=="function"?Object.is:Uee,Hee=Ep.useState,Kee=Ep.useEffect,qee=Ep.useLayoutEffect,Vee=Ep.useDebugValue;function Gee(e,t){var r=t(),n=Hee({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return qee(function(){o.value=r,o.getSnapshot=t,nN(o)&&a({inst:o})},[e,r,t]),Kee(function(){return nN(o)&&a({inst:o}),e(function(){nN(o)&&a({inst:o})})},[e]),Vee(r),r}function nN(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Wee(e,r)}catch{return!0}}function Yee(e,t){return t()}var Xee=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Yee:Gee;B$.useSyncExternalStore=Ep.useSyncExternalStore!==void 0?Ep.useSyncExternalStore:Xee});var W$=io((WAe,U$)=>{"use strict";U$.exports=F$()});var K$=io(H$=>{"use strict";var s1=Y(),Zee=W$();function Jee(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Qee=typeof Object.is=="function"?Object.is:Jee,Ree=Zee.useSyncExternalStore,ete=s1.useRef,tte=s1.useEffect,rte=s1.useMemo,nte=s1.useDebugValue;H$.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=ete(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=rte(function(){function l(p){if(!u){if(u=!0,c=p,p=n(p),o!==void 0&&i.hasValue){var m=i.value;if(o(m,p))return d=m}return d=p}if(m=d,Qee(c,p))return m;var y=n(p);return o!==void 0&&o(m,y)?(c=p,m):(c=p,d=y)}var u=!1,c,d,f=r===void 0?null:r;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,r,n,o]);var s=Ree(e,a[0],a[1]);return tte(function(){i.hasValue=!0,i.value=s},[s]),nte(s),s}});var V$=io((KAe,q$)=>{"use strict";q$.exports=K$()});var D6=io(M6=>{"use strict";var Rh=Y();function sne(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var lne=typeof Object.is=="function"?Object.is:sne,une=Rh.useSyncExternalStore,cne=Rh.useRef,dne=Rh.useEffect,fne=Rh.useMemo,pne=Rh.useDebugValue;M6.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=cne(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=fne(function(){function l(p){if(!u){if(u=!0,c=p,p=n(p),o!==void 0&&i.hasValue){var m=i.value;if(o(m,p))return d=m}return d=p}if(m=d,lne(c,p))return m;var y=n(p);return o!==void 0&&o(m,y)?(c=p,m):(c=p,d=y)}var u=!1,c,d,f=r===void 0?null:r;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,r,n,o]);var s=une(e,a[0],a[1]);return dne(function(){i.hasValue=!0,i.value=s},[s]),pne(s),s}});var j6=io((HEe,I6)=>{"use strict";I6.exports=D6()});var QN=io((iB,yw)=>{(function(e){"use strict";var t=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},n=!0,o="[DecimalError] ",a=o+"Invalid argument: ",i=o+"Exponent out of range: ",s=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,c,d=1e7,f=7,p=9007199254740991,m=s(p/f),y={};y.absoluteValue=y.abs=function(){var N=new this.constructor(this);return N.s&&(N.s=1),N},y.comparedTo=y.cmp=function(N){var D,T,E,I,j=this;if(N=new j.constructor(N),j.s!==N.s)return j.s||-N.s;if(j.e!==N.e)return j.e>N.e^j.s<0?1:-1;for(E=j.d.length,I=N.d.length,D=0,T=EN.d[D]^j.s<0?1:-1;return E===I?0:E>I^j.s<0?1:-1},y.decimalPlaces=y.dp=function(){var N=this,D=N.d.length-1,T=(D-N.e)*f;if(D=N.d[D],D)for(;D%10==0;D/=10)T--;return T<0?0:T},y.dividedBy=y.div=function(N){return v(this,new this.constructor(N))},y.dividedToIntegerBy=y.idiv=function(N){var D=this,T=D.constructor;return A(v(D,new T(N),0,1),T.precision)},y.equals=y.eq=function(N){return!this.cmp(N)},y.exponent=function(){return _(this)},y.greaterThan=y.gt=function(N){return this.cmp(N)>0},y.greaterThanOrEqualTo=y.gte=function(N){return this.cmp(N)>=0},y.isInteger=y.isint=function(){return this.e>this.d.length-2},y.isNegative=y.isneg=function(){return this.s<0},y.isPositive=y.ispos=function(){return this.s>0},y.isZero=function(){return this.s===0},y.lessThan=y.lt=function(N){return this.cmp(N)<0},y.lessThanOrEqualTo=y.lte=function(N){return this.cmp(N)<1},y.logarithm=y.log=function(N){var D,T=this,E=T.constructor,I=E.precision,j=I+5;if(N===void 0)N=new E(10);else if(N=new E(N),N.s<1||N.eq(c))throw Error(o+"NaN");if(T.s<1)throw Error(o+(T.s?"NaN":"-Infinity"));return T.eq(c)?new E(0):(n=!1,D=v(S(T,j),S(N,j),j),n=!0,A(D,I))},y.minus=y.sub=function(N){var D=this;return N=new D.constructor(N),D.s==N.s?O(D,N):x(D,(N.s=-N.s,N))},y.modulo=y.mod=function(N){var D,T=this,E=T.constructor,I=E.precision;if(N=new E(N),!N.s)throw Error(o+"NaN");return T.s?(n=!1,D=v(T,N,0,1).times(N),n=!0,T.minus(D)):A(new E(T),I)},y.naturalExponential=y.exp=function(){return b(this)},y.naturalLogarithm=y.ln=function(){return S(this)},y.negated=y.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},y.plus=y.add=function(N){var D=this;return N=new D.constructor(N),D.s==N.s?x(D,N):O(D,(N.s=-N.s,N))},y.precision=y.sd=function(N){var D,T,E,I=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(D=_(I)+1,E=I.d.length-1,T=E*f+1,E=I.d[E],E){for(;E%10==0;E/=10)T--;for(E=I.d[0];E>=10;E/=10)T++}return N&&D>T?D:T},y.squareRoot=y.sqrt=function(){var N,D,T,E,I,j,q,te=this,K=te.constructor;if(te.s<1){if(!te.s)return new K(0);throw Error(o+"NaN")}for(N=_(te),n=!1,I=Math.sqrt(+te),I==0||I==1/0?(D=g(te.d),(D.length+N)%2==0&&(D+="0"),I=Math.sqrt(D),N=s((N+1)/2)-(N<0||N%2),I==1/0?D="5e"+N:(D=I.toExponential(),D=D.slice(0,D.indexOf("e")+1)+N),E=new K(D)):E=new K(I.toString()),T=K.precision,I=q=T+3;;)if(j=E,E=j.plus(v(te,j,q+2)).times(.5),g(j.d).slice(0,q)===(D=g(E.d)).slice(0,q)){if(D=D.slice(q-3,q+1),I==q&&D=="4999"){if(A(j,T+1,0),j.times(j).eq(te)){E=j;break}}else if(D!="9999")break;q+=4}return n=!0,A(E,T)},y.times=y.mul=function(N){var D,T,E,I,j,q,te,K,le,pe=this,re=pe.constructor,_e=pe.d,ue=(N=new re(N)).d;if(!pe.s||!N.s)return new re(0);for(N.s*=pe.s,T=pe.e+N.e,K=_e.length,le=ue.length,K=0;){for(D=0,I=K+E;I>E;)te=j[I]+ue[E]*_e[I-E-1]+D,j[I--]=te%d|0,D=te/d|0;j[I]=(j[I]+D)%d|0}for(;!j[--q];)j.pop();return D?++T:j.shift(),N.d=j,N.e=T,n?A(N,re.precision):N},y.toDecimalPlaces=y.todp=function(N,D){var T=this,E=T.constructor;return T=new E(T),N===void 0?T:(h(N,0,t),D===void 0?D=E.rounding:h(D,0,8),A(T,N+_(T)+1,D))},y.toExponential=function(N,D){var T,E=this,I=E.constructor;return N===void 0?T=$(E,!0):(h(N,0,t),D===void 0?D=I.rounding:h(D,0,8),E=A(new I(E),N+1,D),T=$(E,!0,N+1)),T},y.toFixed=function(N,D){var T,E,I=this,j=I.constructor;return N===void 0?$(I):(h(N,0,t),D===void 0?D=j.rounding:h(D,0,8),E=A(new j(I),N+_(I)+1,D),T=$(E.abs(),!1,N+_(E)+1),I.isneg()&&!I.isZero()?"-"+T:T)},y.toInteger=y.toint=function(){var N=this,D=N.constructor;return A(new D(N),_(N)+1,D.rounding)},y.toNumber=function(){return+this},y.toPower=y.pow=function(N){var D,T,E,I,j,q,te=this,K=te.constructor,le=12,pe=+(N=new K(N));if(!N.s)return new K(c);if(te=new K(te),!te.s){if(N.s<1)throw Error(o+"Infinity");return te}if(te.eq(c))return te;if(E=K.precision,N.eq(c))return A(te,E);if(D=N.e,T=N.d.length-1,q=D>=T,j=te.s,q){if((T=pe<0?-pe:pe)<=p){for(I=new K(c),D=Math.ceil(E/f+4),n=!1;T%2&&(I=I.times(te),F(I.d,D)),T=s(T/2),T!==0;)te=te.times(te),F(te.d,D);return n=!0,N.s<0?new K(c).div(I):A(I,E)}}else if(j<0)throw Error(o+"NaN");return j=j<0&&N.d[Math.max(D,T)]&1?-1:1,te.s=1,n=!1,I=N.times(S(te,E+le)),n=!0,I=b(I),I.s=j,I},y.toPrecision=function(N,D){var T,E,I=this,j=I.constructor;return N===void 0?(T=_(I),E=$(I,T<=j.toExpNeg||T>=j.toExpPos)):(h(N,1,t),D===void 0?D=j.rounding:h(D,0,8),I=A(new j(I),N,D),T=_(I),E=$(I,N<=T||T<=j.toExpNeg,N)),E},y.toSignificantDigits=y.tosd=function(N,D){var T=this,E=T.constructor;return N===void 0?(N=E.precision,D=E.rounding):(h(N,1,t),D===void 0?D=E.rounding:h(D,0,8)),A(new E(T),N,D)},y.toString=y.valueOf=y.val=y.toJSON=function(){var N=this,D=_(N),T=N.constructor;return $(N,D<=T.toExpNeg||D>=T.toExpPos)};function x(N,D){var T,E,I,j,q,te,K,le,pe=N.constructor,re=pe.precision;if(!N.s||!D.s)return D.s||(D=new pe(N)),n?A(D,re):D;if(K=N.d,le=D.d,q=N.e,I=D.e,K=K.slice(),j=q-I,j){for(j<0?(E=K,j=-j,te=le.length):(E=le,I=q,te=K.length),q=Math.ceil(re/f),te=q>te?q+1:te+1,j>te&&(j=te,E.length=1),E.reverse();j--;)E.push(0);E.reverse()}for(te=K.length,j=le.length,te-j<0&&(j=te,E=le,le=K,K=E),T=0;j;)T=(K[--j]=K[j]+le[j]+T)/d|0,K[j]%=d;for(T&&(K.unshift(T),++I),te=K.length;K[--te]==0;)K.pop();return D.d=K,D.e=I,n?A(D,re):D}function h(N,D,T){if(N!==~~N||NT)throw Error(a+N)}function g(N){var D,T,E,I=N.length-1,j="",q=N[0];if(I>0){for(j+=q,D=1;Dq?1:-1;else for(te=K=0;teI[te]?1:-1;break}return K}function T(E,I,j){for(var q=0;j--;)E[j]-=q,q=E[j]1;)E.shift()}return function(E,I,j,q){var te,K,le,pe,re,_e,ue,se,Z,R,L,B,H,M,ne,U,oe,ye,Je=E.constructor,Ft=E.s==I.s?1:-1,Nt=E.d,ce=I.d;if(!E.s)return new Je(E);if(!I.s)throw Error(o+"Division by zero");for(K=E.e-I.e,oe=ce.length,ne=Nt.length,ue=new Je(Ft),se=ue.d=[],le=0;ce[le]==(Nt[le]||0);)++le;if(ce[le]>(Nt[le]||0)&&--K,j==null?B=j=Je.precision:q?B=j+(_(E)-_(I))+1:B=j,B<0)return new Je(0);if(B=B/f+2|0,le=0,oe==1)for(pe=0,ce=ce[0],B++;(le1&&(ce=N(ce,pe),Nt=N(Nt,pe),oe=ce.length,ne=Nt.length),M=oe,Z=Nt.slice(0,oe),R=Z.length;R=d/2&&++U;do pe=0,te=D(ce,Z,oe,R),te<0?(L=Z[0],oe!=R&&(L=L*d+(Z[1]||0)),pe=L/U|0,pe>1?(pe>=d&&(pe=d-1),re=N(ce,pe),_e=re.length,R=Z.length,te=D(re,Z,_e,R),te==1&&(pe--,T(re,oe<_e?ye:ce,_e))):(pe==0&&(te=pe=1),re=ce.slice()),_e=re.length,_e16)throw Error(i+_(N));if(!N.s)return new pe(c);for(D==null?(n=!1,te=re):te=D,q=new pe(.03125);N.abs().gte(.1);)N=N.times(q),le+=5;for(E=Math.log(l(2,le))/Math.LN10*2+5|0,te+=E,T=I=j=new pe(c),pe.precision=te;;){if(I=A(I.times(N),te),T=T.times(++K),q=j.plus(v(I,T,te)),g(q.d).slice(0,te)===g(j.d).slice(0,te)){for(;le--;)j=A(j.times(j),te);return pe.precision=re,D==null?(n=!0,A(j,re)):j}j=q}}function _(N){for(var D=N.e*f,T=N.d[0];T>=10;T/=10)D++;return D}function w(N,D,T){if(D>N.LN10.sd())throw n=!0,T&&(N.precision=T),Error(o+"LN10 precision limit exceeded");return A(new N(N.LN10),D)}function C(N){for(var D="";N--;)D+="0";return D}function S(N,D){var T,E,I,j,q,te,K,le,pe,re=1,_e=10,ue=N,se=ue.d,Z=ue.constructor,R=Z.precision;if(ue.s<1)throw Error(o+(ue.s?"NaN":"-Infinity"));if(ue.eq(c))return new Z(0);if(D==null?(n=!1,le=R):le=D,ue.eq(10))return D==null&&(n=!0),w(Z,le);if(le+=_e,Z.precision=le,T=g(se),E=T.charAt(0),j=_(ue),Math.abs(j)<15e14){for(;E<7&&E!=1||E==1&&T.charAt(1)>3;)ue=ue.times(N),T=g(ue.d),E=T.charAt(0),re++;j=_(ue),E>1?(ue=new Z("0."+T),j++):ue=new Z(E+"."+T.slice(1))}else return K=w(Z,le+2,R).times(j+""),ue=S(new Z(E+"."+T.slice(1)),le-_e).plus(K),Z.precision=R,D==null?(n=!0,A(ue,R)):ue;for(te=q=ue=v(ue.minus(c),ue.plus(c),le),pe=A(ue.times(ue),le),I=3;;){if(q=A(q.times(pe),le),K=te.plus(v(q,new Z(I),le)),g(K.d).slice(0,le)===g(te.d).slice(0,le))return te=te.times(2),j!==0&&(te=te.plus(w(Z,le+2,R).times(j+""))),te=v(te,new Z(re),le),Z.precision=R,D==null?(n=!0,A(te,R)):te;te=K,I+=2}}function k(N,D){var T,E,I;for((T=D.indexOf("."))>-1&&(D=D.replace(".","")),(E=D.search(/e/i))>0?(T<0&&(T=E),T+=+D.slice(E+1),D=D.substring(0,E)):T<0&&(T=D.length),E=0;D.charCodeAt(E)===48;)++E;for(I=D.length;D.charCodeAt(I-1)===48;)--I;if(D=D.slice(E,I),D){if(I-=E,T=T-E-1,N.e=s(T/f),N.d=[],E=(T+1)%f,T<0&&(E+=f),Em||N.e<-m))throw Error(i+T)}else N.s=0,N.e=0,N.d=[0];return N}function A(N,D,T){var E,I,j,q,te,K,le,pe,re=N.d;for(q=1,j=re[0];j>=10;j/=10)q++;if(E=D-q,E<0)E+=f,I=D,le=re[pe=0];else{if(pe=Math.ceil((E+1)/f),j=re.length,pe>=j)return N;for(le=j=re[pe],q=1;j>=10;j/=10)q++;E%=f,I=E-f+q}if(T!==void 0&&(j=l(10,q-I-1),te=le/j%10|0,K=D<0||re[pe+1]!==void 0||le%j,K=T<4?(te||K)&&(T==0||T==(N.s<0?3:2)):te>5||te==5&&(T==4||K||T==6&&(E>0?I>0?le/l(10,q-I):0:re[pe-1])%10&1||T==(N.s<0?8:7))),D<1||!re[0])return K?(j=_(N),re.length=1,D=D-j-1,re[0]=l(10,(f-D%f)%f),N.e=s(-D/f)||0):(re.length=1,re[0]=N.e=N.s=0),N;if(E==0?(re.length=pe,j=1,pe--):(re.length=pe+1,j=l(10,f-E),re[pe]=I>0?(le/l(10,q-I)%l(10,I)|0)*j:0),K)for(;;)if(pe==0){(re[0]+=j)==d&&(re[0]=1,++N.e);break}else{if(re[pe]+=j,re[pe]!=d)break;re[pe--]=0,j=1}for(E=re.length;re[--E]===0;)re.pop();if(n&&(N.e>m||N.e<-m))throw Error(i+_(N));return N}function O(N,D){var T,E,I,j,q,te,K,le,pe,re,_e=N.constructor,ue=_e.precision;if(!N.s||!D.s)return D.s?D.s=-D.s:D=new _e(N),n?A(D,ue):D;if(K=N.d,re=D.d,E=D.e,le=N.e,K=K.slice(),q=le-E,q){for(pe=q<0,pe?(T=K,q=-q,te=re.length):(T=re,E=le,te=K.length),I=Math.max(Math.ceil(ue/f),te)+2,q>I&&(q=I,T.length=1),T.reverse(),I=q;I--;)T.push(0);T.reverse()}else{for(I=K.length,te=re.length,pe=I0;--I)K[te++]=0;for(I=re.length;I>q;){if(K[--I]0?j=j.charAt(0)+"."+j.slice(1)+C(E):q>1&&(j=j.charAt(0)+"."+j.slice(1)),j=j+(I<0?"e":"e+")+I):I<0?(j="0."+C(-I-1)+j,T&&(E=T-q)>0&&(j+=C(E))):I>=q?(j+=C(I+1-q),T&&(E=T-I-1)>0&&(j=j+"."+C(E))):((E=I+1)0&&(I+1===q&&(j+="."),j+=C(E))),N.s<0?"-"+j:j}function F(N,D){if(N.length>D)return N.length=D,!0}function P(N){var D,T,E;function I(j){var q=this;if(!(q instanceof I))return new I(j);if(q.constructor=I,j instanceof I){q.s=j.s,q.e=j.e,q.d=(j=j.d)?j.slice():j;return}if(typeof j=="number"){if(j*0!==0)throw Error(a+j);if(j>0)q.s=1;else if(j<0)j=-j,q.s=-1;else{q.s=0,q.e=0,q.d=[0];return}if(j===~~j&&j<1e7){q.e=0,q.d=[j];return}return k(q,j.toString())}else if(typeof j!="string")throw Error(a+j);if(j.charCodeAt(0)===45?(j=j.slice(1),q.s=-1):q.s=1,u.test(j))k(q,j);else throw Error(a+j)}if(I.prototype=y,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.clone=P,I.config=I.set=z,N===void 0&&(N={}),N)for(E=["precision","rounding","toExpNeg","toExpPos","LN10"],D=0;D=I[D+1]&&E<=I[D+2])this[T]=E;else throw Error(a+T+": "+E);if((E=N[T="LN10"])!==void 0)if(E==Math.LN10)this[T]=new this(E);else throw Error(a+T+": "+E);return this}r=P(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof yw<"u"&&yw.exports?yw.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(iB)});var tF=io((Pje,LO)=>{"use strict";var hce=Object.prototype.hasOwnProperty,ta="~";function Ky(){}Object.create&&(Ky.prototype=Object.create(null),new Ky().__proto__||(ta=!1));function yce(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function eF(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new yce(r,n||e,o),i=ta?ta+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function US(e,t){--e._eventsCount===0?e._events=new Ky:delete e._events[t]}function jo(){this._events=new Ky,this._eventsCount=0}jo.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)hce.call(r,n)&&t.push(ta?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};jo.prototype.listeners=function(t){var r=ta?ta+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,a=n.length,i=new Array(a);o{"use strict";var GO=Symbol.for("react.transitional.element"),YO=Symbol.for("react.portal"),tk=Symbol.for("react.fragment"),rk=Symbol.for("react.strict_mode"),nk=Symbol.for("react.profiler"),ok=Symbol.for("react.consumer"),ak=Symbol.for("react.context"),ik=Symbol.for("react.forward_ref"),sk=Symbol.for("react.suspense"),lk=Symbol.for("react.suspense_list"),uk=Symbol.for("react.memo"),ck=Symbol.for("react.lazy"),rfe=Symbol.for("react.view_transition"),nfe=Symbol.for("react.client.reference");function Ci(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case GO:switch(e=e.type,e){case tk:case nk:case rk:case sk:case lk:case rfe:return e;default:switch(e=e&&e.$$typeof,e){case ak:case ik:case ck:case uk:return e;case ok:return e;default:return t}}case YO:return t}}}Ir.ContextConsumer=ok;Ir.ContextProvider=ak;Ir.Element=GO;Ir.ForwardRef=ik;Ir.Fragment=tk;Ir.Lazy=ck;Ir.Memo=uk;Ir.Portal=YO;Ir.Profiler=nk;Ir.StrictMode=rk;Ir.Suspense=sk;Ir.SuspenseList=lk;Ir.isContextConsumer=function(e){return Ci(e)===ok};Ir.isContextProvider=function(e){return Ci(e)===ak};Ir.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===GO};Ir.isForwardRef=function(e){return Ci(e)===ik};Ir.isFragment=function(e){return Ci(e)===tk};Ir.isLazy=function(e){return Ci(e)===ck};Ir.isMemo=function(e){return Ci(e)===uk};Ir.isPortal=function(e){return Ci(e)===YO};Ir.isProfiler=function(e){return Ci(e)===nk};Ir.isStrictMode=function(e){return Ci(e)===rk};Ir.isSuspense=function(e){return Ci(e)===sk};Ir.isSuspenseList=function(e){return Ci(e)===lk};Ir.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===tk||e===nk||e===rk||e===sk||e===lk||typeof e=="object"&&e!==null&&(e.$$typeof===ck||e.$$typeof===uk||e.$$typeof===ak||e.$$typeof===ok||e.$$typeof===ik||e.$$typeof===nfe||e.getModuleId!==void 0)};Ir.typeOf=Ci});var pU=io((D$e,fU)=>{"use strict";fU.exports=dU()});var NZ=G(Y()),TZ=G(P8());var ft=G(Y());var et=G(Y());var cr=G(Y()),Wc={github:{emoji:"\u{1F419}",label:"GitHub"},ruby:{emoji:"\u{1F48E}",label:"Ruby"},rails:{emoji:"\u{1F6E4}\uFE0F",label:"Rails"},aws:{emoji:"\u2601\uFE0F",label:"AWS"},gcp:{emoji:"\u{1F310}",label:"GCP"},python:{emoji:"\u{1F40D}",label:"Python"},typescript:{emoji:"\u{1F4D8}",label:"TypeScript"},docker:{emoji:"\u{1F433}",label:"Docker"},kubernetes:{emoji:"\u2638\uFE0F",label:"Kubernetes"}},Hc={terminal:{emoji:"\u{1F4BB}",label:"Terminal"},playwright:{emoji:"\u{1F3AD}",label:"Playwright"},filesystem:{emoji:"\u{1F4C1}",label:"Filesystem"},code:{emoji:"\u{1F468}\u200D\u{1F4BB}",label:"Code"},database:{emoji:"\u{1F5C4}\uFE0F",label:"Database"},slack:{emoji:"\u{1F4AC}",label:"Slack"},fetch:{emoji:"\u{1F310}",label:"Fetch"},search:{emoji:"\u{1F50D}",label:"Search"},edit:{emoji:"\u270F\uFE0F",label:"Edit"},translate:{emoji:"\u{1F30D}",label:"Translate"},memory:{emoji:"\u{1F9E0}",label:"Memory"},ui:{emoji:"\u{1F9E9}",label:"Generative UI"}},sp={terminal:{instructions:["github"],tools:["terminal","code"]},webDeveloper:{instructions:["typescript"],tools:["playwright","fetch"]},documentAnalysis:{instructions:["python"],tools:["database","search","code"]},writing:{instructions:["ruby"],tools:["edit","memory"]},translation:{instructions:["ruby","python","typescript"],tools:["translate","code"]},playwright:{instructions:["typescript"],tools:["playwright","fetch"]},research:{instructions:["github"],tools:["fetch","search","memory"]},imageAnalysis:{instructions:["python"],tools:["filesystem","code"]},computerUse:{instructions:["github"],tools:["terminal","playwright"]},productDesign:{instructions:["typescript"],tools:["playwright","code"]}};var MR=({id:e="mascot"})=>cr.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},cr.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},cr.default.createElement("g",{fillRule:"nonzero"},cr.default.createElement("path",{d:"M421,271.3 C422.733,265.1 423.667,244.633 423.8,209.9 C423.9,173.4 423.8,142.1 423.5,140.4 C423.1,137.9 412.5,126.8 373.1,87.2 C345.6,59.7 321.7,36.3 319.8,35.3 C316.7,33.6 312.5,33.5 250,33.5 C186.5,33.5 183.3,33.6 178.2,35.4 C173.5,37.2 168.3,42.1 125.2,85.3 C69.3,141.4 75.6,134.9 73.7,138.7 C72.3,141.3 72,147.2 71.8,178.6 C71.3,243.6 71.8,276 73.4,276 C74.067,276 99.6,304.854 150,362.563 L350.015,362.563 L421,271.3 Z",fill:"#EB5555",stroke:"#000000",strokeWidth:"12"})),cr.default.createElement("path",{d:"M216.5,202.5 C213.4,199.5 213.4,198.7 216.5,193.4 C223.2,182 248.2,176 264.5,181.9 C273,185 280.3,190.1 282.4,194.5 C284,197.9 284,198.3 282.5,200.6 C281.6,202 279.8,203.6 278.5,204.2 C276.4,205.1 275.4,204.7 270.1,200.8 C263,195.4 254.7,193.3 244.4,194.4 C236.1,195.3 234.3,196 228.6,200.9 C223.1,205.6 220,206.1 216.5,202.5 Z",fill:"#000000",fillRule:"nonzero"}),cr.default.createElement("path",{d:"M177.8,484.5 C169.1,482.1 162,475.2 157.7,465 C156.2,461.4 151.9,446.6 148.1,432 C144.3,417.4 140.7,404.3 140.1,402.8 L139,400 L94.8,400 C70.4,400 49.5,399.7 48.2,399.4 C45.1,398.5 42.7,393.8 43.9,390.8 C45.1,387.9 49.4,383.3 54,379.9 C68.7,369.2 86.3,364.8 120,363.4 C126.067,363.2 134.065,362.921 143.995,362.563 L350.015,362.563 C367.433,363.767 377.5,364.1 377.5,364.1 C411,365.2 433.1,371.5 446.2,383.8 C453.8,390.9 455.1,394.7 451.3,399 C451,399.3 429.6,399.7 403.7,400 L356.6,400.5 L353.3,412.5 C351.5,419.1 348.2,431.3 346.1,439.5 C339.9,463 336.7,470.5 329.4,477.5 C322.9,483.8 315.7,486.3 305.5,485.8 C298.1,485.4 296.1,484.7 280.5,477.8 C271.2,473.7 261.7,469.7 259.5,468.9 C250.9,466.1 238.1,467.9 224.9,473.8 C197.3,486.1 189.8,487.8 177.8,484.5 Z",stroke:"#000000",strokeWidth:"11",fill:"#000000",fillRule:"nonzero"}),cr.default.createElement("g",{transform:"translate(75.105, 196.182)"},cr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),cr.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),cr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),cr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),cr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),cr.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),cr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),cr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),cr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},cr.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},cr.default.createElement("path",{d:"M346.895,99.881 L335.287,108.67 L292.495,108.67 L211.805,108.67 C194.861,92.394 186.922,84.257 187.99,84.257 C188.99,84.257 187.689,77.518 187.99,71.118 C188.99,54.518 196.996,38.618 211.805,23.818 C219.711,15.918 222.813,13.518 230.118,10.018 C242.025,4.118 250.431,1.818 262.839,1.118 C274.147,0.518 285.354,2.218 295.561,6.018 C308.67,10.918 327.482,26.818 335.287,39.618 C342.092,50.918 346.895,65.818 346.895,76.018 C346.895,82.818 346.895,90.772 346.895,99.881 Z",stroke:"#000000",strokeWidth:"8",fill:"#000000",fillOpacity:"0.92"})),cr.default.createElement("path",{d:"M158.895,99.881 L147.295,108.67 L104.531,108.67 L23.895,108.67 C6.961,92.394 -0.972,84.257 0.095,84.257 C1.095,84.257 -0.205,77.518 0.095,71.118 C1.095,54.518 9.095,38.618 23.895,23.818 C31.795,15.918 34.895,13.518 42.195,10.018 C54.095,4.118 62.495,1.818 74.895,1.118 C86.195,0.518 97.395,2.218 107.595,6.018 C120.695,10.918 139.495,26.818 147.295,39.618 C154.095,50.918 158.895,65.818 158.895,76.018 C158.895,82.818 158.895,90.772 158.895,99.881 Z",stroke:"#000000",strokeWidth:"8",fill:"#000000",fillOpacity:"0.92"})),cr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},cr.default.createElement("path",{d:"M187.895,73.418 C187.895,60.818 195.095,43.418 205.495,30.818 C213.379,21.259 220.29,15.351 230.066,10.615 C233.275,8.66 236.386,7.08 239.229,6.018 C246.892,3.165 255.119,1.496 263.529,1.095 C267.063,0.859 270.58,0.912 274.131,1.261 C285.374,2.105 293.475,4.47 304.672,10.018 C311.734,13.402 314.868,15.757 322.213,23.049 L322.795,23.618 C326.306,27.085 329.397,30.586 332.082,34.15 L332.148,34.235 C341.116,45.994 346.03,58.349 346.8,71.118 C346.957,74.467 346.676,77.909 346.515,80.429 C346.693,80.646 346.917,80.701 347.195,80.618 C347.366,80.542 348.039,80.501 349.213,80.495 L349.775,80.495 C352.888,80.507 358.769,80.715 367.418,81.118 C374.646,86.469 378.26,91.703 378.26,96.818 C378.26,101.933 374.646,107.042 367.418,112.146 L15.403,112.146 L-20.38,113.348 C-27.807,110.322 -31.52,105.629 -31.52,99.27 C-31.52,92.911 -27.807,88.087 -20.38,84.798 C-13.63,84.605 -8.537,84.463 -5.101,84.373 C-5.115,84.296 -5.084,84.257 -5.01,84.257 C-4.01,84.257 -5.311,77.518 -5.01,71.118 C-4.01,54.518 3.996,38.618 18.805,23.818 C26.711,15.918 29.813,13.518 37.118,10.018 C49.025,4.118 57.431,1.818 69.839,1.118 C72.166,0.994 74.489,0.968 76.8,1.038 C76.165,1.058 75.53,1.084 74.895,1.118 C62.495,1.818 54.095,4.118 42.195,10.018 C34.895,13.518 31.795,15.918 23.895,23.818 C9.095,38.618 1.095,54.518 0.095,71.118 C-0.205,77.518 1.095,84.257 0.095,84.257 C-0.4,84.257 -2.131,84.296 -5.101,84.373 C-4.938,85.42 3.031,93.518 18.805,108.67 L142.287,108.67 L153.895,99.881 L153.895,76.018 C153.895,65.818 149.092,50.918 142.287,39.618 C134.482,26.818 115.67,10.918 102.561,6.018 C94.455,3 85.717,1.307 76.8,1.038 C87.451,0.716 97.968,2.432 107.595,6.018 C120.695,10.918 139.495,26.818 147.295,39.618 C154.095,50.918 158.895,65.818 158.895,76.018 L158.895,80.418 L164.995,80.418 C168.395,80.118 174.995,79.818 179.495,79.818 L187.895,79.818 L187.895,99.881 L199.502,108.67 L322.984,108.67 C339.929,92.394 347.867,84.257 346.8,84.257 C346.323,84.257 346.369,82.725 346.515,80.429 C346.051,79.868 345.895,78.223 345.895,75.118 C345.895,59.873 341.479,46.625 332.082,34.15 L331.696,33.647 C329.117,30.321 326.212,27.043 322.984,23.818 C322.722,23.556 322.465,23.299 322.213,23.049 C316.441,17.437 312.579,14.708 306.095,11.418 C294.424,5.583 284.144,2.245 274.131,1.261 C273.417,1.207 272.691,1.16 271.95,1.118 C269.132,0.968 266.321,0.962 263.529,1.095 C257.389,1.506 251.198,2.792 244.695,4.918 C239.073,6.731 234.301,8.563 230.066,10.615 C218.478,17.668 205.615,29.594 199.502,39.618 C192.698,50.917 187.895,65.817 187.895,76.017 L187.895,73.418 Z",stroke:"#000000",strokeWidth:"8",fill:"#000000"})),cr.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},cr.default.createElement("path",{d:"M12.837,35.288 C13.137,33.988 14.437,31.888 15.637,30.788 L17.837,28.788 L15.637,26.788 C14.437,25.688 13.137,23.588 12.837,22.288 C12.037,19.088 10.637,19.088 9.437,22.188 C8.937,23.488 7.537,25.588 6.237,26.788 C4.037,28.788 4.037,28.988 5.737,29.988 C6.837,30.488 8.237,32.488 9.037,34.388 C10.737,38.388 11.937,38.688 12.837,35.288 Z M29.237,33.088 C30.137,29.688 31.837,27.088 34.937,24.088 L39.337,19.888 L36.337,17.788 C33.437,15.588 28.437,7.288 28.437,4.288 C28.437,2.188 26.537,2.388 25.837,4.588 C23.937,10.388 21.637,14.388 18.337,17.188 L14.537,20.388 L17.337,22.088 C19.837,23.588 24.337,30.988 25.837,36.088 C26.737,39.088 27.937,37.988 29.237,33.088 Z M10.937,12.488 L13.037,9.288 L10.937,6.088 C8.837,2.788 7.437,1.888 7.437,3.988 C7.437,4.588 6.537,6.088 5.437,7.288 L3.437,9.488 L5.437,11.288 C6.537,12.288 7.437,13.688 7.437,14.488 C7.437,16.688 8.837,15.888 10.937,12.488 Z"}),cr.default.createElement("path",{d:"M203.437,36.388 C203.437,35.588 204.637,33.588 206.037,31.888 L208.637,28.788 L206.037,25.688 C204.637,23.988 203.437,21.988 203.437,21.188 C203.437,18.588 201.437,19.788 200.037,23.188 C199.237,25.088 197.837,27.088 196.737,27.688 C195.037,28.688 195.037,28.788 197.037,30.188 C198.237,30.988 199.737,33.088 200.437,34.788 C201.737,37.888 203.437,38.788 203.437,36.388 Z M220.837,32.588 C221.937,29.288 224.237,25.788 226.737,23.388 C229.737,20.488 230.537,19.288 229.437,18.988 C226.637,17.988 222.437,12.588 220.737,7.688 C219.737,4.988 218.737,2.788 218.337,2.788 C218.037,2.788 216.737,5.288 215.537,8.288 C214.337,11.288 211.737,15.088 209.837,16.688 C205.937,20.188 205.637,21.388 208.437,22.288 C210.937,23.088 214.737,28.788 216.437,34.088 C217.037,36.088 217.937,37.788 218.237,37.788 C218.637,37.788 219.837,35.388 220.837,32.588 Z M201.137,14.088 C201.437,13.088 202.437,11.488 203.337,10.488 C204.337,9.288 204.537,8.388 203.837,7.988 C203.237,7.588 202.237,6.288 201.537,5.088 C200.137,2.388 198.837,2.188 198.037,4.588 C197.737,5.488 196.937,6.988 196.337,7.888 C195.337,9.288 195.437,9.888 196.737,11.288 C197.637,12.188 198.437,13.588 198.437,14.388 C198.437,16.388 200.337,16.188 201.137,14.088 Z"}))));function fn({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return cr.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&cr.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=Wc[c];return d?cr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),cr.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 500 500",width:e,height:e,role:"img","aria-label":"Active Agent mascot"},cr.default.createElement("title",null,"ActiveAgent"),cr.default.createElement(MR,null)),n&&r.length>0&&cr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=Hc[c];return d?cr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var pa=G(Y());var Ki=G(Y()),M8=(0,Ki.createContext)();function D8({children:e}){let[t,r]=(0,Ki.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,Ki.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,Ki.useEffect)(()=>{let o=window.matchMedia("(prefers-color-scheme: dark)"),a=i=>{localStorage.getItem("dashboard-theme")||r(i.matches)};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)},[]);let n=()=>r(!t);return Ki.default.createElement(M8.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function st(){let e=(0,Ki.useContext)(M8);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function lp({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=st(),[u,c]=pa.default.useState(!1),d={cardBg:l?"rgba(255,255,255,0.05)":"#ffffff",border:l?"rgba(255,255,255,0.1)":"#e5e7eb",borderHover:l?"rgba(255,255,255,0.2)":"#d1d5db",tileBg:l?"rgba(255,255,255,0.05)":"#f9fafb",textPrimary:l?"#f9fafb":"#111827",textSecondary:l?"#9ca3af":"#6b7280",textMuted:l?"#6b7280":"#9ca3af"},f=p=>p==="good"?l?"#4ade80":"#16a34a":p==="warn"?l?"#facc15":"#ca8a04":p==="bad"?l?"#f87171":"#dc2626":p==="muted"?d.textMuted:d.textPrimary;return pa.default.createElement("div",{"data-testid":"agent-card","data-agent-name":typeof e=="string"?e:void 0,onClick:i,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),role:i?"button":void 0,tabIndex:i?0:void 0,onKeyDown:p=>{i&&(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),i(p))},style:{background:d.cardBg,borderTop:`1px solid ${u?d.borderHover:d.border}`,borderRight:`1px solid ${u?d.borderHover:d.border}`,borderBottom:`1px solid ${u?d.borderHover:d.border}`,borderLeft:n?`4px solid ${n}`:`1px solid ${u?d.borderHover:d.border}`,borderRadius:"12px",padding:"16px",cursor:i?"pointer":"default",transition:"border-color 0.15s ease, box-shadow 0.15s ease",boxShadow:u&&i?"0 4px 16px rgba(0,0,0,0.08)":"none",display:"flex",flexDirection:"column",gap:"12px"}},pa.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},pa.default.createElement("div",{style:{minWidth:0}},pa.default.createElement("div",{style:{fontWeight:600,fontSize:"15px",color:u&&i?"#ef4444":d.textPrimary,transition:"color 0.15s ease",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e},e),t&&pa.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&pa.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&pa.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(p=>pa.default.createElement("div",{key:p.label,title:p.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},pa.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:f(p.tone)}},p.value),pa.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},p.label)))),a&&pa.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&pa.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function pE(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var xs="~ estimated from tokens \xD7 model rates",gb=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),$8=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),up=e=>gb(e)?`${$8(Number(e)*100)}%`:"\u2014",Un=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${$8(n*100/r)}%`},Xo=e=>up(e),hb=e=>`pass \u2265 ${up(e)}`,Xr=(e,{estimated:t=!1}={})=>{if(!gb(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},I8=e=>Math.round(Number(e)||0).toLocaleString("en-US"),j8=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},DR=["pattern","default"],cp=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!gb(r.input)||!gb(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${I8(e)} in \xD7 ${j8(r.input)} + ${I8(t)} out \xD7 ${j8(r.output)} \xB7 ${n} rate${DR.includes(n)?" (fallback rate)":""}`};var IR=[{value:"recent",label:"Recently updated"},{value:"popular",label:"Most runs"},{value:"longest",label:"Longest average"},{value:"cost",label:"Highest cost"},{value:"tokens",label:"Most tokens"}];function mE({agents:e,meta:t,onSelect:r,onNew:n,onBrowseTemplates:o,onDuplicate:a,onDelete:i,onRefresh:s,sort:l="recent",onSortChange:u,isLoading:c}){let[d,f]=(0,et.useState)(""),[p,m]=(0,et.useState)(""),[y,x]=(0,et.useState)(""),h=e.filter(S=>{let k=!d||S.name.toLowerCase().includes(d.toLowerCase())||S.description?.toLowerCase().includes(d.toLowerCase()),A=!p||S.provider===p,O=!y||S.status===y;return k&&A&&O}),g=S=>{let k=new Date(S),O=new Date-k,$=Math.floor(O/(1e3*60*60*24));return $===0?"Today":$===1?"Yesterday":$<7?`${$} days ago`:k.toLocaleDateString()},v=S=>{switch(S){case"active":return"bg-green-100 text-green-700";case"draft":return"bg-yellow-100 text-yellow-700";case"archived":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},b=S=>S==null?"\u2014":S<1e3?`${Math.round(S)}ms`:`${(S/1e3).toFixed(1)}s`,_=S=>S==null?"\u2014":S>=1e6?`${(S/1e6).toFixed(1)}M`:S>=1e3?`${(S/1e3).toFixed(1)}k`:`${S}`,w=S=>S==null?"\u2014":S>0&&S<.01?"<$0.01":`$${S.toFixed(2)}`,C=S=>{if(!S)return"\u2014";let k=Math.floor((new Date-new Date(S))/(1e3*60*60*24));return k<=0?"Today":k<30?`${k}d ago`:new Date(S).toLocaleDateString()};return et.default.createElement("div",{className:"space-y-6"},et.default.createElement("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},et.default.createElement("div",{className:"flex-1 flex items-center space-x-4"},et.default.createElement("div",{className:"relative flex-1 max-w-md"},et.default.createElement("input",{type:"text",placeholder:"Search agents...",value:d,onChange:S=>f(S.target.value),className:"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),et.default.createElement("svg",{className:"absolute left-3 top-2.5 h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"}))),et.default.createElement("select",{value:p,onChange:S=>m(S.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},et.default.createElement("option",{value:""},"All Providers"),t.providers?.map(S=>et.default.createElement("option",{key:S,value:S},S.charAt(0).toUpperCase()+S.slice(1)))),et.default.createElement("select",{value:y,onChange:S=>x(S.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},et.default.createElement("option",{value:""},"All Status"),et.default.createElement("option",{value:"active"},"Active"),et.default.createElement("option",{value:"draft"},"Draft"),et.default.createElement("option",{value:"archived"},"Archived")),et.default.createElement("select",{value:l,onChange:S=>u?.(S.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500",title:"Rank agents by their scorecard"},IR.map(S=>et.default.createElement("option",{key:S.value,value:S.value},S.label)))),et.default.createElement("div",{className:"flex items-center space-x-3"},et.default.createElement("button",{onClick:s,disabled:c,className:"p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors"},et.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"}))),et.default.createElement("button",{onClick:o,className:"flex items-center space-x-2 px-4 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})),et.default.createElement("span",null,"Browse Templates")),et.default.createElement("button",{onClick:n,className:"flex items-center space-x-2 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),et.default.createElement("span",null,"New Agent")))),h.length>0?et.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(S=>{let k=S.stats||{},A=k.run_sources||[],O=A.length?`Counted from ${A.map($=>$==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return et.default.createElement(lp,{key:S.id,name:S.name,subtitle:S.description||"No description",badge:et.default.createElement("span",{className:`px-2 py-0.5 text-xs font-medium rounded-full ${v(S.status)}`},S.status),onClick:()=>r(S),stats:[{label:`Runs ${k.window_days||30}d`,value:k.runs??0,title:O},{label:"Success",value:k.success_rate!=null?`${Math.round(k.success_rate)}%`:"\u2014",tone:pE(k.success_rate!=null?k.success_rate/100:null)},{label:"Avg time",value:b(k.avg_duration_ms)},{label:"Eval",title:k.eval_samples_evaluated?`${Un(k.eval_samples_passed,k.eval_samples_evaluated)} passed over ${k.eval_runs??"the"} current evaluation${k.eval_runs===1?"":"s"}${k.eval_not_counted?` \xB7 ${k.eval_not_counted} stale or archived not counted`:""}`:k.eval_not_counted?`${k.eval_not_counted} evaluation${k.eval_not_counted===1?"":"s"} stale or archived, none counted`:"No evaluation counted yet",value:up(k.eval_score),tone:pE(k.eval_score)},{label:"Tokens",value:_(k.tokens)},{label:"Cost",value:w(k.cost),title:"Estimated from token counts at each model's published rates",tone:k.cost==null?"muted":void 0}],footer:et.default.createElement(et.default.Fragment,null,et.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},et.default.createElement("span",{style:{padding:"2px 6px",borderRadius:"4px",background:"rgba(128,128,128,0.15)",whiteSpace:"nowrap",flexShrink:0}},S.provider),et.default.createElement("span",{title:S.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},S.model)),et.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${g(S.updatedAt||S.updated_at)}`},k.last_run_at?`Last run ${C(k.last_run_at)}`:`Updated ${g(S.updatedAt||S.updated_at)}`)),actions:et.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},et.default.createElement("button",{onClick:$=>{$.stopPropagation(),a(S.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),et.default.createElement("button",{onClick:$=>{$.stopPropagation(),i(S.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):et.default.createElement("div",{className:"text-center py-16"},et.default.createElement("div",{className:"inline-block mb-4"},et.default.createElement(fn,{size:100})),et.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},e.length===0?"No agents yet":"No matching agents"),et.default.createElement("p",{className:"text-gray-500 mb-6"},e.length===0?"Create your first AI agent to get started":"Try adjusting your search or filters"),e.length===0&&et.default.createElement("div",{className:"flex items-center justify-center space-x-4"},et.default.createElement("button",{onClick:o,className:"inline-flex items-center space-x-2 px-6 py-3 border-2 border-red-500 text-red-600 rounded-lg hover:bg-red-50 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})),et.default.createElement("span",null,"Browse Templates")),et.default.createElement("span",{className:"text-gray-400"},"or"),et.default.createElement("button",{onClick:n,className:"inline-flex items-center space-x-2 px-6 py-3 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),et.default.createElement("span",null,"Create From Scratch")))))}var ve=G(Y());var co={chevronRight:">",chevronDown:"v",chevronUp:"^",arrow:"->",arrowLeft:"<-",pipe:"|",corner:"+",branch:"|-",success:"[+]",error:"[!]",warning:"[?]",info:"[i]",pending:"[ ]",active:"[*]",add:"+",remove:"-",edit:"*",view:"@",run:">",stop:"x",refresh:"~",trace:"->",span:"|",metric:"#",log:">",agent:"@",action:"#",time:":",cost:"$",tokens:"T",memory:"M",nav:{agents:"@",newAgent:"+",demo:">",traces:"->",metrics:"#",evaluations:"=",interactions:"<>",benchmarks:"%%",replay:"[>]",tools:"[]",mcp:"{}",docs:"?",github:"*"},spans:{root:">",prompt:"*",generate:"|>",llm:">>",thinking:"..",tool:"[]",response:"<|"}};var ht={mono:"'SF Mono', 'Fira Code', 'Consolas', monospace",sizes:{xs:"10px",sm:"11px",base:"13px",md:"14px",lg:"16px",xl:"20px",xxl:"24px"},weights:{normal:400,medium:500,semibold:600,bold:700}};function L8(e,{ttlMs:t,keep:r=()=>!0,now:n=Date.now}){let o=new Map,a=i=>{let s=o.get(i);if(s&&(s.expiresAt===null||n()(o.get(i)===l&&(r(u)?l.expiresAt=n()+t:o.delete(i)),u),u=>{throw o.get(i)===l&&o.delete(i),u}),o.set(i,l),l.promise};return a.clear=()=>o.clear(),a}var dp={openai:["gpt-5.1","gpt-5","gpt-5-mini","gpt-5-nano"],anthropic:["claude-opus-5","claude-fable-5","claude-sonnet-5","claude-opus-4-8","claude-haiku-4-5"],ollama:["qwen3:8b","llama3.2","mistral","gemma3"],openrouter:["anthropic/claude-sonnet-4.5","openai/gpt-5.1","meta-llama/llama-3.3-70b-instruct"]},yb=Object.keys(dp),jR=300*1e3,z8=L8($R,{ttlMs:jR,keep:e=>e!==null});async function B8(e){return await z8(e)??(dp[e]||[])}function gE(){z8.clear()}async function $R(e){try{let t=await fetch(`/api/provider_models?provider=${encodeURIComponent(e)}`);if(t.ok){let r=await t.json();if(Array.isArray(r.models)&&r.models.length>0)return r.models}}catch{}return null}var vb=G(Y());function Su(e){let[t,r]=(0,vb.useState)(dp),n=e.join(",");return(0,vb.useEffect)(()=>{let o=!1;return e.forEach(a=>{B8(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var ku=G(Y());function sl({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,ku.useId)();return ku.default.createElement(ku.default.Fragment,null,ku.default.createElement("input",{...s,ref:i,type:"text",list:l,value:e||"",onChange:u=>r(u.target.value,u),placeholder:a,autoComplete:"off",spellCheck:!1,className:n,style:o}),ku.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>ku.default.createElement("option",{key:u,value:u}))))}var xb=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],LR=["name","slug","description","provider","model"];function hE({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,ve.useState)(0),[s,l]=(0,ve.useState)({name:"",description:"",provider:"openai",model:dp.openai[0],instructions:"",preset_type:"terminal",instruction_sets:["github"],tools:["terminal","code"],model_config:{temperature:.7},...o?{name:o.name,description:o.description||"",instructions:o.instructions,provider:o.provider,model:o.model,tools:o.tools||[],instruction_sets:[],mcp_servers:[]}:{}}),u=Su([s.provider]),c=(0,ve.useMemo)(()=>{let v=o?.model&&o.provider;return!v||!u[v]?u:{...u,[v]:[...new Set([o.model,...u[v]])]}},[u]),d=c[s.provider];(0,ve.useEffect)(()=>{d?.length&&l(v=>d.includes(v.model)?v:{...v,model:d[0]})},[d]);let[f,p]=(0,ve.useState)(null),m=(v,b)=>{l(_=>({..._,[v]:b}))},y=(v,b)=>{l(_=>{let w=_[v]||[],C=w.includes(b)?w.filter(S=>S!==b):[...w,b];return{..._,[v]:C}})},x=v=>{if(m("preset_type",v),sp[v]){let b=sp[v];m("instruction_sets",[...b.instructions]),m("tools",[...b.tools])}},h=()=>{switch(a){case 0:return s.name.trim().length>=2;case 1:return!0;case 2:return!0;default:return!1}},g=async()=>{p(null);let v=await t(s);v&&(p(v),Object.keys(v.fieldErrors||{}).some(b=>LR.includes(b))&&i(0))};return ve.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&ve.default.createElement("div",{className:"mb-4 p-4 rounded-lg border border-red-200 bg-red-50 text-sm text-gray-700"},"Prepared by your workspace assistant. Review the instructions, model, and tools before creating this agent."),ve.default.createElement("div",{className:"mb-8"},ve.default.createElement("div",{className:"flex items-center justify-between"},xb.map((v,b)=>ve.default.createElement("div",{key:v.id,className:"flex items-center"},ve.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${bve.default.createElement("li",{key:v},v)))),ve.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&ve.default.createElement(zR,{formData:s,updateField:m,providerModels:c,fieldErrors:f?.fieldErrors||{}}),a===1&&ve.default.createElement(BR,{formData:s,meta:e,toggleArrayItem:y,updateField:m,selectPreset:x}),a===2&&ve.default.createElement(FR,{formData:s})),ve.default.createElement("div",{className:"flex justify-between mt-6"},ve.default.createElement("button",{onClick:a===0?r:()=>i(a-1),className:"px-6 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 transition-colors"},a===0?"Cancel":"Back"),ve.default.createElement("button",{onClick:a===xb.length-1?g:()=>i(a+1),disabled:!h()||n,className:`px-6 py-2 rounded-lg transition-colors ${h()&&!n?"bg-red-500 text-white hover:bg-red-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},a===xb.length-1?"Create Agent":"Continue")))}function bb({messages:e}){return e.length?ve.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function zR({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return ve.default.createElement("div",{className:"space-y-6"},ve.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),ve.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),ve.default.createElement("div",{className:"space-y-4"},ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),ve.default.createElement("input",{type:"text",value:e.name,onChange:a=>t("name",a.target.value),placeholder:"My Awesome Agent",className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),ve.default.createElement(bb,{messages:o("name","slug")})),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),ve.default.createElement("textarea",{value:e.description,onChange:a=>t("description",a.target.value),placeholder:"What does this agent do?",rows:3,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),ve.default.createElement(bb,{messages:o("description")})),ve.default.createElement("div",{className:"grid grid-cols-2 gap-4"},ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),ve.default.createElement("select",{value:e.provider,onChange:a=>{t("provider",a.target.value),t("model",r[a.target.value][0])},className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},Object.keys(r).map(a=>ve.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),ve.default.createElement(bb,{messages:o("provider")})),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),ve.default.createElement(sl,{value:e.model,models:r[e.provider],onChange:a=>t("model",a),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"}),ve.default.createElement(bb,{messages:o("model")}))),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),ve.default.createElement("input",{type:"range",min:"0",max:"1",step:"0.1",value:e.model_config.temperature,onChange:a=>t("model_config",{...e.model_config,temperature:parseFloat(a.target.value)}),className:"w-full accent-red-500"}),ve.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},ve.default.createElement("span",null,"Precise"),ve.default.createElement("span",null,"Creative")))))}function BR({formData:e,meta:t,toggleArrayItem:r,updateField:n,selectPreset:o}){let a=Object.keys(sp),i=Object.keys(Wc),s=Object.keys(Hc);return ve.default.createElement("div",{className:"space-y-6"},ve.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),ve.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),ve.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},ve.default.createElement("div",{className:"flex flex-col items-center"},ve.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(l=>{let u=Wc[l];return u?ve.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})),ve.default.createElement(fn,{size:120}),ve.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(l=>{let u=Hc[l];return u?ve.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})))),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),ve.default.createElement("div",{className:"flex flex-wrap gap-2"},a.map(l=>ve.default.createElement("button",{key:l,onClick:()=>o(l),className:`px-4 py-2 rounded-lg border-2 text-sm transition-all ${e.preset_type===l?"border-red-500 bg-red-50 text-red-700":"border-gray-200 hover:border-gray-300 text-gray-600"}`},ve.default.createElement("span",{className:"capitalize"},l.replace(/([A-Z])/g," $1").trim()))))),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},ve.default.createElement("strong",null,"Instructions"),ve.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),ve.default.createElement("div",{className:"flex flex-wrap gap-2"},i.map(l=>{let u=Wc[l];return ve.default.createElement("button",{key:l,onClick:()=>r("instruction_sets",l),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.instruction_sets.includes(l)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},ve.default.createElement("span",null,u.emoji),ve.default.createElement("span",null,u.label))}))),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},ve.default.createElement("strong",null,"Tools"),ve.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"MCPs and integrations")),ve.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(l=>{let u=Hc[l];return ve.default.createElement("button",{key:l,onClick:()=>r("tools",l),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.tools.includes(l)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},ve.default.createElement("span",null,u.emoji),ve.default.createElement("span",null,u.label))}))),ve.default.createElement("div",null,ve.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),ve.default.createElement("textarea",{value:e.instructions,onChange:l=>n("instructions",l.target.value),placeholder:"You are a helpful AI assistant that...",rows:4,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent font-mono text-sm"})))}function FR({formData:e}){return ve.default.createElement("div",{className:"space-y-6"},ve.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),ve.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),ve.default.createElement("div",{className:"grid grid-cols-2 gap-8"},ve.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},ve.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(t=>{let r=Wc[t];return r?ve.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),ve.default.createElement(fn,{size:100}),ve.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(t=>{let r=Hc[t];return r?ve.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),ve.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),ve.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),ve.default.createElement("div",{className:"space-y-4"},ve.default.createElement("div",null,ve.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),ve.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),ve.default.createElement("div",null,ve.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),ve.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),ve.default.createElement("div",null,ve.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),ve.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(t=>{let r=Wc[t];return r?ve.default.createElement("span",{key:t,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},r.emoji," ",r.label):null}):ve.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),ve.default.createElement("div",null,ve.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),ve.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(t=>{let r=Hc[t];return r?ve.default.createElement("span",{key:t,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r.emoji," ",r.label):null}):ve.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&ve.default.createElement("div",null,ve.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),ve.default.createElement("pre",{className:"mt-2 p-4 bg-gray-50 rounded-lg text-sm text-gray-700 whitespace-pre-wrap font-mono"},e.instructions)))}var me=G(Y());var fi=e=>({cardBg:e?"#1f1f1f":"#ffffff",cardBorder:e?"#2a2a2a":"#e5e7eb",borderStrong:e?"rgba(255,255,255,0.2)":"#d1d5db",mutedBg:e?"rgba(255,255,255,0.06)":"#f3f4f6",innerBg:e?"rgba(255,255,255,0.04)":"#f9fafb",textPrimary:e?"#ffffff":"#111827",textCell:e?"rgba(255,255,255,0.75)":"#4b5563",textSecondary:e?"rgba(255,255,255,0.6)":"#6b7280",textMuted:e?"rgba(255,255,255,0.4)":"#9ca3af",inputBg:e?"rgba(255,255,255,0.06)":"#ffffff",inputBorder:e?"rgba(255,255,255,0.2)":"#d1d5db",trackBg:e?"rgba(255,255,255,0.1)":"#f3f4f6"}),_o="#ef4444";var W=G(Y());var wb=G(Y()),K8=G(Y());function F8(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t{var r=e.children,n=e.width,o=e.height,a=e.viewBox,i=e.className,s=e.style,l=e.title,u=e.desc,c=qR(e,KR),d=a||{width:n,height:o,x:0,y:0},f=lt("recharts-surface",i);return wb.createElement("svg",xE({},Jr(c),{className:f,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),wb.createElement("title",null,l),wb.createElement("desc",null,u),r)});var Sb=G(Y());var GR=["children","className"];function bE(){return bE=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=YR(e,GR),a=lt("recharts-layer",n);return Sb.createElement("g",bE({className:a},Jr(o),{ref:t}),r)});var Ka=G(Y()),X1=G(Y()),K6=G(Ig());function kb(e){return e==="__proto__"}var ZR=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function _b(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:ZR.test(e);default:return!1}}function fp(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function wE(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(wE).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function pp(e){if(Array.isArray(e))return e.map(fp);if(typeof e=="symbol")return[e];e=wE(e);let t=[],r=e.length;if(r===0)return t;let n=0,o="",a="",i=!1;for(e.charCodeAt(0)===46&&t.push("");n1&&arguments[1]!==void 0?arguments[1]:QR,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function Xn(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n{var s=r[i-1];return typeof s=="string"?o+s+a:s!==void 0?o+pi(s)+a:o+a},"")}var Mr=e=>e===0?0:e>0?1:-1,po=e=>typeof e=="number"&&e!=+e,ll=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,Oe=e=>(typeof e=="number"||e instanceof Number)&&!po(e),Zo=e=>Oe(e)||typeof e=="string",RR=0,ul=e=>{var t=++RR;return"".concat(e||"").concat(t)},pn=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!Oe(t)&&typeof t!="string")return n;var a;if(ll(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return po(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},SE=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):fo(n,t))===r)}var qt=e=>e===null||typeof e>"u",cl=e=>qt(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function Zn(e){return e!=null}function Jo(){}function Ih(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}function q8(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function bs(e){for(var t=1;t{var t=e.viewBox,r=e.position,n=e.offset,o=n===void 0?0:n,a=e.parentViewBox,i=e.clamp,s=Ih(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,f=s.lowerWidth,p=l,m=l+(d-f)/2,y=(p+m)/2,x=(d+f)/2,h=p+d/2,g=c>=0?1:-1,v=g*o,b=g>0?"end":"start",_=g>0?"start":"end",w=d>=0?1:-1,C=w*o,S=w>0?"end":"start",k=w>0?"start":"end",A=a;if(r==="top"){var O={x:p+d/2,y:u-v,horizontalAnchor:"middle",verticalAnchor:b};return i&&A&&(O.height=Math.max(u-A.y,0),O.width=d),O}if(r==="bottom"){var $={x:m+f/2,y:u+c+v,horizontalAnchor:"middle",verticalAnchor:_};return i&&A&&($.height=Math.max(A.y+A.height-(u+c),0),$.width=f),$}if(r==="left"){var F={x:y-C,y:u+c/2,horizontalAnchor:S,verticalAnchor:"middle"};return i&&A&&(F.width=Math.max(F.x-A.x,0),F.height=c),F}if(r==="right"){var P={x:y+x+C,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"};return i&&A&&(P.width=Math.max(A.x+A.width-P.x,0),P.height=c),P}var z=i&&A?{width:x,height:c}:{};return r==="insideLeft"?bs({x:y+C,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"},z):r==="insideRight"?bs({x:y+x-C,y:u+c/2,horizontalAnchor:S,verticalAnchor:"middle"},z):r==="insideTop"?bs({x:p+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:_},z):r==="insideBottom"?bs({x:m+f/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:b},z):r==="insideTopLeft"?bs({x:p+C,y:u+v,horizontalAnchor:k,verticalAnchor:_},z):r==="insideTopRight"?bs({x:p+d-C,y:u+v,horizontalAnchor:S,verticalAnchor:_},z):r==="insideBottomLeft"?bs({x:m+C,y:u+c-v,horizontalAnchor:k,verticalAnchor:b},z):r==="insideBottomRight"?bs({x:m+f-C,y:u+c-v,horizontalAnchor:S,verticalAnchor:b},z):r&&typeof r=="object"&&(Oe(r.x)||ll(r.x))&&(Oe(r.y)||ll(r.y))?bs({x:l+pn(r.x,x),y:u+pn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},z):bs({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},z)},nee=["top","left","right","bottom"];function jh(e){return e==null?!1:typeof e=="object"?!0:nee.includes(e)}var Eb=G(Y()),kE=(0,Eb.createContext)(null),V8=()=>(0,Eb.useContext)(kE);var Qo=G(Y());var d$=G(Y());function xr(e){return function(){return e}}var _E=Math.cos;var $h=Math.sin,mo=Math.sqrt;var Kc=Math.PI,hke=Kc/2,mp=2*Kc;var AE=Math.PI,CE=2*AE,qc=1e-6,oee=CE-qc;function G8(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return G8;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oqc)if(!(Math.abs(d*l-u*c)>qc)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-i,m=o-s,y=l*l+u*u,x=p*p+m*m,h=Math.sqrt(y),g=Math.sqrt(f),v=a*Math.tan((AE-Math.acos((y+f-x)/(2*h*g)))/2),b=v/g,_=v/h;Math.abs(b-1)>qc&&this._append`L${t+b*c},${r+b*d}`,this._append`A${a},${a},0,0,${+(d*p>c*m)},${this._x1=t+_*l},${this._y1=r+_*u}`}}arc(t,r,n,o,a,i){if(t=+t,r=+r,n=+n,i=!!i,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),l=n*Math.sin(o),u=t+s,c=r+l,d=1^i,f=i?o-a:a-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>qc||Math.abs(this._y1-c)>qc)&&this._append`L${u},${c}`,n&&(f<0&&(f=f%CE+CE),f>oee?this._append`A${n},${n},0,1,${d},${t-s},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:f>qc&&this._append`A${n},${n},0,${+(f>=AE)},${d},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function Y8(){return new Vc}Y8.prototype=Vc.prototype;function gp(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new Vc(t)}var _ke=Array.prototype.slice;function hp(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function X8(e){this._context=e}X8.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function _u(e){return new X8(e)}function Nb(e){return e[0]}function Tb(e){return e[1]}function Lh(e,t){var r=xr(!0),n=null,o=_u,a=null,i=gp(s);e=typeof e=="function"?e:e===void 0?Nb:xr(e),t=typeof t=="function"?t:t===void 0?Tb:xr(t);function s(l){var u,c=(l=hp(l)).length,d,f=!1,p;for(n==null&&(a=o(p=i())),u=0;u<=c;++u)!(u=p;--m)s.point(v[m],b[m]);s.lineEnd(),s.areaEnd()}h&&(v[f]=+e(x,f,d),b[f]=+t(x,f,d),s.point(n?+n(x,f,d):v[f],r?+r(x,f,d):b[f]))}if(g)return s=null,g+""||null}function c(){return Lh().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:xr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:xr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:xr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:xr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:xr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:xr(+d),u):r},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(r)},u.lineX1=function(){return c().x(n).y(t)},u.defined=function(d){return arguments.length?(o=typeof d=="function"?d:xr(!!d),u):o},u.curve=function(d){return arguments.length?(i=d,a!=null&&(s=i(a)),u):i},u.context=function(d){return arguments.length?(d==null?a=s=null:s=i(a=d),u):a},u}var Ob=class{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};function EE(e){return new Ob(e,!0)}function NE(e){return new Ob(e,!1)}var vp={draw(e,t){let r=mo(t/Kc);e.moveTo(r,0),e.arc(0,0,r,0,mp)}};var TE={draw(e,t){let r=mo(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};var Z8=mo(1/3),iee=Z8*2,OE={draw(e,t){let r=mo(t/iee),n=r*Z8;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var PE={draw(e,t){let r=mo(t),n=-r/2;e.rect(n,n,r,r)}};var see=.8908130915292852,J8=$h(Kc/10)/$h(7*Kc/10),lee=$h(mp/10)*J8,uee=-_E(mp/10)*J8,ME={draw(e,t){let r=mo(t*see),n=lee*r,o=uee*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=mp*a/5,s=_E(i),l=$h(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var DE=mo(3),IE={draw(e,t){let r=-mo(t/(DE*3));e.moveTo(0,r*2),e.lineTo(-DE*r,-r),e.lineTo(DE*r,-r),e.closePath()}};var mi=-.5,gi=mo(3)/2,jE=1/mo(12),cee=(jE/2+1)*3,$E={draw(e,t){let r=mo(t/cee),n=r/2,o=r*jE,a=n,i=r*jE+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(mi*n-gi*o,gi*n+mi*o),e.lineTo(mi*a-gi*i,gi*a+mi*i),e.lineTo(mi*s-gi*l,gi*s+mi*l),e.lineTo(mi*n+gi*o,mi*o-gi*n),e.lineTo(mi*a+gi*i,mi*i-gi*a),e.lineTo(mi*s+gi*l,mi*l-gi*s),e.closePath()}};function Pb(e,t){let r=null,n=gp(o);e=typeof e=="function"?e:xr(e||vp),t=typeof t=="function"?t:xr(t===void 0?64:+t);function o(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return o.type=function(a){return arguments.length?(e=typeof a=="function"?a:xr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:xr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function xp(){}function bp(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Q8(e){this._context=e}Q8.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:bp(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:bp(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function LE(e){return new Q8(e)}function R8(e){this._context=e}R8.prototype={areaStart:xp,areaEnd:xp,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:bp(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function zE(e){return new R8(e)}function e$(e){this._context=e}e$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:bp(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function BE(e){return new e$(e)}function t$(e){this._context=e}t$.prototype={areaStart:xp,areaEnd:xp,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function FE(e){return new t$(e)}function r$(e){return e<0?-1:1}function n$(e,t,r){var n=e._x1-e._x0,o=t-e._x1,a=(e._y1-e._y0)/(n||o<0&&-0),i=(r-e._y1)/(o||n<0&&-0),s=(a*o+i*n)/(n+o);return(r$(a)+r$(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function o$(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function UE(e,t,r){var n=e._x0,o=e._y0,a=e._x1,i=e._y1,s=(a-n)/3;e._context.bezierCurveTo(n+s,o+s*t,a-s,i-s*r,a,i)}function Mb(e){this._context=e}Mb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:UE(this,this._t0,o$(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,UE(this,o$(this,r=n$(this,e,t)),r);break;default:UE(this,this._t0,r=n$(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function a$(e){this._context=new i$(e)}(a$.prototype=Object.create(Mb.prototype)).point=function(e,t){Mb.prototype.point.call(this,t,e)};function i$(e){this._context=e}i$.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,a){this._context.bezierCurveTo(t,e,n,r,a,o)}};function WE(e){return new Mb(e)}function HE(e){return new a$(e)}function l$(e){this._context=e}l$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=s$(e),o=s$(t),a=0,i=1;i=0;--t)o[t]=(i[t]-o[t+1])/a[t];for(a[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function qE(e){return new Db(e,.5)}function VE(e){return new Db(e,0)}function GE(e){return new Db(e,1)}function Ba(e,t){if((i=e.length)>1)for(var r=1,n,o,a=e[t[0]],i,s=a.length;r=0;)r[t]=t;return r}function dee(e,t){return e[t]}function fee(e){let t=[];return t.key=e,t}function YE(){var e=xr([]),t=wp,r=Ba,n=dee;function o(a){var i=Array.from(e.apply(this,arguments),fee),s,l=i.length,u=-1,c;for(let d of a)for(s=0,++u;s0){for(var r,n,o=0,a=e[0].length,i;o0){for(var r=0,n=e[t[0]],o,a=n.length;r0)||!((a=(o=e[t[0]]).length)>0))){for(var r=0,n=1,o,a,i;n{var t="symbol".concat(cl(e));return f$[t]||vp},See=(e,t,r)=>{if(t==="area")return e;switch(r){case"cross":return 5*e*e/9;case"diamond":return .5*e*e/Math.sqrt(3);case"square":return e*e;case"star":{var n=18*bee;return 1.25*e*e*(Math.tan(n)-Math.tan(n*2)*Math.tan(n)**2)}case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},kee=(e,t)=>{f$["symbol".concat(cl(e))]=t},RE=e=>{var t=e.type,r=t===void 0?"circle":t,n=e.size,o=n===void 0?64:n,a=e.sizeType,i=a===void 0?"area":a,s=vee(e,mee),l=c$(c$({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=wee(u),x=Pb().type(y).size(See(o,i,u)),h=x();if(h!==null)return h},d=l.className,f=l.cx,p=l.cy,m=Jr(l);return Oe(f)&&Oe(p)&&Oe(o)?d$.createElement("path",QE({},m,{className:lt("recharts-symbols",d),transform:"translate(".concat(f,", ").concat(p,")"),d:c()})):null};RE.registerSymbol=kee;var p$=G(Y());var Ib=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Sp=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,p$.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{Mh(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},_ee=(e,t,r)=>n=>(e(t,r,n),null),dl=(e,t,r)=>{if(e===null||typeof e!="object"&&typeof e!="function")return null;var n=null;return Object.keys(e).forEach(o=>{var a=e[o];Mh(o)&&typeof a=="function"&&(n||(n={}),n[o]=_ee(a,t,r))}),n};function m$(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Aee(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function jb(){return jb=Object.assign?Object.assign.bind():function(e){for(var t=1;t>>=0,e===0?32:31-(XJ(e)/ZJ|0)|0}var tx=256,rx=262144,nx=4194304;function Mc(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function lb(e,t,r){var n=e.pendingLanes;if(n===0)return 0;var o=0,a=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var s=n&134217727;return s!==0?(n=s&~a,n!==0?o=Mc(n):(i&=s,i!==0?o=Mc(i):r||(r=s&~e,r!==0&&(o=Mc(r))))):(s=n&~a,s!==0?o=Mc(s):i!==0?o=Mc(i):r||(r=n&~e,r!==0&&(o=Mc(r)))),o===0?0:t!==0&&t!==o&&(t&a)===0&&(a=o&-o,r=t&-t,a>=r||a===32&&(r&4194048)!==0)?t:o}function Ih(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function QJ(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function m4(){var e=nx;return nx<<=1,(nx&62914560)===0&&(nx=4194304),e}function aC(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function Dh(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function RJ(e,t,r,n,o,a){var i=e.pendingLanes;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=r,e.entangledLanes&=r,e.errorRecoveryDisabledLanes&=r,e.shellSuspendCounter=0;var s=e.entanglements,l=e.expirationTimes,u=e.hiddenUpdates;for(r=i&~r;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var aQ=/[\n"\\]/g;function pi(e){return e.replace(aQ,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function KC(e,t,r,n,o,a,i,s){e.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?e.type=i:e.removeAttribute("type"),t!=null?i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+ci(t)):e.value!==""+ci(t)&&(e.value=""+ci(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?qC(e,i,ci(t)):r!=null?qC(e,i,ci(r)):n!=null&&e.removeAttribute("value"),o==null&&a!=null&&(e.defaultChecked=!!a),o!=null&&(e.checked=o&&typeof o!="function"&&typeof o!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+ci(s):e.removeAttribute("name")}function k4(e,t,r,n,o,a,i,s){if(a!=null&&typeof a!="function"&&typeof a!="symbol"&&typeof a!="boolean"&&(e.type=a),t!=null||r!=null){if(!(a!=="submit"&&a!=="reset"||t!=null)){HC(e);return}r=r!=null?""+ci(r):"",t=t!=null?""+ci(t):r,s||t===e.value||(e.value=t),e.defaultValue=t}n=n??o,n=typeof n!="function"&&typeof n!="symbol"&&!!n,e.checked=s?e.checked:!!n,e.defaultChecked=!!n,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(e.name=i),HC(e)}function qC(e,t,r){t==="number"&&Lx(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Yf(e,t,r,n){if(e=e.options,t){t={};for(var o=0;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),GC=!1;if(ul)try{Of={},Object.defineProperty(Of,"passive",{get:function(){GC=!0}}),window.addEventListener("test",Of,Of),window.removeEventListener("test",Of,Of)}catch{GC=!1}var Of,du=null,LA=null,bx=null;function N4(){if(bx)return bx;var e,t=LA,r=t.length,n,o="value"in du?du.value:du.textContent,a=o.length;for(e=0;e=oh),GI=" ",YI=!1;function O4(e,t){switch(e){case"keyup":return IQ.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function P4(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Bf=!1;function jQ(e,t){switch(e){case"compositionend":return P4(t);case"keypress":return t.which!==32?null:(YI=!0,GI);case"textInput":return e=t.data,e===GI&&YI?null:e;default:return null}}function $Q(e,t){if(Bf)return e==="compositionend"||!BA&&O4(e,t)?(e=N4(),bx=LA=du=null,Bf=!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:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=QI(r)}}function j4(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?j4(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function $4(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Lx(e.document);t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=Lx(e.document)}return t}function FA(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 KQ=ul&&"documentMode"in document&&11>=document.documentMode,Ff=null,YC=null,ih=null,XC=!1;function eD(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;XC||Ff==null||Ff!==Lx(n)||(n=Ff,"selectionStart"in n&&FA(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),ih&&bh(ih,n)||(ih=n,n=tb(YC,"onSelect"),0>=i,o-=i,ws=1<<32-Ua(t)+o|r<k?(_=A,A=null):_=A.sibling;var C=f(h,A,v[k],x);if(C===null){A===null&&(A=_);break}e&&A&&C.alternate===null&&t(h,A),g=a(C,g,k),w===null?S=C:w.sibling=C,w=C,A=_}if(k===v.length)return r(h,A),ar&&tl(h,k),S;if(A===null){for(;kk?(_=A,A=null):_=A.sibling;var E=f(h,A,C.value,x);if(E===null){A===null&&(A=_);break}e&&A&&E.alternate===null&&t(h,A),g=a(E,g,k),w===null?S=E:w.sibling=E,w=E,A=_}if(C.done)return r(h,A),ar&&tl(h,k),S;if(A===null){for(;!C.done;k++,C=v.next())C=d(h,C.value,x),C!==null&&(g=a(C,g,k),w===null?S=C:w.sibling=C,w=C);return ar&&tl(h,k),S}for(A=n(A);!C.done;k++,C=v.next())C=p(A,h,k,C.value,x),C!==null&&(e&&C.alternate!==null&&A.delete(C.key===null?k:C.key),g=a(C,g,k),w===null?S=C:w.sibling=C,w=C);return e&&A.forEach(function(j){return t(h,j)}),ar&&tl(h,k),S}function b(h,g,v,x){if(typeof v=="object"&&v!==null&&v.type===jf&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case ex:e:{for(var S=v.key;g!==null;){if(g.key===S){if(S=v.type,S===jf){if(g.tag===7){r(h,g.sibling),x=o(g,v.props.children),x.return=h,h=x;break e}}else if(g.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===ou&&Ic(S)===g.type){r(h,g.sibling),x=o(g,v.props),Yg(x,v),x.return=h,h=x;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===jf?(x=$c(v.props.children,h.mode,x,v.key),x.return=h,h=x):(x=Sx(v.type,v.key,v.props,null,h.mode,x),Yg(x,v),x.return=h,h=x)}return i(h);case Rg:e:{for(S=v.key;g!==null;){if(g.key===S)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){r(h,g.sibling),x=o(g,v.children||[]),x.return=h,h=x;break e}else{r(h,g);break}else t(h,g);g=g.sibling}x=pC(v,h.mode,x),x.return=h,h=x}return i(h);case ou:return v=Ic(v),b(h,g,v,x)}if(eh(v))return m(h,g,v,x);if(Vg(v)){if(S=Vg(v),typeof S!="function")throw Error(ke(150));return v=S.call(v),y(h,g,v,x)}if(typeof v.then=="function")return b(h,g,ux(v),x);if(v.$$typeof===nl)return b(h,g,lx(h,v),x);cx(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,g!==null&&g.tag===6?(r(h,g.sibling),x=o(g,v),x.return=h,h=x):(r(h,g),x=fC(v,h.mode,x),x.return=h,h=x),i(h)):r(h,g)}return function(h,g,v,x){try{kh=0;var S=b(h,g,v,x);return Jf=null,S}catch(A){if(A===mp||A===mb)throw A;var w=La(29,A,null,h.mode);return w.lanes=x,w.return=h,w}}}var Wc=J4(!0),Q4=J4(!1),au=!1;function XA(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function rA(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 yu(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function vu(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(br&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=Bx(e),H4(e,null,r),t}return pb(e,n,t,r),Bx(e)}function lh(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194048)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,h4(e,r)}}function gC(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var o=null,a=null;if(r=r.firstBaseUpdate,r!==null){do{var i={lane:r.lane,tag:r.tag,payload:r.payload,callback:null,next:null};a===null?o=a=i:a=a.next=i,r=r.next}while(r!==null);a===null?o=a=t:a=a.next=t}else o=a=t;r={baseState:n.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:n.shared,callbacks:n.callbacks},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}var nA=!1;function uh(){if(nA){var e=Zf;if(e!==null)throw e}}function ch(e,t,r,n){nA=!1;var o=e.updateQueue;au=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,s=o.shared.pending;if(s!==null){o.shared.pending=null;var l=s,u=l.next;l.next=null,i===null?a=u:i.next=u,i=l;var c=e.alternate;c!==null&&(c=c.updateQueue,s=c.lastBaseUpdate,s!==i&&(s===null?c.firstBaseUpdate=u:s.next=u,c.lastBaseUpdate=l))}if(a!==null){var d=o.baseState;i=0,c=u=l=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(er&f)===f:(n&f)===f){f!==0&&f===np&&(nA=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,y=s;f=t;var b=r;switch(y.tag){case 1:if(m=y.payload,typeof m=="function"){d=m.call(b,d,f);break e}d=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=y.payload,f=typeof m=="function"?m.call(b,d,f):m,f==null)break e;d=Qr({},d,f);break e;case 2:au=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=o.callbacks,p===null?o.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},c===null?(u=c=p,l=d):c=c.next=p,i|=f;if(s=s.next,s===null){if(s=o.shared.pending,s===null)break;p=s,s=p.next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}while(!0);c===null&&(l=d),o.baseState=l,o.firstBaseUpdate=u,o.lastBaseUpdate=c,a===null&&(o.shared.lanes=0),Eu|=i,e.lanes=i,e.memoizedState=d}}function R4(e,t){if(typeof e!="function")throw Error(ke(191,e));e.call(t)}function ej(e,t){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;ea?a:8;var i=St.T,s={};St.T=s,lE(e,!1,t,r);try{var l=o(),u=St.S;if(u!==null&&u(s,l),l!==null&&typeof l=="object"&&typeof l.then=="function"){var c=RQ(l,n);dh(e,t,c,Wa(e))}else dh(e,t,n,Wa(e))}catch(d){dh(e,t,{then:function(){},status:"rejected",reason:d},Wa())}finally{wr.p=a,i!==null&&s.types!==null&&(i.types=s.types),St.T=i}}function aR(){}function lA(e,t,r,n){if(e.tag!==5)throw Error(ke(476));var o=Cj(e).queue;_j(e,o,t,jc,r===null?aR:function(){return Aj(e),r(n)})}function Cj(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:jc,baseState:jc,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:dl,lastRenderedState:jc},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:dl,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Aj(e){var t=Cj(e);t.next===null&&(t=e.alternate.memoizedState),dh(e,t.next.queue,{},Wa())}function sE(){return No(Nh)}function Ej(){return jn().memoizedState}function Nj(){return jn().memoizedState}function iR(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=Wa();e=yu(r);var n=vu(t,e,r);n!==null&&(ha(n,t,r),lh(n,t,r)),t={cache:VA()},e.payload=t;return}t=t.return}}function sR(e,t,r){var n=Wa();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},vb(e)?Oj(t,r):(r=WA(e,t,r,n),r!==null&&(ha(r,e,n),Pj(r,t,n)))}function Tj(e,t,r){var n=Wa();dh(e,t,r,n)}function dh(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(vb(e))Oj(t,o);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var i=t.lastRenderedState,s=a(i,r);if(o.hasEagerState=!0,o.eagerState=s,Ha(s,i))return pb(e,t,o,0),Dr===null&&fb(),!1}catch{}if(r=WA(e,t,o,n),r!==null)return ha(r,e,n),Pj(r,t,n),!0}return!1}function lE(e,t,r,n){if(n={lane:2,revertLane:yE(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},vb(e)){if(t)throw Error(ke(479))}else t=WA(e,r,n,2),t!==null&&ha(t,e,2)}function vb(e){var t=e.alternate;return e===$t||t!==null&&t===$t}function Oj(e,t){Qf=qx=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Pj(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,h4(e,r)}}var Ch={readContext:No,use:hb,useCallback:_n,useContext:_n,useEffect:_n,useImperativeHandle:_n,useLayoutEffect:_n,useInsertionEffect:_n,useMemo:_n,useReducer:_n,useRef:_n,useState:_n,useDebugValue:_n,useDeferredValue:_n,useTransition:_n,useSyncExternalStore:_n,useId:_n,useHostTransitionStatus:_n,useFormState:_n,useActionState:_n,useOptimistic:_n,useMemoCache:_n,useCacheRefresh:_n};Ch.useEffectEvent=_n;var Mj={readContext:No,use:hb,useCallback:function(e,t){return ea().memoizedState=[e,t===void 0?null:t],e},useContext:No,useEffect:gD,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,Cx(4194308,4,xj.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Cx(4194308,4,e,t)},useInsertionEffect:function(e,t){Cx(4,2,e,t)},useMemo:function(e,t){var r=ea();t=t===void 0?null:t;var n=e();if(Hc){cu(!0);try{e()}finally{cu(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=ea();if(r!==void 0){var o=r(t);if(Hc){cu(!0);try{r(t)}finally{cu(!1)}}}else o=t;return n.memoizedState=n.baseState=o,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:o},n.queue=e,e=e.dispatch=sR.bind(null,$t,e),[n.memoizedState,e]},useRef:function(e){var t=ea();return e={current:e},t.memoizedState=e},useState:function(e){e=iA(e);var t=e.queue,r=Tj.bind(null,$t,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:aE,useDeferredValue:function(e,t){var r=ea();return iE(r,e,t)},useTransition:function(){var e=iA(!1);return e=_j.bind(null,$t,e.queue,!0,!1),ea().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=$t,o=ea();if(ar){if(r===void 0)throw Error(ke(407));r=r()}else{if(r=t(),Dr===null)throw Error(ke(349));(er&127)!==0||aj(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,gD(sj.bind(null,n,a,e),[e]),n.flags|=2048,ap(9,{destroy:void 0},ij.bind(null,n,a,r,t),null),r},useId:function(){var e=ea(),t=Dr.identifierPrefix;if(ar){var r=Ss,n=ws;r=(n&~(1<<32-Ua(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=Vx++,0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a=typeof n.is=="string"?i.createElement("select",{is:n.is}):i.createElement("select"),n.multiple?a.multiple=!0:n.size&&(a.size=n.size);break;default:a=typeof n.is=="string"?i.createElement(o,{is:n.is}):i.createElement(o)}}a[Ao]=t,a[ya]=n;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)a.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=a;e:switch(To(a,o,n),o){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break e;case"img":n=!0;break e;default:n=!1}n&&Js(t)}}return Zr(t),kC(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Js(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(ke(166));if(e=gu.current,Pf(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=Eo,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[Ao]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||T8(e.nodeValue,r)),e||Cu(t,!0)}else e=rb(e).createTextNode(n),e[Ao]=t,t.stateNode=e}return Zr(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=Pf(t),r!==null){if(e===null){if(!n)throw Error(ke(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(ke(557));e[Ao]=t}else Fc(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Zr(t),e=!1}else r=mC(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?($a(t),t):($a(t),null);if((t.flags&128)!==0)throw Error(ke(558))}return Zr(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=Pf(t),n!==null&&n.dehydrated!==null){if(e===null){if(!o)throw Error(ke(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(ke(317));o[Ao]=t}else Fc(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Zr(t),o=!1}else o=mC(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?($a(t),t):($a(t),null)}return $a(t),(t.flags&128)!==0?(t.lanes=r,t):(r=n!==null,e=e!==null&&e.memoizedState!==null,r&&(n=t.child,o=null,n.alternate!==null&&n.alternate.memoizedState!==null&&n.alternate.memoizedState.cachePool!==null&&(o=n.alternate.memoizedState.cachePool.pool),a=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(a=n.memoizedState.cachePool.pool),a!==o&&(n.flags|=2048)),r!==e&&r&&(t.child.flags|=8192),dx(t,t.updateQueue),Zr(t),null);case 4:return ep(),e===null&&vE(t.stateNode.containerInfo),Zr(t),null;case 10:return sl(t.type),Zr(t),null;case 19:if(ho(Dn),n=t.memoizedState,n===null)return Zr(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)Xg(n,!1);else{if(Cn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=Kx(e),a!==null){for(t.flags|=128,Xg(n,!1),e=a.updateQueue,t.updateQueue=e,dx(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)K4(r,e),r=r.sibling;return Ur(Dn,Dn.current&1|2),ar&&tl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&Ba()>Zx&&(t.flags|=128,o=!0,Xg(n,!1),t.lanes=4194304)}else{if(!o)if(e=Kx(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,dx(t,e),Xg(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!ar)return Zr(t),null}else 2*Ba()-n.renderingStartTime>Zx&&r!==536870912&&(t.flags|=128,o=!0,Xg(n,!1),t.lanes=4194304);n.isBackwards?(a.sibling=t.child,t.child=a):(e=n.last,e!==null?e.sibling=a:t.child=a,n.last=a)}return n.tail!==null?(e=n.tail,n.rendering=e,n.tail=e.sibling,n.renderingStartTime=Ba(),e.sibling=null,r=Dn.current,Ur(Dn,o?r&1|2:r&1),ar&&tl(t,n.treeForkCount),e):(Zr(t),null);case 22:case 23:return $a(t),ZA(),n=t.memoizedState!==null,e!==null?e.memoizedState!==null!==n&&(t.flags|=8192):n&&(t.flags|=8192),n?(r&536870912)!==0&&(t.flags&128)===0&&(Zr(t),t.subtreeFlags&6&&(t.flags|=8192)):Zr(t),r=t.updateQueue,r!==null&&dx(t,r.retryQueue),r=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(r=e.memoizedState.cachePool.pool),n=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(n=t.memoizedState.cachePool.pool),n!==r&&(t.flags|=2048),e!==null&&ho(Lc),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),sl(Kn),Zr(t),null;case 25:return null;case 30:return null}throw Error(ke(156,t.tag))}function fR(e,t){switch(qA(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return sl(Kn),ep(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return jx(t),null;case 31:if(t.memoizedState!==null){if($a(t),t.alternate===null)throw Error(ke(340));Fc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if($a(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ke(340));Fc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ho(Dn),null;case 4:return ep(),null;case 10:return sl(t.type),null;case 22:case 23:return $a(t),ZA(),e!==null&&ho(Lc),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return sl(Kn),null;case 25:return null;default:return null}}function Kj(e,t){switch(qA(t),t.tag){case 3:sl(Kn),ep();break;case 26:case 27:case 5:jx(t);break;case 4:ep();break;case 31:t.memoizedState!==null&&$a(t);break;case 13:$a(t);break;case 19:ho(Dn);break;case 10:sl(t.type);break;case 22:case 23:$a(t),ZA(),e!==null&&ho(Lc);break;case 24:sl(Kn)}}function Bh(e,t){try{var r=t.updateQueue,n=r!==null?r.lastEffect:null;if(n!==null){var o=n.next;r=o;do{if((r.tag&e)===e){n=void 0;var a=r.create,i=r.inst;n=a(),i.destroy=n}r=r.next}while(r!==o)}}catch(s){Er(t,t.return,s)}}function Au(e,t,r){try{var n=t.updateQueue,o=n!==null?n.lastEffect:null;if(o!==null){var a=o.next;n=a;do{if((n.tag&e)===e){var i=n.inst,s=i.destroy;if(s!==void 0){i.destroy=void 0,o=t;var l=r,u=s;try{u()}catch(c){Er(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){Er(t,t.return,c)}}function qj(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{ej(t,r)}catch(n){Er(e,e.return,n)}}}function Vj(e,t,r){r.props=Kc(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Er(e,t,n)}}function fh(e,t){try{var r=e.ref;if(r!==null){switch(e.tag){case 26:case 27:case 5:var n=e.stateNode;break;case 30:n=e.stateNode;break;default:n=e.stateNode}typeof r=="function"?e.refCleanup=r(n):r.current=n}}catch(o){Er(e,t,o)}}function ks(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){Er(e,t,o)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof r=="function")try{r(null)}catch(o){Er(e,t,o)}else r.current=null}function Gj(e){var t=e.type,r=e.memoizedProps,n=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":r.autoFocus&&n.focus();break e;case"img":r.src?n.src=r.src:r.srcSet&&(n.srcset=r.srcSet)}}catch(o){Er(e,e.return,o)}}function _C(e,t,r){try{var n=e.stateNode;MR(n,e.type,r,t),n[ya]=t}catch(o){Er(e,e.return,o)}}function Yj(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Tu(e.type)||e.tag===4}function CC(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Yj(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Tu(e.type)||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 pA(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?(r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r).insertBefore(e,t):(t=r.nodeType===9?r.body:r.nodeName==="HTML"?r.ownerDocument.body:r,t.appendChild(e),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=ol));else if(n!==4&&(n===27&&Tu(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(pA(e,t,r),e=e.sibling;e!==null;)pA(e,t,r),e=e.sibling}function Xx(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(n===27&&Tu(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(Xx(e,t,r),e=e.sibling;e!==null;)Xx(e,t,r),e=e.sibling}function Xj(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);To(t,n,r),t[Ao]=e,t[ya]=r}catch(a){Er(e,e.return,a)}}var rl=!1,Hn=!1,AC=!1,ND=typeof WeakSet=="function"?WeakSet:Set,mo=null;function pR(e,t){if(e=e.containerInfo,bA=ib,e=$4(e),FA(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,a=n.focusNode;n=n.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var i=0,s=-1,l=-1,u=0,c=0,d=e,f=null;t:for(;;){for(var p;d!==r||o!==0&&d.nodeType!==3||(s=i+o),d!==a||n!==0&&d.nodeType!==3||(l=i+n),d.nodeType===3&&(i+=d.nodeValue.length),(p=d.firstChild)!==null;)f=d,d=p;for(;;){if(d===e)break t;if(f===r&&++u===o&&(s=i),f===a&&++c===n&&(l=i),(p=d.nextSibling)!==null)break;d=f,f=d.parentNode}d=p}r=s===-1||l===-1?null:{start:s,end:l}}else r=null}r=r||{start:0,end:0}}else r=null;for(wA={focusedElem:e,selectionRange:r},ib=!1,mo=t;mo!==null;)if(t=mo,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,mo=e;else for(;mo!==null;){switch(t=mo,a=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(r=0;r title"))),To(a,n,r),a[Ao]=e,go(a),n=a;break e;case"link":var i=ZD("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sb&&(i=b,b=y,y=i);var h=RI(s,y),g=RI(s,b);if(h&&g&&(p.rangeCount!==1||p.anchorNode!==h.node||p.anchorOffset!==h.offset||p.focusNode!==g.node||p.focusOffset!==g.offset)){var v=d.createRange();v.setStart(h.node,h.offset),p.removeAllRanges(),y>b?(p.addRange(v),p.extend(g.node,g.offset)):(v.setEnd(g.node,g.offset),p.addRange(v))}}}}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;sr?32:r,St.T=null,r=hA,hA=null;var a=bu,i=ll;if(Rn=0,sp=bu=null,ll=0,(br&6)!==0)throw Error(ke(331));var s=br;if(br|=4,i8(a.current),n8(a,a.current,i,r),br=s,Fh(0,!1),Fa&&typeof Fa.onPostCommitFiberRoot=="function")try{Fa.onPostCommitFiberRoot(Mh,a)}catch{}return!0}finally{wr.p=o,St.T=n,w8(e,t)}}function MD(e,t,r){t=mi(r,t),t=cA(e.stateNode,t,2),e=vu(e,t,2),e!==null&&(Dh(e,2),As(e))}function Er(e,t,r){if(e.tag===3)MD(e,e,r);else for(;t!==null;){if(t.tag===3){MD(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(xu===null||!xu.has(n))){e=mi(r,e),r=Lj(2),n=vu(t,r,2),n!==null&&(zj(r,n,t,e),Dh(n,2),As(n));break}}t=t.return}}function NC(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new hR;var o=new Set;n.set(t,o)}else o=n.get(t),o===void 0&&(o=new Set,n.set(t,o));o.has(r)||(mE=!0,o.add(r),e=wR.bind(null,e,t,r),t.then(e,e))}function wR(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Dr===e&&(er&r)===r&&(Cn===4||Cn===3&&(er&62914560)===er&&300>Ba()-xb?(br&2)===0&&lp(e,0):gE|=r,ip===er&&(ip=0)),As(e)}function k8(e,t){t===0&&(t=m4()),e=Yc(e,t),e!==null&&(Dh(e,t),As(e))}function SR(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),k8(e,r)}function kR(e,t){var r=0;switch(e.tag){case 31:case 13:var n=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=e.stateNode;break;case 22:n=e.stateNode._retryCache;break;default:throw Error(ke(314))}n!==null&&n.delete(t),k8(e,r)}function _R(e,t){return PA(e,t)}var Rx=null,Df=null,vA=!1,eb=!1,TC=!1,mu=0;function As(e){e!==Df&&e.next===null&&(Df===null?Rx=Df=e:Df=Df.next=e),eb=!0,vA||(vA=!0,AR())}function Fh(e,t){if(!TC&&eb){TC=!0;do for(var r=!1,n=Rx;n!==null;){if(!t)if(e!==0){var o=n.pendingLanes;if(o===0)var a=0;else{var i=n.suspendedLanes,s=n.pingedLanes;a=(1<<31-Ua(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,ID(n,a))}else a=er,a=lb(n,n===Dr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Ih(n,a)||(r=!0,ID(n,a));n=n.next}while(r);TC=!1}}function CR(){_8()}function _8(){eb=vA=!1;var e=0;mu!==0&&DR()&&(e=mu);for(var t=Ba(),r=null,n=Rx;n!==null;){var o=n.next,a=C8(n,t);a===0?(n.next=null,r===null?Rx=o:r.next=o,o===null&&(Df=r)):(r=n,(e!==0||(a&3)!==0)&&(eb=!0)),n=o}Rn!==0&&Rn!==5||Fh(e,!1),mu!==0&&(mu=0)}function C8(e,t){for(var r=e.suspendedLanes,n=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var c=l.transferSize,d=l.initiatorType;c&&FD(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function D8(e,t,r){var n=hp;if(n&&typeof t=="string"&&t){var o=pi(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),GD.has(o)||(GD.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),To(t,"link",e),go(t),n.head.appendChild(t)))}}function HR(e){ml.D(e),D8("dns-prefetch",e,null)}function KR(e,t){ml.C(e,t),D8("preconnect",e,t)}function qR(e,t,r){ml.L(e,t,r);var n=hp;if(n&&e&&t){var o='link[rel="preload"][as="'+pi(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+pi(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+pi(r.imageSizes)+'"]')):o+='[href="'+pi(e)+'"]';var a=o;switch(t){case"style":a=up(e);break;case"script":a=yp(e)}vi.has(a)||(e=Qr({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),vi.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(Uh(a))||t==="script"&&n.querySelector(Wh(a))||(t=n.createElement("link"),To(t,"link",e),go(t),n.head.appendChild(t)))}}function VR(e,t){ml.m(e,t);var r=hp;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+pi(n)+'"][href="'+pi(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=yp(e)}if(!vi.has(a)&&(e=Qr({rel:"modulepreload",href:e},t),vi.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Wh(a)))return}n=r.createElement("link"),To(n,"link",e),go(n),r.head.appendChild(n)}}}function GR(e,t,r){ml.S(e,t,r);var n=hp;if(n&&e){var o=Gf(n).hoistableStyles,a=up(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(Uh(a)))s.loading=5;else{e=Qr({rel:"stylesheet",href:e,"data-precedence":t},r),(r=vi.get(a))&&xE(e,r);var l=i=n.createElement("link");go(l),To(l,"link",e),l._p=new Promise(function(u,c){l.onload=u,l.onerror=c}),l.addEventListener("load",function(){s.loading|=1}),l.addEventListener("error",function(){s.loading|=2}),s.loading|=4,Tx(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function YR(e,t){ml.X(e,t);var r=hp;if(r&&e){var n=Gf(r).hoistableScripts,o=yp(e),a=n.get(o);a||(a=r.querySelector(Wh(o)),a||(e=Qr({src:e,async:!0},t),(t=vi.get(o))&&bE(e,t),a=r.createElement("script"),go(a),To(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function XR(e,t){ml.M(e,t);var r=hp;if(r&&e){var n=Gf(r).hoistableScripts,o=yp(e),a=n.get(o);a||(a=r.querySelector(Wh(o)),a||(e=Qr({src:e,async:!0,type:"module"},t),(t=vi.get(o))&&bE(e,t),a=r.createElement("script"),go(a),To(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function YD(e,t,r,n){var o=(o=gu.current)?nb(o):null;if(!o)throw Error(ke(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=up(r.href),r=Gf(o).hoistableStyles,n=r.get(t),n||(n={type:"style",instance:null,count:0,state:null},r.set(t,n)),n):{type:"void",instance:null,count:0,state:null};case"link":if(r.rel==="stylesheet"&&typeof r.href=="string"&&typeof r.precedence=="string"){e=up(r.href);var a=Gf(o).hoistableStyles,i=a.get(e);if(i||(o=o.ownerDocument||o,i={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},a.set(e,i),(a=o.querySelector(Uh(e)))&&!a._p&&(i.instance=a,i.state.loading=5),vi.has(e)||(r={rel:"preload",as:"style",href:r.href,crossOrigin:r.crossOrigin,integrity:r.integrity,media:r.media,hrefLang:r.hrefLang,referrerPolicy:r.referrerPolicy},vi.set(e,r),a||ZR(o,e,r,i.state))),t&&n===null)throw Error(ke(528,""));return i}if(t&&n!==null)throw Error(ke(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=yp(r),r=Gf(o).hoistableScripts,n=r.get(t),n||(n={type:"script",instance:null,count:0,state:null},r.set(t,n)),n):{type:"void",instance:null,count:0,state:null};default:throw Error(ke(444,e))}}function up(e){return'href="'+pi(e)+'"'}function Uh(e){return'link[rel="stylesheet"]['+e+"]"}function j8(e){return Qr({},e,{"data-precedence":e.precedence,precedence:null})}function ZR(e,t,r,n){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?n.loading=1:(t=e.createElement("link"),n.preload=t,t.addEventListener("load",function(){return n.loading|=1}),t.addEventListener("error",function(){return n.loading|=2}),To(t,"link",r),go(t),e.head.appendChild(t))}function yp(e){return'[src="'+pi(e)+'"]'}function Wh(e){return"script[async]"+e}function XD(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+pi(r.href)+'"]');if(n)return t.instance=n,go(n),n;var o=Qr({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),go(n),To(n,"style",o),Tx(n,r.precedence,e),t.instance=n;case"stylesheet":o=up(r.href);var a=e.querySelector(Uh(o));if(a)return t.state.loading|=4,t.instance=a,go(a),a;n=j8(r),(o=vi.get(o))&&xE(n,o),a=(e.ownerDocument||e).createElement("link"),go(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),To(a,"link",n),t.state.loading|=4,Tx(a,r.precedence,e),t.instance=a;case"script":return a=yp(r.src),(o=e.querySelector(Wh(a)))?(t.instance=o,go(o),o):(n=r,(o=vi.get(a))&&(n=Qr({},r),bE(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),go(o),To(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(ke(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,Tx(n,r.precedence,e));return t.instance}function Tx(e,t,r){for(var n=r.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),o=n.length?n[n.length-1]:null,a=o,i=0;i title"):null)}function JR(e,t,r){if(r===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;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!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 $8(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function QR(e,t,r,n){if(r.type==="stylesheet"&&(typeof n.media!="string"||matchMedia(n.media).matches!==!1)&&(r.state.loading&4)===0){if(r.instance===null){var o=up(n.href),a=t.querySelector(Uh(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=ob.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,go(a);return}a=t.ownerDocument||t,n=j8(n),(o=vi.get(o))&&xE(n,o),a=a.createElement("link"),go(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),To(a,"link",n),r.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(r,t),(t=r.state.preload)&&(r.state.loading&3)===0&&(e.count++,r=ob.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var IC=0;function RR(e,t){return e.stylesheets&&e.count===0&&Px(e,e.stylesheets),0IC?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function ob(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Px(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var ab=null;function Px(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ab=new Map,t.forEach(eee,e),ab=null,ob.call(e))}function eee(e,t){if(!(t.state.loading&4)){var r=ab.get(e);if(r)var n=r.get(null);else{r=new Map,ab.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function q8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(q8)}catch(e){console.error(e)}}q8(),V8.exports=K8()});var rL=po(tL=>{"use strict";var zp=Y();function yte(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var vte=typeof Object.is=="function"?Object.is:yte,xte=zp.useState,bte=zp.useEffect,wte=zp.useLayoutEffect,Ste=zp.useDebugValue;function kte(e,t){var r=t(),n=xte({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return wte(function(){o.value=r,o.getSnapshot=t,gN(o)&&a({inst:o})},[e,r,t]),bte(function(){return gN(o)&&a({inst:o}),e(function(){gN(o)&&a({inst:o})})},[e]),Ste(r),r}function gN(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!vte(e,r)}catch{return!0}}function _te(e,t){return t()}var Cte=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?_te:kte;tL.useSyncExternalStore=zp.useSyncExternalStore!==void 0?zp.useSyncExternalStore:Cte});var oL=po((TAe,nL)=>{"use strict";nL.exports=rL()});var iL=po(aL=>{"use strict";var y1=Y(),Ate=oL();function Ete(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Nte=typeof Object.is=="function"?Object.is:Ete,Tte=Ate.useSyncExternalStore,Ote=y1.useRef,Pte=y1.useEffect,Mte=y1.useMemo,Ite=y1.useDebugValue;aL.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Ote(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Mte(function(){function l(p){if(!u){if(u=!0,c=p,p=n(p),o!==void 0&&i.hasValue){var m=i.value;if(o(m,p))return d=m}return d=p}if(m=d,Nte(c,p))return m;var y=n(p);return o!==void 0&&o(m,y)?(c=p,m):(c=p,d=y)}var u=!1,c,d,f=r===void 0?null:r;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,r,n,o]);var s=Tte(e,a[0],a[1]);return Pte(function(){i.hasValue=!0,i.value=s},[s]),Ite(s),s}});var lL=po((PAe,sL)=>{"use strict";sL.exports=iL()});var X6=po(Y6=>{"use strict";var cy=Y();function Lne(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var zne=typeof Object.is=="function"?Object.is:Lne,Bne=cy.useSyncExternalStore,Fne=cy.useRef,Une=cy.useEffect,Wne=cy.useMemo,Hne=cy.useDebugValue;Y6.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Fne(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Wne(function(){function l(p){if(!u){if(u=!0,c=p,p=n(p),o!==void 0&&i.hasValue){var m=i.value;if(o(m,p))return d=m}return d=p}if(m=d,zne(c,p))return m;var y=n(p);return o!==void 0&&o(m,y)?(c=p,m):(c=p,d=y)}var u=!1,c,d,f=r===void 0?null:r;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,r,n,o]);var s=Bne(e,a[0],a[1]);return Une(function(){i.hasValue=!0,i.value=s},[s]),Hne(s),s}});var J6=po((ONe,Z6)=>{"use strict";Z6.exports=X6()});var cT=po((SB,Ew)=>{(function(e){"use strict";var t=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},n=!0,o="[DecimalError] ",a=o+"Invalid argument: ",i=o+"Exponent out of range: ",s=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,c,d=1e7,f=7,p=9007199254740991,m=s(p/f),y={};y.absoluteValue=y.abs=function(){var N=new this.constructor(this);return N.s&&(N.s=1),N},y.comparedTo=y.cmp=function(N){var O,$,T,I,P=this;if(N=new P.constructor(N),P.s!==N.s)return P.s||-N.s;if(P.e!==N.e)return P.e>N.e^P.s<0?1:-1;for(T=P.d.length,I=N.d.length,O=0,$=TN.d[O]^P.s<0?1:-1;return T===I?0:T>I^P.s<0?1:-1},y.decimalPlaces=y.dp=function(){var N=this,O=N.d.length-1,$=(O-N.e)*f;if(O=N.d[O],O)for(;O%10==0;O/=10)$--;return $<0?0:$},y.dividedBy=y.div=function(N){return v(this,new this.constructor(N))},y.dividedToIntegerBy=y.idiv=function(N){var O=this,$=O.constructor;return C(v(O,new $(N),0,1),$.precision)},y.equals=y.eq=function(N){return!this.cmp(N)},y.exponent=function(){return S(this)},y.greaterThan=y.gt=function(N){return this.cmp(N)>0},y.greaterThanOrEqualTo=y.gte=function(N){return this.cmp(N)>=0},y.isInteger=y.isint=function(){return this.e>this.d.length-2},y.isNegative=y.isneg=function(){return this.s<0},y.isPositive=y.ispos=function(){return this.s>0},y.isZero=function(){return this.s===0},y.lessThan=y.lt=function(N){return this.cmp(N)<0},y.lessThanOrEqualTo=y.lte=function(N){return this.cmp(N)<1},y.logarithm=y.log=function(N){var O,$=this,T=$.constructor,I=T.precision,P=I+5;if(N===void 0)N=new T(10);else if(N=new T(N),N.s<1||N.eq(c))throw Error(o+"NaN");if($.s<1)throw Error(o+($.s?"NaN":"-Infinity"));return $.eq(c)?new T(0):(n=!1,O=v(k($,P),k(N,P),P),n=!0,C(O,I))},y.minus=y.sub=function(N){var O=this;return N=new O.constructor(N),O.s==N.s?E(O,N):b(O,(N.s=-N.s,N))},y.modulo=y.mod=function(N){var O,$=this,T=$.constructor,I=T.precision;if(N=new T(N),!N.s)throw Error(o+"NaN");return $.s?(n=!1,O=v($,N,0,1).times(N),n=!0,$.minus(O)):C(new T($),I)},y.naturalExponential=y.exp=function(){return x(this)},y.naturalLogarithm=y.ln=function(){return k(this)},y.negated=y.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},y.plus=y.add=function(N){var O=this;return N=new O.constructor(N),O.s==N.s?b(O,N):E(O,(N.s=-N.s,N))},y.precision=y.sd=function(N){var O,$,T,I=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(O=S(I)+1,T=I.d.length-1,$=T*f+1,T=I.d[T],T){for(;T%10==0;T/=10)$--;for(T=I.d[0];T>=10;T/=10)$++}return N&&O>$?O:$},y.squareRoot=y.sqrt=function(){var N,O,$,T,I,P,H,Q=this,K=Q.constructor;if(Q.s<1){if(!Q.s)return new K(0);throw Error(o+"NaN")}for(N=S(Q),n=!1,I=Math.sqrt(+Q),I==0||I==1/0?(O=g(Q.d),(O.length+N)%2==0&&(O+="0"),I=Math.sqrt(O),N=s((N+1)/2)-(N<0||N%2),I==1/0?O="5e"+N:(O=I.toExponential(),O=O.slice(0,O.indexOf("e")+1)+N),T=new K(O)):T=new K(I.toString()),$=K.precision,I=H=$+3;;)if(P=T,T=P.plus(v(Q,P,H+2)).times(.5),g(P.d).slice(0,H)===(O=g(T.d)).slice(0,H)){if(O=O.slice(H-3,H+1),I==H&&O=="4999"){if(C(P,$+1,0),P.times(P).eq(Q)){T=P;break}}else if(O!="9999")break;H+=4}return n=!0,C(T,$)},y.times=y.mul=function(N){var O,$,T,I,P,H,Q,K,ue,pe=this,re=pe.constructor,_e=pe.d,de=(N=new re(N)).d;if(!pe.s||!N.s)return new re(0);for(N.s*=pe.s,$=pe.e+N.e,K=_e.length,ue=de.length,K=0;){for(O=0,I=K+T;I>T;)Q=P[I]+de[T]*_e[I-T-1]+O,P[I--]=Q%d|0,O=Q/d|0;P[I]=(P[I]+O)%d|0}for(;!P[--H];)P.pop();return O?++$:P.shift(),N.d=P,N.e=$,n?C(N,re.precision):N},y.toDecimalPlaces=y.todp=function(N,O){var $=this,T=$.constructor;return $=new T($),N===void 0?$:(h(N,0,t),O===void 0?O=T.rounding:h(O,0,8),C($,N+S($)+1,O))},y.toExponential=function(N,O){var $,T=this,I=T.constructor;return N===void 0?$=j(T,!0):(h(N,0,t),O===void 0?O=I.rounding:h(O,0,8),T=C(new I(T),N+1,O),$=j(T,!0,N+1)),$},y.toFixed=function(N,O){var $,T,I=this,P=I.constructor;return N===void 0?j(I):(h(N,0,t),O===void 0?O=P.rounding:h(O,0,8),T=C(new P(I),N+S(I)+1,O),$=j(T.abs(),!1,N+S(T)+1),I.isneg()&&!I.isZero()?"-"+$:$)},y.toInteger=y.toint=function(){var N=this,O=N.constructor;return C(new O(N),S(N)+1,O.rounding)},y.toNumber=function(){return+this},y.toPower=y.pow=function(N){var O,$,T,I,P,H,Q=this,K=Q.constructor,ue=12,pe=+(N=new K(N));if(!N.s)return new K(c);if(Q=new K(Q),!Q.s){if(N.s<1)throw Error(o+"Infinity");return Q}if(Q.eq(c))return Q;if(T=K.precision,N.eq(c))return C(Q,T);if(O=N.e,$=N.d.length-1,H=O>=$,P=Q.s,H){if(($=pe<0?-pe:pe)<=p){for(I=new K(c),O=Math.ceil(T/f+4),n=!1;$%2&&(I=I.times(Q),F(I.d,O)),$=s($/2),$!==0;)Q=Q.times(Q),F(Q.d,O);return n=!0,N.s<0?new K(c).div(I):C(I,T)}}else if(P<0)throw Error(o+"NaN");return P=P<0&&N.d[Math.max(O,$)]&1?-1:1,Q.s=1,n=!1,I=N.times(k(Q,T+ue)),n=!0,I=x(I),I.s=P,I},y.toPrecision=function(N,O){var $,T,I=this,P=I.constructor;return N===void 0?($=S(I),T=j(I,$<=P.toExpNeg||$>=P.toExpPos)):(h(N,1,t),O===void 0?O=P.rounding:h(O,0,8),I=C(new P(I),N,O),$=S(I),T=j(I,N<=$||$<=P.toExpNeg,N)),T},y.toSignificantDigits=y.tosd=function(N,O){var $=this,T=$.constructor;return N===void 0?(N=T.precision,O=T.rounding):(h(N,1,t),O===void 0?O=T.rounding:h(O,0,8)),C(new T($),N,O)},y.toString=y.valueOf=y.val=y.toJSON=function(){var N=this,O=S(N),$=N.constructor;return j(N,O<=$.toExpNeg||O>=$.toExpPos)};function b(N,O){var $,T,I,P,H,Q,K,ue,pe=N.constructor,re=pe.precision;if(!N.s||!O.s)return O.s||(O=new pe(N)),n?C(O,re):O;if(K=N.d,ue=O.d,H=N.e,I=O.e,K=K.slice(),P=H-I,P){for(P<0?(T=K,P=-P,Q=ue.length):(T=ue,I=H,Q=K.length),H=Math.ceil(re/f),Q=H>Q?H+1:Q+1,P>Q&&(P=Q,T.length=1),T.reverse();P--;)T.push(0);T.reverse()}for(Q=K.length,P=ue.length,Q-P<0&&(P=Q,T=ue,ue=K,K=T),$=0;P;)$=(K[--P]=K[P]+ue[P]+$)/d|0,K[P]%=d;for($&&(K.unshift($),++I),Q=K.length;K[--Q]==0;)K.pop();return O.d=K,O.e=I,n?C(O,re):O}function h(N,O,$){if(N!==~~N||N$)throw Error(a+N)}function g(N){var O,$,T,I=N.length-1,P="",H=N[0];if(I>0){for(P+=H,O=1;OH?1:-1;else for(Q=K=0;QI[Q]?1:-1;break}return K}function $(T,I,P){for(var H=0;P--;)T[P]-=H,H=T[P]1;)T.shift()}return function(T,I,P,H){var Q,K,ue,pe,re,_e,de,le,Z,ee,L,B,q,M,ne,U,oe,ve,Ze=T.constructor,Ht=T.s==I.s?1:-1,Mt=T.d,fe=I.d;if(!T.s)return new Ze(T);if(!I.s)throw Error(o+"Division by zero");for(K=T.e-I.e,oe=fe.length,ne=Mt.length,de=new Ze(Ht),le=de.d=[],ue=0;fe[ue]==(Mt[ue]||0);)++ue;if(fe[ue]>(Mt[ue]||0)&&--K,P==null?B=P=Ze.precision:H?B=P+(S(T)-S(I))+1:B=P,B<0)return new Ze(0);if(B=B/f+2|0,ue=0,oe==1)for(pe=0,fe=fe[0],B++;(ue1&&(fe=N(fe,pe),Mt=N(Mt,pe),oe=fe.length,ne=Mt.length),M=oe,Z=Mt.slice(0,oe),ee=Z.length;ee=d/2&&++U;do pe=0,Q=O(fe,Z,oe,ee),Q<0?(L=Z[0],oe!=ee&&(L=L*d+(Z[1]||0)),pe=L/U|0,pe>1?(pe>=d&&(pe=d-1),re=N(fe,pe),_e=re.length,ee=Z.length,Q=O(re,Z,_e,ee),Q==1&&(pe--,$(re,oe<_e?ve:fe,_e))):(pe==0&&(Q=pe=1),re=fe.slice()),_e=re.length,_e16)throw Error(i+S(N));if(!N.s)return new pe(c);for(O==null?(n=!1,Q=re):Q=O,H=new pe(.03125);N.abs().gte(.1);)N=N.times(H),ue+=5;for(T=Math.log(l(2,ue))/Math.LN10*2+5|0,Q+=T,$=I=P=new pe(c),pe.precision=Q;;){if(I=C(I.times(N),Q),$=$.times(++K),H=P.plus(v(I,$,Q)),g(H.d).slice(0,Q)===g(P.d).slice(0,Q)){for(;ue--;)P=C(P.times(P),Q);return pe.precision=re,O==null?(n=!0,C(P,re)):P}P=H}}function S(N){for(var O=N.e*f,$=N.d[0];$>=10;$/=10)O++;return O}function w(N,O,$){if(O>N.LN10.sd())throw n=!0,$&&(N.precision=$),Error(o+"LN10 precision limit exceeded");return C(new N(N.LN10),O)}function A(N){for(var O="";N--;)O+="0";return O}function k(N,O){var $,T,I,P,H,Q,K,ue,pe,re=1,_e=10,de=N,le=de.d,Z=de.constructor,ee=Z.precision;if(de.s<1)throw Error(o+(de.s?"NaN":"-Infinity"));if(de.eq(c))return new Z(0);if(O==null?(n=!1,ue=ee):ue=O,de.eq(10))return O==null&&(n=!0),w(Z,ue);if(ue+=_e,Z.precision=ue,$=g(le),T=$.charAt(0),P=S(de),Math.abs(P)<15e14){for(;T<7&&T!=1||T==1&&$.charAt(1)>3;)de=de.times(N),$=g(de.d),T=$.charAt(0),re++;P=S(de),T>1?(de=new Z("0."+$),P++):de=new Z(T+"."+$.slice(1))}else return K=w(Z,ue+2,ee).times(P+""),de=k(new Z(T+"."+$.slice(1)),ue-_e).plus(K),Z.precision=ee,O==null?(n=!0,C(de,ee)):de;for(Q=H=de=v(de.minus(c),de.plus(c),ue),pe=C(de.times(de),ue),I=3;;){if(H=C(H.times(pe),ue),K=Q.plus(v(H,new Z(I),ue)),g(K.d).slice(0,ue)===g(Q.d).slice(0,ue))return Q=Q.times(2),P!==0&&(Q=Q.plus(w(Z,ue+2,ee).times(P+""))),Q=v(Q,new Z(re),ue),Z.precision=ee,O==null?(n=!0,C(Q,ee)):Q;Q=K,I+=2}}function _(N,O){var $,T,I;for(($=O.indexOf("."))>-1&&(O=O.replace(".","")),(T=O.search(/e/i))>0?($<0&&($=T),$+=+O.slice(T+1),O=O.substring(0,T)):$<0&&($=O.length),T=0;O.charCodeAt(T)===48;)++T;for(I=O.length;O.charCodeAt(I-1)===48;)--I;if(O=O.slice(T,I),O){if(I-=T,$=$-T-1,N.e=s($/f),N.d=[],T=($+1)%f,$<0&&(T+=f),Tm||N.e<-m))throw Error(i+$)}else N.s=0,N.e=0,N.d=[0];return N}function C(N,O,$){var T,I,P,H,Q,K,ue,pe,re=N.d;for(H=1,P=re[0];P>=10;P/=10)H++;if(T=O-H,T<0)T+=f,I=O,ue=re[pe=0];else{if(pe=Math.ceil((T+1)/f),P=re.length,pe>=P)return N;for(ue=P=re[pe],H=1;P>=10;P/=10)H++;T%=f,I=T-f+H}if($!==void 0&&(P=l(10,H-I-1),Q=ue/P%10|0,K=O<0||re[pe+1]!==void 0||ue%P,K=$<4?(Q||K)&&($==0||$==(N.s<0?3:2)):Q>5||Q==5&&($==4||K||$==6&&(T>0?I>0?ue/l(10,H-I):0:re[pe-1])%10&1||$==(N.s<0?8:7))),O<1||!re[0])return K?(P=S(N),re.length=1,O=O-P-1,re[0]=l(10,(f-O%f)%f),N.e=s(-O/f)||0):(re.length=1,re[0]=N.e=N.s=0),N;if(T==0?(re.length=pe,P=1,pe--):(re.length=pe+1,P=l(10,f-T),re[pe]=I>0?(ue/l(10,H-I)%l(10,I)|0)*P:0),K)for(;;)if(pe==0){(re[0]+=P)==d&&(re[0]=1,++N.e);break}else{if(re[pe]+=P,re[pe]!=d)break;re[pe--]=0,P=1}for(T=re.length;re[--T]===0;)re.pop();if(n&&(N.e>m||N.e<-m))throw Error(i+S(N));return N}function E(N,O){var $,T,I,P,H,Q,K,ue,pe,re,_e=N.constructor,de=_e.precision;if(!N.s||!O.s)return O.s?O.s=-O.s:O=new _e(N),n?C(O,de):O;if(K=N.d,re=O.d,T=O.e,ue=N.e,K=K.slice(),H=ue-T,H){for(pe=H<0,pe?($=K,H=-H,Q=re.length):($=re,T=ue,Q=K.length),I=Math.max(Math.ceil(de/f),Q)+2,H>I&&(H=I,$.length=1),$.reverse(),I=H;I--;)$.push(0);$.reverse()}else{for(I=K.length,Q=re.length,pe=I0;--I)K[Q++]=0;for(I=re.length;I>H;){if(K[--I]0?P=P.charAt(0)+"."+P.slice(1)+A(T):H>1&&(P=P.charAt(0)+"."+P.slice(1)),P=P+(I<0?"e":"e+")+I):I<0?(P="0."+A(-I-1)+P,$&&(T=$-H)>0&&(P+=A(T))):I>=H?(P+=A(I+1-H),$&&(T=$-I-1)>0&&(P=P+"."+A(T))):((T=I+1)0&&(I+1===H&&(P+="."),P+=A(T))),N.s<0?"-"+P:P}function F(N,O){if(N.length>O)return N.length=O,!0}function D(N){var O,$,T;function I(P){var H=this;if(!(H instanceof I))return new I(P);if(H.constructor=I,P instanceof I){H.s=P.s,H.e=P.e,H.d=(P=P.d)?P.slice():P;return}if(typeof P=="number"){if(P*0!==0)throw Error(a+P);if(P>0)H.s=1;else if(P<0)P=-P,H.s=-1;else{H.s=0,H.e=0,H.d=[0];return}if(P===~~P&&P<1e7){H.e=0,H.d=[P];return}return _(H,P.toString())}else if(typeof P!="string")throw Error(a+P);if(P.charCodeAt(0)===45?(P=P.slice(1),H.s=-1):H.s=1,u.test(P))_(H,P);else throw Error(a+P)}if(I.prototype=y,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.clone=D,I.config=I.set=z,N===void 0&&(N={}),N)for(T=["precision","rounding","toExpNeg","toExpPos","LN10"],O=0;O=I[O+1]&&T<=I[O+2])this[$]=T;else throw Error(a+$+": "+T);if((T=N[$="LN10"])!==void 0)if(T==Math.LN10)this[$]=new this(T);else throw Error(a+$+": "+T);return this}r=D(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof Ew<"u"&&Ew.exports?Ew.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(SB)});var yF=po((v8e,XO)=>{"use strict";var Vce=Object.prototype.hasOwnProperty,sa="~";function tv(){}Object.create&&(tv.prototype=Object.create(null),new tv().__proto__||(sa=!1));function Gce(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function hF(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new Gce(r,n||e,o),i=sa?sa+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function JS(e,t){--e._eventsCount===0?e._events=new tv:delete e._events[t]}function Fo(){this._events=new tv,this._eventsCount=0}Fo.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Vce.call(r,n)&&t.push(sa?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};Fo.prototype.listeners=function(t){var r=sa?sa+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,a=n.length,i=new Array(a);o{"use strict";var a5=Symbol.for("react.transitional.element"),i5=Symbol.for("react.portal"),dk=Symbol.for("react.fragment"),fk=Symbol.for("react.strict_mode"),pk=Symbol.for("react.profiler"),mk=Symbol.for("react.consumer"),gk=Symbol.for("react.context"),hk=Symbol.for("react.forward_ref"),yk=Symbol.for("react.suspense"),vk=Symbol.for("react.suspense_list"),xk=Symbol.for("react.memo"),bk=Symbol.for("react.lazy"),Mfe=Symbol.for("react.view_transition"),Ife=Symbol.for("react.client.reference");function Ii(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case a5:switch(e=e.type,e){case dk:case pk:case fk:case yk:case vk:case Mfe:return e;default:switch(e=e&&e.$$typeof,e){case gk:case hk:case bk:case xk:return e;case mk:return e;default:return t}}case i5:return t}}}Lr.ContextConsumer=mk;Lr.ContextProvider=gk;Lr.Element=a5;Lr.ForwardRef=hk;Lr.Fragment=dk;Lr.Lazy=bk;Lr.Memo=xk;Lr.Portal=i5;Lr.Profiler=pk;Lr.StrictMode=fk;Lr.Suspense=yk;Lr.SuspenseList=vk;Lr.isContextConsumer=function(e){return Ii(e)===mk};Lr.isContextProvider=function(e){return Ii(e)===gk};Lr.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===a5};Lr.isForwardRef=function(e){return Ii(e)===hk};Lr.isFragment=function(e){return Ii(e)===dk};Lr.isLazy=function(e){return Ii(e)===bk};Lr.isMemo=function(e){return Ii(e)===xk};Lr.isPortal=function(e){return Ii(e)===i5};Lr.isProfiler=function(e){return Ii(e)===pk};Lr.isStrictMode=function(e){return Ii(e)===fk};Lr.isSuspense=function(e){return Ii(e)===yk};Lr.isSuspenseList=function(e){return Ii(e)===vk};Lr.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===dk||e===pk||e===fk||e===yk||e===vk||typeof e=="object"&&e!==null&&(e.$$typeof===bk||e.$$typeof===xk||e.$$typeof===gk||e.$$typeof===mk||e.$$typeof===hk||e.$$typeof===Ife||e.getModuleId!==void 0)};Lr.typeOf=Ii});var TU=po((bLe,NU)=>{"use strict";NU.exports=EU()});var oJ=V(Y()),aJ=V(G8());var gt=V(Y());var et=V(Y());var pr=V(Y()),Zc={github:{emoji:"\u{1F419}",label:"GitHub"},ruby:{emoji:"\u{1F48E}",label:"Ruby"},rails:{emoji:"\u{1F6E4}\uFE0F",label:"Rails"},aws:{emoji:"\u2601\uFE0F",label:"AWS"},gcp:{emoji:"\u{1F310}",label:"GCP"},python:{emoji:"\u{1F40D}",label:"Python"},typescript:{emoji:"\u{1F4D8}",label:"TypeScript"},docker:{emoji:"\u{1F433}",label:"Docker"},kubernetes:{emoji:"\u2638\uFE0F",label:"Kubernetes"}},Jc={terminal:{emoji:"\u{1F4BB}",label:"Terminal"},playwright:{emoji:"\u{1F3AD}",label:"Playwright"},filesystem:{emoji:"\u{1F4C1}",label:"Filesystem"},code:{emoji:"\u{1F468}\u200D\u{1F4BB}",label:"Code"},database:{emoji:"\u{1F5C4}\uFE0F",label:"Database"},slack:{emoji:"\u{1F4AC}",label:"Slack"},fetch:{emoji:"\u{1F310}",label:"Fetch"},search:{emoji:"\u{1F50D}",label:"Search"},edit:{emoji:"\u270F\uFE0F",label:"Edit"},translate:{emoji:"\u{1F30D}",label:"Translate"},memory:{emoji:"\u{1F9E0}",label:"Memory"},ui:{emoji:"\u{1F9E9}",label:"Generative UI"}},vp={terminal:{instructions:["github"],tools:["terminal","code"]},webDeveloper:{instructions:["typescript"],tools:["playwright","fetch"]},documentAnalysis:{instructions:["python"],tools:["database","search","code"]},writing:{instructions:["ruby"],tools:["edit","memory"]},translation:{instructions:["ruby","python","typescript"],tools:["translate","code"]},playwright:{instructions:["typescript"],tools:["playwright","fetch"]},research:{instructions:["github"],tools:["fetch","search","memory"]},imageAnalysis:{instructions:["python"],tools:["filesystem","code"]},computerUse:{instructions:["github"],tools:["terminal","playwright"]},productDesign:{instructions:["typescript"],tools:["playwright","code"]}};var lee=({id:e="mascot"})=>pr.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},pr.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},pr.default.createElement("g",{fillRule:"nonzero"},pr.default.createElement("path",{d:"M421,271.3 C422.733,265.1 423.667,244.633 423.8,209.9 C423.9,173.4 423.8,142.1 423.5,140.4 C423.1,137.9 412.5,126.8 373.1,87.2 C345.6,59.7 321.7,36.3 319.8,35.3 C316.7,33.6 312.5,33.5 250,33.5 C186.5,33.5 183.3,33.6 178.2,35.4 C173.5,37.2 168.3,42.1 125.2,85.3 C69.3,141.4 75.6,134.9 73.7,138.7 C72.3,141.3 72,147.2 71.8,178.6 C71.3,243.6 71.8,276 73.4,276 C74.067,276 99.6,304.854 150,362.563 L350.015,362.563 L421,271.3 Z",fill:"#EB5555",stroke:"#000000",strokeWidth:"12"})),pr.default.createElement("path",{d:"M216.5,202.5 C213.4,199.5 213.4,198.7 216.5,193.4 C223.2,182 248.2,176 264.5,181.9 C273,185 280.3,190.1 282.4,194.5 C284,197.9 284,198.3 282.5,200.6 C281.6,202 279.8,203.6 278.5,204.2 C276.4,205.1 275.4,204.7 270.1,200.8 C263,195.4 254.7,193.3 244.4,194.4 C236.1,195.3 234.3,196 228.6,200.9 C223.1,205.6 220,206.1 216.5,202.5 Z",fill:"#000000",fillRule:"nonzero"}),pr.default.createElement("path",{d:"M177.8,484.5 C169.1,482.1 162,475.2 157.7,465 C156.2,461.4 151.9,446.6 148.1,432 C144.3,417.4 140.7,404.3 140.1,402.8 L139,400 L94.8,400 C70.4,400 49.5,399.7 48.2,399.4 C45.1,398.5 42.7,393.8 43.9,390.8 C45.1,387.9 49.4,383.3 54,379.9 C68.7,369.2 86.3,364.8 120,363.4 C126.067,363.2 134.065,362.921 143.995,362.563 L350.015,362.563 C367.433,363.767 377.5,364.1 377.5,364.1 C411,365.2 433.1,371.5 446.2,383.8 C453.8,390.9 455.1,394.7 451.3,399 C451,399.3 429.6,399.7 403.7,400 L356.6,400.5 L353.3,412.5 C351.5,419.1 348.2,431.3 346.1,439.5 C339.9,463 336.7,470.5 329.4,477.5 C322.9,483.8 315.7,486.3 305.5,485.8 C298.1,485.4 296.1,484.7 280.5,477.8 C271.2,473.7 261.7,469.7 259.5,468.9 C250.9,466.1 238.1,467.9 224.9,473.8 C197.3,486.1 189.8,487.8 177.8,484.5 Z",stroke:"#000000",strokeWidth:"11",fill:"#000000",fillRule:"nonzero"}),pr.default.createElement("g",{transform:"translate(75.105, 196.182)"},pr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),pr.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),pr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),pr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),pr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),pr.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),pr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),pr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),pr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},pr.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},pr.default.createElement("path",{d:"M346.895,99.881 L335.287,108.67 L292.495,108.67 L211.805,108.67 C194.861,92.394 186.922,84.257 187.99,84.257 C188.99,84.257 187.689,77.518 187.99,71.118 C188.99,54.518 196.996,38.618 211.805,23.818 C219.711,15.918 222.813,13.518 230.118,10.018 C242.025,4.118 250.431,1.818 262.839,1.118 C274.147,0.518 285.354,2.218 295.561,6.018 C308.67,10.918 327.482,26.818 335.287,39.618 C342.092,50.918 346.895,65.818 346.895,76.018 C346.895,82.818 346.895,90.772 346.895,99.881 Z",stroke:"#000000",strokeWidth:"8",fill:"#000000",fillOpacity:"0.92"})),pr.default.createElement("path",{d:"M158.895,99.881 L147.295,108.67 L104.531,108.67 L23.895,108.67 C6.961,92.394 -0.972,84.257 0.095,84.257 C1.095,84.257 -0.205,77.518 0.095,71.118 C1.095,54.518 9.095,38.618 23.895,23.818 C31.795,15.918 34.895,13.518 42.195,10.018 C54.095,4.118 62.495,1.818 74.895,1.118 C86.195,0.518 97.395,2.218 107.595,6.018 C120.695,10.918 139.495,26.818 147.295,39.618 C154.095,50.918 158.895,65.818 158.895,76.018 C158.895,82.818 158.895,90.772 158.895,99.881 Z",stroke:"#000000",strokeWidth:"8",fill:"#000000",fillOpacity:"0.92"})),pr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},pr.default.createElement("path",{d:"M187.895,73.418 C187.895,60.818 195.095,43.418 205.495,30.818 C213.379,21.259 220.29,15.351 230.066,10.615 C233.275,8.66 236.386,7.08 239.229,6.018 C246.892,3.165 255.119,1.496 263.529,1.095 C267.063,0.859 270.58,0.912 274.131,1.261 C285.374,2.105 293.475,4.47 304.672,10.018 C311.734,13.402 314.868,15.757 322.213,23.049 L322.795,23.618 C326.306,27.085 329.397,30.586 332.082,34.15 L332.148,34.235 C341.116,45.994 346.03,58.349 346.8,71.118 C346.957,74.467 346.676,77.909 346.515,80.429 C346.693,80.646 346.917,80.701 347.195,80.618 C347.366,80.542 348.039,80.501 349.213,80.495 L349.775,80.495 C352.888,80.507 358.769,80.715 367.418,81.118 C374.646,86.469 378.26,91.703 378.26,96.818 C378.26,101.933 374.646,107.042 367.418,112.146 L15.403,112.146 L-20.38,113.348 C-27.807,110.322 -31.52,105.629 -31.52,99.27 C-31.52,92.911 -27.807,88.087 -20.38,84.798 C-13.63,84.605 -8.537,84.463 -5.101,84.373 C-5.115,84.296 -5.084,84.257 -5.01,84.257 C-4.01,84.257 -5.311,77.518 -5.01,71.118 C-4.01,54.518 3.996,38.618 18.805,23.818 C26.711,15.918 29.813,13.518 37.118,10.018 C49.025,4.118 57.431,1.818 69.839,1.118 C72.166,0.994 74.489,0.968 76.8,1.038 C76.165,1.058 75.53,1.084 74.895,1.118 C62.495,1.818 54.095,4.118 42.195,10.018 C34.895,13.518 31.795,15.918 23.895,23.818 C9.095,38.618 1.095,54.518 0.095,71.118 C-0.205,77.518 1.095,84.257 0.095,84.257 C-0.4,84.257 -2.131,84.296 -5.101,84.373 C-4.938,85.42 3.031,93.518 18.805,108.67 L142.287,108.67 L153.895,99.881 L153.895,76.018 C153.895,65.818 149.092,50.918 142.287,39.618 C134.482,26.818 115.67,10.918 102.561,6.018 C94.455,3 85.717,1.307 76.8,1.038 C87.451,0.716 97.968,2.432 107.595,6.018 C120.695,10.918 139.495,26.818 147.295,39.618 C154.095,50.918 158.895,65.818 158.895,76.018 L158.895,80.418 L164.995,80.418 C168.395,80.118 174.995,79.818 179.495,79.818 L187.895,79.818 L187.895,99.881 L199.502,108.67 L322.984,108.67 C339.929,92.394 347.867,84.257 346.8,84.257 C346.323,84.257 346.369,82.725 346.515,80.429 C346.051,79.868 345.895,78.223 345.895,75.118 C345.895,59.873 341.479,46.625 332.082,34.15 L331.696,33.647 C329.117,30.321 326.212,27.043 322.984,23.818 C322.722,23.556 322.465,23.299 322.213,23.049 C316.441,17.437 312.579,14.708 306.095,11.418 C294.424,5.583 284.144,2.245 274.131,1.261 C273.417,1.207 272.691,1.16 271.95,1.118 C269.132,0.968 266.321,0.962 263.529,1.095 C257.389,1.506 251.198,2.792 244.695,4.918 C239.073,6.731 234.301,8.563 230.066,10.615 C218.478,17.668 205.615,29.594 199.502,39.618 C192.698,50.917 187.895,65.817 187.895,76.017 L187.895,73.418 Z",stroke:"#000000",strokeWidth:"8",fill:"#000000"})),pr.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},pr.default.createElement("path",{d:"M12.837,35.288 C13.137,33.988 14.437,31.888 15.637,30.788 L17.837,28.788 L15.637,26.788 C14.437,25.688 13.137,23.588 12.837,22.288 C12.037,19.088 10.637,19.088 9.437,22.188 C8.937,23.488 7.537,25.588 6.237,26.788 C4.037,28.788 4.037,28.988 5.737,29.988 C6.837,30.488 8.237,32.488 9.037,34.388 C10.737,38.388 11.937,38.688 12.837,35.288 Z M29.237,33.088 C30.137,29.688 31.837,27.088 34.937,24.088 L39.337,19.888 L36.337,17.788 C33.437,15.588 28.437,7.288 28.437,4.288 C28.437,2.188 26.537,2.388 25.837,4.588 C23.937,10.388 21.637,14.388 18.337,17.188 L14.537,20.388 L17.337,22.088 C19.837,23.588 24.337,30.988 25.837,36.088 C26.737,39.088 27.937,37.988 29.237,33.088 Z M10.937,12.488 L13.037,9.288 L10.937,6.088 C8.837,2.788 7.437,1.888 7.437,3.988 C7.437,4.588 6.537,6.088 5.437,7.288 L3.437,9.488 L5.437,11.288 C6.537,12.288 7.437,13.688 7.437,14.488 C7.437,16.688 8.837,15.888 10.937,12.488 Z"}),pr.default.createElement("path",{d:"M203.437,36.388 C203.437,35.588 204.637,33.588 206.037,31.888 L208.637,28.788 L206.037,25.688 C204.637,23.988 203.437,21.988 203.437,21.188 C203.437,18.588 201.437,19.788 200.037,23.188 C199.237,25.088 197.837,27.088 196.737,27.688 C195.037,28.688 195.037,28.788 197.037,30.188 C198.237,30.988 199.737,33.088 200.437,34.788 C201.737,37.888 203.437,38.788 203.437,36.388 Z M220.837,32.588 C221.937,29.288 224.237,25.788 226.737,23.388 C229.737,20.488 230.537,19.288 229.437,18.988 C226.637,17.988 222.437,12.588 220.737,7.688 C219.737,4.988 218.737,2.788 218.337,2.788 C218.037,2.788 216.737,5.288 215.537,8.288 C214.337,11.288 211.737,15.088 209.837,16.688 C205.937,20.188 205.637,21.388 208.437,22.288 C210.937,23.088 214.737,28.788 216.437,34.088 C217.037,36.088 217.937,37.788 218.237,37.788 C218.637,37.788 219.837,35.388 220.837,32.588 Z M201.137,14.088 C201.437,13.088 202.437,11.488 203.337,10.488 C204.337,9.288 204.537,8.388 203.837,7.988 C203.237,7.588 202.237,6.288 201.537,5.088 C200.137,2.388 198.837,2.188 198.037,4.588 C197.737,5.488 196.937,6.988 196.337,7.888 C195.337,9.288 195.437,9.888 196.737,11.288 C197.637,12.188 198.437,13.588 198.437,14.388 C198.437,16.388 200.337,16.188 201.137,14.088 Z"}))));function yn({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return pr.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&pr.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=Zc[c];return d?pr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),pr.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 500 500",width:e,height:e,role:"img","aria-label":"Active Agent mascot"},pr.default.createElement("title",null,"ActiveAgent"),pr.default.createElement(lee,null)),n&&r.length>0&&pr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=Jc[c];return d?pr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var xa=V(Y());var Qi=V(Y()),Y8=(0,Qi.createContext)();function X8({children:e}){let[t,r]=(0,Qi.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,Qi.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,Qi.useEffect)(()=>{let o=window.matchMedia("(prefers-color-scheme: dark)"),a=i=>{localStorage.getItem("dashboard-theme")||r(i.matches)};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)},[]);let n=()=>r(!t);return Qi.default.createElement(Y8.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function lt(){let e=(0,Qi.useContext)(Y8);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function xp({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=lt(),[u,c]=xa.default.useState(!1),d={cardBg:l?"rgba(255,255,255,0.05)":"#ffffff",border:l?"rgba(255,255,255,0.1)":"#e5e7eb",borderHover:l?"rgba(255,255,255,0.2)":"#d1d5db",tileBg:l?"rgba(255,255,255,0.05)":"#f9fafb",textPrimary:l?"#f9fafb":"#111827",textSecondary:l?"#9ca3af":"#6b7280",textMuted:l?"#6b7280":"#9ca3af"},f=p=>p==="good"?l?"#4ade80":"#16a34a":p==="warn"?l?"#facc15":"#ca8a04":p==="bad"?l?"#f87171":"#dc2626":p==="muted"?d.textMuted:d.textPrimary;return xa.default.createElement("div",{"data-testid":"agent-card","data-agent-name":typeof e=="string"?e:void 0,onClick:i,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),role:i?"button":void 0,tabIndex:i?0:void 0,onKeyDown:p=>{i&&(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),i(p))},style:{background:d.cardBg,borderTop:`1px solid ${u?d.borderHover:d.border}`,borderRight:`1px solid ${u?d.borderHover:d.border}`,borderBottom:`1px solid ${u?d.borderHover:d.border}`,borderLeft:n?`4px solid ${n}`:`1px solid ${u?d.borderHover:d.border}`,borderRadius:"12px",padding:"16px",cursor:i?"pointer":"default",transition:"border-color 0.15s ease, box-shadow 0.15s ease",boxShadow:u&&i?"0 4px 16px rgba(0,0,0,0.08)":"none",display:"flex",flexDirection:"column",gap:"12px"}},xa.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},xa.default.createElement("div",{style:{minWidth:0}},xa.default.createElement("div",{style:{fontWeight:600,fontSize:"15px",color:u&&i?"#ef4444":d.textPrimary,transition:"color 0.15s ease",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e},e),t&&xa.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&xa.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&xa.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(p=>xa.default.createElement("div",{key:p.label,title:p.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},xa.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:f(p.tone)}},p.value),xa.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},p.label)))),a&&xa.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&xa.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function CE(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var Es="~ estimated from tokens \xD7 model rates",Cb=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),Q8=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),bp=e=>Cb(e)?`${Q8(Number(e)*100)}%`:"\u2014",Vn=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${Q8(n*100/r)}%`},ta=e=>bp(e),Ab=e=>`pass \u2265 ${bp(e)}`,Rr=(e,{estimated:t=!1}={})=>{if(!Cb(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},Z8=e=>Math.round(Number(e)||0).toLocaleString("en-US"),J8=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},uee=["pattern","default"],wp=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!Cb(r.input)||!Cb(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${Z8(e)} in \xD7 ${J8(r.input)} + ${Z8(t)} out \xD7 ${J8(r.output)} \xB7 ${n} rate${uee.includes(n)?" (fallback rate)":""}`};var cee=[{value:"recent",label:"Recently updated"},{value:"popular",label:"Most runs"},{value:"longest",label:"Longest average"},{value:"cost",label:"Highest cost"},{value:"tokens",label:"Most tokens"}];function AE({agents:e,meta:t,onSelect:r,onNew:n,onBrowseTemplates:o,onDuplicate:a,onDelete:i,onRefresh:s,sort:l="recent",onSortChange:u,isLoading:c}){let[d,f]=(0,et.useState)(""),[p,m]=(0,et.useState)(""),[y,b]=(0,et.useState)(""),h=e.filter(k=>{let _=!d||k.name.toLowerCase().includes(d.toLowerCase())||k.description?.toLowerCase().includes(d.toLowerCase()),C=!p||k.provider===p,E=!y||k.status===y;return _&&C&&E}),g=k=>{let _=new Date(k),E=new Date-_,j=Math.floor(E/(1e3*60*60*24));return j===0?"Today":j===1?"Yesterday":j<7?`${j} days ago`:_.toLocaleDateString()},v=k=>{switch(k){case"active":return"bg-green-100 text-green-700";case"draft":return"bg-yellow-100 text-yellow-700";case"archived":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},x=k=>k==null?"\u2014":k<1e3?`${Math.round(k)}ms`:`${(k/1e3).toFixed(1)}s`,S=k=>k==null?"\u2014":k>=1e6?`${(k/1e6).toFixed(1)}M`:k>=1e3?`${(k/1e3).toFixed(1)}k`:`${k}`,w=k=>k==null?"\u2014":k>0&&k<.01?"<$0.01":`$${k.toFixed(2)}`,A=k=>{if(!k)return"\u2014";let _=Math.floor((new Date-new Date(k))/(1e3*60*60*24));return _<=0?"Today":_<30?`${_}d ago`:new Date(k).toLocaleDateString()};return et.default.createElement("div",{className:"space-y-6"},et.default.createElement("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},et.default.createElement("div",{className:"flex-1 flex items-center space-x-4"},et.default.createElement("div",{className:"relative flex-1 max-w-md"},et.default.createElement("input",{type:"text",placeholder:"Search agents...",value:d,onChange:k=>f(k.target.value),className:"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),et.default.createElement("svg",{className:"absolute left-3 top-2.5 h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"}))),et.default.createElement("select",{value:p,onChange:k=>m(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},et.default.createElement("option",{value:""},"All Providers"),t.providers?.map(k=>et.default.createElement("option",{key:k,value:k},k.charAt(0).toUpperCase()+k.slice(1)))),et.default.createElement("select",{value:y,onChange:k=>b(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},et.default.createElement("option",{value:""},"All Status"),et.default.createElement("option",{value:"active"},"Active"),et.default.createElement("option",{value:"draft"},"Draft"),et.default.createElement("option",{value:"archived"},"Archived")),et.default.createElement("select",{value:l,onChange:k=>u?.(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500",title:"Rank agents by their scorecard"},cee.map(k=>et.default.createElement("option",{key:k.value,value:k.value},k.label)))),et.default.createElement("div",{className:"flex items-center space-x-3"},et.default.createElement("button",{onClick:s,disabled:c,className:"p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors"},et.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"}))),et.default.createElement("button",{onClick:o,className:"flex items-center space-x-2 px-4 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})),et.default.createElement("span",null,"Browse Templates")),et.default.createElement("button",{onClick:n,className:"flex items-center space-x-2 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),et.default.createElement("span",null,"New Agent")))),h.length>0?et.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(k=>{let _=k.stats||{},C=_.run_sources||[],E=C.length?`Counted from ${C.map(j=>j==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return et.default.createElement(xp,{key:k.id,name:k.name,subtitle:k.description||"No description",badge:et.default.createElement("span",{className:`px-2 py-0.5 text-xs font-medium rounded-full ${v(k.status)}`},k.status),onClick:()=>r(k),stats:[{label:`Runs ${_.window_days||30}d`,value:_.runs??0,title:E},{label:"Success",value:_.success_rate!=null?`${Math.round(_.success_rate)}%`:"\u2014",tone:CE(_.success_rate!=null?_.success_rate/100:null)},{label:"Avg time",value:x(_.avg_duration_ms)},{label:"Eval",title:_.eval_samples_evaluated?`${Vn(_.eval_samples_passed,_.eval_samples_evaluated)} passed over ${_.eval_runs??"the"} current evaluation${_.eval_runs===1?"":"s"}${_.eval_not_counted?` \xB7 ${_.eval_not_counted} stale or archived not counted`:""}`:_.eval_not_counted?`${_.eval_not_counted} evaluation${_.eval_not_counted===1?"":"s"} stale or archived, none counted`:"No evaluation counted yet",value:bp(_.eval_score),tone:CE(_.eval_score)},{label:"Tokens",value:S(_.tokens)},{label:"Cost",value:w(_.cost),title:"Estimated from token counts at each model's published rates",tone:_.cost==null?"muted":void 0}],footer:et.default.createElement(et.default.Fragment,null,et.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},et.default.createElement("span",{style:{padding:"2px 6px",borderRadius:"4px",background:"rgba(128,128,128,0.15)",whiteSpace:"nowrap",flexShrink:0}},k.provider),et.default.createElement("span",{title:k.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},k.model)),et.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${g(k.updatedAt||k.updated_at)}`},_.last_run_at?`Last run ${A(_.last_run_at)}`:`Updated ${g(k.updatedAt||k.updated_at)}`)),actions:et.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},et.default.createElement("button",{onClick:j=>{j.stopPropagation(),a(k.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),et.default.createElement("button",{onClick:j=>{j.stopPropagation(),i(k.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):et.default.createElement("div",{className:"text-center py-16"},et.default.createElement("div",{className:"inline-block mb-4"},et.default.createElement(yn,{size:100})),et.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},e.length===0?"No agents yet":"No matching agents"),et.default.createElement("p",{className:"text-gray-500 mb-6"},e.length===0?"Create your first AI agent to get started":"Try adjusting your search or filters"),e.length===0&&et.default.createElement("div",{className:"flex items-center justify-center space-x-4"},et.default.createElement("button",{onClick:o,className:"inline-flex items-center space-x-2 px-6 py-3 border-2 border-red-500 text-red-600 rounded-lg hover:bg-red-50 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})),et.default.createElement("span",null,"Browse Templates")),et.default.createElement("span",{className:"text-gray-400"},"or"),et.default.createElement("button",{onClick:n,className:"inline-flex items-center space-x-2 px-6 py-3 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},et.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},et.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),et.default.createElement("span",null,"Create From Scratch")))))}var xe=V(Y());var yo={chevronRight:">",chevronDown:"v",chevronUp:"^",arrow:"->",arrowLeft:"<-",pipe:"|",corner:"+",branch:"|-",success:"[+]",error:"[!]",warning:"[?]",info:"[i]",pending:"[ ]",active:"[*]",add:"+",remove:"-",edit:"*",view:"@",run:">",stop:"x",refresh:"~",trace:"->",span:"|",metric:"#",log:">",agent:"@",action:"#",time:":",cost:"$",tokens:"T",memory:"M",nav:{agents:"@",newAgent:"+",demo:">",traces:"->",metrics:"#",evaluations:"=",interactions:"<>",benchmarks:"%%",replay:"[>]",tools:"[]",mcp:"{}",docs:"?",github:"*"},spans:{root:">",prompt:"*",generate:"|>",llm:">>",thinking:"..",tool:"[]",response:"<|"}};var vt={mono:"'SF Mono', 'Fira Code', 'Consolas', monospace",sizes:{xs:"10px",sm:"11px",base:"13px",md:"14px",lg:"16px",xl:"20px",xxl:"24px"},weights:{normal:400,medium:500,semibold:600,bold:700}};function R8(e,{ttlMs:t,keep:r=()=>!0,now:n=Date.now}){let o=new Map,a=i=>{let s=o.get(i);if(s&&(s.expiresAt===null||n()(o.get(i)===l&&(r(u)?l.expiresAt=n()+t:o.delete(i)),u),u=>{throw o.get(i)===l&&o.delete(i),u}),o.set(i,l),l.promise};return a.clear=()=>o.clear(),a}var Sp={openai:["gpt-5.1","gpt-5","gpt-5-mini","gpt-5-nano"],anthropic:["claude-opus-5","claude-fable-5","claude-sonnet-5","claude-opus-4-8","claude-haiku-4-5"],ollama:["qwen3:8b","llama3.2","mistral","gemma3"],openrouter:["anthropic/claude-sonnet-4.5","openai/gpt-5.1","meta-llama/llama-3.3-70b-instruct"]},Eb=Object.keys(Sp),dee=300*1e3,e$=R8(fee,{ttlMs:dee,keep:e=>e!==null});async function t$(e){return await e$(e)??(Sp[e]||[])}function EE(){e$.clear()}async function fee(e){try{let t=await fetch(`/api/provider_models?provider=${encodeURIComponent(e)}`);if(t.ok){let r=await t.json();if(Array.isArray(r.models)&&r.models.length>0)return r.models}}catch{}return null}var Nb=V(Y());function Ou(e){let[t,r]=(0,Nb.useState)(Sp),n=e.join(",");return(0,Nb.useEffect)(()=>{let o=!1;return e.forEach(a=>{t$(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var Pu=V(Y());function gl({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,Pu.useId)();return Pu.default.createElement(Pu.default.Fragment,null,Pu.default.createElement("input",{...s,ref:i,type:"text",list:l,value:e||"",onChange:u=>r(u.target.value,u),placeholder:a,autoComplete:"off",spellCheck:!1,className:n,style:o}),Pu.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>Pu.default.createElement("option",{key:u,value:u}))))}var Tb=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],pee=["name","slug","description","provider","model"];function NE({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,xe.useState)(0),[s,l]=(0,xe.useState)({name:"",description:"",provider:"openai",model:Sp.openai[0],instructions:"",preset_type:"terminal",instruction_sets:["github"],tools:["terminal","code"],model_config:{temperature:.7},...o?{name:o.name,description:o.description||"",instructions:o.instructions,provider:o.provider,model:o.model,tools:o.tools||[],instruction_sets:[],mcp_servers:[]}:{}}),u=Ou([s.provider]),c=(0,xe.useMemo)(()=>{let v=o?.model&&o.provider;return!v||!u[v]?u:{...u,[v]:[...new Set([o.model,...u[v]])]}},[u]),d=c[s.provider];(0,xe.useEffect)(()=>{d?.length&&l(v=>d.includes(v.model)?v:{...v,model:d[0]})},[d]);let[f,p]=(0,xe.useState)(null),m=(v,x)=>{l(S=>({...S,[v]:x}))},y=(v,x)=>{l(S=>{let w=S[v]||[],A=w.includes(x)?w.filter(k=>k!==x):[...w,x];return{...S,[v]:A}})},b=v=>{if(m("preset_type",v),vp[v]){let x=vp[v];m("instruction_sets",[...x.instructions]),m("tools",[...x.tools])}},h=()=>{switch(a){case 0:return s.name.trim().length>=2;case 1:return!0;case 2:return!0;default:return!1}},g=async()=>{p(null);let v=await t(s);v&&(p(v),Object.keys(v.fieldErrors||{}).some(x=>pee.includes(x))&&i(0))};return xe.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&xe.default.createElement("div",{className:"mb-4 p-4 rounded-lg border border-red-200 bg-red-50 text-sm text-gray-700"},"Prepared by your workspace assistant. Review the instructions, model, and tools before creating this agent."),xe.default.createElement("div",{className:"mb-8"},xe.default.createElement("div",{className:"flex items-center justify-between"},Tb.map((v,x)=>xe.default.createElement("div",{key:v.id,className:"flex items-center"},xe.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${xxe.default.createElement("li",{key:v},v)))),xe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&xe.default.createElement(mee,{formData:s,updateField:m,providerModels:c,fieldErrors:f?.fieldErrors||{}}),a===1&&xe.default.createElement(gee,{formData:s,meta:e,toggleArrayItem:y,updateField:m,selectPreset:b}),a===2&&xe.default.createElement(hee,{formData:s})),xe.default.createElement("div",{className:"flex justify-between mt-6"},xe.default.createElement("button",{onClick:a===0?r:()=>i(a-1),className:"px-6 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 transition-colors"},a===0?"Cancel":"Back"),xe.default.createElement("button",{onClick:a===Tb.length-1?g:()=>i(a+1),disabled:!h()||n,className:`px-6 py-2 rounded-lg transition-colors ${h()&&!n?"bg-red-500 text-white hover:bg-red-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},a===Tb.length-1?"Create Agent":"Continue")))}function Ob({messages:e}){return e.length?xe.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function mee({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),xe.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),xe.default.createElement("div",{className:"space-y-4"},xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),xe.default.createElement("input",{type:"text",value:e.name,onChange:a=>t("name",a.target.value),placeholder:"My Awesome Agent",className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),xe.default.createElement(Ob,{messages:o("name","slug")})),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),xe.default.createElement("textarea",{value:e.description,onChange:a=>t("description",a.target.value),placeholder:"What does this agent do?",rows:3,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),xe.default.createElement(Ob,{messages:o("description")})),xe.default.createElement("div",{className:"grid grid-cols-2 gap-4"},xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),xe.default.createElement("select",{value:e.provider,onChange:a=>{t("provider",a.target.value),t("model",r[a.target.value][0])},className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},Object.keys(r).map(a=>xe.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),xe.default.createElement(Ob,{messages:o("provider")})),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),xe.default.createElement(gl,{value:e.model,models:r[e.provider],onChange:a=>t("model",a),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"}),xe.default.createElement(Ob,{messages:o("model")}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),xe.default.createElement("input",{type:"range",min:"0",max:"1",step:"0.1",value:e.model_config.temperature,onChange:a=>t("model_config",{...e.model_config,temperature:parseFloat(a.target.value)}),className:"w-full accent-red-500"}),xe.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},xe.default.createElement("span",null,"Precise"),xe.default.createElement("span",null,"Creative")))))}function gee({formData:e,meta:t,toggleArrayItem:r,updateField:n,selectPreset:o}){let a=Object.keys(vp),i=Object.keys(Zc),s=Object.keys(Jc);return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),xe.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),xe.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},xe.default.createElement("div",{className:"flex flex-col items-center"},xe.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(l=>{let u=Zc[l];return u?xe.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})),xe.default.createElement(yn,{size:120}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(l=>{let u=Jc[l];return u?xe.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},a.map(l=>xe.default.createElement("button",{key:l,onClick:()=>o(l),className:`px-4 py-2 rounded-lg border-2 text-sm transition-all ${e.preset_type===l?"border-red-500 bg-red-50 text-red-700":"border-gray-200 hover:border-gray-300 text-gray-600"}`},xe.default.createElement("span",{className:"capitalize"},l.replace(/([A-Z])/g," $1").trim()))))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"Instructions"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},i.map(l=>{let u=Zc[l];return xe.default.createElement("button",{key:l,onClick:()=>r("instruction_sets",l),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.instruction_sets.includes(l)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},xe.default.createElement("span",null,u.emoji),xe.default.createElement("span",null,u.label))}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"Tools"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"MCPs and integrations")),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(l=>{let u=Jc[l];return xe.default.createElement("button",{key:l,onClick:()=>r("tools",l),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.tools.includes(l)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},xe.default.createElement("span",null,u.emoji),xe.default.createElement("span",null,u.label))}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),xe.default.createElement("textarea",{value:e.instructions,onChange:l=>n("instructions",l.target.value),placeholder:"You are a helpful AI assistant that...",rows:4,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent font-mono text-sm"})))}function hee({formData:e}){return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),xe.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),xe.default.createElement("div",{className:"grid grid-cols-2 gap-8"},xe.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},xe.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(t=>{let r=Zc[t];return r?xe.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),xe.default.createElement(yn,{size:100}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(t=>{let r=Jc[t];return r?xe.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),xe.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),xe.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),xe.default.createElement("div",{className:"space-y-4"},xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),xe.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),xe.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(t=>{let r=Zc[t];return r?xe.default.createElement("span",{key:t,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},r.emoji," ",r.label):null}):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(t=>{let r=Jc[t];return r?xe.default.createElement("span",{key:t,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r.emoji," ",r.label):null}):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),xe.default.createElement("pre",{className:"mt-2 p-4 bg-gray-50 rounded-lg text-sm text-gray-700 whitespace-pre-wrap font-mono"},e.instructions)))}var ge=V(Y());var xi=e=>({cardBg:e?"#1f1f1f":"#ffffff",cardBorder:e?"#2a2a2a":"#e5e7eb",borderStrong:e?"rgba(255,255,255,0.2)":"#d1d5db",mutedBg:e?"rgba(255,255,255,0.06)":"#f3f4f6",innerBg:e?"rgba(255,255,255,0.04)":"#f9fafb",textPrimary:e?"#ffffff":"#111827",textCell:e?"rgba(255,255,255,0.75)":"#4b5563",textSecondary:e?"rgba(255,255,255,0.6)":"#6b7280",textMuted:e?"rgba(255,255,255,0.4)":"#9ca3af",inputBg:e?"rgba(255,255,255,0.06)":"#ffffff",inputBorder:e?"rgba(255,255,255,0.2)":"#d1d5db",trackBg:e?"rgba(255,255,255,0.1)":"#f3f4f6"}),Oo="#ef4444";var W=V(Y());var Pb=V(Y()),i$=V(Y());function r$(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t{var r=e.children,n=e.width,o=e.height,a=e.viewBox,i=e.className,s=e.style,l=e.title,u=e.desc,c=wee(e,bee),d=a||{width:n,height:o,x:0,y:0},f=ut("recharts-surface",i);return Pb.createElement("svg",PE({},tn(c),{className:f,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),Pb.createElement("title",null,l),Pb.createElement("desc",null,u),r)});var Mb=V(Y());var kee=["children","className"];function ME(){return ME=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=_ee(e,kee),a=ut("recharts-layer",n);return Mb.createElement("g",ME({className:a},tn(o),{ref:t}),r)});var Ja=V(Y()),aw=V(Y()),iz=V(qg());function Ib(e){return e==="__proto__"}var Aee=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function Db(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:Aee.test(e);default:return!1}}function kp(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function IE(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(IE).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function _p(e){if(Array.isArray(e))return e.map(kp);if(typeof e=="symbol")return[e];e=IE(e);let t=[],r=e.length;if(r===0)return t;let n=0,o="",a="",i=!1;for(e.charCodeAt(0)===46&&t.push("");n1&&arguments[1]!==void 0?arguments[1]:Nee,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function to(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n{var s=r[i-1];return typeof s=="string"?o+s+a:s!==void 0?o+bi(s)+a:o+a},"")}var jr=e=>e===0?0:e>0?1:-1,xo=e=>typeof e=="number"&&e!=+e,hl=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,Oe=e=>(typeof e=="number"||e instanceof Number)&&!xo(e),ra=e=>Oe(e)||typeof e=="string",Tee=0,yl=e=>{var t=++Tee;return"".concat(e||"").concat(t)},vn=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!Oe(t)&&typeof t!="string")return n;var a;if(hl(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return xo(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},DE=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):vo(n,t))===r)}var Yt=e=>e===null||typeof e>"u",vl=e=>Yt(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function ro(e){return e!=null}function na(){}function qh(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}function s$(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Ns(e){for(var t=1;t{var t=e.viewBox,r=e.position,n=e.offset,o=n===void 0?0:n,a=e.parentViewBox,i=e.clamp,s=qh(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,f=s.lowerWidth,p=l,m=l+(d-f)/2,y=(p+m)/2,b=(d+f)/2,h=p+d/2,g=c>=0?1:-1,v=g*o,x=g>0?"end":"start",S=g>0?"start":"end",w=d>=0?1:-1,A=w*o,k=w>0?"end":"start",_=w>0?"start":"end",C=a;if(r==="top"){var E={x:p+d/2,y:u-v,horizontalAnchor:"middle",verticalAnchor:x};return i&&C&&(E.height=Math.max(u-C.y,0),E.width=d),E}if(r==="bottom"){var j={x:m+f/2,y:u+c+v,horizontalAnchor:"middle",verticalAnchor:S};return i&&C&&(j.height=Math.max(C.y+C.height-(u+c),0),j.width=f),j}if(r==="left"){var F={x:y-A,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"};return i&&C&&(F.width=Math.max(F.x-C.x,0),F.height=c),F}if(r==="right"){var D={x:y+b+A,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"};return i&&C&&(D.width=Math.max(C.x+C.width-D.x,0),D.height=c),D}var z=i&&C?{width:b,height:c}:{};return r==="insideLeft"?Ns({x:y+A,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"},z):r==="insideRight"?Ns({x:y+b-A,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"},z):r==="insideTop"?Ns({x:p+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:S},z):r==="insideBottom"?Ns({x:m+f/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:x},z):r==="insideTopLeft"?Ns({x:p+A,y:u+v,horizontalAnchor:_,verticalAnchor:S},z):r==="insideTopRight"?Ns({x:p+d-A,y:u+v,horizontalAnchor:k,verticalAnchor:S},z):r==="insideBottomLeft"?Ns({x:m+A,y:u+c-v,horizontalAnchor:_,verticalAnchor:x},z):r==="insideBottomRight"?Ns({x:m+f-A,y:u+c-v,horizontalAnchor:k,verticalAnchor:x},z):r&&typeof r=="object"&&(Oe(r.x)||hl(r.x))&&(Oe(r.y)||hl(r.y))?Ns({x:l+vn(r.x,b),y:u+vn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},z):Ns({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},z)},Iee=["top","left","right","bottom"];function Vh(e){return e==null?!1:typeof e=="object"?!0:Iee.includes(e)}var Lb=V(Y()),jE=(0,Lb.createContext)(null),l$=()=>(0,Lb.useContext)(jE);var oa=V(Y());var E$=V(Y());function Sr(e){return function(){return e}}var $E=Math.cos;var Gh=Math.sin,bo=Math.sqrt;var Qc=Math.PI,n_e=Qc/2,Cp=2*Qc;var LE=Math.PI,zE=2*LE,Rc=1e-6,Dee=zE-Rc;function u$(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return u$;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oRc)if(!(Math.abs(d*l-u*c)>Rc)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-i,m=o-s,y=l*l+u*u,b=p*p+m*m,h=Math.sqrt(y),g=Math.sqrt(f),v=a*Math.tan((LE-Math.acos((y+f-b)/(2*h*g)))/2),x=v/g,S=v/h;Math.abs(x-1)>Rc&&this._append`L${t+x*c},${r+x*d}`,this._append`A${a},${a},0,0,${+(d*p>c*m)},${this._x1=t+S*l},${this._y1=r+S*u}`}}arc(t,r,n,o,a,i){if(t=+t,r=+r,n=+n,i=!!i,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),l=n*Math.sin(o),u=t+s,c=r+l,d=1^i,f=i?o-a:a-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Rc||Math.abs(this._y1-c)>Rc)&&this._append`L${u},${c}`,n&&(f<0&&(f=f%zE+zE),f>Dee?this._append`A${n},${n},0,1,${d},${t-s},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:f>Rc&&this._append`A${n},${n},0,${+(f>=LE)},${d},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function c$(){return new ed}c$.prototype=ed.prototype;function Ap(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new ed(t)}var d_e=Array.prototype.slice;function Ep(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function d$(e){this._context=e}d$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Mu(e){return new d$(e)}function zb(e){return e[0]}function Bb(e){return e[1]}function Yh(e,t){var r=Sr(!0),n=null,o=Mu,a=null,i=Ap(s);e=typeof e=="function"?e:e===void 0?zb:Sr(e),t=typeof t=="function"?t:t===void 0?Bb:Sr(t);function s(l){var u,c=(l=Ep(l)).length,d,f=!1,p;for(n==null&&(a=o(p=i())),u=0;u<=c;++u)!(u=p;--m)s.point(v[m],x[m]);s.lineEnd(),s.areaEnd()}h&&(v[f]=+e(b,f,d),x[f]=+t(b,f,d),s.point(n?+n(b,f,d):v[f],r?+r(b,f,d):x[f]))}if(g)return s=null,g+""||null}function c(){return Yh().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Sr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Sr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Sr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Sr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Sr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Sr(+d),u):r},u.lineX0=u.lineY0=function(){return c().x(e).y(t)},u.lineY1=function(){return c().x(e).y(r)},u.lineX1=function(){return c().x(n).y(t)},u.defined=function(d){return arguments.length?(o=typeof d=="function"?d:Sr(!!d),u):o},u.curve=function(d){return arguments.length?(i=d,a!=null&&(s=i(a)),u):i},u.context=function(d){return arguments.length?(d==null?a=s=null:s=i(a=d),u):a},u}var Fb=class{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};function BE(e){return new Fb(e,!0)}function FE(e){return new Fb(e,!1)}var Tp={draw(e,t){let r=bo(t/Qc);e.moveTo(r,0),e.arc(0,0,r,0,Cp)}};var UE={draw(e,t){let r=bo(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}};var f$=bo(1/3),$ee=f$*2,WE={draw(e,t){let r=bo(t/$ee),n=r*f$;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var HE={draw(e,t){let r=bo(t),n=-r/2;e.rect(n,n,r,r)}};var Lee=.8908130915292852,p$=Gh(Qc/10)/Gh(7*Qc/10),zee=Gh(Cp/10)*p$,Bee=-$E(Cp/10)*p$,KE={draw(e,t){let r=bo(t*Lee),n=zee*r,o=Bee*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Cp*a/5,s=$E(i),l=Gh(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var qE=bo(3),VE={draw(e,t){let r=-bo(t/(qE*3));e.moveTo(0,r*2),e.lineTo(-qE*r,-r),e.lineTo(qE*r,-r),e.closePath()}};var wi=-.5,Si=bo(3)/2,GE=1/bo(12),Fee=(GE/2+1)*3,YE={draw(e,t){let r=bo(t/Fee),n=r/2,o=r*GE,a=n,i=r*GE+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(wi*n-Si*o,Si*n+wi*o),e.lineTo(wi*a-Si*i,Si*a+wi*i),e.lineTo(wi*s-Si*l,Si*s+wi*l),e.lineTo(wi*n+Si*o,wi*o-Si*n),e.lineTo(wi*a+Si*i,wi*i-Si*a),e.lineTo(wi*s+Si*l,wi*l-Si*s),e.closePath()}};function Ub(e,t){let r=null,n=Ap(o);e=typeof e=="function"?e:Sr(e||Tp),t=typeof t=="function"?t:Sr(t===void 0?64:+t);function o(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return o.type=function(a){return arguments.length?(e=typeof a=="function"?a:Sr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:Sr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function Op(){}function Pp(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function m$(e){this._context=e}m$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Pp(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Pp(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function XE(e){return new m$(e)}function g$(e){this._context=e}g$.prototype={areaStart:Op,areaEnd:Op,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Pp(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function ZE(e){return new g$(e)}function h$(e){this._context=e}h$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Pp(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function JE(e){return new h$(e)}function y$(e){this._context=e}y$.prototype={areaStart:Op,areaEnd:Op,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function QE(e){return new y$(e)}function v$(e){return e<0?-1:1}function x$(e,t,r){var n=e._x1-e._x0,o=t-e._x1,a=(e._y1-e._y0)/(n||o<0&&-0),i=(r-e._y1)/(o||n<0&&-0),s=(a*o+i*n)/(n+o);return(v$(a)+v$(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function b$(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function RE(e,t,r){var n=e._x0,o=e._y0,a=e._x1,i=e._y1,s=(a-n)/3;e._context.bezierCurveTo(n+s,o+s*t,a-s,i-s*r,a,i)}function Wb(e){this._context=e}Wb.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:RE(this,this._t0,b$(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,RE(this,b$(this,r=x$(this,e,t)),r);break;default:RE(this,this._t0,r=x$(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function w$(e){this._context=new S$(e)}(w$.prototype=Object.create(Wb.prototype)).point=function(e,t){Wb.prototype.point.call(this,t,e)};function S$(e){this._context=e}S$.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,a){this._context.bezierCurveTo(t,e,n,r,a,o)}};function eN(e){return new Wb(e)}function tN(e){return new w$(e)}function _$(e){this._context=e}_$.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=k$(e),o=k$(t),a=0,i=1;i=0;--t)o[t]=(i[t]-o[t+1])/a[t];for(a[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function nN(e){return new Hb(e,.5)}function oN(e){return new Hb(e,0)}function aN(e){return new Hb(e,1)}function Va(e,t){if((i=e.length)>1)for(var r=1,n,o,a=e[t[0]],i,s=a.length;r=0;)r[t]=t;return r}function Uee(e,t){return e[t]}function Wee(e){let t=[];return t.key=e,t}function iN(){var e=Sr([]),t=Mp,r=Va,n=Uee;function o(a){var i=Array.from(e.apply(this,arguments),Wee),s,l=i.length,u=-1,c;for(let d of a)for(s=0,++u;s0){for(var r,n,o=0,a=e[0].length,i;o0){for(var r=0,n=e[t[0]],o,a=n.length;r0)||!((a=(o=e[t[0]]).length)>0))){for(var r=0,n=1,o,a,i;n{var t="symbol".concat(vl(e));return N$[t]||Tp},Qee=(e,t,r)=>{if(t==="area")return e;switch(r){case"cross":return 5*e*e/9;case"diamond":return .5*e*e/Math.sqrt(3);case"square":return e*e;case"star":{var n=18*Zee;return 1.25*e*e*(Math.tan(n)-Math.tan(n*2)*Math.tan(n)**2)}case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},Ree=(e,t)=>{N$["symbol".concat(vl(e))]=t},dN=e=>{var t=e.type,r=t===void 0?"circle":t,n=e.size,o=n===void 0?64:n,a=e.sizeType,i=a===void 0?"area":a,s=Yee(e,Kee),l=A$(A$({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=Jee(u),b=Ub().type(y).size(Qee(o,i,u)),h=b();if(h!==null)return h},d=l.className,f=l.cx,p=l.cy,m=tn(l);return Oe(f)&&Oe(p)&&Oe(o)?E$.createElement("path",cN({},m,{className:ut("recharts-symbols",d),transform:"translate(".concat(f,", ").concat(p,")"),d:c()})):null};dN.registerSymbol=Ree;var T$=V(Y());var Kb=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Ip=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,T$.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{Hh(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},ete=(e,t,r)=>n=>(e(t,r,n),null),xl=(e,t,r)=>{if(e===null||typeof e!="object"&&typeof e!="function")return null;var n=null;return Object.keys(e).forEach(o=>{var a=e[o];Hh(o)&&typeof a=="function"&&(n||(n={}),n[o]=ete(a,t,r))}),n};function O$(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function tte(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function qb(){return qb=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var p,m,y=d.formatter||o,x=lt({"recharts-legend-item":!0,["legend-item-".concat(f)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?h$({},s):{};h.color=d.inactive?a:h.color||d.color,(p=h.whiteSpace)!==null&&p!==void 0||(h.whiteSpace="normal"),(m=h.overflowWrap)!==null&&m!==void 0||(h.overflowWrap="break-word");var g=y?y(d.value,d,f):d.value;return Qo.createElement("li",jb({className:x,style:u,key:"legend-item-".concat(f)},dl(e,d,f)),Qo.createElement(Dh,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},Qo.createElement(Iee,{data:d,iconType:i,inactiveColor:a})),Qo.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var y$=e=>{var t=Ut(e,Mee),r=t.payload,n=t.layout,o=t.align;if(!r||!r.length)return null;var a={padding:0,margin:0,textAlign:n==="horizontal"?o:"left"};return Qo.createElement("ul",{className:"recharts-default-legend",style:a},Qo.createElement(jee,jb({},t,{payload:r})))};function v$(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function fl(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Lb="[object RegExp]",kp="[object String]",_p="[object Number]",Ap="[object Boolean]",zb="[object Arguments]",Bb="[object Symbol]",Fb="[object Date]",Ub="[object Map]",Wb="[object Set]",Hb="[object Array]",S$="[object Function]",Kb="[object ArrayBuffer]",Cp="[object Object]",k$="[object Error]",qb="[object DataView]",Vb="[object Uint8Array]",Gb="[object Uint8ClampedArray]",Yb="[object Uint16Array]",Xb="[object Uint32Array]",_$="[object BigUint64Array]",Zb="[object Int8Array]",Jb="[object Int16Array]",Qb="[object Int32Array]",A$="[object BigInt64Array]",Rb="[object Float32Array]",e1="[object Float64Array]";var eN=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function Fh(e){return typeof eN.Buffer<"u"&&eN.Buffer.isBuffer(e)}function C$(e,t){return Au(e,void 0,e,new Map,t)}function Au(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(zh(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){let i=new Array(e.length);n.set(e,i);for(let s=0;s{}):tN(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:tN(o,a,n,u,!1)},new Map,!0)}function tN(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return Lee(e,t,r,n);case"function":return Object.keys(t).length>0?tN(e,{...t},r,n,o):Cu(e,t);default:return t1(e)?o?typeof t=="string"?t==="":!0:Cu(e,t):Cu(e,t)}}function Lee(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return N$(e,t,r,n);if(t instanceof Map)return zee(e,t,r,n);if(t instanceof Set)return Bee(e,t,r,n);let o=Object.keys(t);if(e==null||zh(e))return o.length===0;if(o.length===0)return!0;if(n?.has(t))return n.get(t)===e;n?.set(t,e);try{for(let a=0;a{})}function T$(e){return e=E$(e),t=>r1(t,e)}function O$(e,t){return C$(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(fl(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),yi(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case _p:case kp:case Ap:{let s=new e.constructor(e?.valueOf());return yi(s,e),s}case zb:{let s={};return yi(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function P$(e){return O$(e)}var Fee=/^(?:0|[1-9]\d*)$/;function n1(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function o1(e){return e!=null&&typeof e!="function"&&$$(e.length)}function L$(e){return typeof e=="object"&&e!==null}function z$(e){return L$(e)&&o1(e)}function a1(e,t=$b){return z$(e)?v$(Array.from(e),x$(j$(t),1)):[]}function i1(e,t,r){return t===!0?a1(e,r):typeof t=="function"?a1(e,t):e}var Y$=G(V$()),Wh=G(Y());var G$=G(Y()),Uh=(0,G$.createContext)(null);var ote=e=>e,xt=()=>{var e=(0,Wh.useContext)(Uh);return e?e.store.dispatch:ote},l1=()=>{},ate=()=>l1,ite=(e,t)=>e===t;function Pe(e){var t=(0,Wh.useContext)(Uh),r=(0,Wh.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:l1,[t,e]);return(0,Y$.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:ate,t?t.store.getState:l1,t?t.store.getState:l1,r,ite)}function ste(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function lte(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(r=>typeof r=="function")){let r=e.map(n=>typeof n=="function"?`function ${n.name||"unnamed"}()`:typeof n).join(", ");throw new TypeError(`${t}[${r}]`)}}var X$=e=>Array.isArray(e)?e:[e];function ute(e){let t=Array.isArray(e[0])?e[0]:e;return lte(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function cte(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?dte:WeakRef,J$=fte(),pte=0,Z$=1;function u1(){return{s:pte,v:void 0,o:null,p:null}}function mte(e){return e instanceof J$?e.deref():e}function Q$(e,t={}){let r=u1(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,f=l;d{r=u1(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function gte(e,...t){let r=typeof e=="function"?{memoize:e,memoizeOptions:t}:e,n=(...o)=>{let a=0,i=0,s,l={},u=o.pop();typeof u=="object"&&(l=u,u=o.pop()),ste(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:f=[],argsMemoize:p=Q$,argsMemoizeOptions:m=[]}=c,y=X$(f),x=X$(m),h=ute(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,b=p(function(){i++;let w=cte(h,arguments);return s=g.apply(null,w),s},...x);return Object.assign(b,{resultFunc:u,memoizedResultFunc:g,dependencies:h,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>s,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:d,argsMemoize:p})};return Object.assign(n,{withTypes:()=>n}),n}var ee=gte(Q$);function R$(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=eL(e),o=eL(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function c1(e){return typeof e=="symbol"||e instanceof Symbol}var hte=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,yte=/^\w*$/;function rL(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||c1(e)?!0:typeof e=="string"&&(yte.test(e)||!hte.test(e))||t!=null&&Object.hasOwn(t,e)}function nL(e,t,r,n){if(e==null)return[];r=n?void 0:r,Array.isArray(e)||(e=Object.values(e)),Array.isArray(t)||(t=t==null?[null]:[t]),t.length===0&&(t=[null]),Array.isArray(r)||(r=r==null?[]:[r]),r=r.map(s=>String(s));let o=(s,l)=>{let u=s;for(let c=0;cl==null||s==null?l:typeof s=="object"&&"key"in s?Object.hasOwn(l,s.key)?l[s.key]:o(l,s.path):typeof s=="function"?s(l):Array.isArray(s)?o(l,s):typeof l=="object"?l[s]:l,i=t.map(s=>(Array.isArray(s)&&s.length===1&&(s=s[0]),s==null||typeof s=="function"||Array.isArray(s)||rL(s)?s:{key:s,path:pp(s)}));return e.map(s=>({original:s,criteria:i.map(l=>a(l,s))})).slice().sort((s,l)=>{for(let u=0;us.original)}function pl(e,...t){let r=t.length;return r>1&&Hh(e,t[0],t[1])?t=[]:r>2&&Hh(t[0],t[1],t[2])&&(t=[t[0]]),nL(e,R$(t),["asc"])}var oN=e=>e.legend.settings,oL=e=>e.legend.size,vte=e=>e.legend.payload,aL=ee([vte,oN],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?pl(n,r):n});function iL(){return Pe(aL)}var ml=G(Y());function xte(e,t){return kte(e)||Ste(e,t)||wte(e,t)||bte()}function bte(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function wte(e,t){if(e){if(typeof e=="string")return sL(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?sL(e,t):void 0}}function sL(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rd1||Math.abs(e.left-t.left)>d1||Math.abs(e.top-t.top)>d1||Math.abs(e.width-t.width)>d1}function uL(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function f1(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,ml.useState)({height:0,left:0,top:0,width:0}),r=xte(t,2),n=r[0],o=r[1],a=(0,ml.useRef)(null),i=(0,ml.useRef)(n);i.current=n;var s=(0,ml.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=uL(l);if(lL(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=uL(l);lL(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,ml.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var A6=G(Y());function Ao(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var _te=typeof Symbol=="function"&&Symbol.observable||"@@observable",cL=_te,aN=()=>Math.random().toString(36).substring(7).split("").join("."),Ate={INIT:`@@redux/INIT${aN()}`,REPLACE:`@@redux/REPLACE${aN()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${aN()}`},p1=Ate;function m1(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function iN(e,t,r){if(typeof e!="function")throw new Error(Ao(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Ao(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(Ao(1));return r(iN)(e,t)}let n=e,o=t,a=new Map,i=a,s=0,l=!1;function u(){i===a&&(i=new Map,a.forEach((x,h)=>{i.set(h,x)}))}function c(){if(l)throw new Error(Ao(3));return o}function d(x){if(typeof x!="function")throw new Error(Ao(4));if(l)throw new Error(Ao(5));let h=!0;u();let g=s++;return i.set(g,x),function(){if(h){if(l)throw new Error(Ao(6));h=!1,u(),i.delete(g),a=null}}}function f(x){if(!m1(x))throw new Error(Ao(7));if(typeof x.type>"u")throw new Error(Ao(8));if(typeof x.type!="string")throw new Error(Ao(17));if(l)throw new Error(Ao(9));try{l=!0,o=n(o,x)}finally{l=!1}return(a=i).forEach(g=>{g()}),x}function p(x){if(typeof x!="function")throw new Error(Ao(10));n=x,f({type:p1.REPLACE})}function m(){let x=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(Ao(11));function g(){let b=h;b.next&&b.next(c())}return g(),{unsubscribe:x(g)}},[cL](){return this}}}return f({type:p1.INIT}),{dispatch:f,subscribe:d,getState:c,replaceReducer:p,[cL]:m}}function Cte(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:p1.INIT})>"u")throw new Error(Ao(12));if(typeof r(void 0,{type:p1.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Ao(13))})}function g1(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let x=l&&l.type;throw new Error(Ao(14))}c[f]=y,u=u||y!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function Kh(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function dL(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(Ao(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=Kh(...s)(o.dispatch),{...o,dispatch:a}}}function sN(e){return m1(e)&&"type"in e&&typeof e.type=="string"}var bL=Symbol.for("immer-nothing"),fL=Symbol.for("immer-draftable"),Do=Symbol.for("immer-state");function qi(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Fa=Object,Tp=Fa.getPrototypeOf,x1="constructor",A1="prototype",dN="configurable",b1="enumerable",y1="writable",qh="value",ws=e=>!!e&&!!e[Do];function Ua(e){return e?wL(e)||E1(e)||!!e[fL]||!!e[x1]?.[fL]||N1(e)||T1(e):!1}var Ete=Fa[A1][x1].toString(),pL=new WeakMap;function wL(e){if(!e||!xN(e))return!1;let t=Tp(e);if(t===null||t===Fa[A1])return!0;let r=Fa.hasOwnProperty.call(t,x1)&&t[x1];if(r===Object)return!0;if(!Np(r))return!1;let n=pL.get(r);return n===void 0&&(n=Function.toString.call(r),pL.set(r,n)),n===Ete}function C1(e,t,r=!0){Yh(e)===0?(r?Reflect.ownKeys(e):Fa.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function Yh(e){let t=e[Do];return t?t.type_:E1(e)?1:N1(e)?2:T1(e)?3:0}var lN=(e,t,r=Yh(e))=>r===2?e.has(t):Fa[A1].hasOwnProperty.call(e,t),fN=(e,t,r=Yh(e))=>r===2?e.get(t):e[t],w1=(e,t,r,n=Yh(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function Nte(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var E1=Array.isArray,N1=e=>e instanceof Map,T1=e=>e instanceof Set,xN=e=>typeof e=="object",Np=e=>typeof e=="function",uN=e=>typeof e=="boolean";function Tte(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var gl=e=>e.copy_||e.base_;var bN=e=>e.modified_?e.copy_:e.base_;function pN(e,t){if(N1(e))return new Map(e);if(T1(e))return new Set(e);if(E1(e))return Array[A1].slice.call(e);let r=wL(e);if(t===!0||t==="class_only"&&!r){let n=Fa.getOwnPropertyDescriptors(e);delete n[Do];let o=Reflect.ownKeys(n);for(let a=0;a1&&Fa.defineProperties(e,{set:h1,add:h1,clear:h1,delete:h1}),Fa.freeze(e),t&&C1(e,(r,n)=>{wN(n,!0)},!1)),e}function Ote(){qi(2)}var h1={[qh]:Ote};function O1(e){return e===null||!xN(e)?!0:Fa.isFrozen(e)}var S1="MapSet",mN="Patches",mL="ArrayMethods",SL={};function Gc(e){let t=SL[e];return t||qi(0,e),t}var gL=e=>!!SL[e];var Vh,kL=()=>Vh,Pte=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:gL(S1)?Gc(S1):void 0,arrayMethodsPlugin_:gL(mL)?Gc(mL):void 0});function hL(e,t){t&&(e.patchPlugin_=Gc(mN),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function gN(e){hN(e),e.drafts_.forEach(Mte),e.drafts_=null}function hN(e){e===Vh&&(Vh=e.parent_)}var yL=e=>Vh=Pte(Vh,e);function Mte(e){let t=e[Do];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function vL(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[Do].modified_&&(gN(t),qi(4)),Ua(e)&&(e=xL(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[Do].base_,e,t)}else e=xL(t,r);return Dte(t,e,!0),gN(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==bL?e:void 0}function xL(e,t){if(O1(t))return t;let r=t[Do];if(!r)return k1(t,e.handledSet_,e);if(!P1(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){let{callbacks_:n}=r;if(n)for(;n.length>0;)n.pop()(e);CL(r,e)}return r.copy_}function Dte(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&wN(t,r)}function _L(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var P1=(e,t)=>e.scope_===t,Ite=[];function AL(e,t,r,n){let o=gl(e),a=e.type_;if(n!==void 0&&fN(o,n,a)===t){w1(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;C1(o,(l,u)=>{if(ws(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??Ite;for(let s of i)w1(o,s,r,a)}function jte(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!P1(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=bN(a);AL(e,a.draft_??a,i,r),CL(a,o)})}function CL(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let o=n.getPath(e);o&&n.generatePatches_(e,o,t)}_L(e)}}function $te(e,t,r){let{scope_:n}=e;if(ws(r)){let o=r[Do];P1(o,n)&&o.callbacks_.push(function(){v1(e);let i=bN(o);AL(e,r,i,t)})}else Ua(r)&&e.callbacks_.push(function(){let a=gl(e);e.type_===3?a.has(r)&&k1(r,n.handledSet_,n):fN(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&k1(fN(e.copy_,t,e.type_),n.handledSet_,n)})}function k1(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||ws(e)||t.has(e)||!Ua(e)||O1(e)||(t.add(e),C1(e,(n,o)=>{if(ws(o)){let a=o[Do];if(P1(a,r)){let i=bN(a);w1(e,n,i,e.type_),_L(a)}}else Ua(o)&&k1(o,t,r)})),e}function Lte(e,t){let r=E1(e),n={type_:r?1:0,scope_:t?t.scope_:kL(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},o=n,a=_1;r&&(o=[n],a=Gh);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var _1={get(e,t){if(t===Do)return e;let r=e.scope_.arrayMethodsPlugin_,n=e.type_===1&&typeof t=="string";if(n&&r?.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);let o=gl(e);if(!lN(o,t,e.type_))return Bte(e,o,t);let a=o[t];if(e.finalized_||!Ua(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&Tte(t))return a;if(a===cN(e.base_,t)||zte(e,t,a)){v1(e);let i=e.type_===1?+t:t,s=vN(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in gl(e)},ownKeys(e){return Reflect.ownKeys(gl(e))},set(e,t,r){let n=EL(gl(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=cN(gl(e),t),a=o?.[Do];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(Nte(r,o)&&(r!==void 0||lN(e.base_,t,e.type_)))return!0;v1(e),yN(e)}return e.copy_[t]===r&&(r!==void 0||lN(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),$te(e,t,r)),!0},deleteProperty(e,t){return v1(e),cN(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),yN(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=gl(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[y1]:!0,[dN]:e.type_!==1||t!=="length",[b1]:n[b1],[qh]:r[t]}},defineProperty(){qi(11)},getPrototypeOf(e){return Tp(e.base_)},setPrototypeOf(){qi(12)}},Gh={};for(let e in _1){let t=_1[e];Gh[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}Gh.deleteProperty=function(e,t){return Gh.set.call(this,e,t,void 0)};Gh.set=function(e,t,r){return _1.set.call(this,e[0],t,r,e[0])};function cN(e,t){let r=e[Do];return(r?gl(r):e)[t]}function zte(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Ua(r)||r[Do]?!1:e.baseRefs_.has(r)}function Bte(e,t,r){let n=EL(t,r);return n?qh in n?n[qh]:n.get?.call(e.draft_):void 0}function EL(e,t){if(!(t in e))return;let r=Tp(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Tp(r)}}function yN(e){e.modified_||(e.modified_=!0,e.parent_&&yN(e.parent_))}function v1(e){e.copy_||(e.assigned_=new Map,e.copy_=pN(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Fte=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(Np(t)&&!Np(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}Np(r)||qi(6),n!==void 0&&!Np(n)&&qi(7);let o;if(Ua(t)){let a=yL(this),i=vN(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?gN(a):hN(a)}return hL(a,n),vL(o,a)}else if(!t||!xN(t)){if(o=r(t),o===void 0&&(o=t),o===bL&&(o=void 0),this.autoFreeze_&&wN(o,!0),n){let a=[],i=[];Gc(mN).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else qi(1,t)},this.produceWithPatches=(t,r)=>{if(Np(t))return(i,...s)=>this.produceWithPatches(i,l=>t(l,...s));let n,o;return[this.produce(t,r,(i,s)=>{n=i,o=s}),n,o]},uN(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),uN(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),uN(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Ua(e)||qi(8),ws(e)&&(e=Co(e));let t=yL(this),r=vN(t,e,void 0);return r[Do].isManual_=!0,hN(t),r}finishDraft(e,t){let r=e&&e[Do];(!r||!r.isManual_)&&qi(9);let{scope_:n}=r;return hL(n,t),vL(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){let o=t[r];if(o.path.length===0&&o.op==="replace"){e=o.value;break}}r>-1&&(t=t.slice(r+1));let n=Gc(mN).applyPatches_;return ws(e)?n(e,t):this.produce(e,o=>n(o,t))}};function vN(e,t,r,n){let[o,a]=N1(t)?Gc(S1).proxyMap_(t,r):T1(t)?Gc(S1).proxySet_(t,r):Lte(t,r);return(r?.scope_??kL()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?jte(r,a,n):a.callbacks_.push(function(l){l.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:u}=l;a.modified_&&u&&u.generatePatches_(a,[],l)}),o}function Co(e){return ws(e)||qi(10,e),NL(e)}function NL(e){if(!Ua(e)||O1(e))return e;let t=e[Do],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=pN(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=pN(e,!0);return C1(r,(o,a)=>{w1(r,o,NL(a))},n),t&&(t.finalized_=!1),r}var Ute=new Fte,SN=Ute.produce;var Dt=e=>e;function TL(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var OL=TL(),PL=TL;var Wte=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Kh:Kh.apply(null,arguments)},OCe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},Hte=e=>e&&typeof e.match=="function";function Wn(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(Wa(0));return{type:e,payload:o.payload,..."meta"in o&&{meta:o.meta},..."error"in o&&{error:o.error}}}return{type:e,payload:n[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=n=>sN(n)&&n.type===e,r}var BL=class Xh extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,Xh.prototype)}static get[Symbol.species](){return Xh}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new Xh(...t[0].concat(this)):new Xh(...t.concat(this))}};function ML(e){return Ua(e)?SN(e,()=>{}):e}function M1(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function Kte(e){return typeof e=="boolean"}var qte=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new BL;return r&&(Kte(r)?i.push(OL):i.push(PL(r.extraArgument))),i},FL="RTK_autoBatch",br=()=>e=>({payload:e,meta:{[FL]:!0}}),DL=e=>t=>{setTimeout(t,e)},Vte=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},CN=(e={type:"raf"})=>t=>(...r)=>{let n=t(...r),o=!0,a=!1,i=!1,s=new Set,l=e.type==="tick"?queueMicrotask:e.type==="raf"?typeof window<"u"&&window.requestAnimationFrame?Vte(window.requestAnimationFrame,100):DL(10):e.type==="callback"?e.queueNotification:DL(e.timeout),u=()=>{i=!1,a&&(a=!1,s.forEach(c=>c()))};return Object.assign({},n,{subscribe(c){let d=()=>o&&c(),f=n.subscribe(d);return s.add(c),()=>{f(),s.delete(c)}},dispatch(c){try{return o=!c?.meta?.[FL],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},Gte=e=>function(r){let{autoBatch:n=!0}=r??{},o=new BL(e);return n&&o.push(CN(typeof n=="object"?n:void 0)),o};function UL(e){let t=qte(),{reducer:r=void 0,middleware:n,devTools:o=!0,duplicateMiddlewareCheck:a=!0,preloadedState:i=void 0,enhancers:s=void 0}=e||{},l;if(typeof r=="function")l=r;else if(m1(r))l=g1(r);else throw new Error(Wa(1));let u;typeof n=="function"?u=n(t):u=t();let c=Kh;o&&(c=Wte({trace:!1,...typeof o=="object"&&o}));let d=dL(...u),f=Gte(d),p=typeof s=="function"?s(f):f(),m=c(...p);return iN(l,i,m)}function WL(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(Wa(28));if(s in t)throw new Error(Wa(29));return t[s]=i,o},addAsyncThunk(a,i){return i.pending&&(t[a.pending.type]=i.pending),i.rejected&&(t[a.rejected.type]=i.rejected),i.fulfilled&&(t[a.fulfilled.type]=i.fulfilled),i.settled&&r.push({matcher:a.settled,reducer:i.settled}),o},addMatcher(a,i){return r.push({matcher:a,reducer:i}),o},addDefaultCase(a){return n=a,o}};return e(o),[t,r,n]}function Yte(e){return typeof e=="function"}function Xte(e,t){let[r,n,o]=WL(t),a;if(Yte(e))a=()=>ML(e());else{let s=ML(e);a=()=>s}function i(s=a(),l){let u=[r[l.type],...n.filter(({matcher:c})=>c(l)).map(({reducer:c})=>c)];return u.filter(c=>!!c).length===0&&(u=[o]),u.reduce((c,d)=>{if(d)if(ws(c)){let p=d(c,l);return p===void 0?c:p}else{if(Ua(c))return SN(c,f=>d(f,l));{let f=d(c,l);if(f===void 0){if(c===null)return c;throw Error("A case reducer on a non-draftable value must not return undefined")}return f}}return c},s)}return i.getInitialState=a,i}var Zte=(e,t)=>Hte(e)?e.match(t):e(t);function Jte(...e){return t=>e.some(r=>Zte(r,t))}var Qte="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",HL=(e=21)=>{let t="",r=e;for(;r--;)t+=Qte[Math.random()*64|0];return t},Rte=["name","message","stack","code"],kN=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},IL=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},ere=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of Rte)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},jL="External signal was aborted",tre=(()=>{function e(t,r,n){let o=Wn(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=Wn(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=Wn(t+"/rejected",(l,u,c,d,f)=>({payload:d,error:(n&&n.serializeError||ere)(l||"Rejected"),meta:{...f||{},arg:c,requestId:u,rejectedWithValue:!!d,requestStatus:"rejected",aborted:l?.name==="AbortError",condition:l?.name==="ConditionError"}}));function s(l,{signal:u}={}){return(c,d,f)=>{let p=n?.idGenerator?n.idGenerator(l):HL(),m=new AbortController,y,x;function h(v){x=v,m.abort()}u&&(u.aborted?h(jL):u.addEventListener("abort",()=>h(jL),{once:!0}));let g=(async function(){let v;try{let _=n?.condition?.(l,{getState:d,extra:f});if(nre(_)&&(_=await _),_===!1||m.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};let w=new Promise((C,S)=>{y=()=>{S({name:"AbortError",message:x||"Aborted"})},m.signal.addEventListener("abort",y,{once:!0})});c(a(p,l,n?.getPendingMeta?.({requestId:p,arg:l},{getState:d,extra:f}))),v=await Promise.race([w,Promise.resolve(r(l,{dispatch:c,getState:d,extra:f,requestId:p,signal:m.signal,abort:h,rejectWithValue:((C,S)=>new kN(C,S)),fulfillWithValue:((C,S)=>new IL(C,S))})).then(C=>{if(C instanceof kN)throw C;return C instanceof IL?o(C.payload,p,l,C.meta):o(C,p,l)})])}catch(_){v=_ instanceof kN?i(null,p,l,_.payload,_.meta):i(_,p,l)}finally{y&&m.signal.removeEventListener("abort",y)}return n&&!n.dispatchConditionRejection&&i.match(v)&&v.meta.condition||c(v),v})();return Object.assign(g,{abort:h,requestId:p,arg:l,unwrap(){return g.then(rre)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:Jte(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function rre(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function nre(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var KL=Symbol.for("rtk-slice-createasyncthunk"),MCe={[KL]:tre};function ore(e,t){return`${e}/${t}`}function are({creators:e}={}){let t=e?.asyncThunk?.[KL];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(Wa(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(sre()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(v,b){let _=typeof v=="string"?v:v.type;if(!_)throw new Error(Wa(12));if(_ in l.sliceCaseReducersByType)throw new Error(Wa(13));return l.sliceCaseReducersByType[_]=b,u},addMatcher(v,b){return l.sliceMatchers.push({matcher:v,reducer:b}),u},exposeAction(v,b){return l.actionCreators[v]=b,u},exposeCaseReducer(v,b){return l.sliceCaseReducersByName[v]=b,u}};s.forEach(v=>{let b=i[v],_={reducerName:v,type:ore(o,v),createNotation:typeof n.reducers=="function"};ure(b)?dre(_,b,u,t):lre(_,b,u)});function c(){let[v={},b=[],_=void 0]=typeof n.extraReducers=="function"?WL(n.extraReducers):[n.extraReducers],w={...v,...l.sliceCaseReducersByType};return Xte(n.initialState,C=>{for(let S in w)C.addCase(S,w[S]);for(let S of l.sliceMatchers)C.addMatcher(S.matcher,S.reducer);for(let S of b)C.addMatcher(S.matcher,S.reducer);_&&C.addDefaultCase(_)})}let d=v=>v,f=new Map,p=new WeakMap,m;function y(v,b){return m||(m=c()),m(v,b)}function x(){return m||(m=c()),m.getInitialState()}function h(v,b=!1){function _(C){let S=C[v];return typeof S>"u"&&b&&(S=M1(p,_,x)),S}function w(C=d){let S=M1(f,b,()=>new WeakMap);return M1(S,C,()=>{let k={};for(let[A,O]of Object.entries(n.selectors??{}))k[A]=ire(O,C,()=>M1(p,C,x),b);return k})}return{reducerPath:v,getSelectors:w,get selectors(){return w(_)},selectSlice:_}}let g={name:o,reducer:y,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:x,...h(a),injectInto(v,{reducerPath:b,..._}={}){let w=b??a;return v.inject({reducerPath:w,reducer:y},_),{...g,...h(w,!0)}}};return g}}function ire(e,t,r,n){function o(a,...i){let s=t(a);return typeof s>"u"&&n&&(s=r()),e(s,...i)}return o.unwrapped=e,o}var mr=are();function sre(){function e(t,r){return{_reducerDefinitionType:"asyncThunk",payloadCreator:t,...r}}return e.withTypes=()=>e,{reducer(t){return Object.assign({[t.name](...r){return t(...r)}}[t.name],{_reducerDefinitionType:"reducer"})},preparedReducer(t,r){return{_reducerDefinitionType:"reducerWithPrepare",prepare:t,reducer:r}},asyncThunk:e}}function lre({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!cre(n))throw new Error(Wa(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?Wn(e,i):Wn(e))}function ure(e){return e._reducerDefinitionType==="asyncThunk"}function cre(e){return e._reducerDefinitionType==="reducerWithPrepare"}function dre({type:e,reducerName:t},r,n,o){if(!o)throw new Error(Wa(18));let{payloadCreator:a,fulfilled:i,pending:s,rejected:l,settled:u,options:c}=r,d=o(e,a,c);n.exposeAction(t,d),i&&n.addCase(d.fulfilled,i),s&&n.addCase(d.pending,s),l&&n.addCase(d.rejected,l),u&&n.addMatcher(d.settled,u),n.exposeCaseReducer(t,{fulfilled:i||D1,pending:s||D1,rejected:l||D1,settled:u||D1})}function D1(){}var fre="task",qL="listener",VL="completed",EN="cancelled",pre=`task-${EN}`,mre=`task-${VL}`,_N=`${qL}-${EN}`,gre=`${qL}-${VL}`,$1=class{constructor(e){this.code=e,this.message=`${fre} ${EN} (reason: ${e})`}code;name="TaskAbortError";message},NN=(e,t)=>{if(typeof e!="function")throw new TypeError(Wa(32))},I1=()=>{},GL=(e,t=I1)=>(e.catch(t),e),YL=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Yc=e=>{if(e.aborted)throw new $1(e.reason)};function XL(e,t){let r=I1;return new Promise((n,o)=>{let a=()=>o(new $1(e.reason));if(e.aborted){a();return}r=YL(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=I1})}var hre=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof $1?"cancelled":"rejected",error:r}}finally{t?.()}},j1=e=>t=>GL(XL(e,t).then(r=>(Yc(e),r))),ZL=e=>{let t=j1(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:Op}=Object,$L={},L1="listenerMiddleware",yre=(e,t)=>{let r=n=>YL(e,()=>n.abort(e.reason));return(n,o)=>{NN(n,"taskExecutor");let a=new AbortController;r(a);let i=hre(async()=>{Yc(e),Yc(a.signal);let s=await n({pause:j1(a.signal),delay:ZL(a.signal),signal:a.signal});return Yc(a.signal),s},()=>a.abort(mre));return o?.autoJoin&&t.push(i.catch(I1)),{result:j1(e)(i),cancel(){a.abort(pre)}}}},vre=(e,t)=>{let r=async(n,o)=>{Yc(t);let a=()=>{},s=[new Promise((l,u)=>{let c=e({predicate:n,effect:(d,f)=>{f.unsubscribe(),l([d,f.getState(),f.getOriginalState()])}});a=()=>{c(),u()}})];o!=null&&s.push(new Promise(l=>setTimeout(l,o,null)));try{let l=await XL(t,Promise.race(s));return Yc(t),l}finally{a()}};return((n,o)=>GL(r(n,o)))},JL=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=Wn(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(Wa(21));return NN(a,"options.listener"),{predicate:o,type:t,effect:a}},QL=Op(e=>{let{type:t,predicate:r,effect:n}=JL(e);return{id:HL(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(Wa(22))}}},{withTypes:()=>QL}),LL=(e,t)=>{let{type:r,effect:n,predicate:o}=JL(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},AN=e=>{e.pending.forEach(t=>{t.abort(_N)})},xre=(e,t)=>()=>{for(let r of t.keys())AN(r);e.clear()},zL=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},RL=Op(Wn(`${L1}/add`),{withTypes:()=>RL}),bre=Wn(`${L1}/removeAll`),e6=Op(Wn(`${L1}/remove`),{withTypes:()=>e6}),wre=(...e)=>{console.error(`${L1}/error`,...e)},hl=(e={})=>{let t=new Map,r=new Map,n=p=>{let m=r.get(p)??0;r.set(p,m+1)},o=p=>{let m=r.get(p)??1;m===1?r.delete(p):r.set(p,m-1)},{extra:a,onError:i=wre}=e;NN(i,"onError");let s=p=>(p.unsubscribe=()=>t.delete(p.id),t.set(p.id,p),m=>{p.unsubscribe(),m?.cancelActive&&AN(p)}),l=(p=>{let m=LL(t,p)??QL(p);return s(m)});Op(l,{withTypes:()=>l});let u=p=>{let m=LL(t,p);return m&&(m.unsubscribe(),p.cancelActive&&AN(m)),!!m};Op(u,{withTypes:()=>u});let c=async(p,m,y,x)=>{let h=new AbortController,g=vre(l,h.signal),v=[];try{p.pending.add(h),n(p),await Promise.resolve(p.effect(m,Op({},y,{getOriginalState:x,condition:(b,_)=>g(b,_).then(Boolean),take:g,delay:ZL(h.signal),pause:j1(h.signal),extra:a,signal:h.signal,fork:yre(h.signal,v),unsubscribe:p.unsubscribe,subscribe:()=>{t.set(p.id,p)},cancelActiveListeners:()=>{p.pending.forEach((b,_,w)=>{b!==h&&(b.abort(_N),w.delete(b))})},cancel:()=>{h.abort(_N),p.pending.delete(h)},throwIfCancelled:()=>{Yc(h.signal)}})))}catch(b){b instanceof $1||zL(i,b,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(gre),o(p),p.pending.delete(h)}},d=xre(t,r);return{middleware:p=>m=>y=>{if(!sN(y))return m(y);if(RL.match(y))return l(y.payload);if(bre.match(y)){d();return}if(e6.match(y))return u(y.payload);let x=p.getState(),h=()=>{if(x===$L)throw new Error(Wa(23));return x},g;try{if(g=m(y),t.size>0){let v=p.getState(),b=Array.from(t.values());for(let _ of b){let w=!1;try{w=_.predicate(y,v,x)}catch(C){w=!1,zL(i,C,{raisedBy:"predicate"})}w&&c(_,y,p,h)}}}finally{x=$L}return g},startListening:l,stopListening:u,clearListeners:d}};function Wa(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Sre={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},t6=mr({name:"chartLayout",initialState:Sre,reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){var r,n,o,a;e.margin.top=(r=t.payload.top)!==null&&r!==void 0?r:0,e.margin.right=(n=t.payload.right)!==null&&n!==void 0?n:0,e.margin.bottom=(o=t.payload.bottom)!==null&&o!==void 0?o:0,e.margin.left=(a=t.payload.left)!==null&&a!==void 0?a:0},setScale(e,t){e.scale=t.payload}}}),z1=t6.actions,TN=z1.setMargin,r6=z1.setLayout,n6=z1.setChartSize,o6=z1.setScale;var a6=t6.reducer;function B1(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function pt(e){return Number.isFinite(e)}function ma(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function i6(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function ga(e){for(var t=1;t{if(t&&r){var n=r.width,o=r.height,a=t.align,i=t.verticalAlign,s=t.layout,l=t.position,u=t.offset,c=u===void 0?0:u;if(l!=null){if(jh(l)){if(l==="top"&&Oe(e.top))return ga(ga({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&Oe(e.bottom))return ga(ga({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&Oe(e.left))return ga(ga({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&Oe(e.right))return ga(ga({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&Oe(e[a]))return ga(ga({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&Oe(e[i]))return ga(ga({},e),{},{[i]:e[i]+(o||0)})}return e},Io=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",ON=(e,t,r,n)=>{if(n)return e.map(s=>s.coordinate);var o,a,i=e.map(s=>(s.coordinate===t&&(o=!0),s.coordinate===r&&(a=!0),s.coordinate));return o||i.push(t),a||i.push(r),i},PN=(e,t,r)=>{if(!e)return null;var n=e.duplicateDomain,o=e.type,a=e.range,i=e.scale,s=e.realScaleType,l=e.isCategorical,u=e.categoricalDomain,c=e.tickCount,d=e.ticks,f=e.niceTicks,p=e.axisType;if(!i)return null;var m=s==="scaleBand"&&i.bandwidth?i.bandwidth()/2:2,y=(t||r)&&o==="category"&&i.bandwidth?i.bandwidth()/m:0;if(y=p==="angleAxis"&&a&&a.length>=2?Mr(a[0]-a[1])*2*y:y,t&&(d||f)){var x=(d||f||[]).map((h,g)=>{var v=n?n.indexOf(h):h,b=i.map(v);return pt(b)?{coordinate:b+y,value:h,offset:y,index:g}:null}).filter(Zn);return x}return l&&u?u.map((h,g)=>{var v=i.map(h);return pt(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(Zn):i.ticks&&!r&&c!=null?i.ticks(c).map((h,g)=>{var v=i.map(h);return pt(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(Zn):i.domain().map((h,g)=>{var v=i.map(h);return pt(v)?{coordinate:v+y,value:n?n[h]:h,index:g,offset:y}:null}).filter(Zn)},l6=(e,t)=>{if(!t||t.length!==2||!Oe(t[0])||!Oe(t[1]))return e;var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]),o=[e[0],e[1]];return(!Oe(e[0])||e[0]n)&&(o[1]=n),o[0]>n&&(o[0]=n),o[1]{var t,r=e.length;if(!(r<=0)){var n=(t=e[0])===null||t===void 0?void 0:t.length;if(!(n==null||n<=0))for(var o=0;o=0?(u[0]=a,a+=f,u[1]=a):(u[0]=i,i+=f,u[1]=i)}}}},Ere=e=>{var t,r=e.length;if(!(r<=0)){var n=(t=e[0])===null||t===void 0?void 0:t.length;if(!(n==null||n<=0))for(var o=0;o=0?(l[0]=a,a+=u,l[1]=a):(l[0]=0,l[1]=0)}}}},Nre={sign:Cre,expand:XE,none:Ba,silhouette:ZE,wiggle:JE,positive:Ere},u6=(e,t,r)=>{var n,o=(n=Nre[r])!==null&&n!==void 0?n:Ba,a=YE().keys(t).value((s,l)=>Number(At(s,l,0))).order(wp).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=At(e[c],t[l],0);Array.isArray(d)&&d.length===2&&Oe(d[0])&&Oe(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function F1(e){return e==null?void 0:String(e)}function Pp(e){var t=e.axis,r=e.ticks,n=e.bandSize,o=e.entry,a=e.index,i=e.dataKey;if(t.type==="category"){if(!t.allowDuplicatedCategory&&t.dataKey&&!qt(o[t.dataKey])){var s=Ab(r,"value",o[t.dataKey]);if(s)return s.coordinate+n/2}return r!=null&&r[a]?r[a].coordinate+n/2:null}var l=At(o,qt(i)?t.dataKey:i),u=t.scale.map(l);return Oe(u)?u:null}var MN=e=>{var t=e.axis,r=e.ticks,n=e.offset,o=e.bandSize,a=e.entry,i=e.index;if(t.type==="category")return r[i]?r[i].coordinate+n:null;var s=At(a,t.dataKey,t.scale.domain()[i]);if(qt(s))return null;var l=t.scale.map(s);return Oe(l)?l-o/2+n:null},c6=e=>{var t=e.numericAxis,r=t.scale.domain();if(t.type==="number"){var n=Math.min(r[0],r[1]),o=Math.max(r[0],r[1]);return n<=0&&o>=0?0:o<0?o:n}return r[0]},Tre=e=>{var t=e.flat(2).filter(Oe);return[Math.min(...t),Math.max(...t)]},Ore=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],d6=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return Ore(Object.keys(e).reduce((n,o)=>{var a=e[o];if(!a)return n;var i=a.stackedData,s=i.reduce((l,u)=>{var c=B1(u,t,r),d=Tre(c);return!pt(d[0])||!pt(d[1])?l:[Math.min(l[0],d[0]),Math.max(l[1],d[1])]},[1/0,-1/0]);return[Math.min(s[0],n[0]),Math.max(s[1],n[1])]},[1/0,-1/0]))},DN=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,IN=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,vi=(e,t,r)=>{if(e&&e.scale&&e.scale.bandwidth){var n=e.scale.bandwidth();if(!r||n>0)return n}if(e&&t&&t.length>=2){for(var o=pl(t,y=>y.coordinate),a=[],i=0,s=1,l=o.length;sf&&(p=Math.min(m,p));return p===1/0?0:p}return r?void 0:0};function jN(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return ga(ga({},t),{},{dataKey:r,payload:n,value:o,name:a})}function Ha(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var f6=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},p6=(e,t)=>t==="centric"?e.angle:e.radius;var go=e=>e.layout.width,ho=e=>e.layout.height,m6=e=>e.layout.scale,Mp=e=>e.layout.margin;var Dp=ee(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Ip=ee(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var U1="data-recharts-item-index",W1="data-recharts-item-id",Xc=60,Zh=30;function g6(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function H1(e){for(var t=1;te.brush.height;function jre(e){var t=Ip(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Xc;return r+o}return r},0)}function $re(e){var t=Ip(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Xc;return r+o}return r},0)}function Lre(e){var t=Dp(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:Zh;return r+o}return r},0)}function zre(e){var t=Dp(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:Zh;return r+o}return r},0)}var Ar=ee([go,ho,Mp,Ire,jre,$re,Lre,zre,oN,oL],(e,t,r,n,o,a,i,s,l,u)=>{var c={left:(r.left||0)+o,right:(r.right||0)+a},d={top:(r.top||0)+i,bottom:(r.bottom||0)+s},f=H1(H1({},d),c),p=f.bottom;f.bottom+=n,f=s6(f,l,u);var m=e-f.left-f.right,y=t-f.top-f.bottom;return H1(H1({brushBottom:p},f),{},{width:Math.max(m,0),height:Math.max(y,0)})}),K1=ee(Ar,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),jp=ee(go,ho,(e,t)=>({x:0,y:0,width:e,height:t}));var Bre=G(Y()),q1=G(Y()),Fre=(0,q1.createContext)(null),gr=()=>(0,q1.useContext)(Fre)!=null;var $p=e=>e.brush,Zc=ee([$p,Ar,Mp],(e,t,r)=>({height:e.height,x:Oe(e.x)?e.x:t.left,y:Oe(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:Oe(e.width)?e.width:t.width}));var Jc=G(Y()),Hn=G(Y());function h6(e,t,{signal:r,edges:n}={}){let o,a=null,i=n!=null&&n.includes("leading"),s=n==null||n.includes("trailing"),l=()=>{a!==null&&(e.apply(o,a),o=void 0,a=null)},u=()=>{s&&l(),p()},c=null,d=()=>{c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},t)},f=()=>{c!==null&&(clearTimeout(c),c=null)},p=()=>{f(),o=void 0,a=null},m=()=>{l()},y=function(...x){if(r?.aborted)return;o=this,a=x;let h=c==null;d(),i&&h&&l()};return y.schedule=d,y.cancel=p,y.flush=m,r?.addEventListener("abort",p,{once:!0}),y}function y6(e,t=0,r={}){typeof r!="object"&&(r={});let{leading:n=!1,trailing:o=!0,maxWait:a}=r,i=Array(2);n&&(i[0]="leading"),o&&(i[1]="trailing");let s,l=null,u=h6(function(...f){s=e.apply(this,f),l=null},t,{edges:i}),c=function(...f){return a!=null&&(l===null&&(l=Date.now()),Date.now()-l>=a)?(s=e.apply(this,f),l=Date.now(),u.cancel(),u.schedule(),s):(u.apply(this,f),s)},d=()=>(u.flush(),s);return c.cancel=u.cancel,c.flush=d,c}function $N(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return y6(e,t,{leading:n,maxWait:t,trailing:o})}var Ure=!0,Lp=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var Vi={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},LN=(e,t,r)=>{var n=r.width,o=n===void 0?Vi.width:n,a=r.height,i=a===void 0?Vi.height:a,s=r.aspect,l=r.maxHeight,u=ll(o)?e:Number(o),c=ll(i)?t:Number(i);return s&&s>0&&(u?c=u/s:c&&(u=c*s),l&&c!=null&&c>l&&(c=l)),{calculatedWidth:u,calculatedHeight:c}},Wre={width:0,height:0,overflow:"visible"},Hre={width:0,overflowX:"visible"},Kre={height:0,overflowY:"visible"},qre={},v6=e=>{var t=e.width,r=e.height,n=ll(t),o=ll(r);return n&&o?Wre:n?Hre:o?Kre:qre};function x6(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=Vi.width,a=Vi.height):o===void 0?o=n&&n>0?void 0:Vi.width:a===void 0&&(a=n&&n>0?void 0:Vi.height),{width:o,height:a}}var Vre=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function V1(){return V1=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r({width:r,height:n}),[r,n]);return nne(o)?Jc.createElement(k6.Provider,{value:o},t):null}var Jh=()=>(0,Hn.useContext)(k6),one=(0,Hn.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?Vi.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?Vi.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,f=e.debounce,p=f===void 0?Vi.debounce:f,m=e.id,y=e.className,x=e.onResize,h=e.style,g=h===void 0?{}:h,v=tne(e,Vre),b=(0,Hn.useRef)(null),_=(0,Hn.useRef)();_.current=x,(0,Hn.useImperativeHandle)(t,()=>b.current);var w=(0,Hn.useState)({containerWidth:o.width,containerHeight:o.height}),C=Zre(w,2),S=C[0],k=C[1],A=(0,Hn.useCallback)((N,D)=>{k(T=>{var E=Math.round(N),I=Math.round(D);return T.containerWidth===E&&T.containerHeight===I?T:{containerWidth:E,containerHeight:I}})},[]);(0,Hn.useEffect)(()=>{if(b.current==null||typeof ResizeObserver>"u")return Jo;var N=j=>{var q,te=j[0];if(te!=null){var K=te.contentRect,le=K.width,pe=K.height;A(le,pe),(q=_.current)===null||q===void 0||q.call(_,le,pe)}};p>0&&(N=$N(N,p,{trailing:!0,leading:!1}));var D=new ResizeObserver(N),T=b.current.getBoundingClientRect(),E=T.width,I=T.height;return A(E,I),D.observe(b.current),()=>{D.disconnect()}},[A,p]);var O=S.containerWidth,$=S.containerHeight;Lp(!r||r>0,"The aspect(%s) must be greater than zero.",r);var F=LN(O,$,{width:a,height:i,aspect:r,maxHeight:c}),P=F.calculatedWidth,z=F.calculatedHeight;return Lp(O<0||$<0||P!=null&&P>0||z!=null&&z>0,`The width(%s) and height(%s) of chart should be greater than 0, + H`).concat(ki,"M").concat(2*i,",").concat(o,` + A`).concat(a,",").concat(a,",0,1,1,").concat(i,",").concat(o),className:"recharts-legend-icon"});if(l==="rect")return oa.createElement("path",{stroke:"none",fill:s,d:"M0,".concat(ki/8,"h").concat(ki,"v").concat(ki*3/4,"h").concat(-ki,"z"),className:"recharts-legend-icon"});if(oa.isValidElement(t.legendIcon)){var u=M$({},t);return delete u.legendIcon,oa.cloneElement(t.legendIcon,u)}return oa.createElement(dN,{fill:s,cx:o,cy:o,size:ki,sizeType:"diameter",type:l})}function dte(e){var t=e.payload,r=e.iconSize,n=e.layout,o=e.formatter,a=e.inactiveColor,i=e.iconType,s=e.labelStyle,l={x:0,y:0,width:ki,height:ki},u={display:n==="horizontal"?"inline-block":"block",marginRight:10,whiteSpace:"nowrap"},c={display:"inline-block",verticalAlign:"middle",marginRight:4};return t.map((d,f)=>{var p,m,y=d.formatter||o,b=ut({"recharts-legend-item":!0,["legend-item-".concat(f)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?M$({},s):{};h.color=d.inactive?a:h.color||d.color,(p=h.whiteSpace)!==null&&p!==void 0||(h.whiteSpace="normal"),(m=h.overflowWrap)!==null&&m!==void 0||(h.overflowWrap="break-word");var g=y?y(d.value,d,f):d.value;return oa.createElement("li",qb({className:b,style:u,key:"legend-item-".concat(f)},xl(e,d,f)),oa.createElement(Kh,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},oa.createElement(cte,{data:d,iconType:i,inactiveColor:a})),oa.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var I$=e=>{var t=Kt(e,lte),r=t.payload,n=t.layout,o=t.align;if(!r||!r.length)return null;var a={padding:0,margin:0,textAlign:n==="horizontal"?o:"left"};return oa.createElement("ul",{className:"recharts-default-legend",style:a},oa.createElement(dte,qb({},t,{payload:r})))};function D$(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function bl(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Gb="[object RegExp]",Dp="[object String]",jp="[object Number]",$p="[object Boolean]",Yb="[object Arguments]",Xb="[object Symbol]",Zb="[object Date]",Jb="[object Map]",Qb="[object Set]",Rb="[object Array]",z$="[object Function]",e1="[object ArrayBuffer]",Lp="[object Object]",B$="[object Error]",t1="[object DataView]",r1="[object Uint8Array]",n1="[object Uint8ClampedArray]",o1="[object Uint16Array]",a1="[object Uint32Array]",F$="[object BigUint64Array]",i1="[object Int8Array]",s1="[object Int16Array]",l1="[object Int32Array]",U$="[object BigInt64Array]",u1="[object Float32Array]",c1="[object Float64Array]";var fN=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function Jh(e){return typeof fN.Buffer<"u"&&fN.Buffer.isBuffer(e)}function W$(e,t){return Iu(e,void 0,e,new Map,t)}function Iu(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(Xh(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){let i=new Array(e.length);n.set(e,i);for(let s=0;s{}):pN(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:pN(o,a,n,u,!1)},new Map,!0)}function pN(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return pte(e,t,r,n);case"function":return Object.keys(t).length>0?pN(e,{...t},r,n,o):Du(e,t);default:return d1(e)?o?typeof t=="string"?t==="":!0:Du(e,t):Du(e,t)}}function pte(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return K$(e,t,r,n);if(t instanceof Map)return mte(e,t,r,n);if(t instanceof Set)return gte(e,t,r,n);let o=Object.keys(t);if(e==null||Xh(e))return o.length===0;if(o.length===0)return!0;if(n?.has(t))return n.get(t)===e;n?.set(t,e);try{for(let a=0;a{})}function q$(e){return e=H$(e),t=>f1(t,e)}function V$(e,t){return W$(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(bl(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),_i(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case jp:case Dp:case $p:{let s=new e.constructor(e?.valueOf());return _i(s,e),s}case Yb:{let s={};return _i(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function G$(e){return V$(e)}var hte=/^(?:0|[1-9]\d*)$/;function p1(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function m1(e){return e!=null&&typeof e!="function"&&Q$(e.length)}function R$(e){return typeof e=="object"&&e!==null}function eL(e){return R$(e)&&m1(e)}function g1(e,t=Vb){return eL(e)?D$(Array.from(e),j$(J$(t),1)):[]}function h1(e,t,r){return t===!0?g1(e,r):typeof t=="function"?g1(e,t):e}var cL=V(lL()),Rh=V(Y());var uL=V(Y()),Qh=(0,uL.createContext)(null);var Dte=e=>e,wt=()=>{var e=(0,Rh.useContext)(Qh);return e?e.store.dispatch:Dte},v1=()=>{},jte=()=>v1,$te=(e,t)=>e===t;function Pe(e){var t=(0,Rh.useContext)(Qh),r=(0,Rh.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:v1,[t,e]);return(0,cL.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:jte,t?t.store.getState:v1,t?t.store.getState:v1,r,$te)}function Lte(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function zte(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(r=>typeof r=="function")){let r=e.map(n=>typeof n=="function"?`function ${n.name||"unnamed"}()`:typeof n).join(", ");throw new TypeError(`${t}[${r}]`)}}var dL=e=>Array.isArray(e)?e:[e];function Bte(e){let t=Array.isArray(e[0])?e[0]:e;return zte(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Fte(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?Ute:WeakRef,pL=Wte(),Hte=0,fL=1;function x1(){return{s:Hte,v:void 0,o:null,p:null}}function Kte(e){return e instanceof pL?e.deref():e}function mL(e,t={}){let r=x1(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,f=l;d{r=x1(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function qte(e,...t){let r=typeof e=="function"?{memoize:e,memoizeOptions:t}:e,n=(...o)=>{let a=0,i=0,s,l={},u=o.pop();typeof u=="object"&&(l=u,u=o.pop()),Lte(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:f=[],argsMemoize:p=mL,argsMemoizeOptions:m=[]}=c,y=dL(f),b=dL(m),h=Bte(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,x=p(function(){i++;let w=Fte(h,arguments);return s=g.apply(null,w),s},...b);return Object.assign(x,{resultFunc:u,memoizedResultFunc:g,dependencies:h,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>s,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:d,argsMemoize:p})};return Object.assign(n,{withTypes:()=>n}),n}var te=qte(mL);function gL(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=hL(e),o=hL(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function b1(e){return typeof e=="symbol"||e instanceof Symbol}var Vte=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Gte=/^\w*$/;function vL(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||b1(e)?!0:typeof e=="string"&&(Gte.test(e)||!Vte.test(e))||t!=null&&Object.hasOwn(t,e)}function xL(e,t,r,n){if(e==null)return[];r=n?void 0:r,Array.isArray(e)||(e=Object.values(e)),Array.isArray(t)||(t=t==null?[null]:[t]),t.length===0&&(t=[null]),Array.isArray(r)||(r=r==null?[]:[r]),r=r.map(s=>String(s));let o=(s,l)=>{let u=s;for(let c=0;cl==null||s==null?l:typeof s=="object"&&"key"in s?Object.hasOwn(l,s.key)?l[s.key]:o(l,s.path):typeof s=="function"?s(l):Array.isArray(s)?o(l,s):typeof l=="object"?l[s]:l,i=t.map(s=>(Array.isArray(s)&&s.length===1&&(s=s[0]),s==null||typeof s=="function"||Array.isArray(s)||vL(s)?s:{key:s,path:_p(s)}));return e.map(s=>({original:s,criteria:i.map(l=>a(l,s))})).slice().sort((s,l)=>{for(let u=0;us.original)}function wl(e,...t){let r=t.length;return r>1&&ey(e,t[0],t[1])?t=[]:r>2&&ey(t[0],t[1],t[2])&&(t=[t[0]]),xL(e,gL(t),["asc"])}var hN=e=>e.legend.settings,bL=e=>e.legend.size,Yte=e=>e.legend.payload,wL=te([Yte,hN],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?wl(n,r):n});function SL(){return Pe(wL)}var Sl=V(Y());function Xte(e,t){return Rte(e)||Qte(e,t)||Jte(e,t)||Zte()}function Zte(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Jte(e,t){if(e){if(typeof e=="string")return kL(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?kL(e,t):void 0}}function kL(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rw1||Math.abs(e.left-t.left)>w1||Math.abs(e.top-t.top)>w1||Math.abs(e.width-t.width)>w1}function CL(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function S1(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,Sl.useState)({height:0,left:0,top:0,width:0}),r=Xte(t,2),n=r[0],o=r[1],a=(0,Sl.useRef)(null),i=(0,Sl.useRef)(n);i.current=n;var s=(0,Sl.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=CL(l);if(_L(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=CL(l);_L(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,Sl.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var U6=V(Y());function Po(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var ere=typeof Symbol=="function"&&Symbol.observable||"@@observable",AL=ere,yN=()=>Math.random().toString(36).substring(7).split("").join("."),tre={INIT:`@@redux/INIT${yN()}`,REPLACE:`@@redux/REPLACE${yN()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${yN()}`},k1=tre;function _1(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function vN(e,t,r){if(typeof e!="function")throw new Error(Po(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Po(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(Po(1));return r(vN)(e,t)}let n=e,o=t,a=new Map,i=a,s=0,l=!1;function u(){i===a&&(i=new Map,a.forEach((b,h)=>{i.set(h,b)}))}function c(){if(l)throw new Error(Po(3));return o}function d(b){if(typeof b!="function")throw new Error(Po(4));if(l)throw new Error(Po(5));let h=!0;u();let g=s++;return i.set(g,b),function(){if(h){if(l)throw new Error(Po(6));h=!1,u(),i.delete(g),a=null}}}function f(b){if(!_1(b))throw new Error(Po(7));if(typeof b.type>"u")throw new Error(Po(8));if(typeof b.type!="string")throw new Error(Po(17));if(l)throw new Error(Po(9));try{l=!0,o=n(o,b)}finally{l=!1}return(a=i).forEach(g=>{g()}),b}function p(b){if(typeof b!="function")throw new Error(Po(10));n=b,f({type:k1.REPLACE})}function m(){let b=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(Po(11));function g(){let x=h;x.next&&x.next(c())}return g(),{unsubscribe:b(g)}},[AL](){return this}}}return f({type:k1.INIT}),{dispatch:f,subscribe:d,getState:c,replaceReducer:p,[AL]:m}}function rre(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:k1.INIT})>"u")throw new Error(Po(12));if(typeof r(void 0,{type:k1.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Po(13))})}function C1(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let b=l&&l.type;throw new Error(Po(14))}c[f]=y,u=u||y!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function ty(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function EL(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(Po(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=ty(...s)(o.dispatch),{...o,dispatch:a}}}function xN(e){return _1(e)&&"type"in e&&typeof e.type=="string"}var $L=Symbol.for("immer-nothing"),NL=Symbol.for("immer-draftable"),zo=Symbol.for("immer-state");function Ri(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Ga=Object,Fp=Ga.getPrototypeOf,T1="constructor",j1="prototype",kN="configurable",O1="enumerable",E1="writable",ry="value",Ts=e=>!!e&&!!e[zo];function Ya(e){return e?LL(e)||L1(e)||!!e[NL]||!!e[T1]?.[NL]||z1(e)||B1(e):!1}var nre=Ga[j1][T1].toString(),TL=new WeakMap;function LL(e){if(!e||!PN(e))return!1;let t=Fp(e);if(t===null||t===Ga[j1])return!0;let r=Ga.hasOwnProperty.call(t,T1)&&t[T1];if(r===Object)return!0;if(!Bp(r))return!1;let n=TL.get(r);return n===void 0&&(n=Function.toString.call(r),TL.set(r,n)),n===nre}function $1(e,t,r=!0){ay(e)===0?(r?Reflect.ownKeys(e):Ga.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function ay(e){let t=e[zo];return t?t.type_:L1(e)?1:z1(e)?2:B1(e)?3:0}var bN=(e,t,r=ay(e))=>r===2?e.has(t):Ga[j1].hasOwnProperty.call(e,t),_N=(e,t,r=ay(e))=>r===2?e.get(t):e[t],P1=(e,t,r,n=ay(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function ore(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var L1=Array.isArray,z1=e=>e instanceof Map,B1=e=>e instanceof Set,PN=e=>typeof e=="object",Bp=e=>typeof e=="function",wN=e=>typeof e=="boolean";function are(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var kl=e=>e.copy_||e.base_;var MN=e=>e.modified_?e.copy_:e.base_;function CN(e,t){if(z1(e))return new Map(e);if(B1(e))return new Set(e);if(L1(e))return Array[j1].slice.call(e);let r=LL(e);if(t===!0||t==="class_only"&&!r){let n=Ga.getOwnPropertyDescriptors(e);delete n[zo];let o=Reflect.ownKeys(n);for(let a=0;a1&&Ga.defineProperties(e,{set:A1,add:A1,clear:A1,delete:A1}),Ga.freeze(e),t&&$1(e,(r,n)=>{IN(n,!0)},!1)),e}function ire(){Ri(2)}var A1={[ry]:ire};function F1(e){return e===null||!PN(e)?!0:Ga.isFrozen(e)}var M1="MapSet",AN="Patches",OL="ArrayMethods",zL={};function td(e){let t=zL[e];return t||Ri(0,e),t}var PL=e=>!!zL[e];var ny,BL=()=>ny,sre=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:PL(M1)?td(M1):void 0,arrayMethodsPlugin_:PL(OL)?td(OL):void 0});function ML(e,t){t&&(e.patchPlugin_=td(AN),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function EN(e){NN(e),e.drafts_.forEach(lre),e.drafts_=null}function NN(e){e===ny&&(ny=e.parent_)}var IL=e=>ny=sre(ny,e);function lre(e){let t=e[zo];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function DL(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[zo].modified_&&(EN(t),Ri(4)),Ya(e)&&(e=jL(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[zo].base_,e,t)}else e=jL(t,r);return ure(t,e,!0),EN(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==$L?e:void 0}function jL(e,t){if(F1(t))return t;let r=t[zo];if(!r)return I1(t,e.handledSet_,e);if(!U1(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){let{callbacks_:n}=r;if(n)for(;n.length>0;)n.pop()(e);WL(r,e)}return r.copy_}function ure(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&IN(t,r)}function FL(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var U1=(e,t)=>e.scope_===t,cre=[];function UL(e,t,r,n){let o=kl(e),a=e.type_;if(n!==void 0&&_N(o,n,a)===t){P1(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;$1(o,(l,u)=>{if(Ts(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??cre;for(let s of i)P1(o,s,r,a)}function dre(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!U1(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=MN(a);UL(e,a.draft_??a,i,r),WL(a,o)})}function WL(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let o=n.getPath(e);o&&n.generatePatches_(e,o,t)}FL(e)}}function fre(e,t,r){let{scope_:n}=e;if(Ts(r)){let o=r[zo];U1(o,n)&&o.callbacks_.push(function(){N1(e);let i=MN(o);UL(e,r,i,t)})}else Ya(r)&&e.callbacks_.push(function(){let a=kl(e);e.type_===3?a.has(r)&&I1(r,n.handledSet_,n):_N(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&I1(_N(e.copy_,t,e.type_),n.handledSet_,n)})}function I1(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||Ts(e)||t.has(e)||!Ya(e)||F1(e)||(t.add(e),$1(e,(n,o)=>{if(Ts(o)){let a=o[zo];if(U1(a,r)){let i=MN(a);P1(e,n,i,e.type_),FL(a)}}else Ya(o)&&I1(o,t,r)})),e}function pre(e,t){let r=L1(e),n={type_:r?1:0,scope_:t?t.scope_:BL(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},o=n,a=D1;r&&(o=[n],a=oy);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var D1={get(e,t){if(t===zo)return e;let r=e.scope_.arrayMethodsPlugin_,n=e.type_===1&&typeof t=="string";if(n&&r?.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);let o=kl(e);if(!bN(o,t,e.type_))return gre(e,o,t);let a=o[t];if(e.finalized_||!Ya(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&are(t))return a;if(a===SN(e.base_,t)||mre(e,t,a)){N1(e);let i=e.type_===1?+t:t,s=ON(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in kl(e)},ownKeys(e){return Reflect.ownKeys(kl(e))},set(e,t,r){let n=HL(kl(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=SN(kl(e),t),a=o?.[zo];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(ore(r,o)&&(r!==void 0||bN(e.base_,t,e.type_)))return!0;N1(e),TN(e)}return e.copy_[t]===r&&(r!==void 0||bN(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),fre(e,t,r)),!0},deleteProperty(e,t){return N1(e),SN(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),TN(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=kl(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[E1]:!0,[kN]:e.type_!==1||t!=="length",[O1]:n[O1],[ry]:r[t]}},defineProperty(){Ri(11)},getPrototypeOf(e){return Fp(e.base_)},setPrototypeOf(){Ri(12)}},oy={};for(let e in D1){let t=D1[e];oy[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}oy.deleteProperty=function(e,t){return oy.set.call(this,e,t,void 0)};oy.set=function(e,t,r){return D1.set.call(this,e[0],t,r,e[0])};function SN(e,t){let r=e[zo];return(r?kl(r):e)[t]}function mre(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Ya(r)||r[zo]?!1:e.baseRefs_.has(r)}function gre(e,t,r){let n=HL(t,r);return n?ry in n?n[ry]:n.get?.call(e.draft_):void 0}function HL(e,t){if(!(t in e))return;let r=Fp(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Fp(r)}}function TN(e){e.modified_||(e.modified_=!0,e.parent_&&TN(e.parent_))}function N1(e){e.copy_||(e.assigned_=new Map,e.copy_=CN(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var hre=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(Bp(t)&&!Bp(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}Bp(r)||Ri(6),n!==void 0&&!Bp(n)&&Ri(7);let o;if(Ya(t)){let a=IL(this),i=ON(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?EN(a):NN(a)}return ML(a,n),DL(o,a)}else if(!t||!PN(t)){if(o=r(t),o===void 0&&(o=t),o===$L&&(o=void 0),this.autoFreeze_&&IN(o,!0),n){let a=[],i=[];td(AN).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else Ri(1,t)},this.produceWithPatches=(t,r)=>{if(Bp(t))return(i,...s)=>this.produceWithPatches(i,l=>t(l,...s));let n,o;return[this.produce(t,r,(i,s)=>{n=i,o=s}),n,o]},wN(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),wN(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),wN(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Ya(e)||Ri(8),Ts(e)&&(e=Mo(e));let t=IL(this),r=ON(t,e,void 0);return r[zo].isManual_=!0,NN(t),r}finishDraft(e,t){let r=e&&e[zo];(!r||!r.isManual_)&&Ri(9);let{scope_:n}=r;return ML(n,t),DL(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){let o=t[r];if(o.path.length===0&&o.op==="replace"){e=o.value;break}}r>-1&&(t=t.slice(r+1));let n=td(AN).applyPatches_;return Ts(e)?n(e,t):this.produce(e,o=>n(o,t))}};function ON(e,t,r,n){let[o,a]=z1(t)?td(M1).proxyMap_(t,r):B1(t)?td(M1).proxySet_(t,r):pre(t,r);return(r?.scope_??BL()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?dre(r,a,n):a.callbacks_.push(function(l){l.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:u}=l;a.modified_&&u&&u.generatePatches_(a,[],l)}),o}function Mo(e){return Ts(e)||Ri(10,e),KL(e)}function KL(e){if(!Ya(e)||F1(e))return e;let t=e[zo],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=CN(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=CN(e,!0);return $1(r,(o,a)=>{P1(r,o,KL(a))},n),t&&(t.finalized_=!1),r}var yre=new hre,DN=yre.produce;var Lt=e=>e;function qL(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var VL=qL(),GL=qL;var vre=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?ty:ty.apply(null,arguments)},yEe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},xre=e=>e&&typeof e.match=="function";function Gn(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(Xa(0));return{type:e,payload:o.payload,..."meta"in o&&{meta:o.meta},..."error"in o&&{error:o.error}}}return{type:e,payload:n[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=n=>xN(n)&&n.type===e,r}var t6=class iy extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,iy.prototype)}static get[Symbol.species](){return iy}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new iy(...t[0].concat(this)):new iy(...t.concat(this))}};function YL(e){return Ya(e)?DN(e,()=>{}):e}function W1(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function bre(e){return typeof e=="boolean"}var wre=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new t6;return r&&(bre(r)?i.push(VL):i.push(GL(r.extraArgument))),i},r6="RTK_autoBatch",kr=()=>e=>({payload:e,meta:{[r6]:!0}}),XL=e=>t=>{setTimeout(t,e)},Sre=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},zN=(e={type:"raf"})=>t=>(...r)=>{let n=t(...r),o=!0,a=!1,i=!1,s=new Set,l=e.type==="tick"?queueMicrotask:e.type==="raf"?typeof window<"u"&&window.requestAnimationFrame?Sre(window.requestAnimationFrame,100):XL(10):e.type==="callback"?e.queueNotification:XL(e.timeout),u=()=>{i=!1,a&&(a=!1,s.forEach(c=>c()))};return Object.assign({},n,{subscribe(c){let d=()=>o&&c(),f=n.subscribe(d);return s.add(c),()=>{f(),s.delete(c)}},dispatch(c){try{return o=!c?.meta?.[r6],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},kre=e=>function(r){let{autoBatch:n=!0}=r??{},o=new t6(e);return n&&o.push(zN(typeof n=="object"?n:void 0)),o};function n6(e){let t=wre(),{reducer:r=void 0,middleware:n,devTools:o=!0,duplicateMiddlewareCheck:a=!0,preloadedState:i=void 0,enhancers:s=void 0}=e||{},l;if(typeof r=="function")l=r;else if(_1(r))l=C1(r);else throw new Error(Xa(1));let u;typeof n=="function"?u=n(t):u=t();let c=ty;o&&(c=vre({trace:!1,...typeof o=="object"&&o}));let d=EL(...u),f=kre(d),p=typeof s=="function"?s(f):f(),m=c(...p);return vN(l,i,m)}function o6(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(Xa(28));if(s in t)throw new Error(Xa(29));return t[s]=i,o},addAsyncThunk(a,i){return i.pending&&(t[a.pending.type]=i.pending),i.rejected&&(t[a.rejected.type]=i.rejected),i.fulfilled&&(t[a.fulfilled.type]=i.fulfilled),i.settled&&r.push({matcher:a.settled,reducer:i.settled}),o},addMatcher(a,i){return r.push({matcher:a,reducer:i}),o},addDefaultCase(a){return n=a,o}};return e(o),[t,r,n]}function _re(e){return typeof e=="function"}function Cre(e,t){let[r,n,o]=o6(t),a;if(_re(e))a=()=>YL(e());else{let s=YL(e);a=()=>s}function i(s=a(),l){let u=[r[l.type],...n.filter(({matcher:c})=>c(l)).map(({reducer:c})=>c)];return u.filter(c=>!!c).length===0&&(u=[o]),u.reduce((c,d)=>{if(d)if(Ts(c)){let p=d(c,l);return p===void 0?c:p}else{if(Ya(c))return DN(c,f=>d(f,l));{let f=d(c,l);if(f===void 0){if(c===null)return c;throw Error("A case reducer on a non-draftable value must not return undefined")}return f}}return c},s)}return i.getInitialState=a,i}var Are=(e,t)=>xre(e)?e.match(t):e(t);function Ere(...e){return t=>e.some(r=>Are(r,t))}var Nre="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",a6=(e=21)=>{let t="",r=e;for(;r--;)t+=Nre[Math.random()*64|0];return t},Tre=["name","message","stack","code"],jN=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},ZL=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},Ore=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of Tre)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},JL="External signal was aborted",Pre=(()=>{function e(t,r,n){let o=Gn(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=Gn(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=Gn(t+"/rejected",(l,u,c,d,f)=>({payload:d,error:(n&&n.serializeError||Ore)(l||"Rejected"),meta:{...f||{},arg:c,requestId:u,rejectedWithValue:!!d,requestStatus:"rejected",aborted:l?.name==="AbortError",condition:l?.name==="ConditionError"}}));function s(l,{signal:u}={}){return(c,d,f)=>{let p=n?.idGenerator?n.idGenerator(l):a6(),m=new AbortController,y,b;function h(v){b=v,m.abort()}u&&(u.aborted?h(JL):u.addEventListener("abort",()=>h(JL),{once:!0}));let g=(async function(){let v;try{let S=n?.condition?.(l,{getState:d,extra:f});if(Ire(S)&&(S=await S),S===!1||m.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};let w=new Promise((A,k)=>{y=()=>{k({name:"AbortError",message:b||"Aborted"})},m.signal.addEventListener("abort",y,{once:!0})});c(a(p,l,n?.getPendingMeta?.({requestId:p,arg:l},{getState:d,extra:f}))),v=await Promise.race([w,Promise.resolve(r(l,{dispatch:c,getState:d,extra:f,requestId:p,signal:m.signal,abort:h,rejectWithValue:((A,k)=>new jN(A,k)),fulfillWithValue:((A,k)=>new ZL(A,k))})).then(A=>{if(A instanceof jN)throw A;return A instanceof ZL?o(A.payload,p,l,A.meta):o(A,p,l)})])}catch(S){v=S instanceof jN?i(null,p,l,S.payload,S.meta):i(S,p,l)}finally{y&&m.signal.removeEventListener("abort",y)}return n&&!n.dispatchConditionRejection&&i.match(v)&&v.meta.condition||c(v),v})();return Object.assign(g,{abort:h,requestId:p,arg:l,unwrap(){return g.then(Mre)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:Ere(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function Mre(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function Ire(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var i6=Symbol.for("rtk-slice-createasyncthunk"),xEe={[i6]:Pre};function Dre(e,t){return`${e}/${t}`}function jre({creators:e}={}){let t=e?.asyncThunk?.[i6];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(Xa(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(Lre()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(v,x){let S=typeof v=="string"?v:v.type;if(!S)throw new Error(Xa(12));if(S in l.sliceCaseReducersByType)throw new Error(Xa(13));return l.sliceCaseReducersByType[S]=x,u},addMatcher(v,x){return l.sliceMatchers.push({matcher:v,reducer:x}),u},exposeAction(v,x){return l.actionCreators[v]=x,u},exposeCaseReducer(v,x){return l.sliceCaseReducersByName[v]=x,u}};s.forEach(v=>{let x=i[v],S={reducerName:v,type:Dre(o,v),createNotation:typeof n.reducers=="function"};Bre(x)?Ure(S,x,u,t):zre(S,x,u)});function c(){let[v={},x=[],S=void 0]=typeof n.extraReducers=="function"?o6(n.extraReducers):[n.extraReducers],w={...v,...l.sliceCaseReducersByType};return Cre(n.initialState,A=>{for(let k in w)A.addCase(k,w[k]);for(let k of l.sliceMatchers)A.addMatcher(k.matcher,k.reducer);for(let k of x)A.addMatcher(k.matcher,k.reducer);S&&A.addDefaultCase(S)})}let d=v=>v,f=new Map,p=new WeakMap,m;function y(v,x){return m||(m=c()),m(v,x)}function b(){return m||(m=c()),m.getInitialState()}function h(v,x=!1){function S(A){let k=A[v];return typeof k>"u"&&x&&(k=W1(p,S,b)),k}function w(A=d){let k=W1(f,x,()=>new WeakMap);return W1(k,A,()=>{let _={};for(let[C,E]of Object.entries(n.selectors??{}))_[C]=$re(E,A,()=>W1(p,A,b),x);return _})}return{reducerPath:v,getSelectors:w,get selectors(){return w(S)},selectSlice:S}}let g={name:o,reducer:y,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:b,...h(a),injectInto(v,{reducerPath:x,...S}={}){let w=x??a;return v.inject({reducerPath:w,reducer:y},S),{...g,...h(w,!0)}}};return g}}function $re(e,t,r,n){function o(a,...i){let s=t(a);return typeof s>"u"&&n&&(s=r()),e(s,...i)}return o.unwrapped=e,o}var yr=jre();function Lre(){function e(t,r){return{_reducerDefinitionType:"asyncThunk",payloadCreator:t,...r}}return e.withTypes=()=>e,{reducer(t){return Object.assign({[t.name](...r){return t(...r)}}[t.name],{_reducerDefinitionType:"reducer"})},preparedReducer(t,r){return{_reducerDefinitionType:"reducerWithPrepare",prepare:t,reducer:r}},asyncThunk:e}}function zre({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!Fre(n))throw new Error(Xa(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?Gn(e,i):Gn(e))}function Bre(e){return e._reducerDefinitionType==="asyncThunk"}function Fre(e){return e._reducerDefinitionType==="reducerWithPrepare"}function Ure({type:e,reducerName:t},r,n,o){if(!o)throw new Error(Xa(18));let{payloadCreator:a,fulfilled:i,pending:s,rejected:l,settled:u,options:c}=r,d=o(e,a,c);n.exposeAction(t,d),i&&n.addCase(d.fulfilled,i),s&&n.addCase(d.pending,s),l&&n.addCase(d.rejected,l),u&&n.addMatcher(d.settled,u),n.exposeCaseReducer(t,{fulfilled:i||H1,pending:s||H1,rejected:l||H1,settled:u||H1})}function H1(){}var Wre="task",s6="listener",l6="completed",BN="cancelled",Hre=`task-${BN}`,Kre=`task-${l6}`,$N=`${s6}-${BN}`,qre=`${s6}-${l6}`,V1=class{constructor(e){this.code=e,this.message=`${Wre} ${BN} (reason: ${e})`}code;name="TaskAbortError";message},FN=(e,t)=>{if(typeof e!="function")throw new TypeError(Xa(32))},K1=()=>{},u6=(e,t=K1)=>(e.catch(t),e),c6=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),rd=e=>{if(e.aborted)throw new V1(e.reason)};function d6(e,t){let r=K1;return new Promise((n,o)=>{let a=()=>o(new V1(e.reason));if(e.aborted){a();return}r=c6(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=K1})}var Vre=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof V1?"cancelled":"rejected",error:r}}finally{t?.()}},q1=e=>t=>u6(d6(e,t).then(r=>(rd(e),r))),f6=e=>{let t=q1(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:Up}=Object,QL={},G1="listenerMiddleware",Gre=(e,t)=>{let r=n=>c6(e,()=>n.abort(e.reason));return(n,o)=>{FN(n,"taskExecutor");let a=new AbortController;r(a);let i=Vre(async()=>{rd(e),rd(a.signal);let s=await n({pause:q1(a.signal),delay:f6(a.signal),signal:a.signal});return rd(a.signal),s},()=>a.abort(Kre));return o?.autoJoin&&t.push(i.catch(K1)),{result:q1(e)(i),cancel(){a.abort(Hre)}}}},Yre=(e,t)=>{let r=async(n,o)=>{rd(t);let a=()=>{},s=[new Promise((l,u)=>{let c=e({predicate:n,effect:(d,f)=>{f.unsubscribe(),l([d,f.getState(),f.getOriginalState()])}});a=()=>{c(),u()}})];o!=null&&s.push(new Promise(l=>setTimeout(l,o,null)));try{let l=await d6(t,Promise.race(s));return rd(t),l}finally{a()}};return((n,o)=>u6(r(n,o)))},p6=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=Gn(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(Xa(21));return FN(a,"options.listener"),{predicate:o,type:t,effect:a}},m6=Up(e=>{let{type:t,predicate:r,effect:n}=p6(e);return{id:a6(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(Xa(22))}}},{withTypes:()=>m6}),RL=(e,t)=>{let{type:r,effect:n,predicate:o}=p6(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},LN=e=>{e.pending.forEach(t=>{t.abort($N)})},Xre=(e,t)=>()=>{for(let r of t.keys())LN(r);e.clear()},e6=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},g6=Up(Gn(`${G1}/add`),{withTypes:()=>g6}),Zre=Gn(`${G1}/removeAll`),h6=Up(Gn(`${G1}/remove`),{withTypes:()=>h6}),Jre=(...e)=>{console.error(`${G1}/error`,...e)},_l=(e={})=>{let t=new Map,r=new Map,n=p=>{let m=r.get(p)??0;r.set(p,m+1)},o=p=>{let m=r.get(p)??1;m===1?r.delete(p):r.set(p,m-1)},{extra:a,onError:i=Jre}=e;FN(i,"onError");let s=p=>(p.unsubscribe=()=>t.delete(p.id),t.set(p.id,p),m=>{p.unsubscribe(),m?.cancelActive&&LN(p)}),l=(p=>{let m=RL(t,p)??m6(p);return s(m)});Up(l,{withTypes:()=>l});let u=p=>{let m=RL(t,p);return m&&(m.unsubscribe(),p.cancelActive&&LN(m)),!!m};Up(u,{withTypes:()=>u});let c=async(p,m,y,b)=>{let h=new AbortController,g=Yre(l,h.signal),v=[];try{p.pending.add(h),n(p),await Promise.resolve(p.effect(m,Up({},y,{getOriginalState:b,condition:(x,S)=>g(x,S).then(Boolean),take:g,delay:f6(h.signal),pause:q1(h.signal),extra:a,signal:h.signal,fork:Gre(h.signal,v),unsubscribe:p.unsubscribe,subscribe:()=>{t.set(p.id,p)},cancelActiveListeners:()=>{p.pending.forEach((x,S,w)=>{x!==h&&(x.abort($N),w.delete(x))})},cancel:()=>{h.abort($N),p.pending.delete(h)},throwIfCancelled:()=>{rd(h.signal)}})))}catch(x){x instanceof V1||e6(i,x,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(qre),o(p),p.pending.delete(h)}},d=Xre(t,r);return{middleware:p=>m=>y=>{if(!xN(y))return m(y);if(g6.match(y))return l(y.payload);if(Zre.match(y)){d();return}if(h6.match(y))return u(y.payload);let b=p.getState(),h=()=>{if(b===QL)throw new Error(Xa(23));return b},g;try{if(g=m(y),t.size>0){let v=p.getState(),x=Array.from(t.values());for(let S of x){let w=!1;try{w=S.predicate(y,v,b)}catch(A){w=!1,e6(i,A,{raisedBy:"predicate"})}w&&c(S,y,p,h)}}}finally{b=QL}return g},startListening:l,stopListening:u,clearListeners:d}};function Xa(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Qre={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},y6=yr({name:"chartLayout",initialState:Qre,reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){var r,n,o,a;e.margin.top=(r=t.payload.top)!==null&&r!==void 0?r:0,e.margin.right=(n=t.payload.right)!==null&&n!==void 0?n:0,e.margin.bottom=(o=t.payload.bottom)!==null&&o!==void 0?o:0,e.margin.left=(a=t.payload.left)!==null&&a!==void 0?a:0},setScale(e,t){e.scale=t.payload}}}),Y1=y6.actions,UN=Y1.setMargin,v6=Y1.setLayout,x6=Y1.setChartSize,b6=Y1.setScale;var w6=y6.reducer;function X1(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function ht(e){return Number.isFinite(e)}function ba(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function S6(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function wa(e){for(var t=1;t{if(t&&r){var n=r.width,o=r.height,a=t.align,i=t.verticalAlign,s=t.layout,l=t.position,u=t.offset,c=u===void 0?0:u;if(l!=null){if(Vh(l)){if(l==="top"&&Oe(e.top))return wa(wa({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&Oe(e.bottom))return wa(wa({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&Oe(e.left))return wa(wa({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&Oe(e.right))return wa(wa({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&Oe(e[a]))return wa(wa({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&Oe(e[i]))return wa(wa({},e),{},{[i]:e[i]+(o||0)})}return e},Bo=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",WN=(e,t,r,n)=>{if(n)return e.map(s=>s.coordinate);var o,a,i=e.map(s=>(s.coordinate===t&&(o=!0),s.coordinate===r&&(a=!0),s.coordinate));return o||i.push(t),a||i.push(r),i},HN=(e,t,r)=>{if(!e)return null;var n=e.duplicateDomain,o=e.type,a=e.range,i=e.scale,s=e.realScaleType,l=e.isCategorical,u=e.categoricalDomain,c=e.tickCount,d=e.ticks,f=e.niceTicks,p=e.axisType;if(!i)return null;var m=s==="scaleBand"&&i.bandwidth?i.bandwidth()/2:2,y=(t||r)&&o==="category"&&i.bandwidth?i.bandwidth()/m:0;if(y=p==="angleAxis"&&a&&a.length>=2?jr(a[0]-a[1])*2*y:y,t&&(d||f)){var b=(d||f||[]).map((h,g)=>{var v=n?n.indexOf(h):h,x=i.map(v);return ht(x)?{coordinate:x+y,value:h,offset:y,index:g}:null}).filter(ro);return b}return l&&u?u.map((h,g)=>{var v=i.map(h);return ht(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(ro):i.ticks&&!r&&c!=null?i.ticks(c).map((h,g)=>{var v=i.map(h);return ht(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(ro):i.domain().map((h,g)=>{var v=i.map(h);return ht(v)?{coordinate:v+y,value:n?n[h]:h,index:g,offset:y}:null}).filter(ro)},_6=(e,t)=>{if(!t||t.length!==2||!Oe(t[0])||!Oe(t[1]))return e;var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]),o=[e[0],e[1]];return(!Oe(e[0])||e[0]n)&&(o[1]=n),o[0]>n&&(o[0]=n),o[1]{var t,r=e.length;if(!(r<=0)){var n=(t=e[0])===null||t===void 0?void 0:t.length;if(!(n==null||n<=0))for(var o=0;o=0?(u[0]=a,a+=f,u[1]=a):(u[0]=i,i+=f,u[1]=i)}}}},nne=e=>{var t,r=e.length;if(!(r<=0)){var n=(t=e[0])===null||t===void 0?void 0:t.length;if(!(n==null||n<=0))for(var o=0;o=0?(l[0]=a,a+=u,l[1]=a):(l[0]=0,l[1]=0)}}}},one={sign:rne,expand:sN,none:Va,silhouette:lN,wiggle:uN,positive:nne},C6=(e,t,r)=>{var n,o=(n=one[r])!==null&&n!==void 0?n:Va,a=iN().keys(t).value((s,l)=>Number(Nt(s,l,0))).order(Mp).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=Nt(e[c],t[l],0);Array.isArray(d)&&d.length===2&&Oe(d[0])&&Oe(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function Z1(e){return e==null?void 0:String(e)}function Wp(e){var t=e.axis,r=e.ticks,n=e.bandSize,o=e.entry,a=e.index,i=e.dataKey;if(t.type==="category"){if(!t.allowDuplicatedCategory&&t.dataKey&&!Yt(o[t.dataKey])){var s=jb(r,"value",o[t.dataKey]);if(s)return s.coordinate+n/2}return r!=null&&r[a]?r[a].coordinate+n/2:null}var l=Nt(o,Yt(i)?t.dataKey:i),u=t.scale.map(l);return Oe(u)?u:null}var KN=e=>{var t=e.axis,r=e.ticks,n=e.offset,o=e.bandSize,a=e.entry,i=e.index;if(t.type==="category")return r[i]?r[i].coordinate+n:null;var s=Nt(a,t.dataKey,t.scale.domain()[i]);if(Yt(s))return null;var l=t.scale.map(s);return Oe(l)?l-o/2+n:null},A6=e=>{var t=e.numericAxis,r=t.scale.domain();if(t.type==="number"){var n=Math.min(r[0],r[1]),o=Math.max(r[0],r[1]);return n<=0&&o>=0?0:o<0?o:n}return r[0]},ane=e=>{var t=e.flat(2).filter(Oe);return[Math.min(...t),Math.max(...t)]},ine=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],E6=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return ine(Object.keys(e).reduce((n,o)=>{var a=e[o];if(!a)return n;var i=a.stackedData,s=i.reduce((l,u)=>{var c=X1(u,t,r),d=ane(c);return!ht(d[0])||!ht(d[1])?l:[Math.min(l[0],d[0]),Math.max(l[1],d[1])]},[1/0,-1/0]);return[Math.min(s[0],n[0]),Math.max(s[1],n[1])]},[1/0,-1/0]))},qN=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,VN=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Ci=(e,t,r)=>{if(e&&e.scale&&e.scale.bandwidth){var n=e.scale.bandwidth();if(!r||n>0)return n}if(e&&t&&t.length>=2){for(var o=wl(t,y=>y.coordinate),a=[],i=0,s=1,l=o.length;sf&&(p=Math.min(m,p));return p===1/0?0:p}return r?void 0:0};function GN(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return wa(wa({},t),{},{dataKey:r,payload:n,value:o,name:a})}function Za(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var N6=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},T6=(e,t)=>t==="centric"?e.angle:e.radius;var wo=e=>e.layout.width,So=e=>e.layout.height,O6=e=>e.layout.scale,Hp=e=>e.layout.margin;var Kp=te(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),qp=te(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var J1="data-recharts-item-index",Q1="data-recharts-item-id",nd=60,sy=30;function P6(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function R1(e){for(var t=1;te.brush.height;function dne(e){var t=qp(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:nd;return r+o}return r},0)}function fne(e){var t=qp(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:nd;return r+o}return r},0)}function pne(e){var t=Kp(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:sy;return r+o}return r},0)}function mne(e){var t=Kp(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:sy;return r+o}return r},0)}var Nr=te([wo,So,Hp,cne,dne,fne,pne,mne,hN,bL],(e,t,r,n,o,a,i,s,l,u)=>{var c={left:(r.left||0)+o,right:(r.right||0)+a},d={top:(r.top||0)+i,bottom:(r.bottom||0)+s},f=R1(R1({},d),c),p=f.bottom;f.bottom+=n,f=k6(f,l,u);var m=e-f.left-f.right,y=t-f.top-f.bottom;return R1(R1({brushBottom:p},f),{},{width:Math.max(m,0),height:Math.max(y,0)})}),ew=te(Nr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Vp=te(wo,So,(e,t)=>({x:0,y:0,width:e,height:t}));var gne=V(Y()),tw=V(Y()),hne=(0,tw.createContext)(null),vr=()=>(0,tw.useContext)(hne)!=null;var Gp=e=>e.brush,od=te([Gp,Nr,Hp],(e,t,r)=>({height:e.height,x:Oe(e.x)?e.x:t.left,y:Oe(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:Oe(e.width)?e.width:t.width}));var ad=V(Y()),Yn=V(Y());function M6(e,t,{signal:r,edges:n}={}){let o,a=null,i=n!=null&&n.includes("leading"),s=n==null||n.includes("trailing"),l=()=>{a!==null&&(e.apply(o,a),o=void 0,a=null)},u=()=>{s&&l(),p()},c=null,d=()=>{c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},t)},f=()=>{c!==null&&(clearTimeout(c),c=null)},p=()=>{f(),o=void 0,a=null},m=()=>{l()},y=function(...b){if(r?.aborted)return;o=this,a=b;let h=c==null;d(),i&&h&&l()};return y.schedule=d,y.cancel=p,y.flush=m,r?.addEventListener("abort",p,{once:!0}),y}function I6(e,t=0,r={}){typeof r!="object"&&(r={});let{leading:n=!1,trailing:o=!0,maxWait:a}=r,i=Array(2);n&&(i[0]="leading"),o&&(i[1]="trailing");let s,l=null,u=M6(function(...f){s=e.apply(this,f),l=null},t,{edges:i}),c=function(...f){return a!=null&&(l===null&&(l=Date.now()),Date.now()-l>=a)?(s=e.apply(this,f),l=Date.now(),u.cancel(),u.schedule(),s):(u.apply(this,f),s)},d=()=>(u.flush(),s);return c.cancel=u.cancel,c.flush=d,c}function YN(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return I6(e,t,{leading:n,maxWait:t,trailing:o})}var yne=!0,Yp=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var es={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},XN=(e,t,r)=>{var n=r.width,o=n===void 0?es.width:n,a=r.height,i=a===void 0?es.height:a,s=r.aspect,l=r.maxHeight,u=hl(o)?e:Number(o),c=hl(i)?t:Number(i);return s&&s>0&&(u?c=u/s:c&&(u=c*s),l&&c!=null&&c>l&&(c=l)),{calculatedWidth:u,calculatedHeight:c}},vne={width:0,height:0,overflow:"visible"},xne={width:0,overflowX:"visible"},bne={height:0,overflowY:"visible"},wne={},D6=e=>{var t=e.width,r=e.height,n=hl(t),o=hl(r);return n&&o?vne:n?xne:o?bne:wne};function j6(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=es.width,a=es.height):o===void 0?o=n&&n>0?void 0:es.width:a===void 0&&(a=n&&n>0?void 0:es.height),{width:o,height:a}}var Sne=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function rw(){return rw=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r({width:r,height:n}),[r,n]);return Ine(o)?ad.createElement(B6.Provider,{value:o},t):null}var ly=()=>(0,Yn.useContext)(B6),Dne=(0,Yn.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?es.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?es.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,f=e.debounce,p=f===void 0?es.debounce:f,m=e.id,y=e.className,b=e.onResize,h=e.style,g=h===void 0?{}:h,v=Pne(e,Sne),x=(0,Yn.useRef)(null),S=(0,Yn.useRef)();S.current=b,(0,Yn.useImperativeHandle)(t,()=>x.current);var w=(0,Yn.useState)({containerWidth:o.width,containerHeight:o.height}),A=Ane(w,2),k=A[0],_=A[1],C=(0,Yn.useCallback)((N,O)=>{_($=>{var T=Math.round(N),I=Math.round(O);return $.containerWidth===T&&$.containerHeight===I?$:{containerWidth:T,containerHeight:I}})},[]);(0,Yn.useEffect)(()=>{if(x.current==null||typeof ResizeObserver>"u")return na;var N=P=>{var H,Q=P[0];if(Q!=null){var K=Q.contentRect,ue=K.width,pe=K.height;C(ue,pe),(H=S.current)===null||H===void 0||H.call(S,ue,pe)}};p>0&&(N=YN(N,p,{trailing:!0,leading:!1}));var O=new ResizeObserver(N),$=x.current.getBoundingClientRect(),T=$.width,I=$.height;return C(T,I),O.observe(x.current),()=>{O.disconnect()}},[C,p]);var E=k.containerWidth,j=k.containerHeight;Yp(!r||r>0,"The aspect(%s) must be greater than zero.",r);var F=XN(E,j,{width:a,height:i,aspect:r,maxHeight:c}),D=F.calculatedWidth,z=F.calculatedHeight;return Yp(E<0||j<0||D!=null&&D>0||z!=null&&z>0,`The width(%s) and height(%s) of chart should be greater than 0, please check the style of container, or the props width(%s) and height(%s), or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the - height and width.`,P,z,a,i,l,u,r),Jc.createElement("div",V1({id:m?"".concat(m):void 0,className:lt("recharts-responsive-container",y),style:w6(w6({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:b},v),Jc.createElement("div",{style:v6({width:a,height:i})},Jc.createElement(_6,{width:P,height:z},d)))}),Eu=(0,Hn.forwardRef)((e,t)=>{var r=Jh();if(ma(r.width)&&ma(r.height))return e.children;var n=x6({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=LN(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return Oe(s)&&Oe(l)?Jc.createElement(_6,{width:s,height:l},e.children):Jc.createElement(one,V1({},e,{width:o,height:a,ref:t}))});var Qc=()=>{var e,t=gr(),r=Pe(K1),n=Pe(Zc),o=(e=Pe($p))===null||e===void 0?void 0:e.padding;return!t||!n||!o?r:{width:n.width-o.left-o.right,height:n.height-o.top-o.bottom,x:o.left,y:o.top}},ane={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},G1=()=>{var e;return(e=Pe(Ar))!==null&&e!==void 0?e:ane},zp=()=>Pe(go),Bp=()=>Pe(ho),C6=()=>Pe(e=>e.layout.margin),wt=e=>e.layout.layoutType,ha=()=>Pe(wt),Fp=()=>{var e=ha();if(e==="horizontal"||e==="vertical")return e},Y1=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},E6=()=>Pe(Y1),N6=()=>{var e=ha();return e!==void 0},Rc=e=>{var t=xt(),r=gr(),n=e.width,o=e.height,a=Jh(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,A6.useEffect)(()=>{!r&&ma(i)&&ma(s)&&t(n6({width:i,height:s}))},[t,r,i,s]),null};var ine={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},T6=mr({name:"legend",initialState:ine,reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter,e.settings.position=t.payload.position,e.settings.offset=t.payload.offset},addLegendPayload:{reducer(e,t){e.payload.push(Dt(t.payload))},prepare:br()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Co(e).payload.indexOf(Dt(n));a>-1&&(e.payload[a]=Dt(o))},prepare:br()},removeLegendPayload:{reducer(e,t){var r=Co(e).payload.indexOf(Dt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:br()}}}),Qh=T6.actions,zN=Qh.setLegendSize,O6=Qh.setLegendSettings,BN=Qh.addLegendPayload,FN=Qh.replaceLegendPayload,UN=Qh.removeLegendPayload;var P6=T6.reducer;var wn=G(Y(),1),Ine=G(j6(),1);var mne=Symbol.for("react.forward_ref");var gne=Symbol.for("react.memo");var hne=mne,yne=gne;function vne(e){e()}function xne(){let e=null,t=null;return{clear(){e=null,t=null},notify(){vne(()=>{let r=e;for(;r;)r.callback(),r=r.next})},get(){let r=[],n=e;for(;n;)r.push(n),n=n.next;return r},subscribe(r){let n=!0,o=t={callback:r,next:null,prev:t};return o.prev?o.prev.next=o:e=o,function(){!n||e===null||(n=!1,o.next?o.next.prev=o.prev:t=o.prev,o.prev?o.prev.next=o.next:e=o.next)}}}}var $6={notify(){},get:()=>[]};function bne(e,t){let r,n=$6,o=0,a=!1;function i(y){c();let x=n.subscribe(y),h=!1;return()=>{h||(h=!0,x(),d())}}function s(){n.notify()}function l(){m.onStateChange&&m.onStateChange()}function u(){return a}function c(){o++,r||(r=t?t.addNestedSub(l):e.subscribe(l),n=xne())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=$6)}function f(){a||(a=!0,c())}function p(){a&&(a=!1,d())}let m={addNestedSub:i,notifyNestedSubs:s,handleChangeWrapper:l,isSubscribed:u,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>n};return m}var wne=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Sne=wne(),kne=()=>typeof navigator<"u"&&navigator.product==="ReactNative",_ne=kne(),Ane=()=>Sne||_ne?wn.useLayoutEffect:wn.useEffect,Cne=Ane();function L6(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function z6(e,t){if(L6(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let o=0;o{let l=bne(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=wn.useMemo(()=>o.getState(),[o]);return Cne(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),wn.createElement((r||Mne).Provider,{value:a},t)}var B6=Dne;var jne=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function $ne(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function ya(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(jne.has(n)){if(e[n]==null&&t[n]==null)continue;if(!z6(e[n],t[n]))return!1}else if(!$ne(e[n],t[n]))return!1;return!0}var F6=ee([go,ho,Mp],(e,t,r)=>({x:r.left||0,y:r.top||0,width:Math.max(e-(r.left||0)-(r.right||0),0),height:Math.max(t-(r.top||0)-(r.bottom||0),0)}));function U6(e,t){var r;if(e==="start"&&t==="start")return"";var n={start:"0",middle:"-50%",end:"-100%"},o={start:"0",middle:"-50%",end:"-100%"},a=e==="inherit"?"0":n[e],i=(r=o[t])!==null&&r!==void 0?r:"0";return"translate(".concat(a,", ").concat(i,")")}var Lne=["contextPayload"];function WN(){return WN=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{s(O6({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function toe(e){var t=e.width,r=e.height,n=xt();return(0,X1.useLayoutEffect)(()=>{n(zN({width:t,height:r}))},[n,t,r]),(0,X1.useLayoutEffect)(()=>()=>{n(zN({width:0,height:0}))},[n]),null}function roe(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var noe={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function ooe(e){var t,r,n,o,a,i,s,l,u=Ut(e,noe),c=e.layout&&e.layout!=="auto"?e.layout:Zne(u.position),d=iL(),f=V8(),p=C6(),m=Pe(I=>Jne(I,u.position)),y=u.width,x=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||jh(u.position)),b=f1([d]),_=zne(b,2),w=_[0],C=_[1],S=zp(),k=Bp();if(S==null||k==null||u.position!=null&&m==null)return null;var A=S-(p?.left||0)-(p?.right||0),O=roe(c,x,y,A),$=u.position==null?null:Cb({viewBox:m??{x:0,y:0,width:S,height:k},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),F=Qne(u.position,(r=u.offset)!==null&&r!==void 0?r:0,w),P=c==="vertical"?((n=m?.width)!==null&&n!==void 0?n:0)/2:(o=m?.width)!==null&&o!==void 0?o:0,z=c==="horizontal"?((a=m?.height)!==null&&a!==void 0?a:0)/2:(i=m?.height)!==null&&i!==void 0?i:0,N=$?{width:"max-content",height:"max-content",maxWidth:P,maxHeight:z,overflowY:"auto",top:$.y+((s=F.top)!==null&&s!==void 0?s:0),left:$.x+((l=F.left)!==null&&l!==void 0?l:0),transform:U6($.horizontalAnchor,$.verticalAnchor)}:Rne(h,u,p,S,k,w),D=g?h:Up(Up({position:"absolute",width:O?.width||y||"auto",height:O?.height||x||"auto"},N),h),T=g??f;if(T==null||d==null)return null;var E=Ka.createElement("div",{className:"recharts-legend-wrapper",style:D,ref:C},Ka.createElement(eoe,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&Ka.createElement(toe,w),Ka.createElement(Xne,WN({},u,{layout:c},O,{margin:p,chartWidth:S,chartHeight:k,contextPayload:d})));return(0,K6.createPortal)(E,T)}var Z1=Ka.memo(ooe,ya);Z1.displayName="Legend";var Ai=G(Y()),vF=G(Y()),xF=G(Ig());var Gi=G(Y());function HN(){return HN=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.separator,r=t===void 0?Wp.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?Wp.labelStyle:a,s=e.payload,l=e.formatter,u=e.itemSorter,c=e.wrapperClassName,d=e.labelClassName,f=e.label,p=e.labelFormatter,m=e.accessibilityLayer,y=m===void 0?Wp.accessibilityLayer:m,x=()=>{if(s&&s.length){var S={padding:0,margin:0},k=moe(s,u),A=k.map((O,$)=>{if(!O||O.type==="none")return null;var F=O.formatter||l||poe,P=O.value,z=O.name,N=P,D=z;if(F){var T=F(P,z,O,$,s);if(Array.isArray(T)){var E=loe(T,2);N=E[0],D=E[1]}else if(T!=null)N=T;else return null}var I=ey(ey({},Wp.itemStyle),{},{color:O.color||Wp.itemStyle.color},o);return Gi.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat($),style:I},Zo(D)?Gi.createElement("span",{className:"recharts-tooltip-item-name"},D):null,Zo(D)?Gi.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,Gi.createElement("span",{className:"recharts-tooltip-item-value"},N),Gi.createElement("span",{className:"recharts-tooltip-item-unit"},O.unit||""))});return Gi.createElement("ul",{className:"recharts-tooltip-item-list",style:S},A)}return null},h=ey(ey({},Wp.contentStyle),n),g=ey({margin:0},i),v=!qt(f),b=v?f:"",_=lt("recharts-default-tooltip",c),w=lt("recharts-tooltip-label",d);v&&p&&s!==void 0&&s!==null&&(b=p(f,s));var C=y?{role:"status","aria-live":"assertive"}:{};return Gi.createElement("div",HN({className:_,style:h},C),Gi.createElement("p",{className:w,style:g},Gi.isValidElement(b)?b:"".concat(b)),x())};var Nu=G(Y());var ty="recharts-tooltip-wrapper",goe={visibility:"hidden"};function hoe(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return lt(ty,{["".concat(ty,"-right")]:Oe(r)&&t&&Oe(t.x)&&r>=t.x,["".concat(ty,"-left")]:Oe(r)&&t&&Oe(t.x)&&r=t.y,["".concat(ty,"-top")]:Oe(n)&&t&&Oe(t.y)&&n0?o:0),d=r[n]+o;if(t[n])return i[n]?c:d;var f=l[n];if(f==null)return 0;if(i[n]){var p=c,m=f;return px?Math.max(c,f):Math.max(d,f)}function yoe(e){var t=e.translateX,r=e.translateY,n=e.useTranslate3d;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}function X6(e){var t=e.allowEscapeViewBox,r=e.coordinate,n=e.offsetTop,o=e.offsetLeft,a=e.position,i=e.reverseDirection,s=e.tooltipBox,l=e.useTranslate3d,u=e.viewBox,c,d,f;return s&&s.height>0&&s.width>0&&r?(d=Y6({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),f=Y6({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=yoe({translateX:d,translateY:f,useTranslate3d:l})):c=goe,{cssProperties:c,cssClasses:hoe({translateX:d,translateY:f,coordinate:r})}}var J1=G(Y());var voe=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),xi={devToolsEnabled:!0,isSsr:voe()};function xoe(e,t){return koe(e)||Soe(e,t)||woe(e,t)||boe()}function boe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function woe(e,t){if(e){if(typeof e=="string")return Z6(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Z6(e,t):void 0}}function Z6(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rxi.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=xoe(e,2),r=t[0],n=t[1];return(0,J1.useEffect)(()=>{if(window.matchMedia){var o=window.matchMedia("(prefers-reduced-motion: reduce)"),a=()=>{n(o.matches)};return o.addEventListener("change",a),()=>{o.removeEventListener("change",a)}}},[]),r}function J6(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Hp(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}})),u=Eoe(l,2),c=u[0],d=u[1];Nu.useEffect(()=>{var h=g=>{if(g.key==="Escape"){var v,b,_,w;d({dismissed:!0,dismissedAtCoordinate:{x:(v=(b=e.coordinate)===null||b===void 0?void 0:b.x)!==null&&v!==void 0?v:0,y:(_=(w=e.coordinate)===null||w===void 0?void 0:w.y)!==null&&_!==void 0?_:0}})}};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[(t=e.coordinate)===null||t===void 0?void 0:t.x,(r=e.coordinate)===null||r===void 0?void 0:r.y]),c.dismissed&&(((n=(o=e.coordinate)===null||o===void 0?void 0:o.x)!==null&&n!==void 0?n:0)!==c.dismissedAtCoordinate.x||((a=(i=e.coordinate)===null||i===void 0?void 0:i.y)!==null&&a!==void 0?a:0)!==c.dismissedAtCoordinate.y)&&d(Hp(Hp({},c),{},{dismissed:!1}));var f=X6({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset=="number"?e.offset:e.offset.x,offsetTop:typeof e.offset=="number"?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:e.lastBoundingBox,useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),p=f.cssClasses,m=f.cssProperties,y=e.hasPortalFromProps?{}:Hp(Hp({transition:Moe({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),x=Hp(Hp({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return Nu.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:p,style:x,ref:e.innerRef},e.children)}var R6=Nu.memo(Doe);var R1=()=>{var e;return(e=Pe(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var BS=G(Y()),ym=G(Y());var az=G(Y());function KN(){return KN=Object.assign?Object.assign.bind():function(e){for(var t=1;tpt(e.x)&&pt(e.y),nz=e=>e.base!=null&&ew(e.base)&&ew(e),ry=e=>e.x,ny=e=>e.y,Loe=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(cl(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=rz["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return rz[r]||_u},oz={connectNulls:!1,type:"linear"},zoe=e=>{var t=e.type,r=t===void 0?oz.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?oz.connectNulls:s,u=Loe(r,i),c=l?o.filter(ew):o;if(Array.isArray(a)){var d,f=o.map((h,g)=>tz(tz({},h),{},{base:a[g]}));i==="vertical"?d=yp().y(ny).x1(ry).x0(h=>h.base.x):d=yp().x(ry).y1(ny).y0(h=>h.base.y);var p=d.defined(nz).curve(u),m=l?f.filter(nz):f;return p(m)}var y;i==="vertical"&&Oe(a)?y=yp().y(ny).x1(ry).x0(a):Oe(a)?y=yp().x(ry).y1(ny).y0(a):y=Lh().x(ry).y(ny);var x=y.defined(ew).curve(u);return x(c)},Ss=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=ha();if((!r||!r.length)&&!n)return null;var i={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=r&&r.length?zoe(i):n;return az.createElement("path",KN({},Zr(e),Sp(e),{className:lt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var sz=G(Y());var Boe=["x","y","top","left","width","height","className"];function qN(){return qN=Object.assign?Object.assign.bind():function(e){for(var t=1;t"M".concat(e,",").concat(o,"v").concat(n,"M").concat(a,",").concat(t,"h").concat(r),lz=e=>{var t=e.x,r=t===void 0?0:t,n=e.y,o=n===void 0?0:n,a=e.top,i=a===void 0?0:a,s=e.left,l=s===void 0?0:s,u=e.width,c=u===void 0?0:u,d=e.height,f=d===void 0?0:d,p=e.className,m=Koe(e,Boe),y=Foe({x:r,y:o,top:i,left:l,width:c,height:f},m);return!Oe(r)||!Oe(o)||!Oe(c)||!Oe(f)||!Oe(i)||!Oe(l)?null:sz.createElement("path",qN({},Jr(y),{className:lt("recharts-cross",p),d:Voe(r,o,c,f,i,l)}))};function uz(e,t,r,n){var o=n/2;return{stroke:"none",fill:"#ccc",x:e==="horizontal"?t.x-o:r.left+.5,y:e==="horizontal"?r.top+.5:t.y-o,width:e==="horizontal"?n:r.width-1,height:e==="horizontal"?r.height-1:n}}var iw=G(Y()),bi=G(Y());var oy=G(Y());var tw=1e-4,fz=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],pz=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),cz=(e,t)=>r=>{var n=fz(e,t);return pz(n,r)},Goe=(e,t)=>r=>{var n=fz(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return pz(o,r)},Yoe=e=>{var t,r=e.split("(");if(r.length!==2||r[0]!=="cubic-bezier")return null;var n=(t=r[1])===null||t===void 0||(t=t.split(")")[0])===null||t===void 0?void 0:t.split(",");if(n==null||n.length!==4)return null;var o=n.map(a=>parseFloat(a));return[o[0],o[1],o[2],o[3]]},Xoe=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=cz(e,r),a=cz(t,n),i=Goe(e,r),s=u=>u>1?1:u<0?0:u,l=u=>{for(var c=u>1?1:u,d=c,f=0;f<8;++f){var p=o(d)-c,m=i(d);if(Math.abs(p-c)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,o=t.damping,a=o===void 0?8:o,i=t.dt,s=i===void 0?16.67:i,l=1,u=[0],c=0,d=0,f=1e4,p=0;p{var g,v,b;if(h<=0)return 0;if(h>=1)return l;var _=h*x,w=Math.floor(_),C=_-w;return((g=u[w])!==null&&g!==void 0?g:0)+(((v=u[w+1])!==null&&v!==void 0?v:0)-((b=u[w])!==null&&b!==void 0?b:0))*C}},mz=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return dz(e);case"spring":return Joe();default:if(e.split("(")[0]==="cubic-bezier")return dz(e)}return typeof e=="function"?e:null};var Kp=G(Y());var gz=(e,t,r)=>{var n,o=a=>{var i=t.tick(a);if(t.getState()==="active"){if(r(t.getInterpolated()),t.getProgress()===1){t.complete(),n=void 0;return}n=e.setTimeout(o,i);return}n=e.setTimeout(o,i)};return n=e.setTimeout(o,0),()=>{var a;return(a=n)===null||a===void 0?void 0:a()}};var hz=(0,Kp.createContext)(gz),qNe=hz.Provider;function yz(e){var t=(0,Kp.useContext)(hz);return(0,Kp.useMemo)(()=>e??t,[e,t])}function Qoe(e,t,r){return(t=Roe(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Roe(e){var t=eae(e,"string");return typeof t=="symbol"?t:t+""}function eae(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var vz="init",xz="pending",bz="active",tae="completed";function VN(e){return Math.max(0,e)}var GN=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;Qoe(this,"state",vz),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=VN(t.animationDuration),this.animationBegin=VN(t.animationBegin),this.progress=0,this.from=t.from,this.to=t.to,this.easing=t.easing,(r=t.onAnimationStart)===null||r===void 0||r.call(t)}getState(){return this.state}getEasing(){return this.easing}getAnimationDuration(){return this.animationDuration}tick(t){if(this.getState()===vz)return this.state=xz,this.beginStartedTime=t,this.animationBegin;if(this.getState()===xz){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=bz,this.animationStartedTime=t,this.nextAnimationUpdate(0)):VN(this.animationBegin-r)}if(this.getState()===bz){if(this.animationStartedTime==null)throw new Error;var n=t-this.animationStartedTime;return this.setProgress(n/this.animationDuration),this.nextAnimationUpdate(n)}return 0}setProgress(t){this.progress=Math.min(1,Math.max(0,t))}getProgress(){return this.progress}complete(){if(this.progress=1,this.state==="active"){var t;(t=this.onAnimationEnd)===null||t===void 0||t.call(this)}this.state=tae}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},rw=class extends GN{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(pr(this.getFrom(),this.getTo(),this.getProgress()))}};var nw=class{setTimeout(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),o=null,a=i=>{i-n>=r?t(i):o=requestAnimationFrame(a)};return o=requestAnimationFrame(a),()=>{o!=null&&cancelAnimationFrame(o)}}};function rae(e,t){return iae(e)||aae(e,t)||oae(e,t)||nae()}function nae(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function oae(e,t){if(e){if(typeof e=="string")return wz(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?wz(e,t):void 0}}function wz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},Sz=0,YN=1;function ow(e){var t=Ut(e,sae),r=t.animationId,n=t.isActive,o=t.canBegin,a=t.duration,i=t.easing,s=t.begin,l=t.onAnimationEnd,u=t.onAnimationStart,c=t.children,d=Q1(),f=n==="auto"?!xi.isSsr&&!d:n,p=yz(t.animationController),m=(0,oy.useState)(f?Sz:YN),y=rae(m,2),x=y[0],h=y[1];return(0,oy.useEffect)(()=>{f||h(YN)},[f]),(0,oy.useEffect)(()=>{var g=mz(i);if(!f||!o||g==null)return Jo;var v=new nw,b=new rw({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:Sz,to:YN});return p(v,b,h)},[p,r,f,o,a,i,s,u,l]),c(Number(x))}var XN=G(Y());function aw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,XN.useRef)(ul(t)),n=(0,XN.useRef)(e);return n.current!==e&&(r.current=ul(t),n.current=e),r.current}var lae=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),kz=(e,t,r)=>e.map(n=>"".concat(lae(n)," ").concat(t,"ms ").concat(r)).join(",");var uae=["radius"],cae=["radius"],_z,Az,Cz,Ez,Nz,Tz,Oz,Pz,Mz,Dz;function Iz(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function jz(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=pi(r),i=pi(n),s=Math.min(Math.abs(a)/2,Math.abs(i)/2),l=i>=0?1:-1,u=a>=0?1:-1,c=i>=0&&a>=0||i<0&&a<0?1:0,d;if(s>0&&Array.isArray(o)){for(var f=[0,0,0,0],p=0,m=4;ps?s:x}d=Xn(_z||(_z=ks(["M",",",""])),e,t+l*f[0]),f[0]>0&&(d+=Xn(Az||(Az=ks(["A ",",",",0,0,",",",",",""])),f[0],f[0],c,e+u*f[0],t)),d+=Xn(Cz||(Cz=ks(["L ",",",""])),e+r-u*f[1],t),f[1]>0&&(d+=Xn(Ez||(Ez=ks(["A ",",",",0,0,",`, - `,",",""])),f[1],f[1],c,e+r,t+l*f[1])),d+=Xn(Nz||(Nz=ks(["L ",",",""])),e+r,t+n-l*f[2]),f[2]>0&&(d+=Xn(Tz||(Tz=ks(["A ",",",",0,0,",`, - `,",",""])),f[2],f[2],c,e+r-u*f[2],t+n)),d+=Xn(Oz||(Oz=ks(["L ",",",""])),e+u*f[3],t+n),f[3]>0&&(d+=Xn(Pz||(Pz=ks(["A ",",",",0,0,",`, - `,",",""])),f[3],f[3],c,e,t+n-l*f[3])),d+="Z"}else if(s>0&&o===+o&&o>0){var h=Math.min(s,o);d=Xn(Mz||(Mz=ks(["M ",",",` + height and width.`,D,z,a,i,l,u,r),ad.createElement("div",rw({id:m?"".concat(m):void 0,className:ut("recharts-responsive-container",y),style:L6(L6({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:x},v),ad.createElement("div",{style:D6({width:a,height:i})},ad.createElement(F6,{width:D,height:z},d)))}),ju=(0,Yn.forwardRef)((e,t)=>{var r=ly();if(ba(r.width)&&ba(r.height))return e.children;var n=j6({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=XN(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return Oe(s)&&Oe(l)?ad.createElement(F6,{width:s,height:l},e.children):ad.createElement(Dne,rw({},e,{width:o,height:a,ref:t}))});var id=()=>{var e,t=vr(),r=Pe(ew),n=Pe(od),o=(e=Pe(Gp))===null||e===void 0?void 0:e.padding;return!t||!n||!o?r:{width:n.width-o.left-o.right,height:n.height-o.top-o.bottom,x:o.left,y:o.top}},jne={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},nw=()=>{var e;return(e=Pe(Nr))!==null&&e!==void 0?e:jne},Xp=()=>Pe(wo),Zp=()=>Pe(So),W6=()=>Pe(e=>e.layout.margin),_t=e=>e.layout.layoutType,Sa=()=>Pe(_t),Jp=()=>{var e=Sa();if(e==="horizontal"||e==="vertical")return e},ow=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},H6=()=>Pe(ow),K6=()=>{var e=Sa();return e!==void 0},sd=e=>{var t=wt(),r=vr(),n=e.width,o=e.height,a=ly(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,U6.useEffect)(()=>{!r&&ba(i)&&ba(s)&&t(x6({width:i,height:s}))},[t,r,i,s]),null};var $ne={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},q6=yr({name:"legend",initialState:$ne,reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter,e.settings.position=t.payload.position,e.settings.offset=t.payload.offset},addLegendPayload:{reducer(e,t){e.payload.push(Lt(t.payload))},prepare:kr()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Mo(e).payload.indexOf(Lt(n));a>-1&&(e.payload[a]=Lt(o))},prepare:kr()},removeLegendPayload:{reducer(e,t){var r=Mo(e).payload.indexOf(Lt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:kr()}}}),uy=q6.actions,ZN=uy.setLegendSize,V6=uy.setLegendSettings,JN=uy.addLegendPayload,QN=uy.replaceLegendPayload,RN=uy.removeLegendPayload;var G6=q6.reducer;var An=V(Y(),1),coe=V(J6(),1);var Kne=Symbol.for("react.forward_ref");var qne=Symbol.for("react.memo");var Vne=Kne,Gne=qne;function Yne(e){e()}function Xne(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Yne(()=>{let r=e;for(;r;)r.callback(),r=r.next})},get(){let r=[],n=e;for(;n;)r.push(n),n=n.next;return r},subscribe(r){let n=!0,o=t={callback:r,next:null,prev:t};return o.prev?o.prev.next=o:e=o,function(){!n||e===null||(n=!1,o.next?o.next.prev=o.prev:t=o.prev,o.prev?o.prev.next=o.next:e=o.next)}}}}var Q6={notify(){},get:()=>[]};function Zne(e,t){let r,n=Q6,o=0,a=!1;function i(y){c();let b=n.subscribe(y),h=!1;return()=>{h||(h=!0,b(),d())}}function s(){n.notify()}function l(){m.onStateChange&&m.onStateChange()}function u(){return a}function c(){o++,r||(r=t?t.addNestedSub(l):e.subscribe(l),n=Xne())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=Q6)}function f(){a||(a=!0,c())}function p(){a&&(a=!1,d())}let m={addNestedSub:i,notifyNestedSubs:s,handleChangeWrapper:l,isSubscribed:u,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>n};return m}var Jne=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Qne=Jne(),Rne=()=>typeof navigator<"u"&&navigator.product==="ReactNative",eoe=Rne(),toe=()=>Qne||eoe?An.useLayoutEffect:An.useEffect,roe=toe();function R6(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function ez(e,t){if(R6(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let o=0;o{let l=Zne(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=An.useMemo(()=>o.getState(),[o]);return roe(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),An.createElement((r||loe).Provider,{value:a},t)}var tz=uoe;var doe=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function foe(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function ka(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(doe.has(n)){if(e[n]==null&&t[n]==null)continue;if(!ez(e[n],t[n]))return!1}else if(!foe(e[n],t[n]))return!1;return!0}var rz=te([wo,So,Hp],(e,t,r)=>({x:r.left||0,y:r.top||0,width:Math.max(e-(r.left||0)-(r.right||0),0),height:Math.max(t-(r.top||0)-(r.bottom||0),0)}));function nz(e,t){var r;if(e==="start"&&t==="start")return"";var n={start:"0",middle:"-50%",end:"-100%"},o={start:"0",middle:"-50%",end:"-100%"},a=e==="inherit"?"0":n[e],i=(r=o[t])!==null&&r!==void 0?r:"0";return"translate(".concat(a,", ").concat(i,")")}var poe=["contextPayload"];function eT(){return eT=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{s(V6({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function Poe(e){var t=e.width,r=e.height,n=wt();return(0,aw.useLayoutEffect)(()=>{n(ZN({width:t,height:r}))},[n,t,r]),(0,aw.useLayoutEffect)(()=>()=>{n(ZN({width:0,height:0}))},[n]),null}function Moe(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var Ioe={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function Doe(e){var t,r,n,o,a,i,s,l,u=Kt(e,Ioe),c=e.layout&&e.layout!=="auto"?e.layout:Aoe(u.position),d=SL(),f=l$(),p=W6(),m=Pe(I=>Eoe(I,u.position)),y=u.width,b=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||Vh(u.position)),x=S1([d]),S=moe(x,2),w=S[0],A=S[1],k=Xp(),_=Zp();if(k==null||_==null||u.position!=null&&m==null)return null;var C=k-(p?.left||0)-(p?.right||0),E=Moe(c,b,y,C),j=u.position==null?null:$b({viewBox:m??{x:0,y:0,width:k,height:_},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),F=Noe(u.position,(r=u.offset)!==null&&r!==void 0?r:0,w),D=c==="vertical"?((n=m?.width)!==null&&n!==void 0?n:0)/2:(o=m?.width)!==null&&o!==void 0?o:0,z=c==="horizontal"?((a=m?.height)!==null&&a!==void 0?a:0)/2:(i=m?.height)!==null&&i!==void 0?i:0,N=j?{width:"max-content",height:"max-content",maxWidth:D,maxHeight:z,overflowY:"auto",top:j.y+((s=F.top)!==null&&s!==void 0?s:0),left:j.x+((l=F.left)!==null&&l!==void 0?l:0),transform:nz(j.horizontalAnchor,j.verticalAnchor)}:Toe(h,u,p,k,_,w),O=g?h:Qp(Qp({position:"absolute",width:E?.width||y||"auto",height:E?.height||b||"auto"},N),h),$=g??f;if($==null||d==null)return null;var T=Ja.createElement("div",{className:"recharts-legend-wrapper",style:O,ref:A},Ja.createElement(Ooe,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&Ja.createElement(Poe,w),Ja.createElement(Coe,eT({},u,{layout:c},E,{margin:p,chartWidth:k,chartHeight:_,contextPayload:d})));return(0,iz.createPortal)(T,$)}var iw=Ja.memo(Doe,ka);iw.displayName="Legend";var Mi=V(Y()),DF=V(Y()),jF=V(qg());var ts=V(Y());function tT(){return tT=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.separator,r=t===void 0?Rp.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?Rp.labelStyle:a,s=e.payload,l=e.formatter,u=e.itemSorter,c=e.wrapperClassName,d=e.labelClassName,f=e.label,p=e.labelFormatter,m=e.accessibilityLayer,y=m===void 0?Rp.accessibilityLayer:m,b=()=>{if(s&&s.length){var k={padding:0,margin:0},_=Koe(s,u),C=_.map((E,j)=>{if(!E||E.type==="none")return null;var F=E.formatter||l||Hoe,D=E.value,z=E.name,N=D,O=z;if(F){var $=F(D,z,E,j,s);if(Array.isArray($)){var T=zoe($,2);N=T[0],O=T[1]}else if($!=null)N=$;else return null}var I=dy(dy({},Rp.itemStyle),{},{color:E.color||Rp.itemStyle.color},o);return ts.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(j),style:I},ra(O)?ts.createElement("span",{className:"recharts-tooltip-item-name"},O):null,ra(O)?ts.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,ts.createElement("span",{className:"recharts-tooltip-item-value"},N),ts.createElement("span",{className:"recharts-tooltip-item-unit"},E.unit||""))});return ts.createElement("ul",{className:"recharts-tooltip-item-list",style:k},C)}return null},h=dy(dy({},Rp.contentStyle),n),g=dy({margin:0},i),v=!Yt(f),x=v?f:"",S=ut("recharts-default-tooltip",c),w=ut("recharts-tooltip-label",d);v&&p&&s!==void 0&&s!==null&&(x=p(f,s));var A=y?{role:"status","aria-live":"assertive"}:{};return ts.createElement("div",tT({className:S,style:h},A),ts.createElement("p",{className:w,style:g},ts.isValidElement(x)?x:"".concat(x)),b())};var $u=V(Y());var fy="recharts-tooltip-wrapper",qoe={visibility:"hidden"};function Voe(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return ut(fy,{["".concat(fy,"-right")]:Oe(r)&&t&&Oe(t.x)&&r>=t.x,["".concat(fy,"-left")]:Oe(r)&&t&&Oe(t.x)&&r=t.y,["".concat(fy,"-top")]:Oe(n)&&t&&Oe(t.y)&&n0?o:0),d=r[n]+o;if(t[n])return i[n]?c:d;var f=l[n];if(f==null)return 0;if(i[n]){var p=c,m=f;return pb?Math.max(c,f):Math.max(d,f)}function Goe(e){var t=e.translateX,r=e.translateY,n=e.useTranslate3d;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}function dz(e){var t=e.allowEscapeViewBox,r=e.coordinate,n=e.offsetTop,o=e.offsetLeft,a=e.position,i=e.reverseDirection,s=e.tooltipBox,l=e.useTranslate3d,u=e.viewBox,c,d,f;return s&&s.height>0&&s.width>0&&r?(d=cz({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),f=cz({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=Goe({translateX:d,translateY:f,useTranslate3d:l})):c=qoe,{cssProperties:c,cssClasses:Voe({translateX:d,translateY:f,coordinate:r})}}var sw=V(Y());var Yoe=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),Ai={devToolsEnabled:!0,isSsr:Yoe()};function Xoe(e,t){return Roe(e)||Qoe(e,t)||Joe(e,t)||Zoe()}function Zoe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Joe(e,t){if(e){if(typeof e=="string")return fz(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?fz(e,t):void 0}}function fz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rAi.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=Xoe(e,2),r=t[0],n=t[1];return(0,sw.useEffect)(()=>{if(window.matchMedia){var o=window.matchMedia("(prefers-reduced-motion: reduce)"),a=()=>{n(o.matches)};return o.addEventListener("change",a),()=>{o.removeEventListener("change",a)}}},[]),r}function pz(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function em(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}})),u=nae(l,2),c=u[0],d=u[1];$u.useEffect(()=>{var h=g=>{if(g.key==="Escape"){var v,x,S,w;d({dismissed:!0,dismissedAtCoordinate:{x:(v=(x=e.coordinate)===null||x===void 0?void 0:x.x)!==null&&v!==void 0?v:0,y:(S=(w=e.coordinate)===null||w===void 0?void 0:w.y)!==null&&S!==void 0?S:0}})}};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[(t=e.coordinate)===null||t===void 0?void 0:t.x,(r=e.coordinate)===null||r===void 0?void 0:r.y]),c.dismissed&&(((n=(o=e.coordinate)===null||o===void 0?void 0:o.x)!==null&&n!==void 0?n:0)!==c.dismissedAtCoordinate.x||((a=(i=e.coordinate)===null||i===void 0?void 0:i.y)!==null&&a!==void 0?a:0)!==c.dismissedAtCoordinate.y)&&d(em(em({},c),{},{dismissed:!1}));var f=dz({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset=="number"?e.offset:e.offset.x,offsetTop:typeof e.offset=="number"?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:e.lastBoundingBox,useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),p=f.cssClasses,m=f.cssProperties,y=e.hasPortalFromProps?{}:em(em({transition:lae({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),b=em(em({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return $u.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:p,style:b,ref:e.innerRef},e.children)}var gz=$u.memo(uae);var uw=()=>{var e;return(e=Pe(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var XS=V(Y()),Nm=V(Y());var wz=V(Y());function rT(){return rT=Object.assign?Object.assign.bind():function(e){for(var t=1;tht(e.x)&&ht(e.y),xz=e=>e.base!=null&&cw(e.base)&&cw(e),py=e=>e.x,my=e=>e.y,pae=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(vl(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=vz["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return vz[r]||Mu},bz={connectNulls:!1,type:"linear"},mae=e=>{var t=e.type,r=t===void 0?bz.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?bz.connectNulls:s,u=pae(r,i),c=l?o.filter(cw):o;if(Array.isArray(a)){var d,f=o.map((h,g)=>yz(yz({},h),{},{base:a[g]}));i==="vertical"?d=Np().y(my).x1(py).x0(h=>h.base.x):d=Np().x(py).y1(my).y0(h=>h.base.y);var p=d.defined(xz).curve(u),m=l?f.filter(xz):f;return p(m)}var y;i==="vertical"&&Oe(a)?y=Np().y(my).x1(py).x0(a):Oe(a)?y=Np().x(py).y1(my).y0(a):y=Yh().x(py).y(my);var b=y.defined(cw).curve(u);return b(c)},Os=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=Sa();if((!r||!r.length)&&!n)return null;var i={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=r&&r.length?mae(i):n;return wz.createElement("path",rT({},en(e),Ip(e),{className:ut("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var kz=V(Y());var gae=["x","y","top","left","width","height","className"];function nT(){return nT=Object.assign?Object.assign.bind():function(e){for(var t=1;t"M".concat(e,",").concat(o,"v").concat(n,"M").concat(a,",").concat(t,"h").concat(r),_z=e=>{var t=e.x,r=t===void 0?0:t,n=e.y,o=n===void 0?0:n,a=e.top,i=a===void 0?0:a,s=e.left,l=s===void 0?0:s,u=e.width,c=u===void 0?0:u,d=e.height,f=d===void 0?0:d,p=e.className,m=bae(e,gae),y=hae({x:r,y:o,top:i,left:l,width:c,height:f},m);return!Oe(r)||!Oe(o)||!Oe(c)||!Oe(f)||!Oe(i)||!Oe(l)?null:kz.createElement("path",nT({},tn(y),{className:ut("recharts-cross",p),d:Sae(r,o,c,f,i,l)}))};function Cz(e,t,r,n){var o=n/2;return{stroke:"none",fill:"#ccc",x:e==="horizontal"?t.x-o:r.left+.5,y:e==="horizontal"?r.top+.5:t.y-o,width:e==="horizontal"?n:r.width-1,height:e==="horizontal"?r.height-1:n}}var hw=V(Y()),Ei=V(Y());var gy=V(Y());var dw=1e-4,Nz=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],Tz=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),Az=(e,t)=>r=>{var n=Nz(e,t);return Tz(n,r)},kae=(e,t)=>r=>{var n=Nz(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return Tz(o,r)},_ae=e=>{var t,r=e.split("(");if(r.length!==2||r[0]!=="cubic-bezier")return null;var n=(t=r[1])===null||t===void 0||(t=t.split(")")[0])===null||t===void 0?void 0:t.split(",");if(n==null||n.length!==4)return null;var o=n.map(a=>parseFloat(a));return[o[0],o[1],o[2],o[3]]},Cae=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=Az(e,r),a=Az(t,n),i=kae(e,r),s=u=>u>1?1:u<0?0:u,l=u=>{for(var c=u>1?1:u,d=c,f=0;f<8;++f){var p=o(d)-c,m=i(d);if(Math.abs(p-c)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,o=t.damping,a=o===void 0?8:o,i=t.dt,s=i===void 0?16.67:i,l=1,u=[0],c=0,d=0,f=1e4,p=0;p{var g,v,x;if(h<=0)return 0;if(h>=1)return l;var S=h*b,w=Math.floor(S),A=S-w;return((g=u[w])!==null&&g!==void 0?g:0)+(((v=u[w+1])!==null&&v!==void 0?v:0)-((x=u[w])!==null&&x!==void 0?x:0))*A}},Oz=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return Ez(e);case"spring":return Eae();default:if(e.split("(")[0]==="cubic-bezier")return Ez(e)}return typeof e=="function"?e:null};var tm=V(Y());var Pz=(e,t,r)=>{var n,o=a=>{var i=t.tick(a);if(t.getState()==="active"){if(r(t.getInterpolated()),t.getProgress()===1){t.complete(),n=void 0;return}n=e.setTimeout(o,i);return}n=e.setTimeout(o,i)};return n=e.setTimeout(o,0),()=>{var a;return(a=n)===null||a===void 0?void 0:a()}};var Mz=(0,tm.createContext)(Pz),MTe=Mz.Provider;function Iz(e){var t=(0,tm.useContext)(Mz);return(0,tm.useMemo)(()=>e??t,[e,t])}function Nae(e,t,r){return(t=Tae(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Tae(e){var t=Oae(e,"string");return typeof t=="symbol"?t:t+""}function Oae(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Dz="init",jz="pending",$z="active",Pae="completed";function oT(e){return Math.max(0,e)}var aT=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;Nae(this,"state",Dz),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=oT(t.animationDuration),this.animationBegin=oT(t.animationBegin),this.progress=0,this.from=t.from,this.to=t.to,this.easing=t.easing,(r=t.onAnimationStart)===null||r===void 0||r.call(t)}getState(){return this.state}getEasing(){return this.easing}getAnimationDuration(){return this.animationDuration}tick(t){if(this.getState()===Dz)return this.state=jz,this.beginStartedTime=t,this.animationBegin;if(this.getState()===jz){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=$z,this.animationStartedTime=t,this.nextAnimationUpdate(0)):oT(this.animationBegin-r)}if(this.getState()===$z){if(this.animationStartedTime==null)throw new Error;var n=t-this.animationStartedTime;return this.setProgress(n/this.animationDuration),this.nextAnimationUpdate(n)}return 0}setProgress(t){this.progress=Math.min(1,Math.max(0,t))}getProgress(){return this.progress}complete(){if(this.progress=1,this.state==="active"){var t;(t=this.onAnimationEnd)===null||t===void 0||t.call(this)}this.state=Pae}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},fw=class extends aT{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(hr(this.getFrom(),this.getTo(),this.getProgress()))}};var pw=class{setTimeout(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),o=null,a=i=>{i-n>=r?t(i):o=requestAnimationFrame(a)};return o=requestAnimationFrame(a),()=>{o!=null&&cancelAnimationFrame(o)}}};function Mae(e,t){return $ae(e)||jae(e,t)||Dae(e,t)||Iae()}function Iae(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Dae(e,t){if(e){if(typeof e=="string")return Lz(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Lz(e,t):void 0}}function Lz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},zz=0,iT=1;function mw(e){var t=Kt(e,Lae),r=t.animationId,n=t.isActive,o=t.canBegin,a=t.duration,i=t.easing,s=t.begin,l=t.onAnimationEnd,u=t.onAnimationStart,c=t.children,d=lw(),f=n==="auto"?!Ai.isSsr&&!d:n,p=Iz(t.animationController),m=(0,gy.useState)(f?zz:iT),y=Mae(m,2),b=y[0],h=y[1];return(0,gy.useEffect)(()=>{f||h(iT)},[f]),(0,gy.useEffect)(()=>{var g=Oz(i);if(!f||!o||g==null)return na;var v=new pw,x=new fw({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:zz,to:iT});return p(v,x,h)},[p,r,f,o,a,i,s,u,l]),c(Number(b))}var sT=V(Y());function gw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,sT.useRef)(yl(t)),n=(0,sT.useRef)(e);return n.current!==e&&(r.current=yl(t),n.current=e),r.current}var zae=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),Bz=(e,t,r)=>e.map(n=>"".concat(zae(n)," ").concat(t,"ms ").concat(r)).join(",");var Bae=["radius"],Fae=["radius"],Fz,Uz,Wz,Hz,Kz,qz,Vz,Gz,Yz,Xz;function Zz(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Jz(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=bi(r),i=bi(n),s=Math.min(Math.abs(a)/2,Math.abs(i)/2),l=i>=0?1:-1,u=a>=0?1:-1,c=i>=0&&a>=0||i<0&&a<0?1:0,d;if(s>0&&Array.isArray(o)){for(var f=[0,0,0,0],p=0,m=4;ps?s:b}d=to(Fz||(Fz=Ps(["M",",",""])),e,t+l*f[0]),f[0]>0&&(d+=to(Uz||(Uz=Ps(["A ",",",",0,0,",",",",",""])),f[0],f[0],c,e+u*f[0],t)),d+=to(Wz||(Wz=Ps(["L ",",",""])),e+r-u*f[1],t),f[1]>0&&(d+=to(Hz||(Hz=Ps(["A ",",",",0,0,",`, + `,",",""])),f[1],f[1],c,e+r,t+l*f[1])),d+=to(Kz||(Kz=Ps(["L ",",",""])),e+r,t+n-l*f[2]),f[2]>0&&(d+=to(qz||(qz=Ps(["A ",",",",0,0,",`, + `,",",""])),f[2],f[2],c,e+r-u*f[2],t+n)),d+=to(Vz||(Vz=Ps(["L ",",",""])),e+u*f[3],t+n),f[3]>0&&(d+=to(Gz||(Gz=Ps(["A ",",",",0,0,",`, + `,",",""])),f[3],f[3],c,e,t+n-l*f[3])),d+="Z"}else if(s>0&&o===+o&&o>0){var h=Math.min(s,o);d=to(Yz||(Yz=Ps(["M ",",",` A `,",",",0,0,",",",",",` L `,",",` A `,",",",0,0,",",",",",` L `,",",` A `,",",",0,0,",",",",",` L `,",",` - A `,",",",0,0,",",",","," Z"])),e,t+l*h,h,h,c,e+u*h,t,e+r-u*h,t,h,h,c,e+r,t+l*h,e+r,t+n-l*h,h,h,c,e+r-u*h,t+n,e+u*h,t+n,h,h,c,e,t+n-l*h)}else d=Xn(Dz||(Dz=ks(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},Bz={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},lw=e=>{var t=Ut(e,Bz),r=(0,bi.useRef)(null),n=(0,bi.useState)(-1),o=gae(n,2),a=o[0],i=o[1];(0,bi.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var E=r.current.getTotalLength();E&&i(E)}catch{}},[]);var s=t.x,l=t.y,u=t.width,c=t.height,d=t.radius,f=t.className,p=t.animationEasing,m=t.animationDuration,y=t.animationBegin,x=t.isAnimationActive,h=t.isUpdateAnimationActive,g=(0,bi.useRef)(u),v=(0,bi.useRef)(c),b=(0,bi.useRef)(s),_=(0,bi.useRef)(l),w=(0,bi.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),C=aw(w,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var S=lt("recharts-rectangle",f);if(!h){var k=Jr(t),A=k.radius,O=$z(k,uae);return iw.createElement("path",sw({},O,{x:pi(s),y:pi(l),width:pi(u),height:pi(c),radius:typeof d=="number"?d:void 0,className:S,d:zz(s,l,u,c,d)}))}var $=g.current,F=v.current,P=b.current,z=_.current,N="0px ".concat(a===-1?1:a,"px"),D="".concat(a,"px ").concat(a,"px"),T=kz(["strokeDasharray"],m,typeof p=="string"?p:Bz.animationEasing);return iw.createElement(ow,{animationId:C,key:C,canBegin:a>0,duration:m,easing:p,isActive:h,begin:y},E=>{var I=pr($,u,E),j=pr(F,c,E),q=pr(P,s,E),te=pr(z,l,E);r.current&&(g.current=I,v.current=j,b.current=q,_.current=te);var K;x?E>0?K={transition:T,strokeDasharray:D}:K={strokeDasharray:N}:K={strokeDasharray:D};var le=Jr(t),pe=le.radius,re=$z(le,cae);return iw.createElement("path",sw({},re,{radius:typeof d=="number"?d:void 0,className:S,d:zz(q,te,I,j,d),ref:r,style:jz(jz({},K),t.style)}))})};function Fz(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Uz(e){for(var t=1;te*180/Math.PI,zr=(e,t,r,n)=>({x:e+Math.cos(-ay*n)*r,y:t+Math.sin(-ay*n)*r}),uw=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(t-(n.left||0)-(n.right||0)),Math.abs(r-(n.top||0)-(n.bottom||0)))/2},_ae=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},Aae=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=_ae({x:r,y:n},{x:o,y:a});if(i<=0)return{radius:i,angle:0};var s=(r-o)/i,l=Math.acos(s);return n>a&&(l=2*Math.PI-l),{radius:i,angle:kae(l),angleInRadian:l}},Cae=e=>{var t=e.startAngle,r=e.endAngle,n=Math.floor(t/360),o=Math.floor(r/360),a=Math.min(n,o);return{startAngle:t-a*360,endAngle:r-a*360}},Eae=(e,t)=>{var r=t.startAngle,n=t.endAngle,o=Math.floor(r/360),a=Math.floor(n/360),i=Math.min(o,a);return e+i*360},Wz=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=Aae({x:r,y:n},t),a=o.radius,i=o.angle,s=t.innerRadius,l=t.outerRadius;if(al||a===0)return null;var u=Cae(t),c=u.startAngle,d=u.endAngle,f=i,p;if(c<=d){for(;f>d;)f-=360;for(;f=c&&f<=d}else{for(;f>c;)f-=360;for(;f=d&&f<=c}return p?Uz(Uz({},t),{},{radius:a,angle:Eae(f,t)}):null};function cw(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=zr(t,r,n,o),s=zr(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var Zz=G(Y());var Hz,Kz,qz,Vz,Gz,Yz,Xz;function ZN(){return ZN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Mr(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},dw=e=>{var t=e.cx,r=e.cy,n=e.radius,o=e.angle,a=e.sign,i=e.isExternal,s=e.cornerRadius,l=e.cornerIsExternal,u=s*(i?1:-1)+n,c=Math.asin(s/u)/ay,d=l?o:o+a*c,f=zr(t,r,u,d),p=zr(t,r,n,d),m=l?o-a*c:o,y=zr(t,r,u*Math.cos(c*ay),m);return{center:f,circleTangency:p,lineTangency:y,theta:c}},Jz=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=Nae(a,i),l=a+s,u=zr(t,r,o,a),c=zr(t,r,o,l),d=Xn(Hz||(Hz=ed(["M ",",",` + A `,",",",0,0,",",",","," Z"])),e,t+l*h,h,h,c,e+u*h,t,e+r-u*h,t,h,h,c,e+r,t+l*h,e+r,t+n-l*h,h,h,c,e+r-u*h,t+n,e+u*h,t+n,h,h,c,e,t+n-l*h)}else d=to(Xz||(Xz=Ps(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},tB={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},vw=e=>{var t=Kt(e,tB),r=(0,Ei.useRef)(null),n=(0,Ei.useState)(-1),o=qae(n,2),a=o[0],i=o[1];(0,Ei.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var T=r.current.getTotalLength();T&&i(T)}catch{}},[]);var s=t.x,l=t.y,u=t.width,c=t.height,d=t.radius,f=t.className,p=t.animationEasing,m=t.animationDuration,y=t.animationBegin,b=t.isAnimationActive,h=t.isUpdateAnimationActive,g=(0,Ei.useRef)(u),v=(0,Ei.useRef)(c),x=(0,Ei.useRef)(s),S=(0,Ei.useRef)(l),w=(0,Ei.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),A=gw(w,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var k=ut("recharts-rectangle",f);if(!h){var _=tn(t),C=_.radius,E=Qz(_,Bae);return hw.createElement("path",yw({},E,{x:bi(s),y:bi(l),width:bi(u),height:bi(c),radius:typeof d=="number"?d:void 0,className:k,d:eB(s,l,u,c,d)}))}var j=g.current,F=v.current,D=x.current,z=S.current,N="0px ".concat(a===-1?1:a,"px"),O="".concat(a,"px ").concat(a,"px"),$=Bz(["strokeDasharray"],m,typeof p=="string"?p:tB.animationEasing);return hw.createElement(mw,{animationId:A,key:A,canBegin:a>0,duration:m,easing:p,isActive:h,begin:y},T=>{var I=hr(j,u,T),P=hr(F,c,T),H=hr(D,s,T),Q=hr(z,l,T);r.current&&(g.current=I,v.current=P,x.current=H,S.current=Q);var K;b?T>0?K={transition:$,strokeDasharray:O}:K={strokeDasharray:N}:K={strokeDasharray:O};var ue=tn(t),pe=ue.radius,re=Qz(ue,Fae);return hw.createElement("path",yw({},re,{radius:typeof d=="number"?d:void 0,className:k,d:eB(H,Q,I,P,d),ref:r,style:Jz(Jz({},K),t.style)}))})};function rB(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function nB(e){for(var t=1;te*180/Math.PI,Wr=(e,t,r,n)=>({x:e+Math.cos(-hy*n)*r,y:t+Math.sin(-hy*n)*r}),xw=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(t-(n.left||0)-(n.right||0)),Math.abs(r-(n.top||0)-(n.bottom||0)))/2},eie=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},tie=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=eie({x:r,y:n},{x:o,y:a});if(i<=0)return{radius:i,angle:0};var s=(r-o)/i,l=Math.acos(s);return n>a&&(l=2*Math.PI-l),{radius:i,angle:Rae(l),angleInRadian:l}},rie=e=>{var t=e.startAngle,r=e.endAngle,n=Math.floor(t/360),o=Math.floor(r/360),a=Math.min(n,o);return{startAngle:t-a*360,endAngle:r-a*360}},nie=(e,t)=>{var r=t.startAngle,n=t.endAngle,o=Math.floor(r/360),a=Math.floor(n/360),i=Math.min(o,a);return e+i*360},oB=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=tie({x:r,y:n},t),a=o.radius,i=o.angle,s=t.innerRadius,l=t.outerRadius;if(al||a===0)return null;var u=rie(t),c=u.startAngle,d=u.endAngle,f=i,p;if(c<=d){for(;f>d;)f-=360;for(;f=c&&f<=d}else{for(;f>c;)f-=360;for(;f=d&&f<=c}return p?nB(nB({},t),{},{radius:a,angle:nie(f,t)}):null};function bw(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=Wr(t,r,n,o),s=Wr(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var fB=V(Y());var aB,iB,sB,lB,uB,cB,dB;function lT(){return lT=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=jr(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},ww=e=>{var t=e.cx,r=e.cy,n=e.radius,o=e.angle,a=e.sign,i=e.isExternal,s=e.cornerRadius,l=e.cornerIsExternal,u=s*(i?1:-1)+n,c=Math.asin(s/u)/hy,d=l?o:o+a*c,f=Wr(t,r,u,d),p=Wr(t,r,n,d),m=l?o-a*c:o,y=Wr(t,r,u*Math.cos(c*hy),m);return{center:f,circleTangency:p,lineTangency:y,theta:c}},pB=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=oie(a,i),l=a+s,u=Wr(t,r,o,a),c=Wr(t,r,o,l),d=to(aB||(aB=ld(["M ",",",` A `,",",`,0, `,",",`, `,",",` - `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var f=zr(t,r,n,a),p=zr(t,r,n,l);d+=Xn(Kz||(Kz=ed(["L ",",",` + `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var f=Wr(t,r,n,a),p=Wr(t,r,n,l);d+=to(iB||(iB=ld(["L ",",",` A `,",",`,0, `,",",`, - `,","," Z"])),p.x,p.y,n,n,+(Math.abs(s)>180),+(a<=l),f.x,f.y)}else d+=Xn(qz||(qz=ed(["L ",","," Z"])),t,r);return d},Tae=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.cornerRadius,i=e.forceCornerRadius,s=e.cornerIsExternal,l=e.startAngle,u=e.endAngle,c=Mr(u-l),d=dw({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),f=d.circleTangency,p=d.lineTangency,m=d.theta,y=dw({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),x=y.circleTangency,h=y.lineTangency,g=y.theta,v=s?Math.abs(l-u):Math.abs(l-u)-m-g;if(v<0)return i?Xn(Vz||(Vz=ed(["M ",",",` + `,","," Z"])),p.x,p.y,n,n,+(Math.abs(s)>180),+(a<=l),f.x,f.y)}else d+=to(sB||(sB=ld(["L ",","," Z"])),t,r);return d},aie=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.cornerRadius,i=e.forceCornerRadius,s=e.cornerIsExternal,l=e.startAngle,u=e.endAngle,c=jr(u-l),d=ww({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),f=d.circleTangency,p=d.lineTangency,m=d.theta,y=ww({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),b=y.circleTangency,h=y.lineTangency,g=y.theta,v=s?Math.abs(l-u):Math.abs(l-u)-m-g;if(v<0)return i?to(lB||(lB=ld(["M ",",",` a`,",",",0,0,1,",`,0 a`,",",",0,0,1,",`,0 - `])),p.x,p.y,a,a,a*2,a,a,-a*2):Jz({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var b=Xn(Gz||(Gz=ed(["M ",",",` + `])),p.x,p.y,a,a,a*2,a,a,-a*2):pB({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var x=to(uB||(uB=ld(["M ",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` A`,",",",0,0,",",",",",` - `])),p.x,p.y,a,a,+(c<0),f.x,f.y,o,o,+(v>180),+(c<0),x.x,x.y,a,a,+(c<0),h.x,h.y);if(n>0){var _=dw({cx:t,cy:r,radius:n,angle:l,sign:c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),w=_.circleTangency,C=_.lineTangency,S=_.theta,k=dw({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),A=k.circleTangency,O=k.lineTangency,$=k.theta,F=s?Math.abs(l-u):Math.abs(l-u)-S-$;if(F<0&&a===0)return"".concat(b,"L").concat(t,",").concat(r,"Z");b+=Xn(Yz||(Yz=ed(["L",",",` + `])),p.x,p.y,a,a,+(c<0),f.x,f.y,o,o,+(v>180),+(c<0),b.x,b.y,a,a,+(c<0),h.x,h.y);if(n>0){var S=ww({cx:t,cy:r,radius:n,angle:l,sign:c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),w=S.circleTangency,A=S.lineTangency,k=S.theta,_=ww({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),C=_.circleTangency,E=_.lineTangency,j=_.theta,F=s?Math.abs(l-u):Math.abs(l-u)-k-j;if(F<0&&a===0)return"".concat(x,"L").concat(t,",").concat(r,"Z");x+=to(cB||(cB=ld(["L",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` - A`,",",",0,0,",",",",","Z"])),O.x,O.y,a,a,+(c<0),A.x,A.y,n,n,+(F>180),+(c>0),w.x,w.y,a,a,+(c<0),C.x,C.y)}else b+=Xn(Xz||(Xz=ed(["L",",","Z"])),t,r);return b},Oae={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},fw=e=>{var t=Ut(e,Oae),r=t.cx,n=t.cy,o=t.innerRadius,a=t.outerRadius,i=t.cornerRadius,s=t.forceCornerRadius,l=t.cornerIsExternal,u=t.startAngle,c=t.endAngle,d=t.className;if(a0&&Math.abs(u-c)<360?y=Tae({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=Jz({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),Zz.createElement("path",ZN({},Jr(t),{className:f,d:y}))};function Qz(e,t,r){if(e==="horizontal")return[{x:t.x,y:r.top},{x:t.x,y:r.top+r.height}];if(e==="vertical")return[{x:r.left,y:t.y},{x:r.left+r.width,y:t.y}];if(Ib(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=zr(n,o,a,s),u=zr(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return cw(t)}}function Rz(e){return c1(e)?NaN:Number(e)}function pw(e){return e?(e=Rz(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function mw(e,t,r){r&&typeof r!="number"&&Hh(e,t,r)&&(t=r=void 0),e=pw(e),t===void 0?(t=e,e=0):t=pw(t),r=r===void 0?ee.chartData,td=ee([va],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),rd=(e,t,r,n)=>n?td(e):va(e),gw=(e,t,r)=>r?td(e):va(e),eB=ee([rd],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),tB=ee([td],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),rB=ee([va],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function JN(e,t){return Iae(e)||Dae(e,t)||Mae(e,t)||Pae()}function Pae(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Mae(e,t){if(e){if(typeof e=="string")return nB(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?nB(e,t):void 0}}function nB(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);re.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=iy(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},rT=(e,t,r)=>{if(e.lte(0))return new lr.default(0);var n=eT(e.toNumber()),o=new lr.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new lr.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new lr.default(l.toNumber()):new lr.default(Math.ceil(l.toNumber()))},uB=(e,t,r)=>{var n;if(e.lte(0))return new lr.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new lr.default(a).abs().log(10).toNumber()),s=new lr.default(10).pow(i),l=e.div(s).toNumber(),u=o.findIndex(p=>p>=l-1e-10);if(u===-1&&(s=s.mul(10),u=0),u+=r,u>=o.length){var c=Math.floor(u/o.length);u%=o.length,s=s.mul(new lr.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,f=new lr.default(d).mul(s);return t?f:new lr.default(Math.ceil(f.toNumber()))},Bae=(e,t,r)=>{var n=new lr.default(1),o=new lr.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new lr.default(10).pow(eT(e)-1),o=new lr.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new lr.default(Math.floor(e)))}else e===0?o=new lr.default(Math.floor((t-1)/2)):r||(o=new lr.default(Math.floor(e)));for(var i=Math.floor((t-1)/2),s=[],l=0;l4&&arguments[4]!==void 0?arguments[4]:0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:rT;if(!Number.isFinite((r-t)/(n-1)))return{step:new lr.default(0),tickMin:new lr.default(0),tickMax:new lr.default(0)};var s=i(new lr.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new lr.default(0):(l=new lr.default(t).add(r).div(2),l=l.sub(new lr.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new lr.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?cB(t,r,n,o,a+1,i):(d0?c+(n-d):c,u=r>0?u:u+(n-d)),{step:s,tickMin:l.sub(new lr.default(u).mul(s)),tickMax:l.add(new lr.default(c).mul(s))})};var vw=function(t){var r=iy(t,2),n=r[0],o=r[1],a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"auto",l=Math.max(a,2),u=lB([n,o]),c=iy(u,2),d=c[0],f=c[1];if(d===-1/0||f===1/0){var p=f===1/0?[d,...Array(a-1).fill(1/0)]:[...Array(a-1).fill(-1/0),f];return n>o?p.reverse():p}if(d===f)return Bae(d,a,i);var m=s==="snap125"?uB:rT,y=cB(d,f,l,i,0,m),x=y.step,h=y.tickMin,g=y.tickMax,v=tT(h,g.add(new lr.default(.1).mul(x)),x);return n>o?v.reverse():v},xw=function(t,r){var n=iy(t,2),o=n[0],a=n[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"auto",l=lB([o,a]),u=iy(l,2),c=u[0],d=u[1];if(c===-1/0||d===1/0)return[o,a];if(c===d)return[c];var f=s==="snap125"?uB:rT,p=Math.max(r,2),m=f(new lr.default(d).sub(c).div(p-1),i,0),y=[...tT(new lr.default(c),new lr.default(d),m),d];if(i===!1){y=y.map(h=>Math.round(h));var x=y.length-1;x>0&&y[x]===y[x-1]&&(y=y.slice(0,x))}return o>a?y.reverse():y};var nT=e=>e.rootProps.maxBarSize,dB=e=>e.rootProps.barGap,bw=e=>e.rootProps.barCategoryGap,fB=e=>e.rootProps.barSize,Tu=e=>e.rootProps.stackOffset,ww=e=>e.rootProps.reverseStackOrder,qp=e=>e.options.chartName,Sw=e=>e.rootProps.syncId,oT=e=>e.rootProps.syncMethod,kw=e=>e.options.eventEmitter,pB=e=>e.rootProps.baseValue;var Vt={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3};var Ou={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:"polygon",cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:"auto",orientation:"outer",reversed:!1,scale:"auto",tick:!0,tickLine:!0,tickSize:8,type:"auto",zIndex:Vt.axis};var Yi={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:"auto",label:!1,orientation:"right",radiusAxisId:0,reversed:!1,scale:"auto",stroke:"#ccc",tick:!0,tickCount:5,tickLine:!0,type:"auto",zIndex:Vt.axis};var nd=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function od(e,t,r){if(r!=="auto")return r;if(e!=null)return Io(e,t)?"category":"number"}function mB(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function _w(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},Aw=ee([Hae,Y1],(e,t)=>{var r;if(e!=null)return e;var n=(r=od(t,"angleAxis",gB.type))!==null&&r!==void 0?r:"category";return _w(_w({},gB),{},{type:n})}),Kae=(e,t)=>e.polarAxis.radiusAxis[t],Cw=ee([Kae,Y1],(e,t)=>{var r;if(e!=null)return e;var n=(r=od(t,"radiusAxis",hB.type))!==null&&r!==void 0?r:"category";return _w(_w({},hB),{},{type:n})}),Ew=e=>e.polarOptions,aT=ee([go,ho,Ar],uw),yB=ee([Ew,aT],(e,t)=>{if(e!=null)return pn(e.innerRadius,t,0)}),vB=ee([Ew,aT],(e,t)=>{if(e!=null)return pn(e.outerRadius,t,t*.8)}),qae=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},iT=ee([Ew],qae),hOe=ee([Aw,iT],nd),sT=ee([aT,yB,vB],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),yOe=ee([Cw,sT],nd),Nw=ee([wt,Ew,yB,vB,go,ho],(e,t,r,n,o,a)=>{if(!(e!=="centric"&&e!=="radial"||t==null||r==null||n==null)){var i=t.cx,s=t.cy,l=t.startAngle,u=t.endAngle;return{cx:pn(i,o,o/2),cy:pn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var Qr=(e,t)=>t;var ad=(e,t,r)=>r;function Pu(e){return e?.id}function Tw(e,t,r){var n=t.chartData,o=n===void 0?[]:n,a=r.allowDuplicatedCategory,i=r.dataKey,s=new Map;return e.forEach(l=>{var u,c=(u=l.data)!==null&&u!==void 0?u:o;if(!(c==null||c.length===0)){var d=Pu(l);c.forEach((f,p)=>{var m=i==null||a?p:String(At(f,i,null)),y=At(f,l.dataKey,0),x;s.has(m)?x=s.get(m):x={},Object.assign(x,{[d]:y}),s.set(m,x)})}}),Array.from(s.values())}function id(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var sd=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function Vp(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function xB(e,t){if(e.length===t.length){for(var r=0;r{var t=wt(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"};var Mu=e=>e.tooltip.settings.axisId;function sy(e){if(e!=null){var t=e.ticks,r=e.bandwidth,n=e.range(),o=[Math.min(...n),Math.max(...n)];return{domain:()=>e.domain(),range:(function(a){function i(){return a.apply(this,arguments)}return i.toString=function(){return a.toString()},i})(()=>o),rangeMin:()=>o[0],rangeMax:()=>o[1],isInRange(a){var i=o[0],s=o[1];return i<=s?a>=i&&a<=s:a>=s&&a<=i},bandwidth:r?()=>r.call(e):void 0,ticks:t?a=>t.call(e,a):void 0,map:(a,i)=>{var s=e(a);if(s!=null){if(e.bandwidth&&i!==null&&i!==void 0&&i.position){var l=e.bandwidth();switch(i.position){case"middle":s+=l/2;break;case"end":s+=l;break;default:break}}return s}}}}}var Ow=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!qa(t)){for(var r,n,o=0;on)&&(n=a))}return r!==void 0&&n!==void 0?[r,n]:void 0}return t}default:return t}};var Ny={};BZ(Ny,{scaleBand:()=>dy,scaleDiverging:()=>dS,scaleDivergingLog:()=>FT,scaleDivergingPow:()=>fS,scaleDivergingSqrt:()=>U7,scaleDivergingSymlog:()=>UT,scaleIdentity:()=>Xw,scaleImplicit:()=>Lw,scaleLinear:()=>Yw,scaleLog:()=>Zw,scaleOrdinal:()=>Xp,scalePoint:()=>CB,scalePow:()=>Sy,scaleQuantile:()=>Rw,scaleQuantize:()=>eS,scaleRadial:()=>Qw,scaleSequential:()=>sS,scaleSequentialLog:()=>zT,scaleSequentialPow:()=>lS,scaleSequentialQuantile:()=>uS,scaleSequentialSqrt:()=>F7,scaleSequentialSymlog:()=>BT,scaleSqrt:()=>l7,scaleSymlog:()=>Jw,scaleThreshold:()=>tS,scaleTime:()=>$T,scaleUtc:()=>LT,tickFormat:()=>yy});function Ro(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function lT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function ld(e){let t,r,n;e.length!==2?(t=Ro,r=(s,l)=>Ro(e(s),l),n=(s,l)=>e(s)-l):(t=e===Ro||e===lT?e:Vae,r=e,n=e);function o(s,l,u=0,c=s.length){if(u>>1;r(s[d],l)<0?u=d+1:c=d}while(u>>1;r(s[d],l)<=0?u=d+1:c=d}while(uu&&n(s[d-1],l)>-n(s[d],l)?d-1:d}return{left:o,center:i,right:a}}function Vae(){return 0}function ly(e){return e===null?NaN:+e}function*bB(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var wB=ld(Ro),SB=wB.right,Gae=wB.left,Yae=ld(ly).center,Xi=SB;var Gp=class extends Map{constructor(t,r=Jae){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(kB(this,t))}has(t){return super.has(kB(this,t))}set(t,r){return super.set(Xae(this,t),r)}delete(t){return super.delete(Zae(this,t))}};function kB({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Xae({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Zae({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function Jae(e){return e!==null&&typeof e=="object"?e.valueOf():e}function _B(e=Ro){if(e===Ro)return uT;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function uT(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Qae=Math.sqrt(50),Rae=Math.sqrt(10),eie=Math.sqrt(2);function Pw(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),a=n/Math.pow(10,o),i=a>=Qae?10:a>=Rae?5:a>=eie?2:1,s,l,u;return o<0?(u=Math.pow(10,-o)/i,s=Math.round(e*u),l=Math.round(t*u),s/ut&&--l,u=-u):(u=Math.pow(10,o)*i,s=Math.round(e/u),l=Math.round(t/u),s*ut&&--l),l0))return[];if(e===t)return[e];let n=t=o))return[];let s=a-o+1,l=new Array(s);if(n)if(i<0)for(let u=0;u=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function Dw(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function Iw(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?uT:_B(o);n>r;){if(n-r>600){let l=n-r+1,u=t-r+1,c=Math.log(l),d=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*d*(l-d)/l)*(u-l/2<0?-1:1),p=Math.max(r,Math.floor(t-u*d/l+f)),m=Math.min(n,Math.floor(t+(l-u)*d/l+f));Iw(e,t,p,m,o)}let a=e[t],i=r,s=n;for(cy(e,r,t),o(e[n],a)>0&&cy(e,r,n);i0;)--s}o(e[r],a)===0?cy(e,r,s):(++s,cy(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function cy(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function jw(e,t,r){if(e=Float64Array.from(bB(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Dw(e);if(t>=1)return Mw(e);var n,o=(n-1)*t,a=Math.floor(o),i=Mw(Iw(e,a).subarray(0,a+1)),s=Dw(e.subarray(a+1));return i+(s-i)*(o-a)}}function cT(e,t,r=ly){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,a=Math.floor(o),i=+r(e[a],a,e),s=+r(e[a+1],a+1,e);return i+(s-i)*(o-a)}}function $w(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(o);++n>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Bw(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Bw(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=rie.exec(e))?new xa(t[1],t[2],t[3],1):(t=nie.exec(e))?new xa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=oie.exec(e))?Bw(t[1],t[2],t[3],t[4]):(t=aie.exec(e))?Bw(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=iie.exec(e))?DB(t[1],t[2]/100,t[3]/100,1):(t=sie.exec(e))?DB(t[1],t[2]/100,t[3]/100,t[4]):EB.hasOwnProperty(e)?OB(EB[e]):e==="transparent"?new xa(NaN,NaN,NaN,0):null}function OB(e){return new xa(e>>16&255,e>>8&255,e&255,1)}function Bw(e,t,r,n){return n<=0&&(e=t=r=NaN),new xa(e,t,r,n)}function cie(e){return e instanceof my||(e=Du(e)),e?(e=e.rgb(),new xa(e.r,e.g,e.b,e.opacity)):new xa}function Jp(e,t,r,n){return arguments.length===1?cie(e):new xa(e,t,r,n??1)}function xa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}zw(xa,Jp,dT(my,{brighter(e){return e=e==null?Uw:Math.pow(Uw,e),new xa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?fy:Math.pow(fy,e),new xa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new xa(dd(this.r),dd(this.g),dd(this.b),Ww(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:PB,formatHex:PB,formatHex8:die,formatRgb:MB,toString:MB}));function PB(){return`#${cd(this.r)}${cd(this.g)}${cd(this.b)}`}function die(){return`#${cd(this.r)}${cd(this.g)}${cd(this.b)}${cd((isNaN(this.opacity)?1:this.opacity)*255)}`}function MB(){let e=Ww(this.opacity);return`${e===1?"rgb(":"rgba("}${dd(this.r)}, ${dd(this.g)}, ${dd(this.b)}${e===1?")":`, ${e})`}`}function Ww(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function dd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function cd(e){return e=dd(e),(e<16?"0":"")+e.toString(16)}function DB(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Zi(e,t,r,n)}function jB(e){if(e instanceof Zi)return new Zi(e.h,e.s,e.l,e.opacity);if(e instanceof my||(e=Du(e)),!e)return new Zi;if(e instanceof Zi)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),a=Math.max(t,r,n),i=NaN,s=a-o,l=(a+o)/2;return s?(t===a?i=(r-n)/s+(r0&&l<1?0:i,new Zi(i,s,l,e.opacity)}function $B(e,t,r,n){return arguments.length===1?jB(e):new Zi(e,t,r,n??1)}function Zi(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}zw(Zi,$B,dT(my,{brighter(e){return e=e==null?Uw:Math.pow(Uw,e),new Zi(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fy:Math.pow(fy,e),new Zi(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new xa(fT(e>=240?e-240:e+120,o,n),fT(e,o,n),fT(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new Zi(IB(this.h),Fw(this.s),Fw(this.l),Ww(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Ww(this.opacity);return`${e===1?"hsl(":"hsla("}${IB(this.h)}, ${Fw(this.s)*100}%, ${Fw(this.l)*100}%${e===1?")":`, ${e})`}`}}));function IB(e){return e=(e||0)%360,e<0?e+360:e}function Fw(e){return Math.max(0,Math.min(1,e||0))}function fT(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}function pT(e,t,r,n,o){var a=e*e,i=a*e;return((1-3*e+3*a-i)*t+(4-6*a+3*i)*r+(1+3*e+3*a-3*i)*n+i*o)/6}function LB(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),o=e[n],a=e[n+1],i=n>0?e[n-1]:2*o-a,s=n()=>e;function fie(e,t){return function(r){return e+r*t}}function pie(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function BB(e){return(e=+e)==1?Hw:function(t,r){return r-t?pie(t,r,e):gy(isNaN(t)?r:t)}}function Hw(e,t){var r=t-e;return r?fie(e,r):gy(isNaN(e)?t:e)}var mT=(function e(t){var r=BB(t);function n(o,a){var i=r((o=Jp(o)).r,(a=Jp(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=Hw(o.opacity,a.opacity);return function(c){return o.r=i(c),o.g=s(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n})(1);function FB(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),a=new Array(r),i,s;for(i=0;ir&&(a=t.slice(r,a),s[i]?s[i]+=a:s[++i]=a),(n=n[0])===(o=o[0])?s[i]?s[i]+=o:s[++i]=o:(s[++i]=null,l.push({i,x:Iu(n,o)})),r=gT.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function yie(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?vie:yie,l=u=null,d}function d(f){return f==null||isNaN(f=+f)?a:(l||(l=s(e.map(n),t,r)))(n(i(f)))}return d.invert=function(f){return i(o((u||(u=s(t,e.map(n),Iu)))(f)))},d.domain=function(f){return arguments.length?(e=Array.from(f,ju),c()):e.slice()},d.range=function(f){return arguments.length?(t=Array.from(f),c()):t.slice()},d.rangeRound=function(f){return t=Array.from(f),r=fd,c()},d.clamp=function(f){return arguments.length?(i=f?!0:Jn,c()):i!==Jn},d.interpolate=function(f){return arguments.length?(r=f,c()):r},d.unknown=function(f){return arguments.length?(a=f,d):a},function(f,p){return n=f,o=p,c()}}function md(){return pd()(Jn,Jn)}function YB(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function gd(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Cs(e){return e=gd(Math.abs(e)),e?e[1]:NaN}function XB(e,t){return function(r,n){for(var o=r.length,a=[],i=0,s=e[0],l=0;o>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),a.push(r.substring(o-=s,o+s)),!((l+=s+1)>n));)s=e[i=(i+1)%e.length];return a.reverse().join(t)}}function ZB(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var xie=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Es(e){if(!(t=xie.exec(e)))throw new Error("invalid format: "+e);var t;return new qw({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Es.prototype=qw.prototype;function qw(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}qw.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function JB(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var hy;function QB(e,t){var r=gd(e,t);if(!r)return hy=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(hy=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,i=n.length;return a===i?n:a>i?n+new Array(a-i+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+gd(e,Math.max(0,t+a-1))[0]}function xT(e,t){var r=gd(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var bT={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:YB,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>xT(e*100,t),r:xT,s:QB,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function wT(e){return e}var RB=Array.prototype.map,e7=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function t7(e){var t=e.grouping===void 0||e.thousands===void 0?wT:XB(RB.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?wT:ZB(RB.call(e.numerals,String)),i=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d,f){d=Es(d);var p=d.fill,m=d.align,y=d.sign,x=d.symbol,h=d.zero,g=d.width,v=d.comma,b=d.precision,_=d.trim,w=d.type;w==="n"?(v=!0,w="g"):bT[w]||(b===void 0&&(b=12),_=!0,w="g"),(h||p==="0"&&m==="=")&&(h=!0,p="0",m="=");var C=(f&&f.prefix!==void 0?f.prefix:"")+(x==="$"?r:x==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():""),S=(x==="$"?n:/[%p]/.test(w)?i:"")+(f&&f.suffix!==void 0?f.suffix:""),k=bT[w],A=/[defgprs%]/.test(w);b=b===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function O($){var F=C,P=S,z,N,D;if(w==="c")P=k($)+P,$="";else{$=+$;var T=$<0||1/$<0;if($=isNaN($)?l:k(Math.abs($),b),_&&($=JB($)),T&&+$==0&&y!=="+"&&(T=!1),F=(T?y==="("?y:s:y==="-"||y==="("?"":y)+F,P=(w==="s"&&!isNaN($)&&hy!==void 0?e7[8+hy/3]:"")+P+(T&&y==="("?")":""),A){for(z=-1,N=$.length;++zD||D>57){P=(D===46?o+$.slice(z+1):$.slice(z))+P,$=$.slice(0,z);break}}}v&&!h&&($=t($,1/0));var E=F.length+$.length+P.length,I=E>1)+F+$+P+I.slice(E);break;default:$=I+F+$+P;break}return a($)}return O.toString=function(){return d+""},O}function c(d,f){var p=Math.max(-8,Math.min(8,Math.floor(Cs(f)/3)))*3,m=Math.pow(10,-p),y=u((d=Es(d),d.type="f",d),{suffix:e7[8+p/3]});return function(x){return y(m*x)}}return{format:u,formatPrefix:c}}var Vw,Qp,Gw;ST({thousands:",",grouping:[3],currency:["$",""]});function ST(e){return Vw=t7(e),Qp=Vw.format,Gw=Vw.formatPrefix,Vw}function kT(e){return Math.max(0,-Cs(Math.abs(e)))}function _T(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Cs(t)/3)))*3-Cs(Math.abs(e)))}function AT(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Cs(t)-Cs(e))+1}function yy(e,t,r,n){var o=Yp(e,t,r),a;switch(n=Es(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=_T(o,i))&&(n.precision=a),Gw(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=AT(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=kT(o))&&(n.precision=a-(n.type==="%")*2);break}}return Qp(n)}function ea(e){var t=e.domain;return e.ticks=function(r){var n=t();return ud(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return yy(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,a=n.length-1,i=n[o],s=n[a],l,u,c=10;for(s0;){if(u=uy(i,s,r),u===l)return n[o]=i,n[a]=s,t(n);if(u>0)i=Math.floor(i/u)*u,s=Math.ceil(s/u)*u;else if(u<0)i=Math.ceil(i*u)/u,s=Math.floor(s*u)/u;else break;l=u}return e},e}function Yw(){var e=md();return e.copy=function(){return As(e,Yw())},on.apply(e,arguments),ea(e)}function Xw(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,ju),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Xw(e).unknown(t)},e=arguments.length?Array.from(e,ju):[0,1],ea(r)}function vy(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],a=e[n],i;return aMath.pow(e,t)}function _ie(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function o7(e){return(t,r)=>-e(-t,r)}function xy(e){let t=e(r7,n7),r=t.domain,n=10,o,a;function i(){return o=_ie(n),a=kie(n),r()[0]<0?(o=o7(o),a=o7(a),e(bie,wie)):e(r7,n7),t}return t.base=function(s){return arguments.length?(n=+s,i()):n},t.domain=function(s){return arguments.length?(r(s),i()):r()},t.ticks=s=>{let l=r(),u=l[0],c=l[l.length-1],d=c0){for(;f<=p;++f)for(m=1;mc)break;h.push(y)}}else for(;f<=p;++f)for(m=n-1;m>=1;--m)if(y=f>0?m/a(-f):m*a(f),!(yc)break;h.push(y)}h.length*2{if(s==null&&(s=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=Es(l)).precision==null&&(l.trim=!0),l=Qp(l)),s===1/0)return l;let u=Math.max(1,n*s/t.ticks().length);return c=>{let d=c/a(Math.round(o(c)));return d*nr(vy(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function Zw(){let e=xy(pd()).domain([1,10]);return e.copy=()=>As(e,Zw()).base(e.base()),on.apply(e,arguments),e}function a7(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function i7(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function by(e){var t=1,r=e(a7(t),i7(t));return r.constant=function(n){return arguments.length?e(a7(t=+n),i7(t)):t},ea(r)}function Jw(){var e=by(pd());return e.copy=function(){return As(e,Jw()).constant(e.constant())},on.apply(e,arguments)}function s7(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Aie(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Cie(e){return e<0?-e*e:e*e}function wy(e){var t=e(Jn,Jn),r=1;function n(){return r===1?e(Jn,Jn):r===.5?e(Aie,Cie):e(s7(r),s7(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},ea(t)}function Sy(){var e=wy(pd());return e.copy=function(){return As(e,Sy()).exponent(e.exponent())},on.apply(e,arguments),e}function l7(){return Sy.apply(null,arguments).exponent(.5)}function u7(e){return Math.sign(e)*e*e}function Eie(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function Qw(){var e=md(),t=[0,1],r=!1,n;function o(a){var i=Eie(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(u7(a))},o.domain=function(a){return arguments.length?(e.domain(a),o):e.domain()},o.range=function(a){return arguments.length?(e.range((t=Array.from(a,ju)).map(u7)),o):t.slice()},o.rangeRound=function(a){return o.range(a).round(!0)},o.round=function(a){return arguments.length?(r=!!a,o):r},o.clamp=function(a){return arguments.length?(e.clamp(a),o):e.clamp()},o.unknown=function(a){return arguments.length?(n=a,o):n},o.copy=function(){return Qw(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},on.apply(o,arguments),ea(o)}function Rw(){var e=[],t=[],r=[],n;function o(){var i=0,s=Math.max(1,t.length);for(r=new Array(s-1);++i0?r[s-1]:e[0],s=r?[n[r-1],t]:[n[u-1],n[u]]},i.unknown=function(l){return arguments.length&&(a=l),i},i.thresholds=function(){return n.slice()},i.copy=function(){return eS().domain([e,t]).range(o).unknown(a)},on.apply(ea(i),arguments)}function tS(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Xi(e,a,0,n)]:r}return o.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),o):e.slice()},o.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),o):t.slice()},o.invertExtent=function(a){var i=t.indexOf(a);return[e[i-1],e[i]]},o.unknown=function(a){return arguments.length?(r=a,o):r},o.copy=function(){return tS().domain(e).range(t).unknown(r)},on.apply(o,arguments)}var CT=new Date,ET=new Date;function Dr(e,t,r,n){function o(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return o.floor=a=>(e(a=new Date(+a)),a),o.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),o.round=a=>{let i=o(a),s=o.ceil(a);return a-i(t(a=new Date(+a),i==null?1:Math.floor(i)),a),o.range=(a,i,s)=>{let l=[];if(a=o.ceil(a),s=s==null?1:Math.floor(s),!(a0))return l;let u;do l.push(u=new Date(+a)),t(a,s),e(a);while(uDr(i=>{if(i>=i)for(;e(i),!a(i);)i.setTime(i-1)},(i,s)=>{if(i>=i)if(s<0)for(;++s<=0;)for(;t(i,-1),!a(i););else for(;--s>=0;)for(;t(i,1),!a(i););}),r&&(o.count=(a,i)=>(CT.setTime(+a),ET.setTime(+i),e(CT),e(ET),Math.floor(r(CT,ET))),o.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?o.filter(n?i=>n(i)%a===0:i=>o.count(0,i)%a===0):o)),o}var ky=Dr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ky.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Dr(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ky);var XMe=ky.range;var Si=Dr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),c7=Si.range;var Rp=Dr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),Nie=Rp.range,em=Dr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),Tie=em.range;var tm=Dr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),Oie=tm.range,rm=Dr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),Pie=rm.range;var yl=Dr(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),Mie=yl.range,vd=Dr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),Die=vd.range,rS=Dr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),Iie=rS.range;function xd(e){return Dr(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var vl=xd(0),nm=xd(1),f7=xd(2),p7=xd(3),$u=xd(4),m7=xd(5),g7=xd(6),h7=vl.range,jie=nm.range,$ie=f7.range,Lie=p7.range,zie=$u.range,Bie=m7.range,Fie=g7.range;function bd(e){return Dr(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var xl=bd(0),om=bd(1),y7=bd(2),v7=bd(3),Lu=bd(4),x7=bd(5),b7=bd(6),w7=xl.range,Uie=om.range,Wie=y7.range,Hie=v7.range,Kie=Lu.range,qie=x7.range,Vie=b7.range;var am=Dr(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),Gie=am.range,im=Dr(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),Yie=im.range;var Ga=Dr(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ga.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Dr(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var Xie=Ga.range,Ya=Dr(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ya.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Dr(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var Zie=Ya.range;function k7(e,t,r,n,o,a){let i=[[Si,1,1e3],[Si,5,5*1e3],[Si,15,15*1e3],[Si,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,c,d){let f=cx).right(i,f);if(p===i.length)return e.every(Yp(u/31536e6,c/31536e6,d));if(p===0)return ky.every(Math.max(Yp(u,c,d),1));let[m,y]=i[f/i[p-1][2]53)return null;"w"in R||(R.w=1),"Z"in R?(B=DT(Ay(R.y,0,1)),H=B.getUTCDay(),B=H>4||H===0?om.ceil(B):om(B),B=vd.offset(B,(R.V-1)*7),R.y=B.getUTCFullYear(),R.m=B.getUTCMonth(),R.d=B.getUTCDate()+(R.w+6)%7):(B=MT(Ay(R.y,0,1)),H=B.getDay(),B=H>4||H===0?nm.ceil(B):nm(B),B=yl.offset(B,(R.V-1)*7),R.y=B.getFullYear(),R.m=B.getMonth(),R.d=B.getDate()+(R.w+6)%7)}else("W"in R||"U"in R)&&("w"in R||(R.w="u"in R?R.u%7:"W"in R?1:0),H="Z"in R?DT(Ay(R.y,0,1)).getUTCDay():MT(Ay(R.y,0,1)).getDay(),R.m=0,R.d="W"in R?(R.w+6)%7+R.W*7-(H+5)%7:R.w+R.U*7-(H+6)%7);return"Z"in R?(R.H+=R.Z/100|0,R.M+=R.Z%100,DT(R)):MT(R)}}function S(ue,se,Z,R){for(var L=0,B=se.length,H=Z.length,M,ne;L=H)return-1;if(M=se.charCodeAt(L++),M===37){if(M=se.charAt(L++),ne=_[M in _7?se.charAt(L++):M],!ne||(R=ne(ue,Z,R))<0)return-1}else if(M!=Z.charCodeAt(R++))return-1}return R}function k(ue,se,Z){var R=u.exec(se.slice(Z));return R?(ue.p=c.get(R[0].toLowerCase()),Z+R[0].length):-1}function A(ue,se,Z){var R=p.exec(se.slice(Z));return R?(ue.w=m.get(R[0].toLowerCase()),Z+R[0].length):-1}function O(ue,se,Z){var R=d.exec(se.slice(Z));return R?(ue.w=f.get(R[0].toLowerCase()),Z+R[0].length):-1}function $(ue,se,Z){var R=h.exec(se.slice(Z));return R?(ue.m=g.get(R[0].toLowerCase()),Z+R[0].length):-1}function F(ue,se,Z){var R=y.exec(se.slice(Z));return R?(ue.m=x.get(R[0].toLowerCase()),Z+R[0].length):-1}function P(ue,se,Z){return S(ue,t,se,Z)}function z(ue,se,Z){return S(ue,r,se,Z)}function N(ue,se,Z){return S(ue,n,se,Z)}function D(ue){return i[ue.getDay()]}function T(ue){return a[ue.getDay()]}function E(ue){return l[ue.getMonth()]}function I(ue){return s[ue.getMonth()]}function j(ue){return o[+(ue.getHours()>=12)]}function q(ue){return 1+~~(ue.getMonth()/3)}function te(ue){return i[ue.getUTCDay()]}function K(ue){return a[ue.getUTCDay()]}function le(ue){return l[ue.getUTCMonth()]}function pe(ue){return s[ue.getUTCMonth()]}function re(ue){return o[+(ue.getUTCHours()>=12)]}function _e(ue){return 1+~~(ue.getUTCMonth()/3)}return{format:function(ue){var se=w(ue+="",v);return se.toString=function(){return ue},se},parse:function(ue){var se=C(ue+="",!1);return se.toString=function(){return ue},se},utcFormat:function(ue){var se=w(ue+="",b);return se.toString=function(){return ue},se},utcParse:function(ue){var se=C(ue+="",!0);return se.toString=function(){return ue},se}}}var _7={"-":"",_:" ",0:"0"},yo=/^\s*\d+/,Qie=/^%/,Rie=/[\\^$*+?|[\]().{}]/g;function hr(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function tse(e,t,r){var n=yo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function rse(e,t,r){var n=yo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function nse(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function ose(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function ase(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function A7(e,t,r){var n=yo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function C7(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function ise(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function sse(e,t,r){var n=yo.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function lse(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function E7(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function use(e,t,r){var n=yo.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function N7(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function cse(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function dse(e,t,r){var n=yo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function fse(e,t,r){var n=yo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function pse(e,t,r){var n=yo.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function mse(e,t,r){var n=Qie.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function gse(e,t,r){var n=yo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function hse(e,t,r){var n=yo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function T7(e,t){return hr(e.getDate(),t,2)}function yse(e,t){return hr(e.getHours(),t,2)}function vse(e,t){return hr(e.getHours()%12||12,t,2)}function xse(e,t){return hr(1+yl.count(Ga(e),e),t,3)}function I7(e,t){return hr(e.getMilliseconds(),t,3)}function bse(e,t){return I7(e,t)+"000"}function wse(e,t){return hr(e.getMonth()+1,t,2)}function Sse(e,t){return hr(e.getMinutes(),t,2)}function kse(e,t){return hr(e.getSeconds(),t,2)}function _se(e){var t=e.getDay();return t===0?7:t}function Ase(e,t){return hr(vl.count(Ga(e)-1,e),t,2)}function j7(e){var t=e.getDay();return t>=4||t===0?$u(e):$u.ceil(e)}function Cse(e,t){return e=j7(e),hr($u.count(Ga(e),e)+(Ga(e).getDay()===4),t,2)}function Ese(e){return e.getDay()}function Nse(e,t){return hr(nm.count(Ga(e)-1,e),t,2)}function Tse(e,t){return hr(e.getFullYear()%100,t,2)}function Ose(e,t){return e=j7(e),hr(e.getFullYear()%100,t,2)}function Pse(e,t){return hr(e.getFullYear()%1e4,t,4)}function Mse(e,t){var r=e.getDay();return e=r>=4||r===0?$u(e):$u.ceil(e),hr(e.getFullYear()%1e4,t,4)}function Dse(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+hr(t/60|0,"0",2)+hr(t%60,"0",2)}function O7(e,t){return hr(e.getUTCDate(),t,2)}function Ise(e,t){return hr(e.getUTCHours(),t,2)}function jse(e,t){return hr(e.getUTCHours()%12||12,t,2)}function $se(e,t){return hr(1+vd.count(Ya(e),e),t,3)}function $7(e,t){return hr(e.getUTCMilliseconds(),t,3)}function Lse(e,t){return $7(e,t)+"000"}function zse(e,t){return hr(e.getUTCMonth()+1,t,2)}function Bse(e,t){return hr(e.getUTCMinutes(),t,2)}function Fse(e,t){return hr(e.getUTCSeconds(),t,2)}function Use(e){var t=e.getUTCDay();return t===0?7:t}function Wse(e,t){return hr(xl.count(Ya(e)-1,e),t,2)}function L7(e){var t=e.getUTCDay();return t>=4||t===0?Lu(e):Lu.ceil(e)}function Hse(e,t){return e=L7(e),hr(Lu.count(Ya(e),e)+(Ya(e).getUTCDay()===4),t,2)}function Kse(e){return e.getUTCDay()}function qse(e,t){return hr(om.count(Ya(e)-1,e),t,2)}function Vse(e,t){return hr(e.getUTCFullYear()%100,t,2)}function Gse(e,t){return e=L7(e),hr(e.getUTCFullYear()%100,t,2)}function Yse(e,t){return hr(e.getUTCFullYear()%1e4,t,4)}function Xse(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Lu(e):Lu.ceil(e),hr(e.getUTCFullYear()%1e4,t,4)}function Zse(){return"+0000"}function P7(){return"%"}function M7(e){return+e}function D7(e){return Math.floor(+e/1e3)}var sm,nS,z7,oS,B7;jT({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function jT(e){return sm=IT(e),nS=sm.format,z7=sm.parse,oS=sm.utcFormat,B7=sm.utcParse,sm}function Jse(e){return new Date(e)}function Qse(e){return e instanceof Date?+e:+new Date(+e)}function aS(e,t,r,n,o,a,i,s,l,u){var c=md(),d=c.invert,f=c.domain,p=u(".%L"),m=u(":%S"),y=u("%I:%M"),x=u("%I %p"),h=u("%a %d"),g=u("%b %d"),v=u("%B"),b=u("%Y");function _(w){return(l(w)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>jw(e,a/n))},r.copy=function(){return uS(t).domain(e)},wi.apply(r,arguments)}function cS(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=Jn,c,d=!1,f;function p(y){return isNaN(y=+y)?f:(y=.5+((y=+c(y))-a)*(n*y{if(e!=null){var n=e.scale,o=e.type;if(n==="auto")return o==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!t)?"point":o==="category"?"band":"linear";if(typeof n=="string")return tle(n)?n:"point"}};function rle(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function mS(e,t){if(e){var r=t??e.domain(),n=r.map(a=>{var i;return(i=e(a))!==null&&i!==void 0?i:0}),o=e.range();if(!(r.length===0||o.length<2))return a=>{var i,s,l=rle(n,a);if(l<=0)return r[0];if(l>=r.length)return r[r.length-1];var u=(i=n[l-1])!==null&&i!==void 0?i:0,c=(s=n[l])!==null&&s!==void 0?s:0;return Math.abs(a-u)<=Math.abs(a-c)?r[l-1]:r[l]}}}function H7(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):mS(e,void 0)}function K7(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function gS(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],Ts=(e,t)=>{var r=HT(e,t);return r??Mn},Dn={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:WT,hide:!0,id:0,includeHidden:!1,interval:"preserveEnd",minTickGap:5,mirror:!1,name:void 0,orientation:"left",padding:{top:0,bottom:0},reversed:!1,scale:"auto",tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:"number",unit:void 0,niceTicks:"auto",width:Xc},KT=(e,t)=>e.cartesianAxis.yAxis[t],Os=(e,t)=>{var r=KT(e,t);return r??Dn},cle={domain:[0,"auto"],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:"",range:[64,64],scale:"auto",type:"number",unit:""},qT=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??cle},an=(e,t,r)=>{switch(t){case"xAxis":return Ts(e,r);case"yAxis":return Os(e,r);case"zAxis":return qT(e,r);case"angleAxis":return Aw(e,r);case"radiusAxis":return Cw(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},dle=(e,t,r)=>{switch(t){case"xAxis":return Ts(e,r);case"yAxis":return Os(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},wd=(e,t,r)=>{switch(t){case"xAxis":return Ts(e,r);case"yAxis":return Os(e,r);case"angleAxis":return Aw(e,r);case"radiusAxis":return Cw(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},VT=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function Py(e,t){return r=>{switch(e){case"xAxis":return"xAxisId"in r&&r.xAxisId===t;case"yAxis":return"yAxisId"in r&&r.yAxisId===t;case"zAxis":return"zAxisId"in r&&r.zAxisId===t;case"angleAxis":return"angleAxisId"in r&&r.angleAxisId===t;case"radiusAxis":return"radiusAxisId"in r&&r.radiusAxisId===t;default:return!1}}}var zu=e=>e.graphicalItems.cartesianItems,fle=ee([Qr,ad],Py),My=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),um=ee([zu,an,fle],My,{memoizeOptions:{resultEqualityCheck:Vp}}),Y7=ee([um],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(id)),GT=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),ple=ee([um],GT),Dy=e=>e.map(t=>t.data).filter(Boolean).flat(1),mle=ee([um],e=>e.some(t=>!t.data)),X7=ee([um],Dy,{memoizeOptions:{resultEqualityCheck:Vp}}),Iy=(e,t)=>{var r=t.chartData,n=r===void 0?[]:r,o=t.dataStartIndex,a=t.dataEndIndex;return e.length>0?e:n.slice(o,a+1)},YT=ee([X7,rd],Iy),XT=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:At(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:At(o,n)}))):e.map(n=>({value:n})),ZT=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=XT(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),f=d.map(p=>({value:At(p,t.dataKey)})).filter(p=>p.value!=null);return[...f,...c]}return c},jy=ee([YT,an,um,rd,mle,X7],ZT);function lm(e){if(Zo(e)||e instanceof Date){var t=Number(e);if(pt(t))return t}}function V7(e){if(Array.isArray(e)){var t=[lm(e[0]),lm(e[1])];return qa(t)?t:void 0}var r=lm(e);if(r!=null)return[r,r]}function Ji(e){return e.map(lm).filter(Zn)}function gle(e,t){var r=lm(e),n=lm(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var hle=ee([jy],e=>e?.map(t=>t.value).sort(gle));function Z7(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function yle(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!po(t))n=t;else if(Array.isArray(t)){var o=Ji(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:Ji(r.flatMap(a=>{var i=At(e,a.dataKey),s,l;if(Array.isArray(i)){var u=G7(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!pt(s)||!pt(l)))return[n-s,n+l]}))}var In=e=>{var t=Pn(e),r=Mu(e);return wd(e,t,r)},wl=ee([In],e=>e?.dataKey),vle=ee([Y7,rd,In],Tw),JT=(e,t,r,n)=>{var o={},a=t.reduce((i,s)=>{if(s.stackId==null)return i;var l=i[s.stackId];return l==null&&(l=[]),l.push(s),i[s.stackId]=l,i},o);return Object.fromEntries(Object.entries(a).map(i=>{var s=G7(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Pu);return[l,{stackedData:u6(e,d,r),graphicalItems:c}]}))},cm=ee([vle,Y7,Tu,ww],JT),QT=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return d6(e,o,a)},xle=ee([an],e=>e.allowDataOverflow),hS=e=>{var t;if(e==null||!("domain"in e))return WT;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=Ji(e.ticks);return[Math.min(...r),Math.max(...r)]}if(e.type==="category")return e.ticks.map(String)}return(t=e?.domain)!==null&&t!==void 0?t:WT},yS=ee([an],hS),vS=ee([yS,xle],hw),ble=ee([cm,va,Qr,vS],QT,{memoizeOptions:{resultEqualityCheck:sd}}),dm=e=>e.errorBars,wle=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>Z7(r,n)),Oy=function(){for(var t=arguments.length,r=new Array(t),n=0;n5&&arguments[5]!==void 0?arguments[5]:[],s,l;if(n.length>0&&n.forEach(u=>{var c,d=u.data!=null?[...u.data]:i,f=(c=o[u.id])===null||c===void 0?void 0:c.filter(p=>Z7(a,p));d.forEach(p=>{var m,y=At(p,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),x=yle(p,y,f);if(x.length>=2){var h=Math.min(...x),g=Math.max(...x);(s==null||hl)&&(l=g)}var v=V7(y);v!=null&&(s=s==null?v[0]:Math.min(s,v[0]),l=l==null?v[1]:Math.max(l,v[1]))})}),r?.dataKey!=null&&n.length===0&&t.forEach(u=>{var c=V7(At(u,r.dataKey));c!=null&&(s=s==null?c[0]:Math.min(s,c[0]),l=l==null?c[1]:Math.max(l,c[1]))}),pt(s)&&pt(l))return[s,l]},Sle=ee([YT,an,ple,dm,Qr,eB],$y,{memoizeOptions:{resultEqualityCheck:sd}});function kle(e){var t=e.value;if(Zo(t)||t instanceof Date)return t}var _le=(e,t,r)=>{var n=e.map(kle).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&SE(n))?mw(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},RT=e=>e.referenceElements.dots,Sd=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),Ale=ee([RT,Qr,ad],Sd),eO=e=>e.referenceElements.areas,Cle=ee([eO,Qr,ad],Sd),tO=e=>e.referenceElements.lines,Ele=ee([tO,Qr,ad],Sd),rO=(e,t)=>{if(e!=null){var r=Ji(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Nle=ee(Ale,Qr,rO),nO=(e,t)=>{if(e!=null){var r=Ji(e.flatMap(n=>[t==="xAxis"?n.x1:n.y1,t==="xAxis"?n.x2:n.y2]));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Tle=ee([Cle,Qr],nO);function Ole(e){var t;if(e.x!=null)return Ji([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:Ji(r)}function Ple(e){var t;if(e.y!=null)return Ji([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:Ji(r)}var oO=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?Ole(n):Ple(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Mle=ee([Ele,Qr],oO),Dle=ee(Nle,Mle,Tle,(e,t,r)=>Oy(e,r,t)),Ly=(e,t,r,n,o,a,i,s,l)=>{if(r!=null)return r;var u=i==="vertical"&&s==="xAxis"||i==="horizontal"&&s==="yAxis",c=u?Oy(n,a,o):Oy(a,o),d=aB(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},Ile=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=Ji(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},jle=ee([an],Ile,{memoizeOptions:{resultEqualityCheck:sd}}),$le=ee([an,yS,vS,ble,Sle,Dle,wt,Qr,jle],Ly,{memoizeOptions:{resultEqualityCheck:sd}}),Lle=[0,1],zy=(e,t,r,n,o,a,i)=>{if(!((e==null||r==null||r.length===0)&&i===void 0)){var s=e.dataKey,l=e.type,u=Io(t,a);if(u&&s==null){var c;return mw(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?_le(n,e,u):o==="expand"&&!u?Lle:i}},aO=ee([an,wt,YT,jy,Tu,Qr,$le],zy),Sl=ee([an,VT,qp],pS),By=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=hS(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&qa(e)){if(a)return vw(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return xw(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&qa(e))return vw(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&qa(e))return xw(e,t.tickCount,t.allowDecimals,"adaptive")}}},iO=ee([aO,wd,Sl],By),Fy=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&qa(t)&&Array.isArray(r)&&r.length>0){var o,a,i=t[0],s=(o=r[0])!==null&&o!==void 0?o:0,l=t[1],u=(a=r[r.length-1])!==null&&a!==void 0?a:0;return[Math.min(i,s),Math.max(l,u)]}return t},zle=ee([an,aO,iO,Qr],Fy),Ble=ee(jy,an,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(Ji(e.map(d=>d.value))).sort((d,f)=>d-f),o=n[0],a=n[n.length-1];if(o==null||a==null)return 1/0;var i=a-o;if(i===0)return 1/0;for(var s=0;so,(e,t,r,n,o)=>{if(!pt(e))return 0;var a=t==="vertical"?n.height:n.width;if(o==="gap")return e*a/2;if(o==="no-gap"){var i=pn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),Fle=(e,t,r)=>{var n=Ts(e,t);return n==null||typeof n.padding!="string"?0:J7(e,"xAxis",t,r,n.padding)},Ule=(e,t,r)=>{var n=Os(e,t);return n==null||typeof n.padding!="string"?0:J7(e,"yAxis",t,r,n.padding)},Wle=ee(Ts,Fle,(e,t)=>{var r,n;if(e==null)return{left:0,right:0};var o=e.padding;return typeof o=="string"?{left:t,right:t}:{left:((r=o.left)!==null&&r!==void 0?r:0)+t,right:((n=o.right)!==null&&n!==void 0?n:0)+t}}),Hle=ee(Os,Ule,(e,t)=>{var r,n;if(e==null)return{top:0,bottom:0};var o=e.padding;return typeof o=="string"?{top:t,bottom:t}:{top:((r=o.top)!==null&&r!==void 0?r:0)+t,bottom:((n=o.bottom)!==null&&n!==void 0?n:0)+t}}),sO=ee([Ar,Wle,Zc,$p,(e,t,r)=>r],(e,t,r,n,o)=>{var a=n.padding;return o?[a.left,r.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),lO=ee([Ar,wt,Hle,Zc,$p,(e,t,r)=>r],(e,t,r,n,o,a)=>{var i=o.padding;return a?[n.height-i.bottom,i.top]:t==="horizontal"?[e.top+e.height-r.bottom,e.top+r.top]:[e.top+r.top,e.top+e.height-r.bottom]}),fm=(e,t,r,n)=>{var o;switch(t){case"xAxis":return sO(e,r,n);case"yAxis":return lO(e,r,n);case"zAxis":return(o=qT(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return iT(e);case"radiusAxis":return sT(e,r);default:return}},Q7=ee([an,fm],nd),Kle=ee([Sl,zle],Ow),uO=ee([an,Sl,Kle,Q7],Ty),cO=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=Io(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},dO=ee([wt,jy,wd,Qr],cO),xS=ee([uO],sy),v4e=ee([uO],H7),x4e=ee([uO,hle],mS),b4e=ee([um,dm,Qr],wle);function R7(e,t){return e.idt.id?1:0}var bS=(e,t)=>t,wS=(e,t,r)=>r,qle=ee(Dp,bS,wS,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(R7)),Vle=ee(Ip,bS,wS,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(R7)),e9=(e,t)=>{var r=typeof t.height=="number"?t.height:Zh;return{width:e.width,height:r}},Gle=(e,t)=>{var r=typeof t.width=="number"?t.width:Xc;return{width:r,height:e.height}},fO=ee(Ar,Ts,e9),Yle=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},Xle=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},Zle=ee(ho,Ar,qle,bS,wS,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=e9(t,s);i==null&&(i=Yle(t,n,e));var u=n==="top"&&!o||n==="bottom"&&o;a[s.id]=i-Number(u)*l.height,i+=(u?-1:1)*l.height}),a}),Jle=ee(go,Ar,Vle,bS,wS,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=Gle(t,s);i==null&&(i=Xle(t,n,e));var u=n==="left"&&!o||n==="right"&&o;a[s.id]=i-Number(u)*l.width,i+=(u?-1:1)*l.width}),a}),Qle=(e,t)=>{var r=Ts(e,t);if(r!=null)return Zle(e,r.orientation,r.mirror)},t9=ee([Ar,Ts,Qle,(e,t)=>t],(e,t,r,n)=>{if(t!=null){var o=r?.[n];return o==null?{x:e.left,y:0}:{x:e.left,y:o}}}),Rle=(e,t)=>{var r=Os(e,t);if(r!=null)return Jle(e,r.orientation,r.mirror)},r9=ee([Ar,Os,Rle,(e,t)=>t],(e,t,r,n)=>{if(t!=null){var o=r?.[n];return o==null?{x:0,y:e.top}:{x:o,y:e.top}}}),pO=ee(Ar,Os,(e,t)=>{var r=typeof t.width=="number"?t.width:Xc;return{width:r,height:e.height}}),mO=(e,t,r)=>{switch(t){case"xAxis":return fO(e,r).width;case"yAxis":return pO(e,r).height;default:return}},gO=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=Io(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&SE(u))return l}},hO=ee([wt,jy,an,Qr],gO),yO=ee([wt,dle,Sl,xS,hO,dO,fm,iO,Qr],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=Io(e,l);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:l,categoricalDomain:a,duplicateDomain:o,isCategorical:u,niceTicks:s,range:i,realScaleType:r,scale:n}}}),eue=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=Io(e,l),c=t.type,d=t.ticks,f=t.tickCount,p=r==="scaleBand"&&typeof n.bandwidth=="function"?n.bandwidth()/2:2,m=c==="category"&&n.bandwidth?n.bandwidth()/p:0;m=l==="angleAxis"&&a!=null&&a.length>=2?Mr(a[0]-a[1])*2*m:m;var y=d||o;return y?y.map((x,h)=>{var g=i?i.indexOf(x):x,v=n.map(g);return pt(v)?{index:h,coordinate:v+m,value:x,offset:m}:null}).filter(Zn):u&&s?s.map((x,h)=>{var g=n.map(x);return pt(g)?{coordinate:g+m,value:x,index:h,offset:m}:null}).filter(Zn):n.ticks?n.ticks(f).map((x,h)=>{var g=n.map(x);return pt(g)?{coordinate:g+m,value:x,index:h,offset:m}:null}).filter(Zn):n.domain().map((x,h)=>{var g=n.map(x);return pt(g)?{coordinate:g+m,value:i?i[x]:x,index:h,offset:m}:null}).filter(Zn)}},SS=ee([wt,wd,Sl,xS,iO,fm,hO,dO,Qr],eue),tue=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=Io(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?Mr(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var f=r.map(c);return pt(f)?{coordinate:f+u,value:c,index:d,offset:u}:null}).filter(Zn):r.ticks?r.ticks(l).map((c,d)=>{var f=r.map(c);return pt(f)?{coordinate:f+u,value:c,index:d,offset:u}:null}).filter(Zn):r.domain().map((c,d)=>{var f=r.map(c);return pt(f)?{coordinate:f+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(Zn)}},Xa=ee([wt,wd,xS,fm,hO,dO,Qr],tue),Za=ee(an,xS,(e,t)=>{if(!(e==null||t==null))return gS(gS({},e),{},{scale:t})}),rue=ee([an,Sl,aO,Q7],Ty),nue=ee([rue],sy),w4e=ee((e,t,r)=>qT(e,r),nue,(e,t)=>{if(!(e==null||t==null))return gS(gS({},e),{},{scale:t})}),n9=ee([wt,Dp,Ip],(e,t,r)=>{switch(e){case"horizontal":return t.some(n=>n.reversed)?"right-to-left":"left-to-right";case"vertical":return r.some(n=>n.reversed)?"bottom-to-top":"top-to-bottom";case"centric":case"radial":return"left-to-right";default:return}}),oue=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},S4e=ee([oue],e=>{if(!(!e||e.length===0))return t=>{var r,n=1/0,o=e[0];for(var a of e){var i=Math.abs(a.coordinate-t);ie.options.defaultTooltipEventType,xO=e=>e.options.validateTooltipEventTypes;function bO(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Bu(e,t){var r=vO(e),n=xO(e);return bO(t,r,n)}function o9(e){return Pe(t=>Bu(t,e))}var kS=(e,t)=>{var r,n=Number(t);if(!(po(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var a9=e=>e.tooltip.settings;var kl={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},aue={itemInteraction:{click:kl,hover:kl},axisInteraction:{click:kl,hover:kl},keyboardInteraction:kl,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:"hover",axisId:0,active:!1,defaultIndex:void 0}},i9=mr({name:"tooltip",initialState:aue,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Dt(t.payload))},prepare:br()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Co(e).tooltipItemPayloads.indexOf(Dt(n));a>-1&&(e.tooltipItemPayloads[a]=Dt(o))},prepare:br()},removeTooltipEntrySettings:{reducer(e,t){var r=Co(e).tooltipItemPayloads.indexOf(Dt(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:br()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),ki=i9.actions,s9=ki.addTooltipEntrySettings,l9=ki.replaceTooltipEntrySettings,u9=ki.removeTooltipEntrySettings,c9=ki.setTooltipSettingsState,_S=ki.setActiveMouseOverItemIndex,d9=ki.mouseLeaveItem,AS=ki.mouseLeaveChart,f9=ki.setActiveClickItemIndex,CS=ki.setMouseOverAxisIndex,p9=ki.setMouseClickAxisIndex,pm=ki.setSyncInteraction,Uy=ki.setKeyboardInteraction;var m9=i9.reducer;function g9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function ES(e){for(var t=1;t{if(t==null)return kl;var o=uue(e,t,r);if(o==null)return kl;if(o.active)return o;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(cue(o)){if(a)return ES(ES({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return ES(ES({},kl),{},{coordinate:o.coordinate})};function due(e){if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var r=Number(e);return Number.isFinite(r)?r:void 0}function fue(e,t){var r=due(e),n=t[0],o=t[1];if(r===void 0)return!1;var a=Math.min(n,o),i=Math.max(n,o);return r>=a&&r<=i}function pue(e,t,r){if(r==null||t==null)return!0;var n=At(e,t);return n==null||!qa(r)?!0:fue(n,r)}var Fu=(e,t,r,n)=>{var o=e?.index;if(o==null)return null;var a=Number(o);if(!pt(a))return o;var i=0,s=1/0;t.length>0&&(s=t.length-1);var l=Math.max(i,Math.min(a,s)),u=t[l];return u==null||pue(u,r,n)?String(l):null};var TS=(e,t,r,n,o,a,i)=>{if(a!=null){var s=i[0],l=s?.getPosition(a);if(l!=null)return l;var u=o?.[Number(a)];if(u)return r==="horizontal"?{x:u.coordinate,y:(n.top+t)/2}:{x:(n.left+e)/2,y:u.coordinate}}};var OS=(e,t,r,n)=>{if(t==="axis")return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var o;if(r==="hover"?o=e.itemInteraction.hover.graphicalItemId:o=e.itemInteraction.click.graphicalItemId,e.syncInteraction.active&&o==null)return e.tooltipItemPayloads;if(o==null&&(n!=null||e.keyboardInteraction.active)){var a=e.tooltipItemPayloads[0];return a!=null?[a]:[]}return e.tooltipItemPayloads.filter(i=>{var s;return((s=i.settings)===null||s===void 0?void 0:s.graphicalItemId)===o})};var PS=e=>e.options.tooltipPayloadSearcher;var _l=e=>e.tooltip;function h9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function y9(e){for(var t=1;te(t)}function v9(e){if(typeof e=="string")return e}function bue(e){if(!(e==null||typeof e!="object")){var t="name"in e?yue(e.name):void 0,r="unit"in e?vue(e.unit):void 0,n="dataKey"in e?xue(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?v9(e.color):void 0,i="fill"in e?v9(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function wue(e,t){return e??t}var MS=(e,t,r,n,o,a,i)=>{if(!(t==null||a==null)){var s=r.chartData,l=r.computedData,u=r.dataStartIndex,c=r.dataEndIndex,d=[];return e.reduce((f,p)=>{var m,y=p.dataDefinedOnItem,x=p.settings,h=wue(y,s),g=Array.isArray(h)?B1(h,u,c):h,v=(m=x?.dataKey)!==null&&m!==void 0?m:n,b=x?.nameKey,_;if(n&&Array.isArray(g)&&!Array.isArray(g[0])&&i==="axis"?(_=Ab(g,n,o),_==null&&(_=a(g,t,l,b))):_=a(g,t,l,b),Array.isArray(_))_.forEach(C=>{var S,k,A=bue(C),O=A?.name,$=A?.dataKey,F=A?.payload,P=y9(y9({},x),{},{name:O,unit:A?.unit,color:(S=A?.color)!==null&&S!==void 0?S:x?.color,fill:(k=A?.fill)!==null&&k!==void 0?k:x?.fill});f.push(jN({tooltipEntrySettings:P,dataKey:$,payload:F,value:At(F,$),name:O==null?void 0:String(O)}))});else{var w;f.push(jN({tooltipEntrySettings:x,dataKey:v,payload:_,value:At(_,v),name:(w=At(_,b))!==null&&w!==void 0?w:x?.name}))}return f},d)}};var wO=ee([In,VT,qp],pS),Sue=ee([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),kue=ee([Pn,Mu],Py),Uu=ee([Sue,In,kue],My,{memoizeOptions:{resultEqualityCheck:Vp}}),_ue=ee([Uu],e=>e.filter(id)),x9=ee([Uu],Dy,{memoizeOptions:{resultEqualityCheck:Vp}}),Aue=ee([Uu],e=>e.some(t=>!t.data)),Al=ee([x9,va],Iy),Cue=ee([_ue,va,In],Tw),SO=ee([Al,In,Uu,va,Aue,x9],ZT),b9=ee([In],hS),Eue=ee([In],e=>e.allowDataOverflow),w9=ee([b9,Eue],hw),Nue=ee([Uu],e=>e.filter(id)),Tue=ee([Cue,Nue,Tu,ww],JT),Oue=ee([Tue,va,Pn,w9],QT),Pue=ee([Uu],GT),Mue=ee([Al,In,Pue,dm,Pn,rB],$y,{memoizeOptions:{resultEqualityCheck:sd}}),Due=ee([RT,Pn,Mu],Sd),Iue=ee([Due,Pn],rO),jue=ee([eO,Pn,Mu],Sd),$ue=ee([jue,Pn],nO),Lue=ee([tO,Pn,Mu],Sd),zue=ee([Lue,Pn],oO),Bue=ee([Iue,zue,$ue],Oy),Fue=ee([In,b9,w9,Oue,Mue,Bue,wt,Pn],Ly),Wu=ee([In,wt,Al,SO,Tu,Pn,Fue],zy),Uue=ee([Wu,In,wO],By),Wue=ee([In,Wu,Uue,Pn],Fy),S9=e=>{var t=Pn(e),r=Mu(e),n=!1;return fm(e,t,r,n)},kO=ee([In,S9],nd),Hue=ee([In,wO,Wue,kO],Ty),_O=ee([Hue],sy),Kue=ee([wt,SO,In,Pn],gO),que=ee([wt,SO,In,Pn],cO),Vue=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=Io(e,s);if(n){var c=r==="scaleBand"&&n.bandwidth?n.bandwidth()/2:2,d=l==="category"&&n.bandwidth?n.bandwidth()/c:0;return d=s==="angleAxis"&&o!=null&&o?.length>=2?Mr(o[0]-o[1])*2*d:d,u&&i?i.map((f,p)=>{var m=n.map(f);return pt(m)?{coordinate:m+d,value:f,index:p,offset:d}:null}).filter(Zn):n.domain().map((f,p)=>{var m=n.map(f);return pt(m)?{coordinate:m+d,value:a?a[f]:f,index:p,offset:d}:null}).filter(Zn)}}},ba=ee([wt,In,wO,_O,S9,Kue,que,Pn],Vue),AO=ee([vO,xO,a9],(e,t,r)=>bO(r.shared,e,t)),k9=e=>e.tooltip.settings.trigger,CO=e=>e.tooltip.settings.defaultIndex,Wy=ee([_l,AO,k9,CO],NS),_i=ee([Wy,Al,wl,Wu],Fu),DS=ee([ba,_i],kS),mm=ee([Wy],e=>{if(e)return e.dataKey}),IS=ee([Wy],e=>{if(e)return e.graphicalItemId}),_9=ee([_l,AO,k9,CO],OS),Gue=ee([go,ho,wt,Ar,ba,CO,_9],TS),EO=ee([Wy,Gue],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),NO=ee([Wy],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),Yue=ee([_9,_i,va,wl,DS,PS,AO],MS),A9=ee([Yue],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function C9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function E9(e){for(var t=1;tPe(In),N9=()=>{var e=Que(),t=Pe(ba),r=Pe(_O);return!e||!r?vi(void 0,t):vi(E9(E9({},e),{},{scale:r}),t)};function T9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function gm(e){for(var t=1;t{var o=t.find(a=>a&&a.index===r);if(o){if(e==="horizontal")return{x:o.coordinate,y:n.relativeY};if(e==="vertical")return{x:n.relativeX,y:o.coordinate}}return{x:0,y:0}},P9=(e,t,r,n)=>{var o=t.find(u=>u&&u.index===r);if(o){if(e==="centric"){var a=o.coordinate,i=n.radius;return gm(gm(gm({},n),zr(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return gm(gm(gm({},n),zr(n.cx,n.cy,s,l)),{},{angle:l,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function M9(e,t){var r=e.relativeX,n=e.relativeY;return r>=t.left&&r<=t.left+t.width&&n>=t.top&&n<=t.top+t.height}var TO=(e,t,r,n,o)=>{var a,i=(a=t?.length)!==null&&a!==void 0?a:0;if(i<=1||e==null)return 0;if(n==="angleAxis"&&o!=null&&Math.abs(Math.abs(o[1]-o[0])-360)<=1e-6)for(var s=o[1]-o[0],l=(z,N,D)=>[e,e+s,e-s].some(T=>(D?T>=z:T>z)&&T<=N),u=0;u0?(c=r[u-1])===null||c===void 0?void 0:c.coordinate:(d=r[i-1])===null||d===void 0?void 0:d.coordinate,x=(f=r[u])===null||f===void 0?void 0:f.coordinate,h=u>=i-1?(p=r[0])===null||p===void 0?void 0:p.coordinate:(m=r[u+1])===null||m===void 0?void 0:m.coordinate,g=void 0;if(!(y==null||x==null||h==null))if(Mr(x-y)!==Mr(h-x)){var v=[];if(Mr(h-x)===Mr(o[1]-o[0])){g=h;var b=x+o[1]-o[0];v[0]=Math.min(b,(b+y)/2),v[1]=Math.max(b,(b+y)/2)}else{g=y;var _=h+o[1]-o[0];v[0]=Math.min(x,(_+x)/2),v[1]=Math.max(x,(_+x)/2)}var w=[Math.min(x,(g+x)/2),Math.max(x,(g+x)/2)];if(l(w[0],w[1],!1)||l(v[0],v[1],!0)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}else{var S=Math.min(y,h),k=Math.max(y,h);if(l((S+x)/2,(k+x)/2,!1)){var A;return(A=r[u])===null||A===void 0?void 0:A.index}}}else if(t)for(var O=0;O($.coordinate+P.coordinate)/2||O>0&&O($.coordinate+P.coordinate)/2&&e<=($.coordinate+F.coordinate)/2)return $.index}}return-1};var jS=()=>Pe(qp),OO=(e,t)=>t,D9=(e,t,r)=>r,PO=(e,t,r,n)=>n,I9=ee(ba,e=>pl(e,t=>t.coordinate)),MO=ee([_l,OO,D9,PO],NS),DO=ee([MO,Al,wl,Wu],Fu),j9=(e,t,r)=>{if(t!=null){var n=_l(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},$9=ee([_l,OO,D9,PO],OS),Hy=ee([go,ho,wt,Ar,ba,PO,$9],TS),L9=ee([MO,Hy],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),IO=ee([ba,DO],kS),z9=ee([$9,DO,va,wl,IO,PS,OO],MS),B9=ee([MO,DO],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),rce=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&M9(e,i)){var s=f6(e,t),l=TO(s,a,o,r,n),u=O9(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},nce=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=Wz(e,r);if(s){var l=p6(s,t),u=TO(l,i,a,n,o),c=P9(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},F9=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?rce(e,t,n,o,a,i,s):nce(e,t,r,n,o,a,i)};var hm=G(Y()),Z9=G(Ig());var U9=ee(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,r)=>r,(e,t,r)=>{if(t!=null){var n=e[t];if(n!=null)return r?n.panoramaElement:n.element}}),W9=ee(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(Vt)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:xB}});function H9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function K9(e){for(var t=1;tK9(K9({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),sce)},uce=new Set(Object.values(Vt));function cce(e){return uce.has(e)}var q9=mr({name:"zIndex",initialState:lce,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]?e.zIndexMap[r].consumers+=1:e.zIndexMap[r]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:br()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!cce(r)&&delete e.zIndexMap[r])},prepare:br()},registerZIndexPortalElement:{reducer:(e,t)=>{var r=t.payload,n=r.zIndex,o=r.element,a=r.isPanorama;e.zIndexMap[n]?a?e.zIndexMap[n].panoramaElement=Dt(o):e.zIndexMap[n].element=Dt(o):e.zIndexMap[n]={consumers:0,element:a?void 0:Dt(o),panoramaElement:a?Dt(o):void 0}},prepare:br()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(t.payload.isPanorama?e.zIndexMap[r].panoramaElement=void 0:e.zIndexMap[r].element=void 0)},prepare:br()}}}),$S=q9.actions,V9=$S.registerZIndexPortal,LS=$S.unregisterZIndexPortal,G9=$S.registerZIndexPortalElement,Y9=$S.unregisterZIndexPortalElement;var X9=q9.reducer;function Br(e){var t=e.zIndex,r=e.children,n=N6(),o=n&&t!==void 0&&t!==0,a=gr(),i=(0,hm.useRef)(void 0),s=(0,hm.useRef)(new Set),l=xt(),u=Pe(d=>U9(d,t,a));if((0,hm.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(p=>{l(LS({zIndex:p}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(V9({zIndex:t})),s.current.add(t)),u){i.current=u;var f=s.current;f.forEach(p=>{p!==t&&(l(LS({zIndex:p})),f.delete(p))})}},[l,t,o,u]),(0,hm.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(f=>{l(LS({zIndex:f}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,Z9.createPortal)(r,c):null}function jO(){return jO=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,FS.useContext)($O);var qy=G(Y());var rF=G(tF(),1);var nF=rF.default;var vm=new nF;var WS="recharts.syncEvent.tooltip",zO="recharts.syncEvent.brush";var Hu=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!po(r))return e[r]}},vce={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},oF=mr({name:"options",initialState:vce,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),aF=oF.reducer,iF=oF.actions.createEventEmitter;function sF(e){return e.tooltip.syncInteraction}var xce={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},lF=mr({name:"chartData",initialState:xce,reducers:{setChartData(e,t){if(e.chartData=Dt(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var r=t.payload,n=r.startIndex,o=r.endIndex;n!=null&&(e.dataStartIndex=n),o!=null&&(e.dataEndIndex=o)}}}),BO=lF.actions,FO=BO.setChartData,uF=BO.setDataStartEndIndexes,bce=BO.setComputedData;var cF=lF.reducer;var wce=["x","y"];function dF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function xm(e){for(var t=1;tl.rootProps.className);(0,qy.useEffect)(()=>{if(e==null)return Jo;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(pm({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(n==="index"){var f;if(i&&c!==null&&c!==void 0&&(f=c.payload)!==null&&f!==void 0&&f.coordinate&&c.payload.sourceViewBox){var p=c.payload.coordinate,m=p.x,y=p.y,x=Ace(p,wce),h=c.payload.sourceViewBox,g=h.x,v=h.y,b=h.width,_=h.height,w=xm(xm({},x),{},{x:i.x+(b?(m-g)/b:0)*i.width,y:i.y+(_?(y-v)/_:0)*i.height});r(xm(xm({},c),{},{payload:xm(xm({},c.payload),{},{coordinate:w})}))}else r(c);return}if(o!=null){var C;if(typeof n=="function"){var S={activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate},k=n(o,S);C=o[k]}else n==="value"&&(C=o.find(D=>String(D.value)===c.payload.label));var A=c.payload.coordinate;if(A==null||i==null){r(pm({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(C==null){r(pm({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var O=A.x,$=A.y,F=Math.min(O,i.x+i.width),P=Math.min($,i.y+i.height),z={x:a==="horizontal"?C.coordinate:F,y:a==="horizontal"?P:C.coordinate},N=pm({active:c.payload.active,coordinate:z,dataKey:c.payload.dataKey,index:String(C.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return vm.on(WS,l),()=>{vm.off(WS,l)}},[s,r,t,e,n,o,a,i])}function Nce(){var e=Pe(Sw),t=Pe(kw),r=xt();(0,qy.useEffect)(()=>{if(e==null)return Jo;var n=(o,a,i)=>{t!==i&&e===o&&r(uF(a))};return vm.on(zO,n),()=>{vm.off(zO,n)}},[r,t,e])}function fF(){var e=xt();(0,qy.useEffect)(()=>{e(iF())},[e]),Ece(),Nce()}function pF(e,t,r,n,o,a){var i=Pe(m=>j9(m,e,t)),s=Pe(IS),l=Pe(kw),u=Pe(Sw),c=Pe(oT),d=Pe(sF),f=d?.sourceViewBox!=null,p=Qc();(0,qy.useEffect)(()=>{if(!f&&u!=null&&l!=null){var m=pm({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:p,graphicalItemId:s});vm.emit(WS,u,m,l)}},[f,r,i,s,o,n,l,u,c,a,p])}function mF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function gF(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{C(c9({shared:g,trigger:v,axisId:w,active:o,defaultIndex:S}))},[C,g,v,w,o,S]);var k=Qc(),A=R1(),O=o9(g),$=(t=Pe(Z=>B9(Z,O,v,S)))!==null&&t!==void 0?t:{},F=$.activeIndex,P=$.isActive,z=Pe(Z=>z9(Z,O,v,S)),N=Pe(Z=>IO(Z,O,v,S)),D=Pe(Z=>L9(Z,O,v,S)),T=z,E=R9(),I=(r=o??P)!==null&&r!==void 0?r:!1,j=f1([T,I]),q=Mce(j,2),te=q[0],K=q[1],le=O==="axis"?N:void 0;pF(O,v,D,le,F,I);var pe=_??E;if(pe==null||k==null||O==null)return null;var re=T??yF;I||(re=yF),u&&re.length&&(re=i1(re.filter(Z=>Z.value!=null&&(Z.hide!==!0||n.includeHidden)),f,Lce));var _e=re.length>0,ue=gF(gF({},n),{},{payload:re,label:le,active:I,activeIndex:F,coordinate:D,accessibilityLayer:A}),se=Ai.createElement(R6,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:I,coordinate:D,hasPayload:_e,offset:d,position:p,reverseDirection:m,useTranslate3d:y,viewBox:k,wrapperStyle:x,lastBoundingBox:te,innerRef:K,hasPortalFromProps:!!_},zce(l,ue));return Ai.createElement(Ai.Fragment,null,(0,xF.createPortal)(se,pe),I&&Ai.createElement(Q9,{cursor:h,tooltipEventType:O,coordinate:D,payload:re,index:F}))}var Cl=e=>null;Cl.displayName="Cell";var WO=G(Y()),VS=G(Y());function Fce(e,t,r){return(t=Uce(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Uce(e){var t=Wce(e,"string");return typeof t=="symbol"?t:t+""}function Wce(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var HS=class{constructor(t){Fce(this,"cache",new Map),this.maxSize=t}get(t){var r=this.cache.get(t);return r!==void 0&&(this.cache.delete(t),this.cache.set(t,r)),r}set(t,r){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(t,r)}clear(){this.cache.clear()}size(){return this.cache.size}};function bF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Hce(e){for(var t=1;t{try{var r=document.getElementById(SF);r||(r=document.createElement("span"),r.setAttribute("id",SF),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,Yce,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},kd=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||xi.isSsr)return{width:0,height:0};if(!_F.enableCache)return kF(t,r);var n=Xce(t,r),o=wF.get(n);if(o)return o;var a=kF(t,r);return wF.set(n,a),a};var TF;function KS(e,t){return Rce(e)||Qce(e,t)||Jce(e,t)||Zce()}function Zce(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Jce(e,t){if(e){if(typeof e=="string")return AF(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?AF(e,t):void 0}}function AF(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);re.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=e.breakAll,n=e.style;try{var o=[];qt(t)||(r?o=t.toString().split(""):o=t.toString().split($F));var a=o.map(s=>({word:s,width:kd(s,n).width})),i=r?0:kd("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function GS(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function zF(e){return qt(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var BF=(e,t,r,n)=>e.reduce((o,a)=>{var i=a.word,s=a.width,l=o[o.length-1];if(l&&s!=null&&(t==null||n||l.width+s+re.reduce((t,r)=>t.width>r.width?t:r),xde="\u2026",IF=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=LF({breakAll:r,style:n,children:l+xde});if(!u)return[!1,[]];var c=BF(u.wordsWithComputedWidth,a,i,s),d=c.length>o||FF(c).width>Number(a);return[d,c]},bde=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=Oe(a),c=String(i),d=BF(t,n,r,o);if(!u||o)return d;var f=d.length>a||FF(d).width>Number(n);if(!f)return d;for(var p=0,m=c.length-1,y=0,x;p<=m&&y<=c.length-1;){var h=Math.floor((p+m)/2),g=h-1,v=IF(c,g,l,s,a,n,r,o),b=MF(v,2),_=b[0],w=b[1],C=IF(c,h,l,s,a,n,r,o),S=MF(C,1),k=S[0];if(!_&&!k&&(p=h+1),_&&k&&(m=h-1),!_&&k){x=w;break}y++}return x||d},jF=e=>{var t=qt(e)?[]:e.toString().split($F);return[{words:t,width:void 0}]},wde=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!xi.isSsr){var s,l,u=LF({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return jF(n);return bde({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return jF(n)},UF="#808080",Sde={angle:0,breakAll:!1,capHeight:"0.71em",fill:UF,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},_d=(0,VS.forwardRef)((e,t)=>{var r=Ut(e,Sde),n=r.x,o=r.y,a=r.lineHeight,i=r.capHeight,s=r.fill,l=r.scaleToFit,u=r.textAnchor,c=r.verticalAnchor,d=PF(r,fde),f=(0,VS.useMemo)(()=>wde({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:l,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,l,d.style,d.width]),p=d.dx,m=d.dy,y=d.angle,x=d.className,h=d.breakAll,g=PF(d,pde);if(!Zo(n)||!Zo(o)||f.length===0)return null;var v=Number(n)+(Oe(p)?p:0),b=Number(o)+(Oe(m)?m:0);if(!pt(v)||!pt(b))return null;var _;switch(c){case"start":_=qS("calc(".concat(i,")"));break;case"middle":_=qS("calc(".concat((f.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:_=qS("calc(".concat(f.length-1," * -").concat(a,")"));break}var w=[],C=f[0];if(l&&C!=null){var S=C.width,k=d.width;w.push("scale(".concat(Oe(k)&&Oe(S)?k/S:1,")"))}return y&&w.push("rotate(".concat(y,", ").concat(v,", ").concat(b,")")),w.length&&(g.transform=w.join(" ")),WO.createElement("text",UO({},Jr(g),{ref:t,x:v,y:b,className:lt("recharts-text",x),textAnchor:u,fill:s.includes("url")?UF:s}),f.map((A,O)=>{var $=A.words.join(h?"":" ");return WO.createElement("tspan",{x:v,dy:O===0?_:a,key:"".concat($,"-").concat(O)},$)}))});_d.displayName="Text";var wa=G(Y()),Qn=G(Y());var kde=["labelRef"],_de=["content"];function WF(e,t){if(e==null)return{};var r,n,o=Ade(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var t=e.x,r=e.y,n=e.upperWidth,o=e.lowerWidth,a=e.width,i=e.height,s=e.children,l=(0,Qn.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return wa.createElement(KF.Provider,{value:l},s)},VF=()=>{var e=(0,Qn.useContext)(KF),t=Qc();return e||(t?Ih(t):void 0)},GF=(0,Qn.createContext)(null),YF=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=e.clockWise,l=e.children,u=(0,Qn.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return wa.createElement(GF.Provider,{value:u},l)},Tde=()=>{var e=(0,Qn.useContext)(GF),t=Pe(Nw);return e||t},Ode=e=>{var t=e.value,r=e.formatter,n=qt(e.children)?t:e.children;return typeof r=="function"?r(n):n},Cd=e=>e!=null&&typeof e=="function",Pde=(e,t)=>{var r=Mr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Mde=(e,t,r,n,o)=>{var a=e.offset,i=e.className,s=o.cx,l=o.cy,u=o.innerRadius,c=o.outerRadius,d=o.startAngle,f=o.endAngle,p=o.clockWise,m=(u+c)/2,y=Pde(d,f),x=y>=0?1:-1,h,g;switch(t){case"insideStart":h=d+x*a,g=p;break;case"insideEnd":h=f-x*a,g=!p;break;case"end":h=f+x*a,g=p;break;default:throw new Error("Unsupported position ".concat(t))}g=y<=0?g:!g;var v=zr(s,l,m,h),b=zr(s,l,m,h+(g?1:-1)*359),_="M".concat(v.x,",").concat(v.y,` + A`,",",",0,0,",",",",","Z"])),E.x,E.y,a,a,+(c<0),C.x,C.y,n,n,+(F>180),+(c>0),w.x,w.y,a,a,+(c<0),A.x,A.y)}else x+=to(dB||(dB=ld(["L",",","Z"])),t,r);return x},iie={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Sw=e=>{var t=Kt(e,iie),r=t.cx,n=t.cy,o=t.innerRadius,a=t.outerRadius,i=t.cornerRadius,s=t.forceCornerRadius,l=t.cornerIsExternal,u=t.startAngle,c=t.endAngle,d=t.className;if(a0&&Math.abs(u-c)<360?y=aie({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=pB({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),fB.createElement("path",lT({},tn(t),{className:f,d:y}))};function mB(e,t,r){if(e==="horizontal")return[{x:t.x,y:r.top},{x:t.x,y:r.top+r.height}];if(e==="vertical")return[{x:r.left,y:t.y},{x:r.left+r.width,y:t.y}];if(Kb(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=Wr(n,o,a,s),u=Wr(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return bw(t)}}function gB(e){return b1(e)?NaN:Number(e)}function kw(e){return e?(e=gB(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function _w(e,t,r){r&&typeof r!="number"&&ey(e,t,r)&&(t=r=void 0),e=kw(e),t===void 0?(t=e,e=0):t=kw(t),r=r===void 0?ee.chartData,ud=te([_a],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),cd=(e,t,r,n)=>n?ud(e):_a(e),Cw=(e,t,r)=>r?ud(e):_a(e),hB=te([cd],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),yB=te([ud],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),vB=te([_a],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function uT(e,t){return cie(e)||uie(e,t)||lie(e,t)||sie()}function sie(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lie(e,t){if(e){if(typeof e=="string")return xB(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?xB(e,t):void 0}}function xB(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);re.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=yy(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},mT=(e,t,r)=>{if(e.lte(0))return new dr.default(0);var n=fT(e.toNumber()),o=new dr.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new dr.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new dr.default(l.toNumber()):new dr.default(Math.ceil(l.toNumber()))},CB=(e,t,r)=>{var n;if(e.lte(0))return new dr.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new dr.default(a).abs().log(10).toNumber()),s=new dr.default(10).pow(i),l=e.div(s).toNumber(),u=o.findIndex(p=>p>=l-1e-10);if(u===-1&&(s=s.mul(10),u=0),u+=r,u>=o.length){var c=Math.floor(u/o.length);u%=o.length,s=s.mul(new dr.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,f=new dr.default(d).mul(s);return t?f:new dr.default(Math.ceil(f.toNumber()))},gie=(e,t,r)=>{var n=new dr.default(1),o=new dr.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new dr.default(10).pow(fT(e)-1),o=new dr.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new dr.default(Math.floor(e)))}else e===0?o=new dr.default(Math.floor((t-1)/2)):r||(o=new dr.default(Math.floor(e)));for(var i=Math.floor((t-1)/2),s=[],l=0;l4&&arguments[4]!==void 0?arguments[4]:0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:mT;if(!Number.isFinite((r-t)/(n-1)))return{step:new dr.default(0),tickMin:new dr.default(0),tickMax:new dr.default(0)};var s=i(new dr.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new dr.default(0):(l=new dr.default(t).add(r).div(2),l=l.sub(new dr.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new dr.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?AB(t,r,n,o,a+1,i):(d0?c+(n-d):c,u=r>0?u:u+(n-d)),{step:s,tickMin:l.sub(new dr.default(u).mul(s)),tickMax:l.add(new dr.default(c).mul(s))})};var Nw=function(t){var r=yy(t,2),n=r[0],o=r[1],a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"auto",l=Math.max(a,2),u=_B([n,o]),c=yy(u,2),d=c[0],f=c[1];if(d===-1/0||f===1/0){var p=f===1/0?[d,...Array(a-1).fill(1/0)]:[...Array(a-1).fill(-1/0),f];return n>o?p.reverse():p}if(d===f)return gie(d,a,i);var m=s==="snap125"?CB:mT,y=AB(d,f,l,i,0,m),b=y.step,h=y.tickMin,g=y.tickMax,v=pT(h,g.add(new dr.default(.1).mul(b)),b);return n>o?v.reverse():v},Tw=function(t,r){var n=yy(t,2),o=n[0],a=n[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"auto",l=_B([o,a]),u=yy(l,2),c=u[0],d=u[1];if(c===-1/0||d===1/0)return[o,a];if(c===d)return[c];var f=s==="snap125"?CB:mT,p=Math.max(r,2),m=f(new dr.default(d).sub(c).div(p-1),i,0),y=[...pT(new dr.default(c),new dr.default(d),m),d];if(i===!1){y=y.map(h=>Math.round(h));var b=y.length-1;b>0&&y[b]===y[b-1]&&(y=y.slice(0,b))}return o>a?y.reverse():y};var gT=e=>e.rootProps.maxBarSize,EB=e=>e.rootProps.barGap,Ow=e=>e.rootProps.barCategoryGap,NB=e=>e.rootProps.barSize,Lu=e=>e.rootProps.stackOffset,Pw=e=>e.rootProps.reverseStackOrder,rm=e=>e.options.chartName,Mw=e=>e.rootProps.syncId,hT=e=>e.rootProps.syncMethod,Iw=e=>e.options.eventEmitter,TB=e=>e.rootProps.baseValue;var Xt={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3};var zu={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:"polygon",cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:"auto",orientation:"outer",reversed:!1,scale:"auto",tick:!0,tickLine:!0,tickSize:8,type:"auto",zIndex:Xt.axis};var rs={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:"auto",label:!1,orientation:"right",radiusAxisId:0,reversed:!1,scale:"auto",stroke:"#ccc",tick:!0,tickCount:5,tickLine:!0,type:"auto",zIndex:Xt.axis};var dd=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function fd(e,t,r){if(r!=="auto")return r;if(e!=null)return Bo(e,t)?"category":"number"}function OB(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Dw(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},jw=te([xie,ow],(e,t)=>{var r;if(e!=null)return e;var n=(r=fd(t,"angleAxis",PB.type))!==null&&r!==void 0?r:"category";return Dw(Dw({},PB),{},{type:n})}),bie=(e,t)=>e.polarAxis.radiusAxis[t],$w=te([bie,ow],(e,t)=>{var r;if(e!=null)return e;var n=(r=fd(t,"radiusAxis",MB.type))!==null&&r!==void 0?r:"category";return Dw(Dw({},MB),{},{type:n})}),Lw=e=>e.polarOptions,yT=te([wo,So,Nr],xw),IB=te([Lw,yT],(e,t)=>{if(e!=null)return vn(e.innerRadius,t,0)}),DB=te([Lw,yT],(e,t)=>{if(e!=null)return vn(e.outerRadius,t,t*.8)}),wie=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},vT=te([Lw],wie),n5e=te([jw,vT],dd),xT=te([yT,IB,DB],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),o5e=te([$w,xT],dd),zw=te([_t,Lw,IB,DB,wo,So],(e,t,r,n,o,a)=>{if(!(e!=="centric"&&e!=="radial"||t==null||r==null||n==null)){var i=t.cx,s=t.cy,l=t.startAngle,u=t.endAngle;return{cx:vn(i,o,o/2),cy:vn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var rn=(e,t)=>t;var pd=(e,t,r)=>r;function Bu(e){return e?.id}function Bw(e,t,r){var n=t.chartData,o=n===void 0?[]:n,a=r.allowDuplicatedCategory,i=r.dataKey,s=new Map;return e.forEach(l=>{var u,c=(u=l.data)!==null&&u!==void 0?u:o;if(!(c==null||c.length===0)){var d=Bu(l);c.forEach((f,p)=>{var m=i==null||a?p:String(Nt(f,i,null)),y=Nt(f,l.dataKey,0),b;s.has(m)?b=s.get(m):b={},Object.assign(b,{[d]:y}),s.set(m,b)})}}),Array.from(s.values())}function md(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var gd=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function nm(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function jB(e,t){if(e.length===t.length){for(var r=0;r{var t=_t(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"};var Fu=e=>e.tooltip.settings.axisId;function vy(e){if(e!=null){var t=e.ticks,r=e.bandwidth,n=e.range(),o=[Math.min(...n),Math.max(...n)];return{domain:()=>e.domain(),range:(function(a){function i(){return a.apply(this,arguments)}return i.toString=function(){return a.toString()},i})(()=>o),rangeMin:()=>o[0],rangeMax:()=>o[1],isInRange(a){var i=o[0],s=o[1];return i<=s?a>=i&&a<=s:a>=s&&a<=i},bandwidth:r?()=>r.call(e):void 0,ticks:t?a=>t.call(e,a):void 0,map:(a,i)=>{var s=e(a);if(s!=null){if(e.bandwidth&&i!==null&&i!==void 0&&i.position){var l=e.bandwidth();switch(i.position){case"middle":s+=l/2;break;case"end":s+=l;break;default:break}}return s}}}}}var Fw=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!Qa(t)){for(var r,n,o=0;on)&&(n=a))}return r!==void 0&&n!==void 0?[r,n]:void 0}return t}default:return t}};var By={};gJ(By,{scaleBand:()=>Sy,scaleDiverging:()=>wS,scaleDivergingLog:()=>QT,scaleDivergingPow:()=>SS,scaleDivergingSqrt:()=>n9,scaleDivergingSymlog:()=>RT,scaleIdentity:()=>aS,scaleImplicit:()=>Gw,scaleLinear:()=>oS,scaleLog:()=>iS,scaleOrdinal:()=>im,scalePoint:()=>WB,scalePow:()=>Iy,scaleQuantile:()=>uS,scaleQuantize:()=>cS,scaleRadial:()=>lS,scaleSequential:()=>yS,scaleSequentialLog:()=>ZT,scaleSequentialPow:()=>vS,scaleSequentialQuantile:()=>xS,scaleSequentialSqrt:()=>r9,scaleSequentialSymlog:()=>JT,scaleSqrt:()=>_7,scaleSymlog:()=>sS,scaleThreshold:()=>dS,scaleTime:()=>YT,scaleUtc:()=>XT,tickFormat:()=>Ny});function aa(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function bT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function hd(e){let t,r,n;e.length!==2?(t=aa,r=(s,l)=>aa(e(s),l),n=(s,l)=>e(s)-l):(t=e===aa||e===bT?e:Sie,r=e,n=e);function o(s,l,u=0,c=s.length){if(u>>1;r(s[d],l)<0?u=d+1:c=d}while(u>>1;r(s[d],l)<=0?u=d+1:c=d}while(uu&&n(s[d-1],l)>-n(s[d],l)?d-1:d}return{left:o,center:i,right:a}}function Sie(){return 0}function xy(e){return e===null?NaN:+e}function*$B(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var LB=hd(aa),zB=LB.right,kie=LB.left,_ie=hd(xy).center,ns=zB;var om=class extends Map{constructor(t,r=Eie){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(BB(this,t))}has(t){return super.has(BB(this,t))}set(t,r){return super.set(Cie(this,t),r)}delete(t){return super.delete(Aie(this,t))}};function BB({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Cie({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Aie({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function Eie(e){return e!==null&&typeof e=="object"?e.valueOf():e}function FB(e=aa){if(e===aa)return wT;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function wT(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Nie=Math.sqrt(50),Tie=Math.sqrt(10),Oie=Math.sqrt(2);function Uw(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),a=n/Math.pow(10,o),i=a>=Nie?10:a>=Tie?5:a>=Oie?2:1,s,l,u;return o<0?(u=Math.pow(10,-o)/i,s=Math.round(e*u),l=Math.round(t*u),s/ut&&--l,u=-u):(u=Math.pow(10,o)*i,s=Math.round(e/u),l=Math.round(t/u),s*ut&&--l),l0))return[];if(e===t)return[e];let n=t=o))return[];let s=a-o+1,l=new Array(s);if(n)if(i<0)for(let u=0;u=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function Hw(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function Kw(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?wT:FB(o);n>r;){if(n-r>600){let l=n-r+1,u=t-r+1,c=Math.log(l),d=.5*Math.exp(2*c/3),f=.5*Math.sqrt(c*d*(l-d)/l)*(u-l/2<0?-1:1),p=Math.max(r,Math.floor(t-u*d/l+f)),m=Math.min(n,Math.floor(t+(l-u)*d/l+f));Kw(e,t,p,m,o)}let a=e[t],i=r,s=n;for(wy(e,r,t),o(e[n],a)>0&&wy(e,r,n);i0;)--s}o(e[r],a)===0?wy(e,r,s):(++s,wy(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function wy(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function qw(e,t,r){if(e=Float64Array.from($B(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Hw(e);if(t>=1)return Ww(e);var n,o=(n-1)*t,a=Math.floor(o),i=Ww(Kw(e,a).subarray(0,a+1)),s=Hw(e.subarray(a+1));return i+(s-i)*(o-a)}}function ST(e,t,r=xy){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,a=Math.floor(o),i=+r(e[a],a,e),s=+r(e[a+1],a+1,e);return i+(s-i)*(o-a)}}function Vw(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(o);++n>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Xw(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Xw(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Mie.exec(e))?new Ca(t[1],t[2],t[3],1):(t=Iie.exec(e))?new Ca(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Die.exec(e))?Xw(t[1],t[2],t[3],t[4]):(t=jie.exec(e))?Xw(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=$ie.exec(e))?XB(t[1],t[2]/100,t[3]/100,1):(t=Lie.exec(e))?XB(t[1],t[2]/100,t[3]/100,t[4]):HB.hasOwnProperty(e)?VB(HB[e]):e==="transparent"?new Ca(NaN,NaN,NaN,0):null}function VB(e){return new Ca(e>>16&255,e>>8&255,e&255,1)}function Xw(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ca(e,t,r,n)}function Fie(e){return e instanceof Cy||(e=Uu(e)),e?(e=e.rgb(),new Ca(e.r,e.g,e.b,e.opacity)):new Ca}function lm(e,t,r,n){return arguments.length===1?Fie(e):new Ca(e,t,r,n??1)}function Ca(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Yw(Ca,lm,kT(Cy,{brighter(e){return e=e==null?Jw:Math.pow(Jw,e),new Ca(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ky:Math.pow(ky,e),new Ca(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ca(xd(this.r),xd(this.g),xd(this.b),Qw(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:GB,formatHex:GB,formatHex8:Uie,formatRgb:YB,toString:YB}));function GB(){return`#${vd(this.r)}${vd(this.g)}${vd(this.b)}`}function Uie(){return`#${vd(this.r)}${vd(this.g)}${vd(this.b)}${vd((isNaN(this.opacity)?1:this.opacity)*255)}`}function YB(){let e=Qw(this.opacity);return`${e===1?"rgb(":"rgba("}${xd(this.r)}, ${xd(this.g)}, ${xd(this.b)}${e===1?")":`, ${e})`}`}function Qw(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function xd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function vd(e){return e=xd(e),(e<16?"0":"")+e.toString(16)}function XB(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new os(e,t,r,n)}function JB(e){if(e instanceof os)return new os(e.h,e.s,e.l,e.opacity);if(e instanceof Cy||(e=Uu(e)),!e)return new os;if(e instanceof os)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),a=Math.max(t,r,n),i=NaN,s=a-o,l=(a+o)/2;return s?(t===a?i=(r-n)/s+(r0&&l<1?0:i,new os(i,s,l,e.opacity)}function QB(e,t,r,n){return arguments.length===1?JB(e):new os(e,t,r,n??1)}function os(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Yw(os,QB,kT(Cy,{brighter(e){return e=e==null?Jw:Math.pow(Jw,e),new os(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ky:Math.pow(ky,e),new os(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Ca(_T(e>=240?e-240:e+120,o,n),_T(e,o,n),_T(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new os(ZB(this.h),Zw(this.s),Zw(this.l),Qw(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Qw(this.opacity);return`${e===1?"hsl(":"hsla("}${ZB(this.h)}, ${Zw(this.s)*100}%, ${Zw(this.l)*100}%${e===1?")":`, ${e})`}`}}));function ZB(e){return e=(e||0)%360,e<0?e+360:e}function Zw(e){return Math.max(0,Math.min(1,e||0))}function _T(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}function CT(e,t,r,n,o){var a=e*e,i=a*e;return((1-3*e+3*a-i)*t+(4-6*a+3*i)*r+(1+3*e+3*a-3*i)*n+i*o)/6}function RB(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),o=e[n],a=e[n+1],i=n>0?e[n-1]:2*o-a,s=n()=>e;function Wie(e,t){return function(r){return e+r*t}}function Hie(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function t7(e){return(e=+e)==1?Rw:function(t,r){return r-t?Hie(t,r,e):Ay(isNaN(t)?r:t)}}function Rw(e,t){var r=t-e;return r?Wie(e,r):Ay(isNaN(e)?t:e)}var AT=(function e(t){var r=t7(t);function n(o,a){var i=r((o=lm(o)).r,(a=lm(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=Rw(o.opacity,a.opacity);return function(c){return o.r=i(c),o.g=s(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n})(1);function r7(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),a=new Array(r),i,s;for(i=0;ir&&(a=t.slice(r,a),s[i]?s[i]+=a:s[++i]=a),(n=n[0])===(o=o[0])?s[i]?s[i]+=o:s[++i]=o:(s[++i]=null,l.push({i,x:Wu(n,o)})),r=ET.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Gie(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?Yie:Gie,l=u=null,d}function d(f){return f==null||isNaN(f=+f)?a:(l||(l=s(e.map(n),t,r)))(n(i(f)))}return d.invert=function(f){return i(o((u||(u=s(t,e.map(n),Wu)))(f)))},d.domain=function(f){return arguments.length?(e=Array.from(f,Hu),c()):e.slice()},d.range=function(f){return arguments.length?(t=Array.from(f),c()):t.slice()},d.rangeRound=function(f){return t=Array.from(f),r=bd,c()},d.clamp=function(f){return arguments.length?(i=f?!0:no,c()):i!==no},d.interpolate=function(f){return arguments.length?(r=f,c()):r},d.unknown=function(f){return arguments.length?(a=f,d):a},function(f,p){return n=f,o=p,c()}}function Sd(){return wd()(no,no)}function c7(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function kd(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Ds(e){return e=kd(Math.abs(e)),e?e[1]:NaN}function d7(e,t){return function(r,n){for(var o=r.length,a=[],i=0,s=e[0],l=0;o>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),a.push(r.substring(o-=s,o+s)),!((l+=s+1)>n));)s=e[i=(i+1)%e.length];return a.reverse().join(t)}}function f7(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var Xie=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function js(e){if(!(t=Xie.exec(e)))throw new Error("invalid format: "+e);var t;return new tS({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}js.prototype=tS.prototype;function tS(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}tS.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function p7(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var Ey;function m7(e,t){var r=kd(e,t);if(!r)return Ey=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(Ey=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,i=n.length;return a===i?n:a>i?n+new Array(a-i+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+kd(e,Math.max(0,t+a-1))[0]}function PT(e,t){var r=kd(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var MT={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:c7,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>PT(e*100,t),r:PT,s:m7,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function IT(e){return e}var g7=Array.prototype.map,h7=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function y7(e){var t=e.grouping===void 0||e.thousands===void 0?IT:d7(g7.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?IT:f7(g7.call(e.numerals,String)),i=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d,f){d=js(d);var p=d.fill,m=d.align,y=d.sign,b=d.symbol,h=d.zero,g=d.width,v=d.comma,x=d.precision,S=d.trim,w=d.type;w==="n"?(v=!0,w="g"):MT[w]||(x===void 0&&(x=12),S=!0,w="g"),(h||p==="0"&&m==="=")&&(h=!0,p="0",m="=");var A=(f&&f.prefix!==void 0?f.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():""),k=(b==="$"?n:/[%p]/.test(w)?i:"")+(f&&f.suffix!==void 0?f.suffix:""),_=MT[w],C=/[defgprs%]/.test(w);x=x===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function E(j){var F=A,D=k,z,N,O;if(w==="c")D=_(j)+D,j="";else{j=+j;var $=j<0||1/j<0;if(j=isNaN(j)?l:_(Math.abs(j),x),S&&(j=p7(j)),$&&+j==0&&y!=="+"&&($=!1),F=($?y==="("?y:s:y==="-"||y==="("?"":y)+F,D=(w==="s"&&!isNaN(j)&&Ey!==void 0?h7[8+Ey/3]:"")+D+($&&y==="("?")":""),C){for(z=-1,N=j.length;++zO||O>57){D=(O===46?o+j.slice(z+1):j.slice(z))+D,j=j.slice(0,z);break}}}v&&!h&&(j=t(j,1/0));var T=F.length+j.length+D.length,I=T>1)+F+j+D+I.slice(T);break;default:j=I+F+j+D;break}return a(j)}return E.toString=function(){return d+""},E}function c(d,f){var p=Math.max(-8,Math.min(8,Math.floor(Ds(f)/3)))*3,m=Math.pow(10,-p),y=u((d=js(d),d.type="f",d),{suffix:h7[8+p/3]});return function(b){return y(m*b)}}return{format:u,formatPrefix:c}}var rS,um,nS;DT({thousands:",",grouping:[3],currency:["$",""]});function DT(e){return rS=y7(e),um=rS.format,nS=rS.formatPrefix,rS}function jT(e){return Math.max(0,-Ds(Math.abs(e)))}function $T(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ds(t)/3)))*3-Ds(Math.abs(e)))}function LT(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ds(t)-Ds(e))+1}function Ny(e,t,r,n){var o=am(e,t,r),a;switch(n=js(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=$T(o,i))&&(n.precision=a),nS(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=LT(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=jT(o))&&(n.precision=a-(n.type==="%")*2);break}}return um(n)}function ia(e){var t=e.domain;return e.ticks=function(r){var n=t();return yd(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return Ny(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,a=n.length-1,i=n[o],s=n[a],l,u,c=10;for(s0;){if(u=by(i,s,r),u===l)return n[o]=i,n[a]=s,t(n);if(u>0)i=Math.floor(i/u)*u,s=Math.ceil(s/u)*u;else if(u<0)i=Math.ceil(i*u)/u,s=Math.floor(s*u)/u;else break;l=u}return e},e}function oS(){var e=Sd();return e.copy=function(){return Is(e,oS())},dn.apply(e,arguments),ia(e)}function aS(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,Hu),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return aS(e).unknown(t)},e=arguments.length?Array.from(e,Hu):[0,1],ia(r)}function Ty(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],a=e[n],i;return aMath.pow(e,t)}function ese(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function b7(e){return(t,r)=>-e(-t,r)}function Oy(e){let t=e(v7,x7),r=t.domain,n=10,o,a;function i(){return o=ese(n),a=Rie(n),r()[0]<0?(o=b7(o),a=b7(a),e(Zie,Jie)):e(v7,x7),t}return t.base=function(s){return arguments.length?(n=+s,i()):n},t.domain=function(s){return arguments.length?(r(s),i()):r()},t.ticks=s=>{let l=r(),u=l[0],c=l[l.length-1],d=c0){for(;f<=p;++f)for(m=1;mc)break;h.push(y)}}else for(;f<=p;++f)for(m=n-1;m>=1;--m)if(y=f>0?m/a(-f):m*a(f),!(yc)break;h.push(y)}h.length*2{if(s==null&&(s=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=js(l)).precision==null&&(l.trim=!0),l=um(l)),s===1/0)return l;let u=Math.max(1,n*s/t.ticks().length);return c=>{let d=c/a(Math.round(o(c)));return d*nr(Ty(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function iS(){let e=Oy(wd()).domain([1,10]);return e.copy=()=>Is(e,iS()).base(e.base()),dn.apply(e,arguments),e}function w7(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function S7(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Py(e){var t=1,r=e(w7(t),S7(t));return r.constant=function(n){return arguments.length?e(w7(t=+n),S7(t)):t},ia(r)}function sS(){var e=Py(wd());return e.copy=function(){return Is(e,sS()).constant(e.constant())},dn.apply(e,arguments)}function k7(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function tse(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function rse(e){return e<0?-e*e:e*e}function My(e){var t=e(no,no),r=1;function n(){return r===1?e(no,no):r===.5?e(tse,rse):e(k7(r),k7(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},ia(t)}function Iy(){var e=My(wd());return e.copy=function(){return Is(e,Iy()).exponent(e.exponent())},dn.apply(e,arguments),e}function _7(){return Iy.apply(null,arguments).exponent(.5)}function C7(e){return Math.sign(e)*e*e}function nse(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function lS(){var e=Sd(),t=[0,1],r=!1,n;function o(a){var i=nse(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(C7(a))},o.domain=function(a){return arguments.length?(e.domain(a),o):e.domain()},o.range=function(a){return arguments.length?(e.range((t=Array.from(a,Hu)).map(C7)),o):t.slice()},o.rangeRound=function(a){return o.range(a).round(!0)},o.round=function(a){return arguments.length?(r=!!a,o):r},o.clamp=function(a){return arguments.length?(e.clamp(a),o):e.clamp()},o.unknown=function(a){return arguments.length?(n=a,o):n},o.copy=function(){return lS(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},dn.apply(o,arguments),ia(o)}function uS(){var e=[],t=[],r=[],n;function o(){var i=0,s=Math.max(1,t.length);for(r=new Array(s-1);++i0?r[s-1]:e[0],s=r?[n[r-1],t]:[n[u-1],n[u]]},i.unknown=function(l){return arguments.length&&(a=l),i},i.thresholds=function(){return n.slice()},i.copy=function(){return cS().domain([e,t]).range(o).unknown(a)},dn.apply(ia(i),arguments)}function dS(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[ns(e,a,0,n)]:r}return o.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),o):e.slice()},o.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),o):t.slice()},o.invertExtent=function(a){var i=t.indexOf(a);return[e[i-1],e[i]]},o.unknown=function(a){return arguments.length?(r=a,o):r},o.copy=function(){return dS().domain(e).range(t).unknown(r)},dn.apply(o,arguments)}var zT=new Date,BT=new Date;function $r(e,t,r,n){function o(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return o.floor=a=>(e(a=new Date(+a)),a),o.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),o.round=a=>{let i=o(a),s=o.ceil(a);return a-i(t(a=new Date(+a),i==null?1:Math.floor(i)),a),o.range=(a,i,s)=>{let l=[];if(a=o.ceil(a),s=s==null?1:Math.floor(s),!(a0))return l;let u;do l.push(u=new Date(+a)),t(a,s),e(a);while(u$r(i=>{if(i>=i)for(;e(i),!a(i);)i.setTime(i-1)},(i,s)=>{if(i>=i)if(s<0)for(;++s<=0;)for(;t(i,-1),!a(i););else for(;--s>=0;)for(;t(i,1),!a(i););}),r&&(o.count=(a,i)=>(zT.setTime(+a),BT.setTime(+i),e(zT),e(BT),Math.floor(r(zT,BT))),o.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?o.filter(n?i=>n(i)%a===0:i=>o.count(0,i)%a===0):o)),o}var Dy=$r(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Dy.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?$r(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Dy);var $3e=Dy.range;var Ti=$r(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),A7=Ti.range;var cm=$r(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),ose=cm.range,dm=$r(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),ase=dm.range;var fm=$r(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),ise=fm.range,pm=$r(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),sse=pm.range;var Cl=$r(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),lse=Cl.range,Ad=$r(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),use=Ad.range,fS=$r(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),cse=fS.range;function Ed(e){return $r(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var Al=Ed(0),mm=Ed(1),N7=Ed(2),T7=Ed(3),Ku=Ed(4),O7=Ed(5),P7=Ed(6),M7=Al.range,dse=mm.range,fse=N7.range,pse=T7.range,mse=Ku.range,gse=O7.range,hse=P7.range;function Nd(e){return $r(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var El=Nd(0),gm=Nd(1),I7=Nd(2),D7=Nd(3),qu=Nd(4),j7=Nd(5),$7=Nd(6),L7=El.range,yse=gm.range,vse=I7.range,xse=D7.range,bse=qu.range,wse=j7.range,Sse=$7.range;var hm=$r(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),kse=hm.range,ym=$r(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),_se=ym.range;var ei=$r(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());ei.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:$r(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var Cse=ei.range,ti=$r(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());ti.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:$r(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var Ase=ti.range;function B7(e,t,r,n,o,a){let i=[[Ti,1,1e3],[Ti,5,5*1e3],[Ti,15,15*1e3],[Ti,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,c,d){let f=cb).right(i,f);if(p===i.length)return e.every(am(u/31536e6,c/31536e6,d));if(p===0)return Dy.every(Math.max(am(u,c,d),1));let[m,y]=i[f/i[p-1][2]53)return null;"w"in ee||(ee.w=1),"Z"in ee?(B=qT($y(ee.y,0,1)),q=B.getUTCDay(),B=q>4||q===0?gm.ceil(B):gm(B),B=Ad.offset(B,(ee.V-1)*7),ee.y=B.getUTCFullYear(),ee.m=B.getUTCMonth(),ee.d=B.getUTCDate()+(ee.w+6)%7):(B=KT($y(ee.y,0,1)),q=B.getDay(),B=q>4||q===0?mm.ceil(B):mm(B),B=Cl.offset(B,(ee.V-1)*7),ee.y=B.getFullYear(),ee.m=B.getMonth(),ee.d=B.getDate()+(ee.w+6)%7)}else("W"in ee||"U"in ee)&&("w"in ee||(ee.w="u"in ee?ee.u%7:"W"in ee?1:0),q="Z"in ee?qT($y(ee.y,0,1)).getUTCDay():KT($y(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(q+5)%7:ee.w+ee.U*7-(q+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,qT(ee)):KT(ee)}}function k(de,le,Z,ee){for(var L=0,B=le.length,q=Z.length,M,ne;L=q)return-1;if(M=le.charCodeAt(L++),M===37){if(M=le.charAt(L++),ne=S[M in F7?le.charAt(L++):M],!ne||(ee=ne(de,Z,ee))<0)return-1}else if(M!=Z.charCodeAt(ee++))return-1}return ee}function _(de,le,Z){var ee=u.exec(le.slice(Z));return ee?(de.p=c.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function C(de,le,Z){var ee=p.exec(le.slice(Z));return ee?(de.w=m.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function E(de,le,Z){var ee=d.exec(le.slice(Z));return ee?(de.w=f.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function j(de,le,Z){var ee=h.exec(le.slice(Z));return ee?(de.m=g.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function F(de,le,Z){var ee=y.exec(le.slice(Z));return ee?(de.m=b.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function D(de,le,Z){return k(de,t,le,Z)}function z(de,le,Z){return k(de,r,le,Z)}function N(de,le,Z){return k(de,n,le,Z)}function O(de){return i[de.getDay()]}function $(de){return a[de.getDay()]}function T(de){return l[de.getMonth()]}function I(de){return s[de.getMonth()]}function P(de){return o[+(de.getHours()>=12)]}function H(de){return 1+~~(de.getMonth()/3)}function Q(de){return i[de.getUTCDay()]}function K(de){return a[de.getUTCDay()]}function ue(de){return l[de.getUTCMonth()]}function pe(de){return s[de.getUTCMonth()]}function re(de){return o[+(de.getUTCHours()>=12)]}function _e(de){return 1+~~(de.getUTCMonth()/3)}return{format:function(de){var le=w(de+="",v);return le.toString=function(){return de},le},parse:function(de){var le=A(de+="",!1);return le.toString=function(){return de},le},utcFormat:function(de){var le=w(de+="",x);return le.toString=function(){return de},le},utcParse:function(de){var le=A(de+="",!0);return le.toString=function(){return de},le}}}var F7={"-":"",_:" ",0:"0"},ko=/^\s*\d+/,Nse=/^%/,Tse=/[\\^$*+?|[\]().{}]/g;function xr(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function Pse(e,t,r){var n=ko.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Mse(e,t,r){var n=ko.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Ise(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Dse(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function jse(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function U7(e,t,r){var n=ko.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function W7(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function $se(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Lse(e,t,r){var n=ko.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function zse(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function H7(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Bse(e,t,r){var n=ko.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function K7(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Fse(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Use(e,t,r){var n=ko.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Wse(e,t,r){var n=ko.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Hse(e,t,r){var n=ko.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Kse(e,t,r){var n=Nse.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function qse(e,t,r){var n=ko.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Vse(e,t,r){var n=ko.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function q7(e,t){return xr(e.getDate(),t,2)}function Gse(e,t){return xr(e.getHours(),t,2)}function Yse(e,t){return xr(e.getHours()%12||12,t,2)}function Xse(e,t){return xr(1+Cl.count(ei(e),e),t,3)}function Z7(e,t){return xr(e.getMilliseconds(),t,3)}function Zse(e,t){return Z7(e,t)+"000"}function Jse(e,t){return xr(e.getMonth()+1,t,2)}function Qse(e,t){return xr(e.getMinutes(),t,2)}function Rse(e,t){return xr(e.getSeconds(),t,2)}function ele(e){var t=e.getDay();return t===0?7:t}function tle(e,t){return xr(Al.count(ei(e)-1,e),t,2)}function J7(e){var t=e.getDay();return t>=4||t===0?Ku(e):Ku.ceil(e)}function rle(e,t){return e=J7(e),xr(Ku.count(ei(e),e)+(ei(e).getDay()===4),t,2)}function nle(e){return e.getDay()}function ole(e,t){return xr(mm.count(ei(e)-1,e),t,2)}function ale(e,t){return xr(e.getFullYear()%100,t,2)}function ile(e,t){return e=J7(e),xr(e.getFullYear()%100,t,2)}function sle(e,t){return xr(e.getFullYear()%1e4,t,4)}function lle(e,t){var r=e.getDay();return e=r>=4||r===0?Ku(e):Ku.ceil(e),xr(e.getFullYear()%1e4,t,4)}function ule(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+xr(t/60|0,"0",2)+xr(t%60,"0",2)}function V7(e,t){return xr(e.getUTCDate(),t,2)}function cle(e,t){return xr(e.getUTCHours(),t,2)}function dle(e,t){return xr(e.getUTCHours()%12||12,t,2)}function fle(e,t){return xr(1+Ad.count(ti(e),e),t,3)}function Q7(e,t){return xr(e.getUTCMilliseconds(),t,3)}function ple(e,t){return Q7(e,t)+"000"}function mle(e,t){return xr(e.getUTCMonth()+1,t,2)}function gle(e,t){return xr(e.getUTCMinutes(),t,2)}function hle(e,t){return xr(e.getUTCSeconds(),t,2)}function yle(e){var t=e.getUTCDay();return t===0?7:t}function vle(e,t){return xr(El.count(ti(e)-1,e),t,2)}function R7(e){var t=e.getUTCDay();return t>=4||t===0?qu(e):qu.ceil(e)}function xle(e,t){return e=R7(e),xr(qu.count(ti(e),e)+(ti(e).getUTCDay()===4),t,2)}function ble(e){return e.getUTCDay()}function wle(e,t){return xr(gm.count(ti(e)-1,e),t,2)}function Sle(e,t){return xr(e.getUTCFullYear()%100,t,2)}function kle(e,t){return e=R7(e),xr(e.getUTCFullYear()%100,t,2)}function _le(e,t){return xr(e.getUTCFullYear()%1e4,t,4)}function Cle(e,t){var r=e.getUTCDay();return e=r>=4||r===0?qu(e):qu.ceil(e),xr(e.getUTCFullYear()%1e4,t,4)}function Ale(){return"+0000"}function G7(){return"%"}function Y7(e){return+e}function X7(e){return Math.floor(+e/1e3)}var vm,pS,e9,mS,t9;GT({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function GT(e){return vm=VT(e),pS=vm.format,e9=vm.parse,mS=vm.utcFormat,t9=vm.utcParse,vm}function Ele(e){return new Date(e)}function Nle(e){return e instanceof Date?+e:+new Date(+e)}function gS(e,t,r,n,o,a,i,s,l,u){var c=Sd(),d=c.invert,f=c.domain,p=u(".%L"),m=u(":%S"),y=u("%I:%M"),b=u("%I %p"),h=u("%a %d"),g=u("%b %d"),v=u("%B"),x=u("%Y");function S(w){return(l(w)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>qw(e,a/n))},r.copy=function(){return xS(t).domain(e)},Ni.apply(r,arguments)}function bS(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=no,c,d=!1,f;function p(y){return isNaN(y=+y)?f:(y=.5+((y=+c(y))-a)*(n*y{if(e!=null){var n=e.scale,o=e.type;if(n==="auto")return o==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!t)?"point":o==="category"?"band":"linear";if(typeof n=="string")return Ple(n)?n:"point"}};function Mle(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function _S(e,t){if(e){var r=t??e.domain(),n=r.map(a=>{var i;return(i=e(a))!==null&&i!==void 0?i:0}),o=e.range();if(!(r.length===0||o.length<2))return a=>{var i,s,l=Mle(n,a);if(l<=0)return r[0];if(l>=r.length)return r[r.length-1];var u=(i=n[l-1])!==null&&i!==void 0?i:0,c=(s=n[l])!==null&&s!==void 0?s:0;return Math.abs(a-u)<=Math.abs(a-c)?r[l-1]:r[l]}}}function a9(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):_S(e,void 0)}function i9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function CS(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],Ls=(e,t)=>{var r=tO(e,t);return r??Ln},zn={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:eO,hide:!0,id:0,includeHidden:!1,interval:"preserveEnd",minTickGap:5,mirror:!1,name:void 0,orientation:"left",padding:{top:0,bottom:0},reversed:!1,scale:"auto",tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:"number",unit:void 0,niceTicks:"auto",width:nd},rO=(e,t)=>e.cartesianAxis.yAxis[t],zs=(e,t)=>{var r=rO(e,t);return r??zn},Fle={domain:[0,"auto"],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:"",range:[64,64],scale:"auto",type:"number",unit:""},nO=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??Fle},fn=(e,t,r)=>{switch(t){case"xAxis":return Ls(e,r);case"yAxis":return zs(e,r);case"zAxis":return nO(e,r);case"angleAxis":return jw(e,r);case"radiusAxis":return $w(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Ule=(e,t,r)=>{switch(t){case"xAxis":return Ls(e,r);case"yAxis":return zs(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Td=(e,t,r)=>{switch(t){case"xAxis":return Ls(e,r);case"yAxis":return zs(e,r);case"angleAxis":return jw(e,r);case"radiusAxis":return $w(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},oO=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function Wy(e,t){return r=>{switch(e){case"xAxis":return"xAxisId"in r&&r.xAxisId===t;case"yAxis":return"yAxisId"in r&&r.yAxisId===t;case"zAxis":return"zAxisId"in r&&r.zAxisId===t;case"angleAxis":return"angleAxisId"in r&&r.angleAxisId===t;case"radiusAxis":return"radiusAxisId"in r&&r.radiusAxisId===t;default:return!1}}}var Vu=e=>e.graphicalItems.cartesianItems,Wle=te([rn,pd],Wy),Hy=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),bm=te([Vu,fn,Wle],Hy,{memoizeOptions:{resultEqualityCheck:nm}}),c9=te([bm],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(md)),aO=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),Hle=te([bm],aO),Ky=e=>e.map(t=>t.data).filter(Boolean).flat(1),Kle=te([bm],e=>e.some(t=>!t.data)),d9=te([bm],Ky,{memoizeOptions:{resultEqualityCheck:nm}}),qy=(e,t)=>{var r=t.chartData,n=r===void 0?[]:r,o=t.dataStartIndex,a=t.dataEndIndex;return e.length>0?e:n.slice(o,a+1)},iO=te([d9,cd],qy),sO=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:Nt(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:Nt(o,n)}))):e.map(n=>({value:n})),lO=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=sO(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),f=d.map(p=>({value:Nt(p,t.dataKey)})).filter(p=>p.value!=null);return[...f,...c]}return c},Vy=te([iO,fn,bm,cd,Kle,d9],lO);function xm(e){if(ra(e)||e instanceof Date){var t=Number(e);if(ht(t))return t}}function l9(e){if(Array.isArray(e)){var t=[xm(e[0]),xm(e[1])];return Qa(t)?t:void 0}var r=xm(e);if(r!=null)return[r,r]}function as(e){return e.map(xm).filter(ro)}function qle(e,t){var r=xm(e),n=xm(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var Vle=te([Vy],e=>e?.map(t=>t.value).sort(qle));function f9(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function Gle(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!xo(t))n=t;else if(Array.isArray(t)){var o=as(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:as(r.flatMap(a=>{var i=Nt(e,a.dataKey),s,l;if(Array.isArray(i)){var u=u9(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!ht(s)||!ht(l)))return[n-s,n+l]}))}var Bn=e=>{var t=$n(e),r=Fu(e);return Td(e,t,r)},Tl=te([Bn],e=>e?.dataKey),Yle=te([c9,cd,Bn],Bw),uO=(e,t,r,n)=>{var o={},a=t.reduce((i,s)=>{if(s.stackId==null)return i;var l=i[s.stackId];return l==null&&(l=[]),l.push(s),i[s.stackId]=l,i},o);return Object.fromEntries(Object.entries(a).map(i=>{var s=u9(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Bu);return[l,{stackedData:C6(e,d,r),graphicalItems:c}]}))},wm=te([Yle,c9,Lu,Pw],uO),cO=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return E6(e,o,a)},Xle=te([fn],e=>e.allowDataOverflow),AS=e=>{var t;if(e==null||!("domain"in e))return eO;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=as(e.ticks);return[Math.min(...r),Math.max(...r)]}if(e.type==="category")return e.ticks.map(String)}return(t=e?.domain)!==null&&t!==void 0?t:eO},ES=te([fn],AS),NS=te([ES,Xle],Aw),Zle=te([wm,_a,rn,NS],cO,{memoizeOptions:{resultEqualityCheck:gd}}),Sm=e=>e.errorBars,Jle=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>f9(r,n)),Uy=function(){for(var t=arguments.length,r=new Array(t),n=0;n5&&arguments[5]!==void 0?arguments[5]:[],s,l;if(n.length>0&&n.forEach(u=>{var c,d=u.data!=null?[...u.data]:i,f=(c=o[u.id])===null||c===void 0?void 0:c.filter(p=>f9(a,p));d.forEach(p=>{var m,y=Nt(p,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),b=Gle(p,y,f);if(b.length>=2){var h=Math.min(...b),g=Math.max(...b);(s==null||hl)&&(l=g)}var v=l9(y);v!=null&&(s=s==null?v[0]:Math.min(s,v[0]),l=l==null?v[1]:Math.max(l,v[1]))})}),r?.dataKey!=null&&n.length===0&&t.forEach(u=>{var c=l9(Nt(u,r.dataKey));c!=null&&(s=s==null?c[0]:Math.min(s,c[0]),l=l==null?c[1]:Math.max(l,c[1]))}),ht(s)&&ht(l))return[s,l]},Qle=te([iO,fn,Hle,Sm,rn,hB],Gy,{memoizeOptions:{resultEqualityCheck:gd}});function Rle(e){var t=e.value;if(ra(t)||t instanceof Date)return t}var eue=(e,t,r)=>{var n=e.map(Rle).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&DE(n))?_w(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},dO=e=>e.referenceElements.dots,Od=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),tue=te([dO,rn,pd],Od),fO=e=>e.referenceElements.areas,rue=te([fO,rn,pd],Od),pO=e=>e.referenceElements.lines,nue=te([pO,rn,pd],Od),mO=(e,t)=>{if(e!=null){var r=as(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},oue=te(tue,rn,mO),gO=(e,t)=>{if(e!=null){var r=as(e.flatMap(n=>[t==="xAxis"?n.x1:n.y1,t==="xAxis"?n.x2:n.y2]));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},aue=te([rue,rn],gO);function iue(e){var t;if(e.x!=null)return as([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:as(r)}function sue(e){var t;if(e.y!=null)return as([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:as(r)}var hO=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?iue(n):sue(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},lue=te([nue,rn],hO),uue=te(oue,lue,aue,(e,t,r)=>Uy(e,r,t)),Yy=(e,t,r,n,o,a,i,s,l)=>{if(r!=null)return r;var u=i==="vertical"&&s==="xAxis"||i==="horizontal"&&s==="yAxis",c=u?Uy(n,a,o):Uy(a,o),d=wB(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},cue=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=as(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},due=te([fn],cue,{memoizeOptions:{resultEqualityCheck:gd}}),fue=te([fn,ES,NS,Zle,Qle,uue,_t,rn,due],Yy,{memoizeOptions:{resultEqualityCheck:gd}}),pue=[0,1],Xy=(e,t,r,n,o,a,i)=>{if(!((e==null||r==null||r.length===0)&&i===void 0)){var s=e.dataKey,l=e.type,u=Bo(t,a);if(u&&s==null){var c;return _w(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?eue(n,e,u):o==="expand"&&!u?pue:i}},yO=te([fn,_t,iO,Vy,Lu,rn,fue],Xy),Ol=te([fn,oO,rm],kS),Zy=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=AS(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&Qa(e)){if(a)return Nw(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return Tw(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&Qa(e))return Nw(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&Qa(e))return Tw(e,t.tickCount,t.allowDecimals,"adaptive")}}},vO=te([yO,Td,Ol],Zy),Jy=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&Qa(t)&&Array.isArray(r)&&r.length>0){var o,a,i=t[0],s=(o=r[0])!==null&&o!==void 0?o:0,l=t[1],u=(a=r[r.length-1])!==null&&a!==void 0?a:0;return[Math.min(i,s),Math.max(l,u)]}return t},mue=te([fn,yO,vO,rn],Jy),gue=te(Vy,fn,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(as(e.map(d=>d.value))).sort((d,f)=>d-f),o=n[0],a=n[n.length-1];if(o==null||a==null)return 1/0;var i=a-o;if(i===0)return 1/0;for(var s=0;so,(e,t,r,n,o)=>{if(!ht(e))return 0;var a=t==="vertical"?n.height:n.width;if(o==="gap")return e*a/2;if(o==="no-gap"){var i=vn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),hue=(e,t,r)=>{var n=Ls(e,t);return n==null||typeof n.padding!="string"?0:p9(e,"xAxis",t,r,n.padding)},yue=(e,t,r)=>{var n=zs(e,t);return n==null||typeof n.padding!="string"?0:p9(e,"yAxis",t,r,n.padding)},vue=te(Ls,hue,(e,t)=>{var r,n;if(e==null)return{left:0,right:0};var o=e.padding;return typeof o=="string"?{left:t,right:t}:{left:((r=o.left)!==null&&r!==void 0?r:0)+t,right:((n=o.right)!==null&&n!==void 0?n:0)+t}}),xue=te(zs,yue,(e,t)=>{var r,n;if(e==null)return{top:0,bottom:0};var o=e.padding;return typeof o=="string"?{top:t,bottom:t}:{top:((r=o.top)!==null&&r!==void 0?r:0)+t,bottom:((n=o.bottom)!==null&&n!==void 0?n:0)+t}}),xO=te([Nr,vue,od,Gp,(e,t,r)=>r],(e,t,r,n,o)=>{var a=n.padding;return o?[a.left,r.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),bO=te([Nr,_t,xue,od,Gp,(e,t,r)=>r],(e,t,r,n,o,a)=>{var i=o.padding;return a?[n.height-i.bottom,i.top]:t==="horizontal"?[e.top+e.height-r.bottom,e.top+r.top]:[e.top+r.top,e.top+e.height-r.bottom]}),km=(e,t,r,n)=>{var o;switch(t){case"xAxis":return xO(e,r,n);case"yAxis":return bO(e,r,n);case"zAxis":return(o=nO(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return vT(e);case"radiusAxis":return xT(e,r);default:return}},m9=te([fn,km],dd),bue=te([Ol,mue],Fw),wO=te([fn,Ol,bue,m9],Fy),SO=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=Bo(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},kO=te([_t,Vy,Td,rn],SO),TS=te([wO],vy),a4e=te([wO],a9),i4e=te([wO,Vle],_S),s4e=te([bm,Sm,rn],Jle);function g9(e,t){return e.idt.id?1:0}var OS=(e,t)=>t,PS=(e,t,r)=>r,wue=te(Kp,OS,PS,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(g9)),Sue=te(qp,OS,PS,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(g9)),h9=(e,t)=>{var r=typeof t.height=="number"?t.height:sy;return{width:e.width,height:r}},kue=(e,t)=>{var r=typeof t.width=="number"?t.width:nd;return{width:r,height:e.height}},_O=te(Nr,Ls,h9),_ue=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},Cue=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},Aue=te(So,Nr,wue,OS,PS,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=h9(t,s);i==null&&(i=_ue(t,n,e));var u=n==="top"&&!o||n==="bottom"&&o;a[s.id]=i-Number(u)*l.height,i+=(u?-1:1)*l.height}),a}),Eue=te(wo,Nr,Sue,OS,PS,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=kue(t,s);i==null&&(i=Cue(t,n,e));var u=n==="left"&&!o||n==="right"&&o;a[s.id]=i-Number(u)*l.width,i+=(u?-1:1)*l.width}),a}),Nue=(e,t)=>{var r=Ls(e,t);if(r!=null)return Aue(e,r.orientation,r.mirror)},y9=te([Nr,Ls,Nue,(e,t)=>t],(e,t,r,n)=>{if(t!=null){var o=r?.[n];return o==null?{x:e.left,y:0}:{x:e.left,y:o}}}),Tue=(e,t)=>{var r=zs(e,t);if(r!=null)return Eue(e,r.orientation,r.mirror)},v9=te([Nr,zs,Tue,(e,t)=>t],(e,t,r,n)=>{if(t!=null){var o=r?.[n];return o==null?{x:0,y:e.top}:{x:o,y:e.top}}}),CO=te(Nr,zs,(e,t)=>{var r=typeof t.width=="number"?t.width:nd;return{width:r,height:e.height}}),AO=(e,t,r)=>{switch(t){case"xAxis":return _O(e,r).width;case"yAxis":return CO(e,r).height;default:return}},EO=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=Bo(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&DE(u))return l}},NO=te([_t,Vy,fn,rn],EO),TO=te([_t,Ule,Ol,TS,NO,kO,km,vO,rn],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=Bo(e,l);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:l,categoricalDomain:a,duplicateDomain:o,isCategorical:u,niceTicks:s,range:i,realScaleType:r,scale:n}}}),Oue=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=Bo(e,l),c=t.type,d=t.ticks,f=t.tickCount,p=r==="scaleBand"&&typeof n.bandwidth=="function"?n.bandwidth()/2:2,m=c==="category"&&n.bandwidth?n.bandwidth()/p:0;m=l==="angleAxis"&&a!=null&&a.length>=2?jr(a[0]-a[1])*2*m:m;var y=d||o;return y?y.map((b,h)=>{var g=i?i.indexOf(b):b,v=n.map(g);return ht(v)?{index:h,coordinate:v+m,value:b,offset:m}:null}).filter(ro):u&&s?s.map((b,h)=>{var g=n.map(b);return ht(g)?{coordinate:g+m,value:b,index:h,offset:m}:null}).filter(ro):n.ticks?n.ticks(f).map((b,h)=>{var g=n.map(b);return ht(g)?{coordinate:g+m,value:b,index:h,offset:m}:null}).filter(ro):n.domain().map((b,h)=>{var g=n.map(b);return ht(g)?{coordinate:g+m,value:i?i[b]:b,index:h,offset:m}:null}).filter(ro)}},MS=te([_t,Td,Ol,TS,vO,km,NO,kO,rn],Oue),Pue=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=Bo(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?jr(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var f=r.map(c);return ht(f)?{coordinate:f+u,value:c,index:d,offset:u}:null}).filter(ro):r.ticks?r.ticks(l).map((c,d)=>{var f=r.map(c);return ht(f)?{coordinate:f+u,value:c,index:d,offset:u}:null}).filter(ro):r.domain().map((c,d)=>{var f=r.map(c);return ht(f)?{coordinate:f+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(ro)}},ri=te([_t,Td,TS,km,NO,kO,rn],Pue),ni=te(fn,TS,(e,t)=>{if(!(e==null||t==null))return CS(CS({},e),{},{scale:t})}),Mue=te([fn,Ol,yO,m9],Fy),Iue=te([Mue],vy),l4e=te((e,t,r)=>nO(e,r),Iue,(e,t)=>{if(!(e==null||t==null))return CS(CS({},e),{},{scale:t})}),x9=te([_t,Kp,qp],(e,t,r)=>{switch(e){case"horizontal":return t.some(n=>n.reversed)?"right-to-left":"left-to-right";case"vertical":return r.some(n=>n.reversed)?"bottom-to-top":"top-to-bottom";case"centric":case"radial":return"left-to-right";default:return}}),Due=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},u4e=te([Due],e=>{if(!(!e||e.length===0))return t=>{var r,n=1/0,o=e[0];for(var a of e){var i=Math.abs(a.coordinate-t);ie.options.defaultTooltipEventType,PO=e=>e.options.validateTooltipEventTypes;function MO(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Gu(e,t){var r=OO(e),n=PO(e);return MO(t,r,n)}function b9(e){return Pe(t=>Gu(t,e))}var IS=(e,t)=>{var r,n=Number(t);if(!(xo(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var w9=e=>e.tooltip.settings;var Pl={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},jue={itemInteraction:{click:Pl,hover:Pl},axisInteraction:{click:Pl,hover:Pl},keyboardInteraction:Pl,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:"hover",axisId:0,active:!1,defaultIndex:void 0}},S9=yr({name:"tooltip",initialState:jue,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Lt(t.payload))},prepare:kr()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Mo(e).tooltipItemPayloads.indexOf(Lt(n));a>-1&&(e.tooltipItemPayloads[a]=Lt(o))},prepare:kr()},removeTooltipEntrySettings:{reducer(e,t){var r=Mo(e).tooltipItemPayloads.indexOf(Lt(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:kr()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),Oi=S9.actions,k9=Oi.addTooltipEntrySettings,_9=Oi.replaceTooltipEntrySettings,C9=Oi.removeTooltipEntrySettings,A9=Oi.setTooltipSettingsState,DS=Oi.setActiveMouseOverItemIndex,E9=Oi.mouseLeaveItem,jS=Oi.mouseLeaveChart,N9=Oi.setActiveClickItemIndex,$S=Oi.setMouseOverAxisIndex,T9=Oi.setMouseClickAxisIndex,_m=Oi.setSyncInteraction,Qy=Oi.setKeyboardInteraction;var O9=S9.reducer;function P9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function LS(e){for(var t=1;t{if(t==null)return Pl;var o=Bue(e,t,r);if(o==null)return Pl;if(o.active)return o;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(Fue(o)){if(a)return LS(LS({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return LS(LS({},Pl),{},{coordinate:o.coordinate})};function Uue(e){if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var r=Number(e);return Number.isFinite(r)?r:void 0}function Wue(e,t){var r=Uue(e),n=t[0],o=t[1];if(r===void 0)return!1;var a=Math.min(n,o),i=Math.max(n,o);return r>=a&&r<=i}function Hue(e,t,r){if(r==null||t==null)return!0;var n=Nt(e,t);return n==null||!Qa(r)?!0:Wue(n,r)}var Yu=(e,t,r,n)=>{var o=e?.index;if(o==null)return null;var a=Number(o);if(!ht(a))return o;var i=0,s=1/0;t.length>0&&(s=t.length-1);var l=Math.max(i,Math.min(a,s)),u=t[l];return u==null||Hue(u,r,n)?String(l):null};var BS=(e,t,r,n,o,a,i)=>{if(a!=null){var s=i[0],l=s?.getPosition(a);if(l!=null)return l;var u=o?.[Number(a)];if(u)return r==="horizontal"?{x:u.coordinate,y:(n.top+t)/2}:{x:(n.left+e)/2,y:u.coordinate}}};var FS=(e,t,r,n)=>{if(t==="axis")return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var o;if(r==="hover"?o=e.itemInteraction.hover.graphicalItemId:o=e.itemInteraction.click.graphicalItemId,e.syncInteraction.active&&o==null)return e.tooltipItemPayloads;if(o==null&&(n!=null||e.keyboardInteraction.active)){var a=e.tooltipItemPayloads[0];return a!=null?[a]:[]}return e.tooltipItemPayloads.filter(i=>{var s;return((s=i.settings)===null||s===void 0?void 0:s.graphicalItemId)===o})};var US=e=>e.options.tooltipPayloadSearcher;var Ml=e=>e.tooltip;function M9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function I9(e){for(var t=1;te(t)}function D9(e){if(typeof e=="string")return e}function Zue(e){if(!(e==null||typeof e!="object")){var t="name"in e?Gue(e.name):void 0,r="unit"in e?Yue(e.unit):void 0,n="dataKey"in e?Xue(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?D9(e.color):void 0,i="fill"in e?D9(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function Jue(e,t){return e??t}var WS=(e,t,r,n,o,a,i)=>{if(!(t==null||a==null)){var s=r.chartData,l=r.computedData,u=r.dataStartIndex,c=r.dataEndIndex,d=[];return e.reduce((f,p)=>{var m,y=p.dataDefinedOnItem,b=p.settings,h=Jue(y,s),g=Array.isArray(h)?X1(h,u,c):h,v=(m=b?.dataKey)!==null&&m!==void 0?m:n,x=b?.nameKey,S;if(n&&Array.isArray(g)&&!Array.isArray(g[0])&&i==="axis"?(S=jb(g,n,o),S==null&&(S=a(g,t,l,x))):S=a(g,t,l,x),Array.isArray(S))S.forEach(A=>{var k,_,C=Zue(A),E=C?.name,j=C?.dataKey,F=C?.payload,D=I9(I9({},b),{},{name:E,unit:C?.unit,color:(k=C?.color)!==null&&k!==void 0?k:b?.color,fill:(_=C?.fill)!==null&&_!==void 0?_:b?.fill});f.push(GN({tooltipEntrySettings:D,dataKey:j,payload:F,value:Nt(F,j),name:E==null?void 0:String(E)}))});else{var w;f.push(GN({tooltipEntrySettings:b,dataKey:v,payload:S,value:Nt(S,v),name:(w=Nt(S,x))!==null&&w!==void 0?w:b?.name}))}return f},d)}};var IO=te([Bn,oO,rm],kS),Que=te([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Rue=te([$n,Fu],Wy),Xu=te([Que,Bn,Rue],Hy,{memoizeOptions:{resultEqualityCheck:nm}}),ece=te([Xu],e=>e.filter(md)),j9=te([Xu],Ky,{memoizeOptions:{resultEqualityCheck:nm}}),tce=te([Xu],e=>e.some(t=>!t.data)),Il=te([j9,_a],qy),rce=te([ece,_a,Bn],Bw),DO=te([Il,Bn,Xu,_a,tce,j9],lO),$9=te([Bn],AS),nce=te([Bn],e=>e.allowDataOverflow),L9=te([$9,nce],Aw),oce=te([Xu],e=>e.filter(md)),ace=te([rce,oce,Lu,Pw],uO),ice=te([ace,_a,$n,L9],cO),sce=te([Xu],aO),lce=te([Il,Bn,sce,Sm,$n,vB],Gy,{memoizeOptions:{resultEqualityCheck:gd}}),uce=te([dO,$n,Fu],Od),cce=te([uce,$n],mO),dce=te([fO,$n,Fu],Od),fce=te([dce,$n],gO),pce=te([pO,$n,Fu],Od),mce=te([pce,$n],hO),gce=te([cce,mce,fce],Uy),hce=te([Bn,$9,L9,ice,lce,gce,_t,$n],Yy),Zu=te([Bn,_t,Il,DO,Lu,$n,hce],Xy),yce=te([Zu,Bn,IO],Zy),vce=te([Bn,Zu,yce,$n],Jy),z9=e=>{var t=$n(e),r=Fu(e),n=!1;return km(e,t,r,n)},jO=te([Bn,z9],dd),xce=te([Bn,IO,vce,jO],Fy),$O=te([xce],vy),bce=te([_t,DO,Bn,$n],EO),wce=te([_t,DO,Bn,$n],SO),Sce=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=Bo(e,s);if(n){var c=r==="scaleBand"&&n.bandwidth?n.bandwidth()/2:2,d=l==="category"&&n.bandwidth?n.bandwidth()/c:0;return d=s==="angleAxis"&&o!=null&&o?.length>=2?jr(o[0]-o[1])*2*d:d,u&&i?i.map((f,p)=>{var m=n.map(f);return ht(m)?{coordinate:m+d,value:f,index:p,offset:d}:null}).filter(ro):n.domain().map((f,p)=>{var m=n.map(f);return ht(m)?{coordinate:m+d,value:a?a[f]:f,index:p,offset:d}:null}).filter(ro)}}},Aa=te([_t,Bn,IO,$O,z9,bce,wce,$n],Sce),LO=te([OO,PO,w9],(e,t,r)=>MO(r.shared,e,t)),B9=e=>e.tooltip.settings.trigger,zO=e=>e.tooltip.settings.defaultIndex,Ry=te([Ml,LO,B9,zO],zS),Pi=te([Ry,Il,Tl,Zu],Yu),HS=te([Aa,Pi],IS),Cm=te([Ry],e=>{if(e)return e.dataKey}),KS=te([Ry],e=>{if(e)return e.graphicalItemId}),F9=te([Ml,LO,B9,zO],FS),kce=te([wo,So,_t,Nr,Aa,zO,F9],BS),BO=te([Ry,kce],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),FO=te([Ry],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),_ce=te([F9,Pi,_a,Tl,HS,US,LO],WS),U9=te([_ce],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function W9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function H9(e){for(var t=1;tPe(Bn),K9=()=>{var e=Nce(),t=Pe(Aa),r=Pe($O);return!e||!r?Ci(void 0,t):Ci(H9(H9({},e),{},{scale:r}),t)};function q9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Am(e){for(var t=1;t{var o=t.find(a=>a&&a.index===r);if(o){if(e==="horizontal")return{x:o.coordinate,y:n.relativeY};if(e==="vertical")return{x:n.relativeX,y:o.coordinate}}return{x:0,y:0}},G9=(e,t,r,n)=>{var o=t.find(u=>u&&u.index===r);if(o){if(e==="centric"){var a=o.coordinate,i=n.radius;return Am(Am(Am({},n),Wr(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return Am(Am(Am({},n),Wr(n.cx,n.cy,s,l)),{},{angle:l,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function Y9(e,t){var r=e.relativeX,n=e.relativeY;return r>=t.left&&r<=t.left+t.width&&n>=t.top&&n<=t.top+t.height}var UO=(e,t,r,n,o)=>{var a,i=(a=t?.length)!==null&&a!==void 0?a:0;if(i<=1||e==null)return 0;if(n==="angleAxis"&&o!=null&&Math.abs(Math.abs(o[1]-o[0])-360)<=1e-6)for(var s=o[1]-o[0],l=(z,N,O)=>[e,e+s,e-s].some($=>(O?$>=z:$>z)&&$<=N),u=0;u0?(c=r[u-1])===null||c===void 0?void 0:c.coordinate:(d=r[i-1])===null||d===void 0?void 0:d.coordinate,b=(f=r[u])===null||f===void 0?void 0:f.coordinate,h=u>=i-1?(p=r[0])===null||p===void 0?void 0:p.coordinate:(m=r[u+1])===null||m===void 0?void 0:m.coordinate,g=void 0;if(!(y==null||b==null||h==null))if(jr(b-y)!==jr(h-b)){var v=[];if(jr(h-b)===jr(o[1]-o[0])){g=h;var x=b+o[1]-o[0];v[0]=Math.min(x,(x+y)/2),v[1]=Math.max(x,(x+y)/2)}else{g=y;var S=h+o[1]-o[0];v[0]=Math.min(b,(S+b)/2),v[1]=Math.max(b,(S+b)/2)}var w=[Math.min(b,(g+b)/2),Math.max(b,(g+b)/2)];if(l(w[0],w[1],!1)||l(v[0],v[1],!0)){var A;return(A=r[u])===null||A===void 0?void 0:A.index}}else{var k=Math.min(y,h),_=Math.max(y,h);if(l((k+b)/2,(_+b)/2,!1)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}}else if(t)for(var E=0;E(j.coordinate+D.coordinate)/2||E>0&&E(j.coordinate+D.coordinate)/2&&e<=(j.coordinate+F.coordinate)/2)return j.index}}return-1};var qS=()=>Pe(rm),WO=(e,t)=>t,X9=(e,t,r)=>r,HO=(e,t,r,n)=>n,Z9=te(Aa,e=>wl(e,t=>t.coordinate)),KO=te([Ml,WO,X9,HO],zS),qO=te([KO,Il,Tl,Zu],Yu),J9=(e,t,r)=>{if(t!=null){var n=Ml(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},Q9=te([Ml,WO,X9,HO],FS),ev=te([wo,So,_t,Nr,Aa,HO,Q9],BS),R9=te([KO,ev],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),VO=te([Aa,qO],IS),eF=te([Q9,qO,_a,Tl,VO,US,WO],WS),tF=te([KO,qO],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),Mce=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&Y9(e,i)){var s=N6(e,t),l=UO(s,a,o,r,n),u=V9(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},Ice=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=oB(e,r);if(s){var l=T6(s,t),u=UO(l,i,a,n,o),c=G9(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},rF=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?Mce(e,t,n,o,a,i,s):Ice(e,t,r,n,o,a,i)};var Em=V(Y()),fF=V(qg());var nF=te(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,r)=>r,(e,t,r)=>{if(t!=null){var n=e[t];if(n!=null)return r?n.panoramaElement:n.element}}),oF=te(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(Xt)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:jB}});function aF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function iF(e){for(var t=1;tiF(iF({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),Lce)},Bce=new Set(Object.values(Xt));function Fce(e){return Bce.has(e)}var sF=yr({name:"zIndex",initialState:zce,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]?e.zIndexMap[r].consumers+=1:e.zIndexMap[r]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:kr()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!Fce(r)&&delete e.zIndexMap[r])},prepare:kr()},registerZIndexPortalElement:{reducer:(e,t)=>{var r=t.payload,n=r.zIndex,o=r.element,a=r.isPanorama;e.zIndexMap[n]?a?e.zIndexMap[n].panoramaElement=Lt(o):e.zIndexMap[n].element=Lt(o):e.zIndexMap[n]={consumers:0,element:a?void 0:Lt(o),panoramaElement:a?Lt(o):void 0}},prepare:kr()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(t.payload.isPanorama?e.zIndexMap[r].panoramaElement=void 0:e.zIndexMap[r].element=void 0)},prepare:kr()}}}),VS=sF.actions,lF=VS.registerZIndexPortal,GS=VS.unregisterZIndexPortal,uF=VS.registerZIndexPortalElement,cF=VS.unregisterZIndexPortalElement;var dF=sF.reducer;function Hr(e){var t=e.zIndex,r=e.children,n=K6(),o=n&&t!==void 0&&t!==0,a=vr(),i=(0,Em.useRef)(void 0),s=(0,Em.useRef)(new Set),l=wt(),u=Pe(d=>nF(d,t,a));if((0,Em.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(p=>{l(GS({zIndex:p}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(lF({zIndex:t})),s.current.add(t)),u){i.current=u;var f=s.current;f.forEach(p=>{p!==t&&(l(GS({zIndex:p})),f.delete(p))})}},[l,t,o,u]),(0,Em.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(f=>{l(GS({zIndex:f}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,fF.createPortal)(r,c):null}function GO(){return GO=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,ZS.useContext)(YO);var rv=V(Y());var vF=V(yF(),1);var xF=vF.default;var Tm=new xF;var QS="recharts.syncEvent.tooltip",ZO="recharts.syncEvent.brush";var Ju=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!xo(r))return e[r]}},Yce={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},bF=yr({name:"options",initialState:Yce,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),wF=bF.reducer,SF=bF.actions.createEventEmitter;function kF(e){return e.tooltip.syncInteraction}var Xce={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},_F=yr({name:"chartData",initialState:Xce,reducers:{setChartData(e,t){if(e.chartData=Lt(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var r=t.payload,n=r.startIndex,o=r.endIndex;n!=null&&(e.dataStartIndex=n),o!=null&&(e.dataEndIndex=o)}}}),JO=_F.actions,QO=JO.setChartData,CF=JO.setDataStartEndIndexes,Zce=JO.setComputedData;var AF=_F.reducer;var Jce=["x","y"];function EF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Om(e){for(var t=1;tl.rootProps.className);(0,rv.useEffect)(()=>{if(e==null)return na;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(_m({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(n==="index"){var f;if(i&&c!==null&&c!==void 0&&(f=c.payload)!==null&&f!==void 0&&f.coordinate&&c.payload.sourceViewBox){var p=c.payload.coordinate,m=p.x,y=p.y,b=tde(p,Jce),h=c.payload.sourceViewBox,g=h.x,v=h.y,x=h.width,S=h.height,w=Om(Om({},b),{},{x:i.x+(x?(m-g)/x:0)*i.width,y:i.y+(S?(y-v)/S:0)*i.height});r(Om(Om({},c),{},{payload:Om(Om({},c.payload),{},{coordinate:w})}))}else r(c);return}if(o!=null){var A;if(typeof n=="function"){var k={activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate},_=n(o,k);A=o[_]}else n==="value"&&(A=o.find(O=>String(O.value)===c.payload.label));var C=c.payload.coordinate;if(C==null||i==null){r(_m({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(A==null){r(_m({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var E=C.x,j=C.y,F=Math.min(E,i.x+i.width),D=Math.min(j,i.y+i.height),z={x:a==="horizontal"?A.coordinate:F,y:a==="horizontal"?D:A.coordinate},N=_m({active:c.payload.active,coordinate:z,dataKey:c.payload.dataKey,index:String(A.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return Tm.on(QS,l),()=>{Tm.off(QS,l)}},[s,r,t,e,n,o,a,i])}function ode(){var e=Pe(Mw),t=Pe(Iw),r=wt();(0,rv.useEffect)(()=>{if(e==null)return na;var n=(o,a,i)=>{t!==i&&e===o&&r(CF(a))};return Tm.on(ZO,n),()=>{Tm.off(ZO,n)}},[r,t,e])}function NF(){var e=wt();(0,rv.useEffect)(()=>{e(SF())},[e]),nde(),ode()}function TF(e,t,r,n,o,a){var i=Pe(m=>J9(m,e,t)),s=Pe(KS),l=Pe(Iw),u=Pe(Mw),c=Pe(hT),d=Pe(kF),f=d?.sourceViewBox!=null,p=id();(0,rv.useEffect)(()=>{if(!f&&u!=null&&l!=null){var m=_m({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:p,graphicalItemId:s});Tm.emit(QS,u,m,l)}},[f,r,i,s,o,n,l,u,c,a,p])}function OF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function PF(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{A(A9({shared:g,trigger:v,axisId:w,active:o,defaultIndex:k}))},[A,g,v,w,o,k]);var _=id(),C=uw(),E=b9(g),j=(t=Pe(Z=>tF(Z,E,v,k)))!==null&&t!==void 0?t:{},F=j.activeIndex,D=j.isActive,z=Pe(Z=>eF(Z,E,v,k)),N=Pe(Z=>VO(Z,E,v,k)),O=Pe(Z=>R9(Z,E,v,k)),$=z,T=gF(),I=(r=o??D)!==null&&r!==void 0?r:!1,P=S1([$,I]),H=lde(P,2),Q=H[0],K=H[1],ue=E==="axis"?N:void 0;TF(E,v,O,ue,F,I);var pe=S??T;if(pe==null||_==null||E==null)return null;var re=$??IF;I||(re=IF),u&&re.length&&(re=h1(re.filter(Z=>Z.value!=null&&(Z.hide!==!0||n.includeHidden)),f,pde));var _e=re.length>0,de=PF(PF({},n),{},{payload:re,label:ue,active:I,activeIndex:F,coordinate:O,accessibilityLayer:C}),le=Mi.createElement(gz,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:I,coordinate:O,hasPayload:_e,offset:d,position:p,reverseDirection:m,useTranslate3d:y,viewBox:_,wrapperStyle:b,lastBoundingBox:Q,innerRef:K,hasPortalFromProps:!!S},mde(l,de));return Mi.createElement(Mi.Fragment,null,(0,jF.createPortal)(le,pe),I&&Mi.createElement(mF,{cursor:h,tooltipEventType:E,coordinate:O,payload:re,index:F}))}var Dl=e=>null;Dl.displayName="Cell";var e5=V(Y()),rk=V(Y());function hde(e,t,r){return(t=yde(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function yde(e){var t=vde(e,"string");return typeof t=="symbol"?t:t+""}function vde(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var RS=class{constructor(t){hde(this,"cache",new Map),this.maxSize=t}get(t){var r=this.cache.get(t);return r!==void 0&&(this.cache.delete(t),this.cache.set(t,r)),r}set(t,r){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(t,r)}clear(){this.cache.clear()}size(){return this.cache.size}};function $F(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function xde(e){for(var t=1;t{try{var r=document.getElementById(zF);r||(r=document.createElement("span"),r.setAttribute("id",zF),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,_de,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},Pd=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||Ai.isSsr)return{width:0,height:0};if(!FF.enableCache)return BF(t,r);var n=Cde(t,r),o=LF.get(n);if(o)return o;var a=BF(t,r);return LF.set(n,a),a};var qF;function ek(e,t){return Tde(e)||Nde(e,t)||Ede(e,t)||Ade()}function Ade(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ede(e,t){if(e){if(typeof e=="string")return UF(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?UF(e,t):void 0}}function UF(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);re.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=e.breakAll,n=e.style;try{var o=[];Yt(t)||(r?o=t.toString().split(""):o=t.toString().split(QF));var a=o.map(s=>({word:s,width:Pd(s,n).width})),i=r?0:Pd("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function nk(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function eU(e){return Yt(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var tU=(e,t,r,n)=>e.reduce((o,a)=>{var i=a.word,s=a.width,l=o[o.length-1];if(l&&s!=null&&(t==null||n||l.width+s+re.reduce((t,r)=>t.width>r.width?t:r),Xde="\u2026",ZF=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=RF({breakAll:r,style:n,children:l+Xde});if(!u)return[!1,[]];var c=tU(u.wordsWithComputedWidth,a,i,s),d=c.length>o||rU(c).width>Number(a);return[d,c]},Zde=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=Oe(a),c=String(i),d=tU(t,n,r,o);if(!u||o)return d;var f=d.length>a||rU(d).width>Number(n);if(!f)return d;for(var p=0,m=c.length-1,y=0,b;p<=m&&y<=c.length-1;){var h=Math.floor((p+m)/2),g=h-1,v=ZF(c,g,l,s,a,n,r,o),x=YF(v,2),S=x[0],w=x[1],A=ZF(c,h,l,s,a,n,r,o),k=YF(A,1),_=k[0];if(!S&&!_&&(p=h+1),S&&_&&(m=h-1),!S&&_){b=w;break}y++}return b||d},JF=e=>{var t=Yt(e)?[]:e.toString().split(QF);return[{words:t,width:void 0}]},Jde=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!Ai.isSsr){var s,l,u=RF({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return JF(n);return Zde({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return JF(n)},nU="#808080",Qde={angle:0,breakAll:!1,capHeight:"0.71em",fill:nU,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},Md=(0,rk.forwardRef)((e,t)=>{var r=Kt(e,Qde),n=r.x,o=r.y,a=r.lineHeight,i=r.capHeight,s=r.fill,l=r.scaleToFit,u=r.textAnchor,c=r.verticalAnchor,d=GF(r,Wde),f=(0,rk.useMemo)(()=>Jde({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:l,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,l,d.style,d.width]),p=d.dx,m=d.dy,y=d.angle,b=d.className,h=d.breakAll,g=GF(d,Hde);if(!ra(n)||!ra(o)||f.length===0)return null;var v=Number(n)+(Oe(p)?p:0),x=Number(o)+(Oe(m)?m:0);if(!ht(v)||!ht(x))return null;var S;switch(c){case"start":S=tk("calc(".concat(i,")"));break;case"middle":S=tk("calc(".concat((f.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:S=tk("calc(".concat(f.length-1," * -").concat(a,")"));break}var w=[],A=f[0];if(l&&A!=null){var k=A.width,_=d.width;w.push("scale(".concat(Oe(_)&&Oe(k)?_/k:1,")"))}return y&&w.push("rotate(".concat(y,", ").concat(v,", ").concat(x,")")),w.length&&(g.transform=w.join(" ")),e5.createElement("text",RO({},tn(g),{ref:t,x:v,y:x,className:ut("recharts-text",b),textAnchor:u,fill:s.includes("url")?nU:s}),f.map((C,E)=>{var j=C.words.join(h?"":" ");return e5.createElement("tspan",{x:v,dy:E===0?S:a,key:"".concat(j,"-").concat(E)},j)}))});Md.displayName="Text";var Ea=V(Y()),oo=V(Y());var Rde=["labelRef"],efe=["content"];function oU(e,t){if(e==null)return{};var r,n,o=tfe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var t=e.x,r=e.y,n=e.upperWidth,o=e.lowerWidth,a=e.width,i=e.height,s=e.children,l=(0,oo.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return Ea.createElement(iU.Provider,{value:l},s)},lU=()=>{var e=(0,oo.useContext)(iU),t=id();return e||(t?qh(t):void 0)},uU=(0,oo.createContext)(null),cU=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=e.clockWise,l=e.children,u=(0,oo.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return Ea.createElement(uU.Provider,{value:u},l)},afe=()=>{var e=(0,oo.useContext)(uU),t=Pe(zw);return e||t},ife=e=>{var t=e.value,r=e.formatter,n=Yt(e.children)?t:e.children;return typeof r=="function"?r(n):n},Dd=e=>e!=null&&typeof e=="function",sfe=(e,t)=>{var r=jr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},lfe=(e,t,r,n,o)=>{var a=e.offset,i=e.className,s=o.cx,l=o.cy,u=o.innerRadius,c=o.outerRadius,d=o.startAngle,f=o.endAngle,p=o.clockWise,m=(u+c)/2,y=sfe(d,f),b=y>=0?1:-1,h,g;switch(t){case"insideStart":h=d+b*a,g=p;break;case"insideEnd":h=f-b*a,g=!p;break;case"end":h=f+b*a,g=p;break;default:throw new Error("Unsupported position ".concat(t))}g=y<=0?g:!g;var v=Wr(s,l,m,h),x=Wr(s,l,m,h+(g?1:-1)*359),S="M".concat(v.x,",").concat(v.y,` A`).concat(m,",").concat(m,",0,1,").concat(g?0:1,`, - `).concat(b.x,",").concat(b.y),w=qt(e.id)?ul("recharts-radial-line-"):e.id;return wa.createElement("text",Nl({},n,{dominantBaseline:"central",className:lt("recharts-radial-bar-label",i)}),wa.createElement("defs",null,wa.createElement("path",{id:w,d:_})),wa.createElement("textPath",{xlinkHref:"#".concat(w)},r))},Dde=(e,t,r)=>{var n=e.cx,o=e.cy,a=e.innerRadius,i=e.outerRadius,s=e.startAngle,l=e.endAngle,u=(s+l)/2;if(r==="outside"){var c=zr(n,o,i+t,u),d=c.x,f=c.y;return{x:d,y:f,textAnchor:d>=n?"start":"end",verticalAnchor:"middle"}}if(r==="center")return{x:n,y:o,textAnchor:"middle",verticalAnchor:"middle"};if(r==="centerTop")return{x:n,y:o,textAnchor:"middle",verticalAnchor:"start"};if(r==="centerBottom")return{x:n,y:o,textAnchor:"middle",verticalAnchor:"end"};var p=(a+i)/2,m=zr(n,o,p,u),y=m.x,x=m.y;return{x:y,y:x,textAnchor:"middle",verticalAnchor:"middle"}},wm=e=>e!=null&&"cx"in e&&Oe(e.cx),Ide={angle:0,offset:5,zIndex:Vt.label,position:"middle",textBreakAll:!1};function jde(e){if(!wm(e))return e;var t=e.cx,r=e.cy,n=e.outerRadius,o=n*2;return{x:t-n,y:r-n,width:o,upperWidth:o,lowerWidth:o,height:o}}function El(e){var t,r,n=Ut(e,Ide),o=n.viewBox,a=n.parentViewBox,i=n.position,s=n.value,l=n.children,u=n.content,c=n.className,d=c===void 0?"":c,f=n.textBreakAll,p=n.labelRef,m=Tde(),y=VF(),x=i==="center"?y:m??y,h,g,v;o==null?h=x:wm(o)?h=o:h=Ih(o);var b=jde(h);if(!h||qt(s)&&qt(l)&&!(0,Qn.isValidElement)(u)&&typeof u!="function")return null;var _=wm(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(wm(h))_||(v=Dde(h,n.offset,n.position));else if(b){var w=Cb({viewBox:b,position:i,offset:n.offset,parentViewBox:wm(a)?void 0:a,clamp:!0});v=Ad(Ad({x:w.x,y:w.y,textAnchor:w.horizontalAnchor,verticalAnchor:w.verticalAnchor},w.width!==void 0?{width:w.width}:{}),w.height!==void 0?{height:w.height}:{})}var C=Ad(Ad(Ad(Ad({},((t=v)===null||t===void 0?void 0:t.x)!==void 0?{x:v.x}:{}),((r=v)===null||r===void 0?void 0:r.y)!==void 0?{y:v.y}:{}),n),{},{viewBox:h});if((0,Qn.isValidElement)(u)){var S=C.labelRef,k=WF(C,kde);return(0,Qn.cloneElement)(u,k)}if(typeof u=="function"){var A=C.content,O=WF(C,_de);if(g=(0,Qn.createElement)(u,O),(0,Qn.isValidElement)(g))return g}else g=Ode(n);var $=Jr(n);return _&&wm(h)?Mde(n,i,g,$,h):v==null?null:wa.createElement(Br,{zIndex:n.zIndex},wa.createElement(_d,Nl({ref:p,className:lt("recharts-label",d)},$,v,{textAnchor:GS($.textAnchor)?$.textAnchor:v.textAnchor,breakAll:f}),g))}El.displayName="Label";var $de=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?wa.createElement(El,Nl({key:"label-implicit"},n)):Zo(e)?wa.createElement(El,Nl({key:"label-implicit",value:e},n)):(0,Qn.isValidElement)(e)?e.type===El?(0,Qn.cloneElement)(e,Ad({key:"label-implicit"},n)):wa.createElement(El,Nl({key:"label-implicit",content:e},n)):Cd(e)?wa.createElement(El,Nl({key:"label-implicit",content:e},n)):e&&typeof e=="object"?wa.createElement(El,Nl({},e,{key:"label-implicit"},n)):null};function XF(e){var t=e.label,r=e.labelRef,n=VF();return $de(t,n,r)||null}var Tl=G(Y()),Sm=G(Y());var Lde=["valueAccessor"],zde=["dataKey","clockWise","id","textBreakAll","zIndex"];function XS(){return XS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(zF(t))return t},JF=(0,Sm.createContext)(void 0),km=JF.Provider,QF=(0,Sm.createContext)(void 0),RF=QF.Provider;function Ude(){return(0,Sm.useContext)(JF)}function Wde(){return(0,Sm.useContext)(QF)}function YS(e){var t=e.valueAccessor,r=t===void 0?Fde:t,n=ZF(e,Lde),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=ZF(n,zde),c=Ude(),d=Wde(),f=c||d;return!f||!f.length?null:Tl.createElement(Br,{zIndex:l??Vt.label},Tl.createElement(sr,{className:"recharts-label-list"},f.map((p,m)=>{var y,x=qt(o)?r(p,m):At(p.payload,o),h=qt(i)?{}:{id:"".concat(i,"-").concat(m)};return Tl.createElement(El,XS({key:"label-".concat(m)},Jr(p),u,h,{fill:(y=n.fill)!==null&&y!==void 0?y:p.fill,parentViewBox:p.parentViewBox,value:x,textBreakAll:s,viewBox:p.viewBox,index:m,zIndex:0}))})))}YS.displayName="LabelList";function Vu(e){var t=e.label;return t?t===!0?Tl.createElement(YS,{key:"labelList-implicit"}):Tl.isValidElement(t)||Cd(t)?Tl.createElement(YS,{key:"labelList-implicit",content:t}):typeof t=="object"?Tl.createElement(YS,XS({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var eU=G(Y());function HO(){return HO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=e.cx,r=e.cy,n=e.r,o=e.className,a=lt("recharts-dot",o);return Oe(t)&&Oe(r)&&Oe(n)?eU.createElement("circle",HO({},Zr(e),Sp(e),{className:a,cx:t,cy:r,r:n})):null};var KO=e=>e.graphicalItems.polarItems,Hde=ee([Qr,ad],Py),JS=ee([KO,an,Hde],My),Kde=ee([JS],Dy),QS=ee([Kde,td],Iy),qde=ee([QS,an,JS],XT),m$e=ee([QS,an,JS],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=At(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:At(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),tU=()=>{},Vde=ee([QS,an,JS,dm,Qr,tB],$y),Gde=ee([an,yS,vS,tU,Vde,tU,wt,Qr],Ly),rU=ee([an,wt,QS,qde,Tu,Qr,Gde],zy),Yde=ee([rU,wd,Sl],By),Xde=ee([an,rU,Yde,Qr],Fy),g$e=ee([Sl,Xde],Ow);var Zde={radiusAxis:{},angleAxis:{}},nU=mr({name:"polarAxis",initialState:Zde,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Dt(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Dt(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),RS=nU.actions,x$e=RS.addRadiusAxis,b$e=RS.removeRadiusAxis,w$e=RS.addAngleAxis,S$e=RS.removeAngleAxis;var oU=nU.reducer;function ek(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Ot=G(Y()),Om=G(Y());function aU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function iU(e){for(var t=1;tt,qO=ee([KO,efe],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),tfe=[],VO=(e,t,r)=>r?.length===0?tfe:r,sU=ee([td,qO,VO],(e,t,r)=>{var n=e.chartData;if(t!=null){var o;if(t?.data!=null&&t.data.length>0?o=t.data:o=n,(!o||!o.length)&&r!=null&&(o=r.map(a=>iU(iU({},t.presentationProps),a.props))),o!=null)return o}}),lU=ee([sU,qO,VO],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=At(n,t.nameKey,t.name),s;return r!=null&&(a=r[o])!==null&&a!==void 0&&(a=a.props)!==null&&a!==void 0&&a.fill?s=r[o].props.fill:typeof n=="object"&&n!=null&&"fill"in n?s=n.fill:s=t.fill,{value:Ha(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),uU=ee([sU,qO,VO,Ar],(e,t,r,n)=>{if(!(t==null||e==null))return cU({offset:n,pieSettings:t,displayedData:e,cells:r})});var hU=G(Y()),yU=G(pU());var mU=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",gU=null,XO=null,vU=e=>{if(e===gU&&Array.isArray(XO))return XO;var t=[];return hU.Children.forEach(e,r=>{qt(r)||((0,yU.isFragment)(r)?t=t.concat(vU(r.props.children)):t.push(r))}),XO=t,gU=e,t};function Vy(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>mU(o)):n=[mU(t)],vU(e).forEach(o=>{var a=fo(o,"type.displayName")||fo(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var _m=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var Am=G(Y()),Gy=G(Y());function xU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function bU(e){for(var t=1;t{var n=xt();return(o,a)=>i=>{e?.(o,a,i),n(_S({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},Xy=e=>{var t=xt();return(r,n)=>o=>{e?.(r,n,o),t(d9())}},Zy=(e,t,r)=>{var n=xt();return(o,a)=>i=>{e?.(o,a,i),n(f9({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var Jy=G(Y());function Yu(e){var t=e.tooltipEntrySettings,r=xt(),n=gr(),o=(0,Jy.useRef)(null);return(0,Jy.useLayoutEffect)(()=>{n||(o.current===null?r(s9(t)):o.current!==t&&r(l9({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,Jy.useLayoutEffect)(()=>()=>{o.current&&(r(u9(o.current)),o.current=null)},[r]),null}var Xu=G(Y());function Cm(e){var t=e.legendPayload,r=xt(),n=gr(),o=(0,Xu.useRef)(null);return(0,Xu.useLayoutEffect)(()=>{n||(o.current===null?r(BN(t)):o.current!==t&&r(FN({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Xu.useLayoutEffect)(()=>()=>{o.current&&(r(UN(o.current)),o.current=null)},[r]),null}function SU(e){var t=e.legendPayload,r=xt(),n=Pe(wt),o=(0,Xu.useRef)(null);return(0,Xu.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(BN(t)):o.current!==t&&r(FN({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Xu.useLayoutEffect)(()=>()=>{o.current&&(r(UN(o.current)),o.current=null)},[r]),null}var AU=G(Y()),ev=G(Y());function dfe(e,t){return gfe(e)||mfe(e,t)||pfe(e,t)||ffe()}function ffe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function pfe(e,t){if(e){if(typeof e=="string")return kU(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?kU(e,t):void 0}}function kU(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r2&&arguments[2]!==void 0?arguments[2]:[],n=[];for(var o of r)n.push({status:"removed",prev:o});for(var a=0;ae[Math.floor(a*r)]);return ZO(n,t)}function yfe(e,t){var r=t.map((n,o)=>e[o]);return ZO(r,t)}function vfe(e,t){for(var r=new Map,n=0;n{var p=r(d,f);if(p!=null){var m=n.get(p);if(m!==void 0)return o.add(p),m}}),i=[];for(var s of n){var l=dfe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return ZO(a,t,i)}function Ry(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Ed?hfe(e,t):r===Qy?yfe(e,t):xfe(e,t,r)}var Em=G(Y());function dk(e,t){var r=(0,Em.useRef)(e),n=(0,Em.useRef)(t.current),o=(0,Em.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,Em.useCallback)(function(i,s){var l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(s===0){o.current=!0;return}s===1&&(n.current=i),s>0&&o.current&&l&&(t.current=i)},[t]);return{startValue:n.current,syncStepValue:a}}function bfe(e,t){return _fe(e)||kfe(e,t)||Sfe(e,t)||wfe()}function wfe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Sfe(e,t){if(e){if(typeof e=="string")return _U(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_U(e,t):void 0}}function _U(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{typeof e=="function"&&e(),a(!0)},[e]),s=(0,ev.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function Ju(e){var t,r=e.animationInput,n=e.animationIdPrefix,o=e.items,a=e.previousItemsRef,i=e.isAnimationActive,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.onAnimationStart,d=e.onAnimationEnd,f=e.animationInterpolateFn,p=e.animationMatchBy,m=e.shouldUpdatePreviousRef,y=e.children,x=e.layout,h=aw(r,n),g=dk(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,b=Ry(v,o,p??Ed);return AU.createElement(ow,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},_=>{var w=v==null,C=o==null?o:f(b,_,x),S=m?m(_):_>0;return g.syncStepValue(C,_,S),C==null?null:y(C,_,w)})}var NU=G(Y()),QO=G(Y());var fk=G(Y());var JO;function Afe(e,t){return Tfe(e)||Nfe(e,t)||Efe(e,t)||Cfe()}function Cfe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Efe(e,t){if(e){if(typeof e=="string")return CU(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?CU(e,t):void 0}}function CU(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=fk.useState(()=>ul("uid-")),t=Afe(e,1),r=t[0];return r},pk=(JO=fk.useId)!==null&&JO!==void 0?JO:Ofe;function EU(e,t){var r=pk();return t||(e?"".concat(e,"-").concat(r):r)}var Pfe=(0,QO.createContext)(void 0),Qu=e=>{var t=e.id,r=e.type,n=e.children,o=EU("recharts-".concat(r),t);return NU.createElement(Pfe.Provider,{value:o},n(o))};var Qi=G(Y());var Mfe={cartesianItems:[],polarItems:[]},TU=mr({name:"graphicalItems",initialState:Mfe,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Dt(t.payload))},prepare:br()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Co(e).cartesianItems.indexOf(Dt(n));a>-1&&(e.cartesianItems[a]=Dt(o))},prepare:br()},removeCartesianGraphicalItem:{reducer(e,t){var r=Co(e).cartesianItems.indexOf(Dt(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:br()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Dt(t.payload))},prepare:br()},removePolarGraphicalItem:{reducer(e,t){var r=Co(e).polarItems.indexOf(Dt(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:br()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Co(e).polarItems.indexOf(Dt(n));a>-1&&(e.polarItems[a]=Dt(o))},prepare:br()}}}),Nm=TU.actions,OU=Nm.addCartesianGraphicalItem,PU=Nm.replaceCartesianGraphicalItem,MU=Nm.removeCartesianGraphicalItem,DU=Nm.addPolarGraphicalItem,IU=Nm.removePolarGraphicalItem,jU=Nm.replacePolarGraphicalItem;var $U=TU.reducer;var Dfe=e=>{var t=xt(),r=(0,Qi.useRef)(null);return(0,Qi.useLayoutEffect)(()=>{r.current===null?t(OU(e)):r.current!==e&&t(PU({prev:r.current,next:e})),r.current=e},[t,e]),(0,Qi.useLayoutEffect)(()=>()=>{r.current&&(t(MU(r.current)),r.current=null)},[t]),null},Tm=(0,Qi.memo)(Dfe),Ife=e=>{var t=xt(),r=(0,Qi.useRef)(null);return(0,Qi.useLayoutEffect)(()=>{r.current===null?t(DU(e)):r.current!==e&&t(jU({prev:r.current,next:e})),r.current=e},[t,e]),(0,Qi.useLayoutEffect)(()=>()=>{r.current&&(t(IU(r.current)),r.current=null)},[t]),null},LU=(0,Qi.memo)(Ife);var jfe=["key"],$fe=["onMouseEnter","onClick","onMouseLeave"],Lfe=["id"],zfe=["id"];function Nd(){return Nd=Object.assign?Object.assign.bind():function(e){for(var t=1;tVy(e.children,Cl),[e.children]),r=Pe(n=>lU(n,e.id,t));return r==null?null:Ot.createElement(SU,{legendPayload:r})}function Kfe(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Ot.isValidElement(e)){var t,r=(t=e.props)===null||t===void 0?void 0:t.fill;return typeof r=="string"?r:void 0}var n=e.fill;return typeof n=="string"?n:void 0}}var qfe=Ot.memo(e=>{var t=e.dataKey,r=e.nameKey,n=e.sectors,o=e.stroke,a=e.strokeWidth,i=e.fill,s=e.name,l=e.hide,u=e.tooltipType,c=e.formatter,d=e.id,f=e.activeShape,p=Kfe(f),m=n.map(x=>{var h=x.tooltipPayload;return p==null||h==null?h:h.map(g=>sn(sn({},g),{},{color:p,fill:p}))}),y={dataDefinedOnItem:m,getPosition:x=>{var h;return(h=n[Number(x)])===null||h===void 0?void 0:h.tooltipPosition},settings:{stroke:o,strokeWidth:a,fill:i,dataKey:t,nameKey:r,name:Ha(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Ot.createElement(Yu,{tooltipEntrySettings:y})}),Vfe=(e,t)=>e>t?"start":etypeof t=="function"?pn(t(e),r,r*.8):pn(t,r,r*.8),Yfe=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=uw(a,i),l=o+pn(e.cx,a,a/2),u=n+pn(e.cy,i,i/2),c=pn(e.innerRadius,s,0),d=Gfe(r,e.outerRadius,s),f=e.maxRadius||Math.sqrt(a*a+i*i)/2;return{cx:l,cy:u,innerRadius:c,outerRadius:d,maxRadius:f}},Xfe=(e,t)=>{var r=Mr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Zfe=(e,t)=>{if(Ot.isValidElement(e))return Ot.cloneElement(e,t);if(typeof e=="function")return e(t);var r=lt("recharts-pie-label-line",typeof e!="boolean"?e.className:""),n=t.key,o=mk(t,jfe);return Ot.createElement(Ss,Nd({},o,{type:"linear",className:r}))},Jfe=(e,t,r)=>{if(Ot.isValidElement(e))return Ot.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Ot.isValidElement(n)))return n;var o=lt("recharts-pie-label-text",ek(e));return Ot.createElement(_d,Nd({},t,{alignmentBaseline:"middle",className:o}),n)};function Qfe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label,a=r.labelLine,i=r.dataKey;if(!n||!o||!t)return null;var s=Zr(r),l=za(o),u=za(a),c=typeof o=="object"&&"offsetRadius"in o&&typeof o.offsetRadius=="number"&&o.offsetRadius||20,d=t.map((f,p)=>{var m=(f.startAngle+f.endAngle)/2,y=zr(f.cx,f.cy,f.outerRadius+c,m),x=sn(sn(sn(sn({},s),f),{},{stroke:"none"},l),{},{index:p,textAnchor:Vfe(y.x,f.cx)},y),h=sn(sn(sn(sn({},s),f),{},{fill:"none",stroke:f.fill},u),{},{index:p,points:[zr(f.cx,f.cy,f.outerRadius,m),y],key:"line"});return Ot.createElement(Br,{zIndex:Vt.label,key:"label-".concat(f.startAngle,"-").concat(f.endAngle,"-").concat(f.midAngle,"-").concat(p)},Ot.createElement(sr,null,a&&Zfe(a,h),Jfe(o,x,At(f,i))))});return Ot.createElement(sr,{className:"recharts-pie-labels"},d)}function Rfe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Ot.createElement(Vu,{label:o}):Ot.createElement(Qfe,{sectors:t,props:r,showLabels:n})}function epe(e){var t=e.sectors,r=e.activeShape,n=e.inactiveShape,o=e.allOtherPieProps,a=e.shape,i=e.id,s=e.animationElapsedTime,l=e.isAnimating,u=e.isEntrance,c=Pe(_i),d=Pe(mm),f=Pe(IS),p=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,x=mk(o,$fe),h=Yy(p,o.dataKey,i),g=Xy(y),v=Zy(m,o.dataKey,i);return t==null||t.length===0?null:Ot.createElement(Ot.Fragment,null,t.map((b,_)=>{if(b?.startAngle===0&&b?.endAngle===0&&t.length!==1)return null;var w=f==null||f===i,C=String(_)===c&&(d==null||o.dataKey===d)&&w,S=c?n:null,k=r&&C?r:S,A=sn(sn({},b),{},{stroke:b.stroke,tabIndex:-1,index:_,isActive:C,animationElapsedTime:s,isAnimating:l,isEntrance:u,[U1]:_,[W1]:i});return Ot.createElement(sr,Nd({key:"sector-".concat(b?.startAngle,"-").concat(b?.endAngle,"-").concat(b.midAngle,"-").concat(_),tabIndex:-1,className:"recharts-pie-sector"},dl(x,b,_),{onMouseEnter:h(b,_),onMouseLeave:g(b,_),onClick:v(b,_)}),Ot.createElement(Gu,{option:k??a,DefaultShape:BU,shapeProps:A}))}))}function cU(e){var t,r=e.pieSettings,n=e.displayedData,o=e.cells,a=e.offset,i=r.cornerRadius,s=r.startAngle,l=r.endAngle,u=r.dataKey,c=r.nameKey,d=r.tooltipType,f=Math.abs(r.minAngle),p=Xfe(s,l),m=Math.abs(p),y=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,x=n.filter(S=>At(S,u,0)!==0).length,h=(m>=360?x:x-1)*y,g=n.reduce((S,k)=>{var A=At(k,u,0);return S+(Oe(A)?A:0)},0),v=f>0&&g>0&&n.some(S=>{var k=At(S,u,0),A=(Oe(k)?k:0)/g;return k!==0&&A*m0){var C;w=n.map((S,k)=>{var A=At(S,u,0),O=At(S,c,k),$=Yfe(r,a,S),F=(Oe(A)?A:0)/g,P,z=sn(sn({},S),o&&o[k]&&o[k].props),N=z!=null&&"fill"in z&&typeof z.fill=="string"?z.fill:r.fill;k?P=C.endAngle+Mr(p)*y*(A!==0?1:0):P=s;var D=P+Mr(p)*((A!==0?b:0)+F*_),T=(P+D)/2,E=($.innerRadius+$.outerRadius)/2,I=[{name:O,value:A,payload:z,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],j=zr($.cx,$.cy,E,T);return C=sn(sn(sn(sn({},r.presentationProps),{},{percent:F,cornerRadius:typeof i=="string"?parseFloat(i):i,name:O,tooltipPayload:I,midAngle:T,middleRadius:E,tooltipPosition:j},z),$),{},{value:A,dataKey:u,startAngle:P,endAngle:D,payload:z,paddingAngle:A!==0?Mr(p)*y:0}),C})}return w}function tpe(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,Om.useMemo)(()=>!t||!r?[]:r.map(a=>({value:a.value,payload:a.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:a.cx,cy:a.cy,innerRadius:a.innerRadius,outerRadius:a.outerRadius,startAngle:a.startAngle,endAngle:a.endAngle,clockWise:!1},fill:a.fill})),[r,t]);return Ot.createElement(RF,{value:t?o:void 0},n)}var rpe=(e,t)=>{if(e==null)return[];var r=[],n=e.find(a=>a.status!=="removed"),o=n?n.next.startAngle:0;return e.forEach((a,i)=>{if(a.status!=="removed"){var s=i>0?fo(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=pr(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=sn(sn({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=pr(0,a.next.endAngle-a.next.startAngle,t),d=sn(sn({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function npe(e){var t,r,n,o,a=e.props,i=e.previousSectorsRef,s=e.id,l=a.sectors,u=a.activeShape,c=a.inactiveShape,d=a.animationInterpolateFn,f=Zu(a.onAnimationStart,a.onAnimationEnd),p=f.isAnimating,m=f.handleAnimationStart,y=f.handleAnimationEnd,x=E6();if(x==null)return null;var h=l[0];return Ot.createElement(tpe,{showLabels:!p,sectors:l},Ot.createElement(Ju,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:y,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:x},(g,v,b)=>Ot.createElement(sr,null,Ot.createElement(epe,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:p||v<1,isEntrance:b}))),Ot.createElement(Rfe,{showLabels:!p,sectors:l,props:a}),Ot.createElement(YF,{cx:(t=h?.cx)!==null&&t!==void 0?t:0,cy:(r=h?.cy)!==null&&r!==void 0?r:0,innerRadius:(n=h?.innerRadius)!==null&&n!==void 0?n:0,outerRadius:(o=h?.outerRadius)!==null&&o!==void 0?o:0,startAngle:a.startAngle,endAngle:a.endAngle,clockWise:!1},a.children))}var ope={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:rpe,animationMatchBy:Qy,cx:"50%",cy:"50%",dataKey:"value",endAngle:360,fill:"#808080",hide:!1,innerRadius:0,isAnimationActive:"auto",label:!1,labelLine:!0,legendType:"rect",minAngle:0,nameKey:"name",outerRadius:"80%",paddingAngle:0,rootTabIndex:0,shape:BU,startAngle:0,stroke:"#fff",zIndex:Vt.area};function ape(e){var t=e.id,r=mk(e,Lfe),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,Om.useMemo)(()=>Vy(e.children,Cl),[e.children]),s=Pe(c=>uU(c,t,i)),l=(0,Om.useRef)(null),u=lt("recharts-pie",o);return n||s==null?(l.current=null,Ot.createElement(sr,{tabIndex:a,className:u})):Ot.createElement(Br,{zIndex:e.zIndex},Ot.createElement(qfe,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:s,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,formatter:e.formatter,id:t,activeShape:e.activeShape}),Ot.createElement(sr,{tabIndex:a,className:u},Ot.createElement(npe,{props:sn(sn({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function ipe(e){var t=Ut(e,ope),r=t.id,n=mk(t,zfe),o=Zr(n);return Ot.createElement(Qu,{id:r,type:"pie"},a=>Ot.createElement(Ot.Fragment,null,Ot.createElement(LU,{type:"pie",id:a,data:n.data,dataKey:n.dataKey,hide:n.hide,angleAxisId:0,radiusAxisId:0,name:n.name,nameKey:n.nameKey,tooltipType:n.tooltipType,legendType:n.legendType,fill:n.fill,cx:n.cx,cy:n.cy,startAngle:n.startAngle,endAngle:n.endAngle,paddingAngle:n.paddingAngle,minAngle:n.minAngle,innerRadius:n.innerRadius,outerRadius:n.outerRadius,cornerRadius:n.cornerRadius,presentationProps:o,maxRadius:t.maxRadius}),Ot.createElement(Hfe,Nd({},n,{id:a})),Ot.createElement(ape,Nd({},n,{id:a}))))}var gk=ipe;gk.displayName="Pie";var tv=G(Y()),yk=G(Y());var spe=["points"];function FU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function RO(e){for(var t=1;t{var h,g,v=RO(RO(RO({r:3},i),f),{},{index:x,cx:(h=y.x)!==null&&h!==void 0?h:void 0,cy:(g=y.y)!==null&&g!==void 0?g:void 0,dataKey:a,value:y.value,payload:y.payload,points:t});return tv.createElement(ppe,{key:"dot-".concat(x),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),tv.createElement(Br,{zIndex:c},tv.createElement(sr,hk({className:n},m),p))}var rv=G(Y()),bk=G(Y());function UU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function xk(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var RU=ee([QU,go,ho],(e,t,r)=>{if(!(!e||t==null||r==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,r-e.top-e.bottom)}});var Ru=()=>Pe(RU),eW=()=>Pe(A9);function tW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function t5(e){for(var t=1;t{var t=e.point,r=e.childIndex,n=e.mainColor,o=e.activeDot,a=e.dataKey,i=e.clipPath;if(o===!1||t.x==null||t.y==null)return null;var s={index:r,dataKey:a,cx:t.x,cy:t.y,r:4,fill:n??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},l=t5(t5(t5({},s),za(o)),Sp(o)),u;return(0,bk.isValidElement)(o)?u=(0,bk.cloneElement)(o,l):typeof o=="function"?u=o(l):u=rv.createElement(ZS,l),rv.createElement(sr,{className:"recharts-active-dot",clipPath:i},u)};function nv(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?Vt.activeDot:i,l=Pe(_i),u=eW();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return qt(c)?null:rv.createElement(Br,{zIndex:s},rv.createElement(Spe,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function kpe(e,t){return Epe(e)||Cpe(e,t)||Ape(e,t)||_pe()}function _pe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ape(e,t){if(e){if(typeof e=="string")return rW(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?rW(e,t):void 0}}function rW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!qt(n))return pn(n,t,0)},oW=(e,t,r)=>{var n={},o=e.filter(id),a=e.filter(u=>u.stackId==null),i=o.reduce((u,c)=>{var d=u[c.stackId];return d==null&&(d=[]),d.push(c),u[c.stackId]=d,u},n),s=Object.entries(i).map(u=>{var c,d=kpe(u,2),f=d[0],p=d[1],m=p.map(x=>x.dataKey),y=nW(t,r,(c=p[0])===null||c===void 0?void 0:c.barSize);return{stackId:f,dataKeys:m,barSize:y}}),l=a.map(u=>{var c=[u.dataKey].filter(f=>f!=null),d=nW(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function aW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function wk(e){for(var t=1;tg+(v.barSize||0),0);f+=(i-1)*s,f>=r&&(f-=(i-1)*s,s=0),f>=r&&d>0&&(c=!0,d*=.9,f=i*d);var p=Math.round((r-f)/2),m={offset:p-s,size:0};l=n.reduce((g,v)=>{var b,_={stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(b=v.barSize)!==null&&b!==void 0?b:0}},w=[...g,_];return m=_.position,w},u)}else{var y=pn(t,r,0,!0);r-2*y-(i-1)*s<=0&&(s=0);var x=(r-2*y-(i-1)*s)/i;x>1&&(x=Math.round(x));var h=pt(o)?Math.min(x,o):x;l=n.reduce((g,v,b)=>[...g,{stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:y+i*(x-h)/2+(h+s)*b,size:h}}],u)}return l}}var iW=(e,t,r,n,o,a,i)=>{var s=qt(i)?t:i,l=Ppe(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>wk(wk({},u),{},{position:wk(wk({},u.position),{},{offset:u.position.offset-o/2})}))),l};var sW=(e,t)=>{var r=Pu(t);if(!(!e||r==null||t==null)){var n=t.stackId;if(n!=null){var o=e[n];if(o){var a=o.stackedData;if(a)return a.find(i=>i.key===r)}}}};var lW=(e,t)=>{if(!(e==null||t==null)){var r=e.find(n=>n.stackId===t.stackId&&t.dataKey!=null&&n.dataKeys.includes(t.dataKey));if(r!=null)return r.position}};function uW(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&pt(e.zIndex)?e.zIndex:t}var cW=G(Y());var Sk=e=>{var t=e.chartData,r=xt(),n=gr();return(0,cW.useEffect)(()=>n?()=>{}:(r(FO(t)),()=>{r(FO(void 0))}),[t,r,n]),null};var dW={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},fW=mr({name:"brush",initialState:dW,reducers:{setBrushSettings(e,t){return t.payload==null?dW:t.payload}}}),G6e=fW.actions.setBrushSettings;var pW=fW.reducer;function Mpe(e){return(e%180+180)%180}var mW=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=Mpe(o),i=a*Math.PI/180,s=Math.atan(n/r),l=i>s&&i{e.dots.push(t.payload)},removeDot:(e,t)=>{var r=Co(e).dots.findIndex(n=>n===t.payload);r!==-1&&e.dots.splice(r,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var r=Co(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(Dt(t.payload))},removeLine:(e,t)=>{var r=Co(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),Pm=gW.actions,Q6e=Pm.addDot,R6e=Pm.removeDot,eze=Pm.addArea,tze=Pm.removeArea,rze=Pm.addLine,nze=Pm.removeLine;var hW=gW.reducer;var ov=G(Y()),av=G(Y());function Ipe(e,t){return zpe(e)||Lpe(e,t)||$pe(e,t)||jpe()}function jpe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function $pe(e,t){if(e){if(typeof e=="string")return yW(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?yW(e,t):void 0}}function yW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,av.useState)("".concat(ul("recharts"),"-clip")),n=Ipe(r,1),o=n[0],a=Ru();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return ov.createElement(Bpe.Provider,{value:o},ov.createElement("defs",null,ov.createElement("clipPath",{id:o},ov.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var Rr=G(Y()),Lo=G(Y());function xW(){}function r5(e){if(!e||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)==="[object Object]":!1}function bW(e,t,r){return iv(e,t,void 0,void 0,void 0,void 0,r)}function iv(e,t,r,n,o,a,i){let s=i(e,t,r,n,o,a);if(s!==void 0)return s;if(typeof e==typeof t)switch(typeof e){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return e===t;case"number":return e===t||Object.is(e,t);case"function":return e===t;case"object":return sv(e,t,a,i)}return sv(e,t,a,i)}function sv(e,t,r,n){if(Object.is(e,t))return!0;let o=fl(e),a=fl(t);if(o==="[object Arguments]"&&(o=Cp),a==="[object Arguments]"&&(a=Cp),o!==a)return!1;switch(o){case kp:return e.toString()===t.toString();case _p:return Cu(e.valueOf(),t.valueOf());case Ap:case Fb:case Bb:return Object.is(e.valueOf(),t.valueOf());case Lb:return e.source===t.source&&e.flags===t.flags;case S$:return e===t}r=r??new Map;let i=r.get(e),s=r.get(t);if(i!=null&&s!=null)return i===t;r.set(e,t),r.set(t,e);try{switch(o){case Ub:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!iv(u,t.get(l),l,e,t,r,n))return!1;return!0;case Wb:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;civ(d,p,void 0,e,t,r,n));if(f===-1)return!1;u.splice(f,1)}return!0}case Hb:case Vb:case Gb:case Yb:case Xb:case _$:case Zb:case Jb:case Qb:case A$:case Rb:case e1:if(Fh(e)!==Fh(t)||e.length!==t.length)return!1;for(let l=0;le*o)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-o)<=0}function kW(e,t){return kk(e,t+1)}function _W(e,t,r,n,o){for(var a=(n||[]).slice(),i=t.start,s=t.end,l=0,u=1,c=i,d=function(){var m=n?.[l];if(m===void 0)return{v:kk(n,u)};var y=l,x,h=()=>(x===void 0&&(x=r(m,y)),x),g=m.coordinate,v=l===0||Td(e,g,h,c,s);v||(l=0,c=i,u+=1),v&&(c=g+e*(h()/2+o),l+=u)},f;u<=a.length;)if(f=d(),f)return f.v;return[]}function AW(e,t,r,n,o){var a=(n||[]).slice(),i=a.length;if(i===0)return[];for(var s=t.start,l=t.end,u=1;u<=i;u++){for(var c=(i-1)%u,d=s,f=!0,p=function(){var b=n[y];if(b==null)return 0;var _=y,w,C=()=>(w===void 0&&(w=r(b,_)),w),S=b.coordinate,k=y===c||Td(e,S,C,d,l);if(!k)return f=!1,1;k&&(d=S+e*(C()/2+o))},m,y=c;y(y===void 0&&(y=r(p,f)),y);if(f===i-1){var h=e*(m.coordinate+e*x()/2-l);a[f]=m=$o($o({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[f]=m=$o($o({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var g=Td(e,m.tickCoord,x,s,l);g&&(l=m.tickCoord-e*(x()/2+o),a[f]=$o($o({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function Kpe(e,t,r,n,o,a){var i=(n||[]).slice(),s=i.length,l=t.start,u=t.end;if(a){var c=n[s-1];if(c!=null){var d=r(c,s-1),f=e*(c.coordinate+e*d/2-u);if(i[s-1]=c=$o($o({},c),{},{tickCoord:f>0?c.coordinate-f*e:c.coordinate}),c.tickCoord!=null){var p=Td(e,c.tickCoord,()=>d,l,u);p&&(u=c.tickCoord-e*(d/2+o),i[s-1]=$o($o({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,y=function(g){var v=i[g];if(v==null)return 1;var b=v,_,w=()=>(_===void 0&&(_=r(v,g)),_);if(g===0){var C=e*(b.coordinate-e*w()/2-l);i[g]=b=$o($o({},b),{},{tickCoord:C<0?b.coordinate-C*e:b.coordinate})}else i[g]=b=$o($o({},b),{},{tickCoord:b.coordinate});if(b.tickCoord!=null){var S=Td(e,b.tickCoord,w,l,u);S&&(l=b.tickCoord+e*(w()/2+o),i[g]=$o($o({},b),{},{isShow:!0}))}},x=0;x{var C=typeof u=="function"?u(_.value,w):_.value;return m==="width"?wW(kd(C,{fontSize:t,letterSpacing:r}),y,d):kd(C,{fontSize:t,letterSpacing:r})[m]},h=o[0],g=o[1],v=o.length>=2&&h!=null&&g!=null?Mr(g.coordinate-h.coordinate):1,b=SW(a,v,m);return l==="equidistantPreserveStart"?_W(v,b,x,o,i):l==="equidistantPreserveEnd"?AW(v,b,x,o,i):(l==="preserveStart"||l==="preserveStartEnd"?p=Kpe(v,b,x,o,i,l==="preserveStartEnd"):p=Hpe(v,b,x,o,i),p.filter(_=>_.isShow))}var EW=e=>{var t=e.ticks,r=e.label,n=e.labelGapWithTick,o=n===void 0?5:n,a=e.tickSize,i=a===void 0?0:a,s=e.tickMargin,l=s===void 0?0:s,u=0;if(t){Array.from(t).forEach(p=>{if(p){var m=p.getBoundingClientRect();m.width>u&&(u=m.width)}});var c=r?r.getBoundingClientRect().width:0,d=i+l,f=u+d+c+(r?o:0);return Math.round(f)}return 0};var NW=e=>{var t=e.ticks,r=e.label,n=e.labelGapWithTick,o=n===void 0?5:n,a=e.tickSize,i=a===void 0?0:a,s=e.tickMargin,l=s===void 0?0:s,u=0;if(t){Array.from(t).forEach(p=>{if(p){var m=p.getBoundingClientRect();m.height>u&&(u=m.height)}});var c=r?r.getBoundingClientRect().height:0,d=i+l,f=u+d+c+(r?o:0);return Math.round(f)}return 0};var qpe={xAxis:{},yAxis:{}},TW=mr({name:"renderedTicks",initialState:qpe,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=Dt(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),OW=TW.actions,PW=OW.setRenderedTicks,MW=OW.removeRenderedTicks;var DW=TW.reducer;var Vpe=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function IW(e,t){return Zpe(e)||Xpe(e,t)||Ype(e,t)||Gpe()}function Gpe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ype(e,t){if(e){if(typeof e=="string")return jW(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?jW(e,t):void 0}}function jW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{if(!(n==null||r==null)){var i=t.map(l=>({value:l.value,coordinate:l.coordinate,offset:l.offset,index:l.index})),s=a.current;s!=null&&s.axisId===n&&s.axisType===r&&n5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(PW({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,Lo.useEffect)(()=>n==null||r==null?Jo:()=>{o(MW({axisId:n,axisType:r}))},[o,n,r]),null}var lme=(0,Lo.forwardRef)((e,t)=>{var r=e.ticks,n=r===void 0?[]:r,o=e.tick,a=e.tickLine,i=e.stroke,s=e.tickFormatter,l=e.unit,u=e.padding,c=e.tickTextProps,d=e.orientation,f=e.mirror,p=e.x,m=e.y,y=e.width,x=e.height,h=e.tickSize,g=e.tickMargin,v=e.fontSize,b=e.letterSpacing,_=e.getTicksConfig,w=e.events,C=e.axisType,S=e.axisId,k=lv(Sn(Sn({},_),{},{ticks:n}),v,b),A=Zr(_),O=za(o),$=GS(A.textAnchor)?A.textAnchor:ome(d,f),F=ame(d,f),P={};typeof a=="object"&&(P=a);var z=Sn(Sn({},A),{},{fill:"none"},P),N=k.map(E=>Sn({entry:E},nme(E,p,m,y,x,d,h,f,g))),D=N.map(E=>{var I=E.entry,j=E.line;return Rr.createElement(sr,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(I.value,"-").concat(I.coordinate,"-").concat(I.tickCoord)},a&&Rr.createElement("line",Od({},z,j,{className:lt("recharts-cartesian-axis-tick-line",fo(a,"className"))})))}),T=N.map((E,I)=>{var j,q,te=E.entry,K=E.tick,le=Sn(Sn(Sn(Sn({verticalAnchor:F},A),{},{textAnchor:$,stroke:"none",fill:i},K),{},{index:I,payload:te,visibleTicksCount:k.length,tickFormatter:s,padding:u},c),{},{angle:(j=(q=c?.angle)!==null&&q!==void 0?q:A.angle)!==null&&j!==void 0?j:0}),pe=Sn(Sn({},le),O);return Rr.createElement(sr,Od({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(te.value,"-").concat(te.coordinate,"-").concat(te.tickCoord)},dl(w,te,I)),o&&Rr.createElement(ime,{option:o,tickProps:pe,value:"".concat(typeof s=="function"?s(te.value,I):te.value).concat(l||"")}))});return Rr.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(C,"-ticks")},Rr.createElement(sme,{ticks:k,axisId:S,axisType:C}),T.length>0&&Rr.createElement(Br,{zIndex:Vt.label},Rr.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(C,"-tick-labels"),ref:t},T)),D.length>0&&Rr.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(C,"-tick-lines")},D))}),ume=(0,Lo.forwardRef)((e,t)=>{var r=e.axisLine,n=e.width,o=e.height,a=e.className,i=e.hide,s=e.ticks,l=e.axisType,u=e.axisId,c=Jpe(e,Vpe),d=(0,Lo.useState)(""),f=IW(d,2),p=f[0],m=f[1],y=(0,Lo.useState)(""),x=IW(y,2),h=x[0],g=x[1],v=(0,Lo.useRef)(null);(0,Lo.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var _;return EW({ticks:v.current,label:(_=e.labelRef)===null||_===void 0?void 0:_.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})},getCalculatedHeight:()=>{var _;return NW({ticks:v.current,label:(_=e.labelRef)===null||_===void 0?void 0:_.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var b=(0,Lo.useCallback)(_=>{if(_){var w=_.getElementsByClassName("recharts-cartesian-axis-tick-value");v.current=w;var C=w[0];if(C){var S=window.getComputedStyle(C),k=S.fontSize,A=S.letterSpacing;(k!==p||A!==h)&&(m(k),g(A))}}},[p,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:Rr.createElement(Br,{zIndex:e.zIndex},Rr.createElement(sr,{className:lt("recharts-cartesian-axis",a)},Rr.createElement(rme,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:Zr(e)}),Rr.createElement(lme,{ref:b,axisType:l,events:c,fontSize:p,getTicksConfig:e,height:e.height,letterSpacing:h,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:u}),Rr.createElement(qF,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},Rr.createElement(XF,{label:e.label,labelRef:e.labelRef}),e.children)))}),uv=Rr.forwardRef((e,t)=>{var r=Ut(e,Ei);return Rr.createElement(ume,Od({},r,{ref:t}))});uv.displayName="CartesianAxis";var kn=G(Y());var _k=G(Y());var LW={grid:{stroke:"#ccc",fill:"none"}};var zW=(0,_k.createContext)(LW),sBe=zW.Provider,BW=()=>(0,_k.useContext)(zW);var cme=["x1","y1","x2","y2","key"],dme=["offset"],fme=["xAxisId","yAxisId"],pme=["xAxisId","yAxisId"];function FW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function zo(e){for(var t=1;t{var t=e.fill;if(!t||t==="none")return null;var r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.ry;return kn.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function UW(e){var t=e.option,r=e.lineItemProps,n;if(kn.isValidElement(t))n=kn.cloneElement(t,r);else if(typeof t=="function")n=t(r);else{var o,a=r.x1,i=r.y1,s=r.x2,l=r.y2,u=r.key,c=Ak(r,cme),d=(o=Zr(c))!==null&&o!==void 0?o:{},f=d.offset,p=Ak(d,dme),m=Array.isArray(p.strokeDasharray)?p.strokeDasharray.join(","):p.strokeDasharray;n=kn.createElement("line",Pd({},p,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function xme(e){var t=e.x,r=e.width,n=e.horizontal,o=n===void 0?!0:n,a=e.horizontalPoints;if(!o||!a||!a.length)return null;var i=e.xAxisId,s=e.yAxisId,l=Ak(e,fme),u=a.map((c,d)=>{var f=zo(zo({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return kn.createElement(UW,{key:"line-".concat(d),option:o,lineItemProps:f})});return kn.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function bme(e){var t=e.y,r=e.height,n=e.vertical,o=n===void 0?!0:n,a=e.verticalPoints;if(!o||!a||!a.length)return null;var i=e.xAxisId,s=e.yAxisId,l=Ak(e,pme),u=a.map((c,d)=>{var f=zo(zo({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return kn.createElement(UW,{option:o,lineItemProps:f,key:"line-".concat(d)})});return kn.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function wme(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.horizontalPoints,l=e.horizontal,u=l===void 0?!0:l;if(!u||!t||!t.length||s==null)return null;var c=s.map(f=>Math.round(f+o-o)).sort((f,p)=>f-p);o!==c[0]&&c.unshift(0);var d=c.map((f,p)=>{var m=c[p+1],y=m==null,x=y?o+i-f:m-f;if(x<=0)return null;var h=p%t.length;return kn.createElement("rect",{key:"react-".concat(p),y:f,x:n,height:x,width:a,stroke:"none",fill:t[h],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return kn.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function Sme(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,o=e.fillOpacity,a=e.x,i=e.y,s=e.width,l=e.height,u=e.verticalPoints;if(!r||!n||!n.length)return null;var c=u.map(f=>Math.round(f+a-a)).sort((f,p)=>f-p);a!==c[0]&&c.unshift(0);var d=c.map((f,p)=>{var m=c[p+1],y=m==null,x=y?a+s-f:m-f;if(x<=0)return null;var h=p%n.length;return kn.createElement("rect",{key:"react-".concat(p),x:f,y:i,width:x,height:l,stroke:"none",fill:n[h],fillOpacity:o,className:"recharts-cartesian-grid-bg"})});return kn.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var kme=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return ON(lv(zo(zo(zo({},Ei),r),{},{ticks:PN(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},_me=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return ON(lv(zo(zo(zo({},Ei),r),{},{ticks:PN(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},Ame={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Vt.grid};function Ol(e){var t,r,n,o,a,i,s=zp(),l=Bp(),u=G1(),c=zo(zo({},Ut(e,Ame)),{},{x:Oe(e.x)?e.x:u.left,y:Oe(e.y)?e.y:u.top,width:Oe(e.width)?e.width:u.width,height:Oe(e.height)?e.height:u.height}),d=c.xAxisId,f=c.yAxisId,p=c.x,m=c.y,y=c.width,x=c.height,h=c.syncWithTicks,g=c.horizontalValues,v=c.verticalValues,b=gr(),_=Pe(D=>yO(D,"xAxis",d,b)),w=Pe(D=>yO(D,"yAxis",f,b)),C=BW(),S={stroke:(t=c.stroke)!==null&&t!==void 0?t:C.grid.stroke,strokeWidth:(r=c.strokeWidth)!==null&&r!==void 0?r:C.grid.strokeWidth,strokeOpacity:(n=c.strokeOpacity)!==null&&n!==void 0?n:C.grid.strokeOpacity,strokeDasharray:(o=c.strokeDasharray)!==null&&o!==void 0?o:C.grid.strokeDasharray};if(!ma(y)||!ma(x)||!Oe(p)||!Oe(m))return null;var k=c.verticalCoordinatesGenerator||kme,A=c.horizontalCoordinatesGenerator||_me,O=c.horizontalPoints,$=c.verticalPoints;if((!O||!O.length)&&typeof A=="function"){var F=g&&g.length,P=A({yAxis:w?zo(zo({},w),{},{ticks:F?g:w.ticks}):void 0,width:s??y,height:l??x,offset:u},F?!0:h);Lp(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof P,"]")),Array.isArray(P)&&(O=P)}if((!$||!$.length)&&typeof k=="function"){var z=v&&v.length,N=k({xAxis:_?zo(zo({},_),{},{ticks:z?v:_.ticks}):void 0,width:s??y,height:l??x,offset:u},z?!0:h);Lp(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&($=N)}return kn.createElement(Br,{zIndex:c.zIndex},kn.createElement("g",{className:"recharts-cartesian-grid"},kn.createElement(vme,{fill:(a=c.fill)!==null&&a!==void 0?a:C.grid.fill,fillOpacity:(i=c.fillOpacity)!==null&&i!==void 0?i:C.grid.fillOpacity,x:c.x,y:c.y,width:c.width,height:c.height,ry:c.ry}),kn.createElement(wme,Pd({},c,{horizontalPoints:O})),kn.createElement(Sme,Pd({},c,{verticalPoints:$})),kn.createElement(xme,Pd({},c,S,{offset:u,horizontalPoints:O,xAxis:_,yAxis:w})),kn.createElement(bme,Pd({},c,S,{offset:u,verticalPoints:$,xAxis:_,yAxis:w}))))}Ol.displayName="CartesianGrid";var ur=G(Y()),Pl=G(Y());var WW=G(Y());var Cme=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function o5(){return o5=Object.assign?Object.assign.bind():function(e){for(var t=1;tp+m,0);if(!o)return HW(t,e);for(var a=Math.floor(e/o),i=e%o,s=[],l=0,u=0;li){s=[...n.slice(0,l),i-u];break}}var f=s.length%2===0?[0,t]:[t];return[...Pme(n,a),...s,...f].map(p=>"".concat(p,"px")).join(", ")}function Dme(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return Mme(r,t,n)}return HW(t,r)}function KW(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=Eme(e,Cme),l=i??!1,u;if(o!=null){var c,d=s.pathRef,f=Tme((c=d?.current)!==null&&c!==void 0?c:null);u=Dme(a,f,o)}else a!=null&&(u=String(a));return WW.createElement(Ss,o5({},s,{connectNulls:l,strokeDasharray:u}))}var Md=G(Y());function qW(e){var t=(0,Md.useRef)(0),r=(0,Md.useRef)(0),n=(0,Md.useRef)(!1),o=(0,Md.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,Md.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(pi(t.current+a*i),i);return a>0&&i>0&&(r.current=Math.max(r.current,s),s>=i)?(n.current=!0,null):s},[])}var YW=G(Y()),cv=G(Y());var Ime={},VW=mr({name:"errorBars",initialState:Ime,reducers:{addErrorBar:(e,t)=>{var r=t.payload,n=r.itemId,o=r.errorBar;e[n]||(e[n]=[]),e[n].push(o)},replaceErrorBar:(e,t)=>{var r=t.payload,n=r.itemId,o=r.prev,a=r.next;e[n]&&(e[n]=e[n].map(i=>i.dataKey===o.dataKey&&i.direction===o.direction?a:i))},removeErrorBar:(e,t)=>{var r=t.payload,n=r.itemId,o=r.errorBar;e[n]&&(e[n]=e[n].filter(a=>a.dataKey!==o.dataKey||a.direction!==o.direction))}}}),a5=VW.actions,OBe=a5.addErrorBar,PBe=a5.replaceErrorBar,MBe=a5.removeErrorBar;var GW=VW.reducer;var jme=["children"];function $me(e,t){if(e==null)return{};var r,n,o=Lme(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},Bme=(0,cv.createContext)(zme);function Ck(e){var t=e.children,r=$me(e,jme);return YW.createElement(Bme.Provider,{value:r},t)}var i5=G(Y());function Dd(e,t){var r,n,o=Pe(u=>Ts(u,e)),a=Pe(u=>Os(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:Mn.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:Dn.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function Mm(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=Ru(),a=Dd(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=Pe(v=>sO(v,t,!1)),c=Pe(v=>lO(v,r,!1));if(!l||!o)return null;var d=o.x,f=o.y,p=o.width,m=o.height,y=i&&u?Math.min(u[0],u[1]):d-p/2,x=s&&c?Math.min(c[0],c[1]):f-m/2,h=i&&u?Math.abs(u[1]-u[0]):p*2,g=s&&c?Math.abs(c[1]-c[0]):m*2;return i5.createElement("clipPath",{id:"clipPath-".concat(n)},i5.createElement("rect",{x:y,y:x,width:h,height:g}))}var XW=(e,t,r,n)=>Za(e,"xAxis",t,n),ZW=(e,t,r,n)=>Xa(e,"xAxis",t,n),JW=(e,t,r,n)=>Za(e,"yAxis",r,n),QW=(e,t,r,n)=>Xa(e,"yAxis",r,n),Fme=ee([wt,XW,JW,ZW,QW],(e,t,r,n,o)=>Io(e,"xAxis")?vi(t,n,!1):vi(r,o,!1)),Ume=(e,t,r,n,o)=>o;function Wme(e){return e.type==="line"}var Hme=ee([zu,Ume],(e,t)=>e.filter(Wme).find(r=>r.id===t)),RW=ee([wt,XW,JW,ZW,QW,Hme,Fme,rd],(e,t,r,n,o,a,i,s)=>{var l=s.chartData,u=s.dataStartIndex,c=s.dataEndIndex;if(!(a==null||t==null||r==null||n==null||o==null||n.length===0||o.length===0||i==null||e!=="horizontal"&&e!=="vertical")){var d=a.dataKey,f=a.data,p;if(f!=null&&f.length>0?p=f:p=l?.slice(u,c+1),p!=null)return eH({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:p})}});function Ek(e){var t=za(e),r=3,n=2;if(t!=null){var o=t.r,a=t.strokeWidth,i=Number(o),s=Number(a);return(Number.isNaN(i)||i<0)&&(i=r),(Number.isNaN(s)||s<0)&&(s=n),{r:i,strokeWidth:s}}return{r,strokeWidth:n}}var Kme=["id"],qme=["type","layout","connectNulls","needClip","shape","strokeDasharray"],Vme=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function Nk(){return Nk=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var Rme=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=Qme(e),n=[];for(var o of e)if(o.status==="matched")n.push(Ps(Ps({},o.next),{},{x:pr(o.prev.x,o.next.x,t),y:pr(o.prev.y,o.next.y,t)}));else if(o.status==="added")if(o.next.x!=null){var a=o.next.x-r;n.push(Ps(Ps({},o.next),{},{x:pr(a,o.next.x,t),y:o.next.y}))}else n.push(o.next);else if(o.status==="removed"&&o.prev.x!=null){var i=o.prev.x+r;n.push(Ps(Ps({},o.prev),{},{x:pr(o.prev.x,i,t),y:o.prev.y}))}return n},u5={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Rme,animationMatchBy:Ed,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:KW,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Vt.line,type:"linear"},ege=e=>{var t=e.dataKey,r=e.name,n=e.stroke,o=e.legendType,a=e.hide;return[{inactive:a,dataKey:t,type:o,color:n,value:Ha(r,t),payload:e}]},tge=ur.memo(e=>{var t=e.dataKey,r=e.data,n=e.stroke,o=e.strokeWidth,a=e.fill,i=e.name,s=e.hide,l=e.unit,u=e.formatter,c=e.tooltipType,d=e.id,f={dataDefinedOnItem:r,getPosition:Jo,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Ha(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return ur.createElement(Yu,{tooltipEntrySettings:f})});function rge(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=l5(n,Kme),u=Zr(l);return ur.createElement(vk,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function nge(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,Pl.useMemo)(()=>n?.map(a=>{var i,s,l={x:(i=a.x)!==null&&i!==void 0?i:0,y:(s=a.y)!==null&&s!==void 0?s:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Ps(Ps({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return ur.createElement(km,{value:t?o:void 0},r)}function oge(e){var t=e.clipPathId,r=e.pathRef,n=e.points,o=e.props,a=e.animationElapsedTime,i=e.isAnimating,s=e.isEntrance,l=e.visibleLength,u=o.type,c=o.layout,d=o.connectNulls,f=o.needClip,p=o.shape,m=o.strokeDasharray,y=l5(o,qme),x=Ps(Ps({},Jr(y)),{},{fill:"none",className:"recharts-line-curve",clipPath:f?"url(#clipPath-".concat(t,")"):void 0,points:n,type:u,layout:c,connectNulls:d,strokeDasharray:m??o.strokeDasharray,pathRef:r,animationElapsedTime:a,isAnimating:i,isEntrance:o.animateNewValues?s:!1,visibleLength:l});return ur.createElement(ur.Fragment,null,n?.length>1&&ur.createElement(Gu,{option:p,DefaultShape:u5.shape,shapeProps:x}),ur.createElement(rge,{points:n,clipPathId:t,props:o}))}function age(e){var t=e.clipPathId,r=e.props,n=e.pathRef,o=e.previousPointsRef,a=r.points,i=r.isAnimationActive,s=r.animationBegin,l=r.animationDuration,u=r.animationEasing,c=r.animationMatchBy,d=r.animationInterpolateFn,f=r.layout,p=Jme(n.current),m=Zu(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,x=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=qW(a),b=(0,Pl.useCallback)(_=>_>0&&p>0,[p]);return ur.createElement(nge,{points:a,showLabels:g},r.children,ur.createElement(Ju,{animationInput:a,animationIdPrefix:"recharts-line-",items:a,previousItemsRef:o,isAnimationActive:i,animationBegin:s,animationDuration:l,animationEasing:u,onAnimationStart:x,onAnimationEnd:h,animationInterpolateFn:d,animationMatchBy:c,shouldUpdatePreviousRef:b,layout:f},(_,w,C)=>{var S=y||w<1,k=S?v(w,p):null;return ur.createElement(oge,{props:r,points:_,clipPathId:t,pathRef:n,animationElapsedTime:w,isAnimating:S,isEntrance:C,visibleLength:k})}),ur.createElement(Vu,{label:r.label}))}function ige(e){var t=e.clipPathId,r=e.props,n=(0,Pl.useRef)(null),o=(0,Pl.useRef)(null);return ur.createElement(age,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var sge=(e,t)=>{var r,n;return{x:(r=e.x)!==null&&r!==void 0?r:void 0,y:(n=e.y)!==null&&n!==void 0?n:void 0,value:e.value,errorVal:At(e.payload,t)}},s5=class extends Pl.Component{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.xAxisId,s=t.yAxisId,l=t.top,u=t.left,c=t.width,d=t.height,f=t.id,p=t.needClip,m=t.zIndex;if(r)return null;var y=lt("recharts-line",a),x=f,h=Ek(n),g=h.r,v=h.strokeWidth,b=_m(n),_=g*2+v,w=p?"url(#clipPath-".concat(b?"":"dots-").concat(x,")"):void 0;return ur.createElement(Br,{zIndex:m},ur.createElement(sr,{className:y},p&&ur.createElement("defs",null,ur.createElement(Mm,{clipPathId:x,xAxisId:i,yAxisId:s}),!b&&ur.createElement("clipPath",{id:"clipPath-dots-".concat(x)},ur.createElement("rect",{x:u-_/2,y:l-_/2,width:c+_,height:d+_}))),ur.createElement(Ck,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:sge,errorBarOffset:0},ur.createElement(ige,{props:this.props,clipPathId:x}))),ur.createElement(nv,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}};function lge(e){var t=Ut(e,u5),r=t.activeDot,n=t.animateNewValues,o=t.animationBegin,a=t.animationDuration,i=t.animationEasing,s=t.connectNulls,l=t.dot,u=t.hide,c=t.isAnimationActive,d=t.label,f=t.legendType,p=t.xAxisId,m=t.yAxisId,y=t.id,x=l5(t,Vme),h=Dd(p,m),g=h.needClip,v=Ru(),b=ha(),_=gr(),w=Pe(O=>RW(O,p,m,_,y));if(b!=="horizontal"&&b!=="vertical"||w==null||v==null)return null;var C=v.height,S=v.width,k=v.x,A=v.y;return ur.createElement(s5,Nk({},x,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:o,animationDuration:a,animationEasing:i,isAnimationActive:c,hide:u,label:d,legendType:f,xAxisId:p,yAxisId:m,points:w,layout:b,height:C,width:S,left:k,top:A,needClip:g}))}function eH(e){var t=e.layout,r=e.xAxis,n=e.yAxis,o=e.xAxisTicks,a=e.yAxisTicks,i=e.dataKey,s=e.bandSize,l=e.displayedData;return l.map((u,c)=>{var d=At(u,i);if(t==="horizontal"){var f=Pp({axis:r,ticks:o,bandSize:s,entry:u,index:c}),p=qt(d)?null:n.scale.map(d);return{x:f,y:p??null,value:d,payload:u}}var m=qt(d)?null:r.scale.map(d),y=Pp({axis:n,ticks:a,bandSize:s,entry:u,index:c});return m==null||y==null?null:{x:m,y,value:d,payload:u}}).filter(Boolean)}function uge(e){var t=Ut(e,u5),r=gr();return ur.createElement(Qu,{id:t.id,type:"line"},n=>ur.createElement(ur.Fragment,null,ur.createElement(Cm,{legendPayload:ege(t)}),ur.createElement(tge,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:n}),ur.createElement(Tm,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),ur.createElement(lge,Nk({},t,{id:n}))))}var Tk=ur.memo(uge,ya);Tk.displayName="Line";var nr=G(Y()),Id=G(Y());function Ni(e,t){var r,n;return(r=(n=e.graphicalItems.cartesianItems.find(o=>o.id===t))===null||n===void 0?void 0:n.xAxisId)!==null&&r!==void 0?r:e5}function Ti(e,t){var r,n;return(r=(n=e.graphicalItems.cartesianItems.find(o=>o.id===t))===null||n===void 0?void 0:n.yAxisId)!==null&&r!==void 0?r:e5}var rH=(e,t,r)=>Za(e,"xAxis",Ni(e,t),r),nH=(e,t,r)=>Xa(e,"xAxis",Ni(e,t),r),oH=(e,t,r)=>Za(e,"yAxis",Ti(e,t),r),aH=(e,t,r)=>Xa(e,"yAxis",Ti(e,t),r),cge=ee([wt,rH,oH,nH,aH],(e,t,r,n,o)=>Io(e,"xAxis")?vi(t,n,!1):vi(r,o,!1)),dge=(e,t)=>t,c5=ee([zu,dge],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),iH=e=>{var t=wt(e),r=Io(t,"xAxis");return r?"yAxis":"xAxis"},fge=(e,t)=>{var r=iH(e);return r==="yAxis"?Ti(e,t):Ni(e,t)},sH=(e,t,r)=>cm(e,iH(e),fge(e,t),r),pge=ee([c5,sH],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Pu(e);if(!(n==null||o==null)){var a=(r=t[n])===null||r===void 0?void 0:r.stackedData,i=a?.find(s=>s.key===o);if(i!=null)return i.map(s=>[s[0],s[1]])}}}),mge=ee([c5,sH],(e,t)=>{if(!(e==null||e.stackId==null||t==null)){var r=t[e.stackId];if(r!=null)return r.graphicalItems.map(n=>n.dataKey).filter(Zn)}}),lH=ee([wt,rH,oH,nH,aH,pge,gw,cge,c5,pB,mge],(e,t,r,n,o,a,i,s,l,u,c)=>{var d=i.chartData,f=i.dataStartIndex,p=i.dataEndIndex;if(!(l==null||e!=="horizontal"&&e!=="vertical"||t==null||r==null||n==null||o==null||n.length===0||o.length===0||s==null)){var m=l.data,y;if(m&&m.length>0?y=m:y=d?.slice(f,p+1),y!=null)return uH({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:f,areaSettings:l,stackedData:a,displayedData:y,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var Bo=G(Y());var gge=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],hge=["id","baseLine"];function dv(){return dv=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return Oe(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),Oe(c)?Bo.createElement("rect",{x:sd.x||0));return Oe(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),Oe(c)?Bo.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[Dm(Dm({},r.next),{},{x:pr(r.prev.x,r.next.x,t),y:pr(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),mH={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Ed,animationInterpolateFn:Ege,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:dH,xAxisId:0,yAxisId:0,zIndex:Vt.area};function Pk(e,t){return e&&e!=="none"?e:t}var Nge=e=>{var t=e.dataKey,r=e.name,n=e.stroke,o=e.fill,a=e.legendType,i=e.hide;return[{inactive:i,dataKey:t,type:a,color:Pk(n,o),value:Ha(r,t),payload:e}]},Tge=nr.memo(e=>{var t=e.dataKey,r=e.data,n=e.stroke,o=e.strokeWidth,a=e.fill,i=e.name,s=e.hide,l=e.unit,u=e.formatter,c=e.tooltipType,d=e.id,f={dataDefinedOnItem:r,getPosition:Jo,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Ha(i,t),hide:s,type:c,color:Pk(n,a),unit:l,formatter:u,graphicalItemId:d}};return nr.createElement(Yu,{tooltipEntrySettings:f})});function Oge(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=Zr(n);return nr.createElement(vk,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function Pge(e){var t=e.showLabels,r=e.children,n=e.points,o=n.map(a=>{var i,s,l={x:(i=a.x)!==null&&i!==void 0?i:0,y:(s=a.y)!==null&&s!==void 0?s:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Dm(Dm({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return nr.createElement(km,{value:t?o:void 0},r)}function Mge(e){var t=e.points,r=e.baseLine,n=e.needClip,o=e.clipPathId,a=e.props,i=e.animationElapsedTime,s=e.isAnimating,l=e.isEntrance,u=a.layout,c=a.type,d=a.stroke,f=a.connectNulls,p=a.isRange,m=a.shape,y=a.id,x=pH(a,wge),h=Jr(x),g=Dm(Dm({},h),{},{id:y,points:t,connectNulls:f,type:c,baseLine:r,layout:u,stroke:d,isRange:p,animationElapsedTime:i,isAnimating:s,isEntrance:l});return nr.createElement(nr.Fragment,null,t?.length>1&&nr.createElement(sr,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},nr.createElement(Gu,{option:m,DefaultShape:mH.shape,shapeProps:g})),nr.createElement(Oge,{points:t,props:x,clipPathId:o}))}function Dge(e,t,r){if(Oe(e)){var n=Oe(t)?t:void 0;return pr(n,e,r)}if(qt(e)||po(e)){var o=Oe(t)?t:void 0;return pr(o,0,r)}return e}function Ige(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=e.previousPointsRef,a=e.previousBaselineRef,i=n.points,s=n.baseLine,l=n.isAnimationActive,u=n.animationBegin,c=n.animationDuration,d=n.animationEasing,f=n.animationMatchBy,p=n.animationInterpolateFn,m=(0,Id.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=dk(m,a),x=Fp(),h=Zu(n.onAnimationStart,n.onAnimationEnd),g=h.isAnimating,v=h.handleAnimationStart,b=h.handleAnimationEnd,_=y.startValue;if(x==null)return null;var w;return Array.isArray(s)&&Array.isArray(_)?w=Ry(_,s,f):Array.isArray(s)?w=Ry(null,s,f):w=null,nr.createElement(Ju,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:v,onAnimationEnd:b,animationInterpolateFn:p,animationMatchBy:f,layout:x},(C,S,k)=>{var A;return S===1?A=s:Array.isArray(s)?A=p(w,S,x):A=k?s:Dge(s,_,S),y.syncStepValue(A,S),nr.createElement(Pge,{showLabels:!g,points:i},n.children,nr.createElement(Mge,{points:C,baseLine:A,needClip:t,clipPathId:r,props:n,animationElapsedTime:S,isAnimating:g||S<1,isEntrance:k}),nr.createElement(Vu,{label:n.label}))})}function jge(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Id.useRef)(null),a=(0,Id.useRef)();return nr.createElement(Ige,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var d5=class extends Id.PureComponent{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.top,s=t.left,l=t.needClip,u=t.xAxisId,c=t.yAxisId,d=t.width,f=t.height,p=t.id,m=t.baseLine,y=t.zIndex;if(r)return null;var x=lt("recharts-area",a),h=p,g=Ek(n),v=g.r,b=g.strokeWidth,_=_m(n),w=v*2+b,C=l?"url(#clipPath-".concat(_?"":"dots-").concat(h,")"):void 0;return nr.createElement(Br,{zIndex:y},nr.createElement(sr,{className:x},l&&nr.createElement("defs",null,nr.createElement(Mm,{clipPathId:h,xAxisId:u,yAxisId:c}),!_&&nr.createElement("clipPath",{id:"clipPath-dots-".concat(h)},nr.createElement("rect",{x:s-w/2,y:i-w/2,width:d+w,height:f+w}))),nr.createElement(jge,{needClip:l,clipPathId:h,props:this.props})),nr.createElement(nv,{points:o,mainColor:Pk(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:C}),this.props.isRange&&Array.isArray(m)&&nr.createElement(nv,{points:m,mainColor:Pk(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:C}))}};function $ge(e){var t,r=e.activeDot,n=e.animationBegin,o=e.animationDuration,a=e.animationEasing,i=e.connectNulls,s=e.dot,l=e.fill,u=e.fillOpacity,c=e.hide,d=e.isAnimationActive,f=e.legendType,p=e.stroke,m=e.xAxisId,y=e.yAxisId,x=pH(e,Sge),h=ha(),g=jS(),v=Dd(m,y),b=v.needClip,_=gr(),w=(t=Pe(z=>lH(z,e.id,_)))!==null&&t!==void 0?t:{},C=w.points,S=w.isRange,k=w.baseLine,A=Ru();if(h!=="horizontal"&&h!=="vertical"||A==null||g!=="AreaChart"&&g!=="ComposedChart")return null;var O=A.height,$=A.width,F=A.x,P=A.y;return!C||!C.length?null:nr.createElement(d5,Ok({},x,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:k,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:O,hide:c,layout:h,isAnimationActive:d,isRange:S,legendType:f,needClip:b,points:C,stroke:p,width:$,left:F,top:P,xAxisId:m,yAxisId:y}))}var Lge=(e,t,r,n,o)=>{var a=r??t;if(Oe(a))return a;var i=e==="horizontal"?o:n,s=i.scale.domain();if(i.type==="number"){var l=Math.max(s[0],s[1]),u=Math.min(s[0],s[1]);return a==="dataMin"?u:a==="dataMax"||l<0?l:Math.max(Math.min(s[0],s[1]),0)}return a==="dataMin"?s[0]:a==="dataMax"?s[1]:s[0]};function uH(e){var t=e.areaSettings,r=t.connectNulls,n=t.baseValue,o=t.dataKey,a=e.stackedData,i=e.layout,s=e.chartBaseValue,l=e.xAxis,u=e.yAxis,c=e.displayedData,d=e.dataStartIndex,f=e.xAxisTicks,p=e.yAxisTicks,m=e.bandSize,y=e.stackDataKeys,x=a&&a.length,h=Lge(i,s,n,l,u),g=i==="horizontal",v=!1,b=c.map((w,C)=>{var S,k,A,O;if(x)O=a[d+C];else{var $=At(w,o);Array.isArray($)?(O=$,v=!0):O=[h,$]}var F=(S=(k=O)===null||k===void 0?void 0:k[1])!==null&&S!==void 0?S:null,P=At(w,o),z=x&&P==null&&y!=null&&y.length>0&&y.every(T=>At(w,T)==null),N=F==null||x&&!r&&P==null||z;if(g){var D;return{x:Pp({axis:l,ticks:f,bandSize:m,entry:w,index:C}),y:N?null:(D=u.scale.map(F))!==null&&D!==void 0?D:null,value:O,payload:w}}return{x:N?null:(A=l.scale.map(F))!==null&&A!==void 0?A:null,y:Pp({axis:u,ticks:p,bandSize:m,entry:w,index:C}),value:O,payload:w}}),_;return x||v?_=b.map(w=>{var C,S=Array.isArray(w.value)?w.value[0]:null;if(g){var k;return{x:w.x,y:S!=null&&w.y!=null&&(k=u.scale.map(S))!==null&&k!==void 0?k:null,payload:w.payload}}return{x:S!=null&&(C=l.scale.map(S))!==null&&C!==void 0?C:null,y:w.y,payload:w.payload}}):_=g?u.scale.map(h):l.scale.map(h),{points:b,baseLine:_??0,isRange:v}}function zge(e){var t=Ut(e,mH),r=gr();return nr.createElement(Qu,{id:t.id,type:"area"},n=>nr.createElement(nr.Fragment,null,nr.createElement(Cm,{legendPayload:Nge(t)}),nr.createElement(Tge,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:n}),nr.createElement(Tm,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:F1(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),nr.createElement($ge,Ok({},t,{id:n}))))}var Ml=nr.memo(zge,ya);Ml.displayName="Area";var $t=G(Y()),es=G(Y());var hH=G(Y());var Bge=!0,f5="Invariant failed";function gH(e,t){if(!e){if(Bge)throw new Error(f5);var r=typeof t=="function"?t():t,n=r?"".concat(f5,": ").concat(r):f5;throw new Error(n)}}var Fge=["option"];function Uge(e,t){if(e==null)return{};var r,n,o=Wge(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n1&&arguments[1]!==void 0?arguments[1]:0;return(n,o)=>{if(Oe(t))return t;var a=Oe(n)||qt(n);return a?t(n,o):(a||gH(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var Hge=(e,t,r)=>r,Kge=(e,t)=>t,fv=ee([zu,Kge],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),qge=ee([fv],e=>e?.maxBarSize),Vge=(e,t,r,n)=>n,Gge=ee([wt,zu,Ni,Ti,Hge],(e,t,r,n,o)=>t.filter(a=>e==="horizontal"?a.xAxisId===r:a.yAxisId===n).filter(a=>a.isPanorama===o).filter(a=>a.hide===!1).filter(a=>a.type==="bar")),Yge=(e,t,r)=>{var n=wt(e),o=Ni(e,t),a=Ti(e,t);if(!(o==null||a==null))return n==="horizontal"?cm(e,"yAxis",a,r):cm(e,"xAxis",o,r)},Xge=(e,t)=>{var r=wt(e),n=Ni(e,t),o=Ti(e,t);if(!(n==null||o==null))return r==="horizontal"?mO(e,"xAxis",n):mO(e,"yAxis",o)},Zge=ee([Gge,fB,Xge],oW),Jge=(e,t,r)=>{var n,o,a=fv(e,t);if(a==null)return 0;var i=Ni(e,t),s=Ti(e,t);if(i==null||s==null)return 0;var l=wt(e),u=nT(e),c=a.maxBarSize,d=qt(c)?u:c,f,p;return l==="horizontal"?(f=Za(e,"xAxis",i,r),p=Xa(e,"xAxis",i,r)):(f=Za(e,"yAxis",s,r),p=Xa(e,"yAxis",s,r)),(n=(o=vi(f,p,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},vH=(e,t,r)=>{var n=wt(e),o=Ni(e,t),a=Ti(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=Za(e,"xAxis",o,r),s=Xa(e,"xAxis",o,r)):(i=Za(e,"yAxis",a,r),s=Xa(e,"yAxis",a,r)),vi(i,s)}},Qge=ee([Zge,nT,dB,bw,Jge,vH,qge],iW),Rge=(e,t,r)=>{var n=Ni(e,t);if(n!=null)return Za(e,"xAxis",n,r)},ehe=(e,t,r)=>{var n=Ti(e,t);if(n!=null)return Za(e,"yAxis",n,r)},the=(e,t,r)=>{var n=Ni(e,t);if(n!=null)return Xa(e,"xAxis",n,r)},rhe=(e,t,r)=>{var n=Ti(e,t);if(n!=null)return Xa(e,"yAxis",n,r)},nhe=ee([Qge,fv],lW),ohe=ee([Yge,fv],sW),xH=ee([Ar,jp,Rge,ehe,the,rhe,nhe,wt,gw,vH,ohe,fv,Vge],(e,t,r,n,o,a,i,s,l,u,c,d,f)=>{var p=l.chartData,m=l.dataStartIndex,y=l.dataEndIndex;if(!(d==null||i==null||t==null||s!=="horizontal"&&s!=="vertical"||r==null||n==null||o==null||a==null||u==null)){var x=d.data,h;if(x!=null&&x.length>0?h=x:h=p?.slice(m,y+1),h!=null)return bH({layout:s,barSettings:d,pos:i,parentViewBox:t,bandSize:u,xAxis:r,yAxis:n,xAxisTicks:o,yAxisTicks:a,stackedData:c,displayedData:h,offset:e,cells:f,dataStartIndex:m})}});var m5=G(Y()),Im=G(Y());var ahe=["index"];function p5(){return p5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,Im.useContext)(wH);if(t!=null)return t.stackId;if(e!=null)return F1(e)};var lhe=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),uhe=e=>{var t=(0,Im.useContext)(wH);if(t!=null){var r=t.stackId;return"url(#".concat(lhe(r,e),")")}},g5=e=>{var t=e.index,r=ihe(e,ahe),n=uhe(t);return m5.createElement(sr,p5({className:"recharts-bar-stack-layer",clipPath:n},r))};var che=["onMouseEnter","onMouseLeave","onClick"],dhe=["value","background","tooltipPosition"],fhe=["id"],phe=["onMouseEnter","onClick","onMouseLeave"];function kH(e,t){return yhe(e)||hhe(e,t)||ghe(e,t)||mhe()}function mhe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ghe(e,t){if(e){if(typeof e=="string")return _H(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_H(e,t):void 0}}function _H(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.dataKey,r=e.name,n=e.fill,o=e.legendType,a=e.hide;return[{inactive:a,dataKey:t,type:o,color:n,value:Ha(r,t),payload:e}]},khe=$t.memo(e=>{var t=e.dataKey,r=e.stroke,n=e.strokeWidth,o=e.fill,a=e.name,i=e.hide,s=e.unit,l=e.formatter,u=e.tooltipType,c=e.id,d={dataDefinedOnItem:void 0,getPosition:Jo,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:Ha(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return $t.createElement(Yu,{tooltipEntrySettings:d})});function _he(e){var t=Pe(_i),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=Ik(a,che),c=Yy(i,n,a.id),d=Xy(s),f=Zy(l,n,a.id);if(!o||r==null)return null;var p=za(o);return $t.createElement(Br,{zIndex:uW(o,Vt.barBackground)},r.map((m,y)=>{var x=m.value,h=m.background,g=m.tooltipPosition,v=Ik(m,dhe);if(!h)return null;var b=c(m,m.originalDataIndex),_=d(m,m.originalDataIndex),w=f(m,m.originalDataIndex),C=Rn(Rn(Rn(Rn(Rn({option:o,isActive:String(m.originalDataIndex)===t},v),{},{fill:"#eee"},h),p),dl(u,m,y)),{},{onMouseEnter:b,onMouseLeave:_,onClick:w,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return $t.createElement(Dk,ec({key:"background-bar-".concat(y)},C))}))}function Ahe(e){var t=e.showLabels,r=e.children,n=e.rects,o=n?.map(a=>{var i={x:a.x,y:a.y,width:a.width,lowerWidth:a.width,upperWidth:a.width,height:a.height};return Rn(Rn({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return $t.createElement(km,{value:t?o:void 0},r)}function Che(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=Pe(_i),l=Pe(mm),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,es.useState)(!1),f=kH(d,2),p=f[0],m=f[1],y=(0,es.useState)(!1),x=kH(y,2),h=x[0],g=x[1];(0,es.useEffect)(()=>{var S;return u?(m(!0),S=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(S)}},[u,c]);var v=(0,es.useCallback)(()=>{u||m(!1)},[u]),b=u&&h,_=u||p,w;u?r===!0?w=t:w=r:w=t;var C=$t.createElement(Dk,ec({},n,{name:String(n.name)},o,{isActive:b,option:w,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:v}));return _?$t.createElement(Br,{zIndex:Vt.activeBar},$t.createElement(g5,{index:o.originalDataIndex},C)):C}function Ehe(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return $t.createElement(Dk,ec({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function Nhe(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=Zr(n))!==null&&t!==void 0?t:{},l=s.id,u=Ik(s,fhe),c=n.shape,d=n.dataKey,f=n.activeBar,p=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,x=Ik(n,phe),h=Yy(p,d,l),g=Xy(y),v=Zy(m,d,l);return r?$t.createElement($t.Fragment,null,r.map((b,_)=>$t.createElement(g5,ec({index:b.originalDataIndex,key:"rectangle-".concat(b?.x,"-").concat(b?.y,"-").concat(b?.value,"-").concat(_),className:"recharts-bar-rectangle"},dl(x,b,_),{onMouseEnter:h(b,b.originalDataIndex),onMouseLeave:g(b,b.originalDataIndex),onClick:v(b,b.originalDataIndex)}),f?$t.createElement(Che,{shape:c,activeBar:f,baseProps:u,entry:b,index:_,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):$t.createElement(Ehe,{shape:c,baseProps:u,entry:b,index:_,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var The=(e,t,r)=>e==null?[]:t===1?e.flatMap(n=>n.status==="removed"?[]:[n.next]):e.flatMap(n=>{if(n.status==="removed")return r==="horizontal"?[Rn(Rn({},n.prev),{},{height:pr(n.prev.height,0,t),y:pr(n.prev.y,n.prev.y+n.prev.height,t)})]:[Rn(Rn({},n.prev),{},{width:pr(n.prev.width,0,t)})];if(n.status==="matched")return[Rn(Rn({},n.next),{},{x:pr(n.prev.x,n.next.x,t),y:pr(n.prev.y,n.next.y,t),width:pr(n.prev.width,n.next.width,t),height:pr(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[Rn(Rn({},o),{},{height:pr(0,o.height,t),y:pr(o.stackedBarStart,o.y,t)})]:[Rn(Rn({},o),{},{width:pr(0,o.width,t),x:pr(o.stackedBarStart,o.x,t)})]});function Ohe(e){var t=e.props,r=e.previousRectanglesRef,n=t.data,o=t.isAnimationActive,a=t.animationBegin,i=t.animationDuration,s=t.animationEasing,l=t.animationInterpolateFn,u=t.layout,c=Zu(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,f=c.handleAnimationStart,p=c.handleAnimationEnd;return $t.createElement(Ahe,{showLabels:!d,rects:n},$t.createElement(Ju,{animationInput:n,animationIdPrefix:"recharts-bar-",items:n,previousItemsRef:r,isAnimationActive:o,animationBegin:a,animationDuration:i,animationEasing:s,onAnimationStart:f,onAnimationEnd:p,animationInterpolateFn:l,animationMatchBy:t.animationMatchBy,layout:u},(m,y,x)=>$t.createElement(sr,null,$t.createElement(Nhe,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:x}))),$t.createElement(Vu,{label:t.label}),t.children)}function Phe(e){var t=(0,es.useRef)(null);return $t.createElement(Ohe,{previousRectanglesRef:t,props:e})}var CH=0,Mhe=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:At(e,t)}},h5=class extends es.PureComponent{render(){var t=this.props,r=t.hide,n=t.data,o=t.dataKey,a=t.className,i=t.xAxisId,s=t.yAxisId,l=t.needClip,u=t.background,c=t.id;if(r||n==null)return null;var d=lt("recharts-bar",a),f=c;return $t.createElement(sr,{className:d,id:c},l&&$t.createElement("defs",null,$t.createElement(Mm,{clipPathId:f,xAxisId:i,yAxisId:s})),$t.createElement(sr,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(f,")"):void 0},$t.createElement(_he,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),$t.createElement(Phe,this.props)))}},Dhe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:The,animationMatchBy:Qy,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:CH,shape:Mk,xAxisId:0,yAxisId:0,zIndex:Vt.bar};function Ihe(e){var t=e.xAxisId,r=e.yAxisId,n=e.hide,o=e.legendType,a=e.minPointSize,i=e.activeBar,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.isAnimationActive,d=Dd(t,r),f=d.needClip,p=ha(),m=gr(),y=Vy(e.children,Cl),x=Pe(v=>xH(v,e.id,m,y));if(p!=="vertical"&&p!=="horizontal")return null;var h,g=x?.[0];return g==null||g.height==null||g.width==null?h=0:h=p==="vertical"?g.height/2:g.width/2,$t.createElement(Ck,{xAxisId:t,yAxisId:r,data:x,dataPointFormatter:Mhe,errorBarOffset:h},$t.createElement(h5,ec({},e,{layout:p,needClip:f,data:x,xAxisId:t,yAxisId:r,hide:n,legendType:o,minPointSize:a,activeBar:i,animationBegin:s,animationDuration:l,animationEasing:u,isAnimationActive:c})))}function bH(e){var t=e.layout,r=e.barSettings,n=r.dataKey,o=r.minPointSize,a=r.hasCustomShape,i=e.pos,s=e.bandSize,l=e.xAxis,u=e.yAxis,c=e.xAxisTicks,d=e.yAxisTicks,f=e.stackedData,p=e.displayedData,m=e.offset,y=e.cells,x=e.parentViewBox,h=e.dataStartIndex,g=t==="horizontal"?u:l,v=f?g.scale.domain():null,b=c6({numericAxis:g}),_=g.scale.map(b);return p.map((w,C)=>{var S,k,A,O,$,F;if(f){var P=f[C+h];if(P==null)return null;S=l6(P,v)}else S=At(w,n),Array.isArray(S)||(S=[b,S]);var z=yH(o,CH)(S[1],C);if(t==="horizontal"){var N,D=u.scale.map(S[0]),T=u.scale.map(S[1]);if(D==null||T==null)return null;k=MN({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:w,index:C}),A=(N=T??D)!==null&&N!==void 0?N:void 0,O=i.size;var E=D-T;if($=po(E)?0:E,F={x:k,y:m.top,width:O,height:m.height},Math.abs(z)>0&&Math.abs($)0&&Math.abs(O)$t.createElement($t.Fragment,null,$t.createElement(Cm,{legendPayload:She(t)}),$t.createElement(khe,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:o}),$t.createElement(Tm,{type:"bar",id:o,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:r,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:n,hasCustomShape:t.shape!=null&&t.shape!==Mk}),$t.createElement(Br,{zIndex:t.zIndex},$t.createElement(Ihe,ec({},t,{id:o})))))}var jk=$t.memo(jhe,ya);jk.displayName="Bar";var Dl=G(Y()),Oi=G(Y());var $he=["domain","range"],Lhe=["domain","range"];function EH(e,t){if(e==null)return{};var r,n,o=zhe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return OH(OH({},a),{},{type:i})},[a,i]);return(0,Oi.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(HU(s)):r.current!==s&&t(KU({prev:r.current,next:s})),r.current=s)},[s,t]),(0,Oi.useLayoutEffect)(()=>()=>{r.current&&(t(qU(r.current)),r.current=null)},[t]),null}var Ghe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,Oi.useRef)(null),i=(0,Oi.useRef)(null),s=Pe(jp),l=gr(),u=xt(),c="xAxis",d=Pe(w=>SS(w,c,t,l)),f=Pe(w=>fO(w,t)),p=Pe(w=>t9(w,t)),m=Pe(w=>HT(w,t));if((0,Oi.useLayoutEffect)(()=>{if(!(n!=="auto"||!f||Cd(o)||(0,Oi.isValidElement)(o)||m==null)){var w=a.current;if(w){var C=w.getCalculatedHeight();Math.round(f.height)!==Math.round(C)&&u(ZU({id:t,height:C}))}}},[d,f,u,o,t,n,m]),f==null||p==null||m==null)return null;var y=e.dangerouslySetInnerHTML,x=e.ticks,h=e.scale,g=v5(e,Fhe),v=m.id,b=m.scale,_=v5(m,Uhe);return Dl.createElement(uv,y5({},g,_,{ref:a,labelRef:i,x:p.x,y:p.y,width:f.width,height:f.height,className:lt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},Yhe={allowDataOverflow:Mn.allowDataOverflow,allowDecimals:Mn.allowDecimals,allowDuplicatedCategory:Mn.allowDuplicatedCategory,angle:Mn.angle,axisLine:Ei.axisLine,height:Mn.height,hide:!1,includeHidden:Mn.includeHidden,interval:Mn.interval,label:!1,minTickGap:Mn.minTickGap,mirror:Mn.mirror,orientation:Mn.orientation,padding:Mn.padding,reversed:Mn.reversed,scale:Mn.scale,tick:Mn.tick,tickCount:Mn.tickCount,tickLine:Ei.tickLine,tickSize:Ei.tickSize,type:Mn.type,niceTicks:Mn.niceTicks,xAxisId:0},Xhe=e=>{var t=Ut(e,Yhe);return Dl.createElement(Dl.Fragment,null,Dl.createElement(Vhe,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),Dl.createElement(Ghe,t))},Il=Dl.memo(Xhe,$k);Il.displayName="XAxis";var jl=G(Y()),Pi=G(Y());var Zhe=["type"],Jhe=["dangerouslySetInnerHTML","ticks","scale"],Qhe=["id","scale"];function x5(){return x5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return MH(MH({},a),{},{type:i})},[i,a]);return(0,Pi.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(VU(s)):r.current!==s&&t(GU({prev:r.current,next:s})),r.current=s)},[s,t]),(0,Pi.useLayoutEffect)(()=>()=>{r.current&&(t(YU(r.current)),r.current=null)},[t]),null}function oye(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,Pi.useRef)(null),i=(0,Pi.useRef)(null),s=Pe(jp),l=gr(),u=xt(),c="yAxis",d=Pe(w=>pO(w,t)),f=Pe(w=>r9(w,t)),p=Pe(w=>SS(w,c,t,l)),m=Pe(w=>KT(w,t));if((0,Pi.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Cd(o)||(0,Pi.isValidElement)(o)||m==null)){var w=a.current;if(w){var C=w.getCalculatedWidth();Math.round(d.width)!==Math.round(C)&&u(XU({id:t,width:C}))}}},[p,d,u,o,t,n,m]),d==null||f==null||m==null)return null;var y=e.dangerouslySetInnerHTML,x=e.ticks,h=e.scale,g=b5(e,Jhe),v=m.id,b=m.scale,_=b5(m,Qhe);return jl.createElement(uv,x5({},g,_,{ref:a,labelRef:i,x:f.x,y:f.y,tickTextProps:n==="auto"?{width:void 0}:{width:n},width:d.width,height:d.height,className:lt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:p,axisType:c,axisId:t}))}var aye={allowDataOverflow:Dn.allowDataOverflow,allowDecimals:Dn.allowDecimals,allowDuplicatedCategory:Dn.allowDuplicatedCategory,angle:Dn.angle,axisLine:Ei.axisLine,hide:!1,includeHidden:Dn.includeHidden,interval:Dn.interval,label:!1,minTickGap:Dn.minTickGap,mirror:Dn.mirror,orientation:Dn.orientation,padding:Dn.padding,reversed:Dn.reversed,scale:Dn.scale,tick:Dn.tick,tickCount:Dn.tickCount,tickLine:Ei.tickLine,tickSize:Ei.tickSize,type:Dn.type,niceTicks:Dn.niceTicks,width:Dn.width,yAxisId:0},iye=e=>{var t=Ut(e,aye);return jl.createElement(jl.Fragment,null,jl.createElement(nye,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),jl.createElement(oye,t))},$l=jl.memo(iye,$k);$l.displayName="YAxis";var aK=G(Y()),iK=G(Y());var Fd=G(Y()),oK=G(Y());var GH=G(Y()),YH=G(Y());var sye=(e,t)=>t,pv=ee([sye,wt,Nw,Pn,kO,ba,I9,Ar],F9);function lye(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function mv(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(lye(e)){var o=e.currentTarget.getBBox();r=o.width>0?t.width/o.width:1,n=o.height>0?t.height/o.height:1}else{var a=e.currentTarget;r=a.offsetWidth>0?t.width/a.offsetWidth:1,n=a.offsetHeight>0?t.height/a.offsetHeight:1}var i=(s,l)=>({relativeX:Math.round((s-t.left)/r),relativeY:Math.round((l-t.top)/n)});return"touches"in e?Array.from(e.touches).map(s=>i(s.clientX,s.clientY)):i(e.clientX,e.clientY)}var S5=Wn("mouseClick"),k5=hl();k5.startListening({actionCreator:S5,effect:(e,t)=>{var r=e.payload,n=pv(t.getState(),mv(r));n?.activeIndex!=null&&t.dispatch(p9({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var Lk=Wn("mouseMove"),_5=hl(),jm=null,jd=null,w5=null;_5.startListening({actionCreator:Lk,effect:(e,t)=>{var r=e.payload,n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i?.includes("mousemove");jm!==null&&(cancelAnimationFrame(jm),jm=null),jd!==null&&(typeof a!="number"||!s)&&(clearTimeout(jd),jd=null),w5=mv(r);var l=()=>{var u=t.getState(),c=Bu(u,u.tooltip.settings.shared);if(!w5){jm=null,jd=null;return}if(c==="axis"){var d=pv(u,w5);d?.activeIndex!=null?t.dispatch(CS({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(AS())}jm=null,jd=null};if(!s){l();return}a==="raf"?jm=requestAnimationFrame(l):typeof a=="number"&&jd===null&&(jd=setTimeout(l,a))}});function DH(e,t){return t instanceof HTMLElement?"HTMLElement <".concat(t.tagName,' class="').concat(t.className,'">'):t===window?"global.window":e==="children"&&typeof t=="object"&&t!==null?"<>":t}var IH={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},jH=mr({name:"rootProps",initialState:IH,reducers:{updateOptions:(e,t)=>{var r;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=(r=t.payload.barGap)!==null&&r!==void 0?r:IH.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),$H=jH.reducer,LH=jH.actions.updateOptions;var uye=null,cye={updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)},zH=mr({name:"polarOptions",initialState:uye,reducers:cye}),BH=zH.actions.updatePolarOptions;var FH=zH.reducer;var A5=Wn("keyDown"),C5=Wn("focus"),E5=Wn("blur"),gv=hl(),$m=null,$d=null,zk=null;gv.startListening({actionCreator:A5,effect:(e,t)=>{zk=e.payload,$m!==null&&(cancelAnimationFrame($m),$m=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");$d!==null&&(typeof o!="number"||!i)&&(clearTimeout($d),$d=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=zk;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var f=Fu(c,Al(l),wl(l),Wu(l)),p=f==null?-1:Number(f),m=!Number.isFinite(p)||p<0,y=ba(l),x=Al(l),h=Bu(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=Hy(l,h,"hover",String(c.index));t.dispatch(Uy({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=n9(l),b=v==="left-to-right"?1:-1,_=d==="ArrowRight"?1:-1,w;if(m){var C=wl(l),S=Wu(l),k=_*b,A=z=>({active:!1,index:String(z),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(w=-1,k>0){for(var O=0;O=0;$--)if(Fu(A($),x,C,S)!=null){w=$;break}if(w<0)return}else{w=p+_*b;var F=y?.length||x.length;if(F===0||w>=F||w<0)return}var P=Hy(l,h,"hover",String(w));t.dispatch(Uy({active:!0,activeIndex:w.toString(),activeCoordinate:P}))}finally{$m=null,$d=null}};if(!i){s();return}o==="raf"?$m=requestAnimationFrame(s):typeof o=="number"&&$d===null&&(s(),zk=null,$d=setTimeout(()=>{zk?s():($d=null,$m=null)},o))}});gv.startListening({actionCreator:C5,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;if(!o.active&&o.index==null){var a="0",i=Bu(r,r.tooltip.settings.shared),s=Hy(r,i,"hover",String(a));t.dispatch(Uy({active:!0,activeIndex:a,activeCoordinate:s}))}}}});gv.startListening({actionCreator:E5,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(Uy({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function Bk(e){e.persist();var t=e.currentTarget;return new Proxy(e,{get:(r,n)=>{if(n==="currentTarget")return t;var o=Reflect.get(r,n);return typeof o=="function"?o.bind(r):o}})}var Ja=Wn("externalEvent"),T5=hl(),Fk=new Map,hv=new Map,N5=new Map;T5.startListening({actionCreator:Ja,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=Bk(o);N5.set(a,{handler:n,reactEvent:i});var s=Fk.get(a);s!==void 0&&(cancelAnimationFrame(s),Fk.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,f=d,p=f==="all"||f?.includes(a),m=hv.get(a);m!==void 0&&(typeof c!="number"||!p)&&(clearTimeout(m),hv.delete(a));var y=()=>{var g=N5.get(a);try{if(!g)return;var v=g.handler,b=g.reactEvent,_=t.getState(),w={activeCoordinate:EO(_),activeDataKey:mm(_),activeIndex:_i(_),activeLabel:DS(_),activeTooltipIndex:_i(_),isTooltipActive:NO(_)};v&&v(w,b)}finally{Fk.delete(a),hv.delete(a),N5.delete(a)}};if(!p){y();return}if(c==="raf"){var x=requestAnimationFrame(y);Fk.set(a,x)}else if(typeof c=="number"){if(!hv.has(a)){y();var h=setTimeout(y,c);hv.set(a,h)}}else y()}}});var dye=ee([_l],e=>e.tooltipItemPayloads),UH=ee([dye,(e,t)=>t,(e,t,r)=>r],(e,t,r)=>{if(t!=null){var n=e.find(a=>a.settings.graphicalItemId===r);if(n!=null){var o=n.getPosition;if(o!=null)return o(t)}}});var O5=Wn("touchMove"),P5=hl(),Ld=null,tc=null,WH=null,yv=null;P5.startListening({actionCreator:O5,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){yv=Bk(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Ld!==null&&(cancelAnimationFrame(Ld),Ld=null),tc!==null&&(typeof a!="number"||!s)&&(clearTimeout(tc),tc=null),WH=Array.from(r.touches).map(u=>mv({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(yv!=null){var u=t.getState(),c=Bu(u,u.tooltip.settings.shared);if(c==="axis"){var d,f=(d=WH)===null||d===void 0?void 0:d[0];if(f==null){Ld=null,tc=null;return}var p=pv(u,f);p?.activeIndex!=null&&t.dispatch(CS({activeIndex:p.activeIndex,activeDataKey:void 0,activeCoordinate:p.activeCoordinate}))}else if(c==="item"){var m,y=yv.touches[0];if(document.elementFromPoint==null||y==null)return;var x=document.elementFromPoint(y.clientX,y.clientY);if(!x||!x.getAttribute)return;var h=x.getAttribute(U1),g=(m=x.getAttribute(W1))!==null&&m!==void 0?m:void 0,v=Uu(u).find(w=>w.id===g);if(h==null||v==null||g==null)return;var b=v.dataKey,_=UH(u,h,g);t.dispatch(_S({activeDataKey:b,activeIndex:h,activeCoordinate:_,activeGraphicalItemId:g}))}Ld=null,tc=null}};if(!s){l();return}a==="raf"?Ld=requestAnimationFrame(l):typeof a=="number"&&tc===null&&(l(),yv=null,tc=setTimeout(()=>{yv?l():(tc=null,Ld=null)},a))}}});var vv={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},HH=mr({name:"eventSettings",initialState:vv,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Dt(t.payload.throttledEvents))}}}),KH=HH.actions.setEventSettings;var qH=HH.reducer;var fye=g1({brush:pW,cartesianAxis:JU,chartData:cF,errorBars:GW,eventSettings:qH,graphicalItems:$U,layout:a6,legend:P6,options:aF,polarAxis:oU,polarOptions:FH,referenceElements:hW,renderedTicks:DW,rootProps:$H,tooltip:m9,zIndex:X9}),VH=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return UL({reducer:fye,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([k5.middleware,_5.middleware,gv.middleware,T5.middleware,P5.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(CN({type:"raf"}))},devTools:xi.devToolsEnabled&&{serialize:{replacer:DH},name:"recharts-".concat(r)}})};function Uk(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=gr(),a=(0,YH.useRef)(null);if(o)return r;a.current==null&&(a.current=VH(t,n));var i=Uh;return GH.createElement(B6,{context:i,store:a.current},r)}var Wk=G(Y());function pye(e){var t=e.layout,r=e.margin,n=xt(),o=gr();return(0,Wk.useEffect)(()=>{o||(n(r6(t)),n(TN(r)))},[n,o,t,r]),null}var Hk=(0,Wk.memo)(pye,ya);var XH=G(Y());function Kk(e){var t=xt();return(0,XH.useEffect)(()=>{t(LH(e))},[t,e]),null}var qk=G(Y());var mye=e=>{var t=xt();return(0,qk.useEffect)(()=>{t(KH(e))},[t,e]),null},Vk=(0,qk.memo)(mye,ya);var Ll=G(Y()),rK=G(Y());var Bd=G(Y()),D5=G(Y());var zd=G(Y()),Gk=G(Y());function ZH(e){var t=e.zIndex,r=e.isPanorama,n=(0,Gk.useRef)(null),o=xt();return(0,Gk.useLayoutEffect)(()=>(n.current&&o(G9({zIndex:t,element:n.current,isPanorama:r})),()=>{o(Y9({zIndex:t,isPanorama:r}))}),[o,t,r]),zd.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function M5(e){var t=e.children,r=e.isPanorama,n=Pe(W9);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return zd.createElement(zd.Fragment,null,o.map(i=>zd.createElement(ZH,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>zd.createElement(ZH,{key:i,zIndex:i,isPanorama:r})))}var gye=["children"];function hye(e,t){if(e==null)return{};var r,n,o=yye(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=zp(),n=Bp(),o=R1();if(!ma(r)||!ma(n))return null;var a=e.children,i=e.otherAttributes,s=e.title,l=e.desc,u,c;return i!=null&&(typeof i.tabIndex=="number"?u=i.tabIndex:u=o?0:void 0,typeof i.role=="string"?c=i.role:c=o?"application":void 0),Bd.createElement(Dh,Yk({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:vye,ref:t}),a)}),bye=e=>{var t=e.children,r=Pe(Zc);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Bd.createElement(Dh,{width:n,height:o,x:i,y:a},t)},I5=(0,D5.forwardRef)((e,t)=>{var r=e.children,n=hye(e,gye),o=gr();return o?Bd.createElement(bye,null,Bd.createElement(M5,{isPanorama:!0},r)):Bd.createElement(xye,Yk({ref:t},n),Bd.createElement(M5,{isPanorama:!1},r))});var ln=G(Y()),Qt=G(Y());var Xk=G(Y());function wye(e,t){return Aye(e)||_ye(e,t)||kye(e,t)||Sye()}function Sye(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function kye(e,t){if(e){if(typeof e=="string")return JH(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?JH(e,t):void 0}}function JH(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{if(n!=null){var i=n.getBoundingClientRect(),s=i.width/n.offsetWidth;pt(s)&&s!==a&&e(o6(s))}},[n,e,a]),o}function RH(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Cye(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(fF(),null);function Jk(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var jye=(0,Qt.forwardRef)((e,t)=>{var r,n,o=(0,Qt.useRef)(null),a=(0,Qt.useState)({containerWidth:Jk((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:Jk((n=e.style)===null||n===void 0?void 0:n.height)}),i=Zk(a,2),s=i[0],l=i[1],u=(0,Qt.useCallback)((d,f)=>{l(p=>{var m=Math.round(d),y=Math.round(f);return p.containerWidth===m&&p.containerHeight===y?p:{containerWidth:m,containerHeight:y}})},[]),c=(0,Qt.useCallback)(d=>{if(typeof t=="function"&&t(d),o.current!=null&&(o.current.disconnect(),o.current=null),d!=null&&typeof ResizeObserver<"u"){var f=d.getBoundingClientRect(),p=f.width,m=f.height;u(p,m);var y=h=>{var g=h[0];if(g!=null){var v=g.contentRect,b=v.width,_=v.height;u(b,_)}},x=new ResizeObserver(y);x.observe(d),o.current=x}},[t,u]);return(0,Qt.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),ln.createElement(ln.Fragment,null,ln.createElement(Rc,{width:s.containerWidth,height:s.containerHeight}),ln.createElement("div",rc({ref:c},e)))}),$ye=(0,Qt.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,Qt.useState)({containerWidth:Jk(r),containerHeight:Jk(n)}),a=Zk(o,2),i=a[0],s=a[1],l=(0,Qt.useCallback)((c,d)=>{s(f=>{var p=Math.round(c),m=Math.round(d);return f.containerWidth===p&&f.containerHeight===m?f:{containerWidth:p,containerHeight:m}})},[]),u=(0,Qt.useCallback)(c=>{if(typeof t=="function"&&t(c),c!=null){var d=c.getBoundingClientRect(),f=d.width,p=d.height;l(f,p)}},[t,l]);return ln.createElement(ln.Fragment,null,ln.createElement(Rc,{width:i.containerWidth,height:i.containerHeight}),ln.createElement("div",rc({ref:u},e)))}),Lye=(0,Qt.forwardRef)((e,t)=>{var r=e.width,n=e.height;return ln.createElement(ln.Fragment,null,ln.createElement(Rc,{width:r,height:n}),ln.createElement("div",rc({ref:t},e)))}),zye=(0,Qt.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?ln.createElement($ye,rc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?ln.createElement(Lye,rc({},e,{width:r,height:n,ref:t})):ln.createElement(ln.Fragment,null,ln.createElement(Rc,{width:r,height:n}),ln.createElement("div",rc({ref:t},e)))});function Bye(e){return e?jye:zye}var tK=(0,Qt.forwardRef)((e,t)=>{var r=e.children,n=e.className,o=e.height,a=e.onClick,i=e.onContextMenu,s=e.onDoubleClick,l=e.onMouseDown,u=e.onMouseEnter,c=e.onMouseLeave,d=e.onMouseMove,f=e.onMouseUp,p=e.onTouchEnd,m=e.onTouchMove,y=e.onTouchStart,x=e.style,h=e.width,g=e.responsive,v=e.dispatchTouchEvents,b=v===void 0?!0:v,_=(0,Qt.useRef)(null),w=xt(),C=(0,Qt.useState)(null),S=Zk(C,2),k=S[0],A=S[1],O=(0,Qt.useState)(null),$=Zk(O,2),F=$[0],P=$[1],z=QH(),N=Jh(),D=N?.width>0?N.width:h,T=N?.height>0?N.height:o,E=(0,Qt.useCallback)(H=>{z(H),typeof t=="function"&&t(H),A(H),P(H),H!=null&&(_.current=H)},[z,t,A,P]),I=(0,Qt.useCallback)(H=>{w(S5(H)),w(Ja({handler:a,reactEvent:H}))},[w,a]),j=(0,Qt.useCallback)(H=>{w(Lk(H)),w(Ja({handler:u,reactEvent:H}))},[w,u]),q=(0,Qt.useCallback)(H=>{w(AS()),w(Ja({handler:c,reactEvent:H}))},[w,c]),te=(0,Qt.useCallback)(H=>{w(Lk(H)),w(Ja({handler:d,reactEvent:H}))},[w,d]),K=(0,Qt.useCallback)(()=>{w(C5())},[w]),le=(0,Qt.useCallback)(()=>{w(E5())},[w]),pe=(0,Qt.useCallback)(H=>{w(A5(H.key))},[w]),re=(0,Qt.useCallback)(H=>{w(Ja({handler:i,reactEvent:H}))},[w,i]),_e=(0,Qt.useCallback)(H=>{w(Ja({handler:s,reactEvent:H}))},[w,s]),ue=(0,Qt.useCallback)(H=>{w(Ja({handler:l,reactEvent:H}))},[w,l]),se=(0,Qt.useCallback)(H=>{w(Ja({handler:f,reactEvent:H}))},[w,f]),Z=(0,Qt.useCallback)(H=>{w(Ja({handler:y,reactEvent:H}))},[w,y]),R=(0,Qt.useCallback)(H=>{b&&w(O5(H)),w(Ja({handler:m,reactEvent:H}))},[w,b,m]),L=(0,Qt.useCallback)(H=>{w(Ja({handler:p,reactEvent:H}))},[w,p]),B=Bye(g);return ln.createElement($O.Provider,{value:k},ln.createElement(kE.Provider,{value:F},ln.createElement(B,{width:D??x?.width,height:T??x?.height,className:lt("recharts-wrapper",n),style:Cye({position:"relative",cursor:"default",width:D,height:T},x),onClick:I,onContextMenu:re,onDoubleClick:_e,onFocus:K,onBlur:le,onKeyDown:pe,onMouseDown:ue,onMouseEnter:j,onMouseLeave:q,onMouseMove:te,onMouseUp:se,onTouchEnd:L,onTouchMove:R,onTouchStart:Z,ref:E},ln.createElement(Iye,null),r)))});var Fye=["width","height","responsive","children","className","style","compact","title","desc"];function Uye(e,t){if(e==null)return{};var r,n,o=Wye(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=e.width,n=e.height,o=e.responsive,a=e.children,i=e.className,s=e.style,l=e.compact,u=e.title,c=e.desc,d=Uye(e,Fye),f=Zr(d);return l?Ll.createElement(Ll.Fragment,null,Ll.createElement(Rc,{width:r,height:n}),Ll.createElement(I5,{otherAttributes:f,title:u,desc:c},a)):Ll.createElement(tK,{className:i,style:s,width:r,height:n,responsive:o??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},Ll.createElement(I5,{otherAttributes:f,title:u,desc:c,ref:t},Ll.createElement(vW,null,a)))});function j5(){return j5=Object.assign?Object.assign.bind():function(e){for(var t=1;taK.createElement(Lm,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Xye,tooltipPayloadSearcher:Hu,categoricalChartProps:e,ref:t}));var sK=G(Y()),lK=G(Y());var Zye=["axis","item"],L5=(0,lK.forwardRef)((e,t)=>sK.createElement(Lm,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Zye,tooltipPayloadSearcher:Hu,categoricalChartProps:e,ref:t}));var hK=G(Y()),yK=G(Y());var fK=G(Y()),nc=G(Y());var uK=G(Y());function cK(e){var t=xt();return(0,uK.useEffect)(()=>{t(BH(e))},[t,e]),null}var Jye=["layout"];function z5(){return z5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Ut(e,uve);return hK.createElement(pK,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:lve,tooltipPayloadSearcher:Hu,categoricalChartProps:r,ref:t})});var vK=G(Y()),xK=G(Y());var cve=["axis"],oc=(0,xK.forwardRef)((e,t)=>vK.createElement(Lm,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:cve,tooltipPayloadSearcher:Hu,categoricalChartProps:e,ref:t}));var Mi=G(Y()),zm=[{id:"5m",label:"5m",minutes:5,bucketSeconds:10},{id:"10m",label:"10m",minutes:10,bucketSeconds:20},{id:"15m",label:"15m",minutes:15,bucketSeconds:30},{id:"30m",label:"30m",minutes:30,bucketSeconds:60},{id:"45m",label:"45m",minutes:45,bucketSeconds:60},{id:"1h",label:"1h",minutes:60,bucketSeconds:120},{id:"2h",label:"2h",minutes:120,bucketSeconds:240},{id:"3h",label:"3h",minutes:180,bucketSeconds:300},{id:"6h",label:"6h",minutes:360,bucketSeconds:600},{id:"12h",label:"12h",minutes:720,bucketSeconds:1200},{id:"1d",label:"1d",minutes:1440,bucketSeconds:1800},{id:"3d",label:"3d",minutes:4320,bucketSeconds:7200},{id:"7d",label:"7d",minutes:10080,bucketSeconds:14400},{id:"30d",label:"30d",minutes:43200,bucketSeconds:86400},{id:"90d",label:"90d",minutes:129600,bucketSeconds:259200}],bK="30m",wK="activeagents.timeWindow",SK=(0,Mi.createContext)(null),U5=e=>zm.find(t=>t.id===e);function kK({children:e}){let[t,r]=(0,Mi.useState)(()=>{try{let a=localStorage.getItem(wK);if(a&&U5(a))return a}catch{}return bK}),n=(0,Mi.useCallback)(a=>{if(U5(a)){r(a);try{localStorage.setItem(wK,a)}catch{}}},[]),o=(0,Mi.useMemo)(()=>{let a=zm.findIndex(s=>s.id===t),i=zm[a]||U5(bK);return{timeWindow:i,windowIndex:a,windows:zm,setWindow:n,zoomTo:s=>{let l=zm[Math.min(Math.max(s,0),zm.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return Mi.default.createElement(SK.Provider,{value:o},e)}function Ms(){let e=(0,Mi.useContext)(SK);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var Bm=G(Y());function Ds({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=Ms(),{darkMode:i}=st(),s=fi(i),l={color:s.textSecondary};return Bm.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},Bm.default.createElement("button",{onClick:()=>a(r-1),disabled:r<=0,title:"Zoom in (shorter window)","aria-label":"Zoom in",className:"aa-zoom px-2 py-1 text-sm rounded-md disabled:opacity-30 disabled:cursor-not-allowed",style:l},"\u2212"),Bm.default.createElement("select",{value:n.id,onChange:u=>o(u.target.value),"aria-label":"Time window",className:`aa-field px-2 py-1 mx-1 text-sm rounded-md shadow ${e?"":"min-w-[4.5rem]"}`,style:{background:s.cardBg,color:s.textPrimary,border:`1px solid ${s.cardBorder}`}},t.map(u=>Bm.default.createElement("option",{key:u.id,value:u.id},u.label))),Bm.default.createElement("button",{onClick:()=>a(r+1),disabled:r>=t.length-1,title:"Zoom out (longer window)","aria-label":"Zoom out",className:"aa-zoom px-2 py-1 text-sm rounded-md disabled:opacity-30 disabled:cursor-not-allowed",style:l},"+"))}var gn=G(Y());var jr=G(Y());var xv=e=>{let t=(e||"").toLowerCase();return t.includes("claude")?2e5:t.includes("gemini")?1e6:t.includes("llama")?131072:t.includes("gpt-4o")||t.includes("gpt-4-turbo")||t.includes("gpt-4.1")?128e3:t.includes("gpt-5")?4e5:128e3},ac=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},Rk=e=>{let t=e?.spans||[],r=null;for(let m of t){let y=m.tokens||{},x=(y.input||0)+(y.output||0);x>0&&(!r||x>r.total)&&(r={input:y.input||0,output:y.output||0,thinking:y.thinking||0,cached:y.cached||0,total:x})}if(!r)return null;let n=m=>{for(let y of t){let x=(y.attributes||{})[m];if(x)return x}return null},o=(m,...y)=>{let x=Number(n(m));if(Number.isFinite(x)&&x>0)return x;for(let h of y){let g=n(h);if(g)return ac(g)}return 0},a=o("prompt.input.instructions.tokens","prompt.input.instructions","llm.instructions"),i=o("prompt.input.tools.tokens","prompt.input.tools","llm.tools"),s=o("prompt.input.mcp_tools.tokens","prompt.input.mcp_tools"),l=o("prompt.input.messages.tokens","prompt.input.messages","llm.messages"),u=0;for(let m of t){let y=m.attributes||{},x=y["tool.output.result"]||y["tool.result"],h=y["tool.input.args"]||y["tool.arguments"];x&&(u+=ac(x)),h&&(u+=ac(h))}u=Math.min(u,r.input);let c=["messages","toolResults","instructions","toolSchemas","mcpSchemas"],d={messages:l,toolResults:u,instructions:a,toolSchemas:i,mcpSchemas:s},f=c.reduce((m,y)=>m+d[y],0),p;if(f>0&&r.input>0){let m=r.input/f;p={};for(let x of c)p[x]=Math.round(d[x]*m);let y=r.input-c.reduce((x,h)=>x+p[h],0);if(y!==0){let x=c.reduce((h,g)=>p[g]>p[h]?g:h);p[x]=Math.max(p[x]+y,0)}}else p={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:xv(e.model),cached:r.cached,thinking:r.thinking,estimated:f>0,segments:[{key:"messages",label:"Messages",tokens:p.messages},{key:"tool_results",label:"Tool results",tokens:p.toolResults},{key:"instructions",label:"Instructions",tokens:p.instructions},{key:"tool_schemas",label:"Tool schemas",tokens:p.toolSchemas},{key:"mcp_schemas",label:"MCP tool schemas",tokens:p.mcpSchemas},{key:"output",label:"Generated output",tokens:r.output}]}};var dve={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},Fm=e=>e==null?"\u2014":e>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,"")}M`:e>=1e3?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(Math.round(e));function ic({used:e,limit:t=2e5,segments:r=[],cached:n=0,thinking:o=0,compact:a=!1,defaultOpen:i=!1,label:s="Context window",estimated:l=!1,darkMode:u=!1}){let[c,d]=(0,jr.useState)(i),f=r.filter(C=>C.tokens>0),p=e??f.reduce((C,S)=>C+S.tokens,0),m=t>0?p/t:0,y=m>=.9?"#dc2626":m>=.75?"#eab308":null,x=u?"rgba(255,255,255,0.4)":"#9ca3af",h=u?"rgba(255,255,255,0.6)":"#6b7280",g=u?"rgba(255,255,255,0.75)":"#4b5563",v=u?"rgba(255,255,255,0.1)":"#f3f4f6",b=`${Fm(p)} / ${Fm(t)} (${Math.round(m*100)}%)`,_=C=>C.key==="messages"&&y?y:C.color||dve[C.key]||"#2563eb",w=C=>jr.default.createElement("div",{style:{display:"flex",height:C,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},f.map(S=>jr.default.createElement("div",{key:S.key,title:`${S.label} \xB7 ${Fm(S.tokens)}`,style:{width:`${Math.min(S.tokens/t*100,100)}%`,background:_(S)}})));return a?jr.default.createElement("span",{title:`${s}: ${b}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},w("6px"),jr.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:y||x,whiteSpace:"nowrap"}},Math.round(m*100),"%")):jr.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${y?y+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},jr.default.createElement("div",{onClick:C=>{C.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&jr.default.createElement("span",{style:{color:x,fontWeight:400}}," \xB7 estimated")),jr.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:y||g}},b),jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x,display:"inline-block",transform:c?"rotate(90deg)":"none",transition:"transform 0.15s ease"}},">"))),jr.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},w("9px")),m>=.9&&jr.default.createElement("div",{style:{marginTop:"6px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:"#dc2626"}},"[!] compaction imminent \u2014 next turn may drop the oldest messages"),c&&jr.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...f,{key:"__free",label:"Free space",tokens:Math.max(t-p,0)}].map(C=>jr.default.createElement("div",{key:C.key,style:{display:"flex",alignItems:"center",gap:"8px"}},jr.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:C.key==="__free"?v:_(C),border:C.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),jr.default.createElement("span",{style:{fontSize:"13px",color:g,flex:1}},C.label),jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},Fm(C.tokens)),jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:x,width:"46px",textAlign:"right"}},t>0?`${(C.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&jr.default.createElement("div",{style:{marginTop:"4px",paddingTop:"6px",borderTop:`1px solid ${u?"rgba(255,255,255,0.08)":"#f3f4f6"}`,display:"flex",gap:"16px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x}},n>0&&jr.default.createElement("span",null,jr.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",Fm(n)),o>0&&jr.default.createElement("span",null,jr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",Fm(o)))))}var ut=G(Y());var Me=G(Y());var _n=G(Y());var ge=G(Y());var _K=["ui","json-ui","genui"],Ud="render_ui",ts=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),W5=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Wd(e){let t=typeof e=="string"?W5(e):e;if(Array.isArray(t))return t.every(ts)?t:null;if(ts(t)){if(Array.isArray(t.blocks))return t.blocks.every(ts)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(ts)?t.ui:null}return null}function H5(e,t){let r=String(e||"").trim().toLowerCase();if(_K.includes(r))return Wd(t);if(r==="json"){let n=W5(t);return ts(n)&&Array.isArray(n.ui)?Wd(n):null}return null}function K5(e){if(typeof e!="string")return null;let t=e.trim(),r=t.startsWith("{")&&t.endsWith("}"),n=t.startsWith("[")&&t.endsWith("]");if(!r&&!n)return null;let o=W5(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>ts(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Wd(o);return a?{blocks:a}:{object:o}}var fve=e=>ts(e)?e.function?.name||e.name:void 0,pve=e=>ts(e)?e.function?.arguments??e.arguments??e.input:void 0;function Um(e,{callId:t}={}){if(!ts(e))return null;if(e.tool_name===Ud&&e.tool_arguments!=null){let o=Wd(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>ts(a)&&a.id!=null);r.forEach(a=>{if(fve(a)!==Ud||t!=null&&o&&a.id!==t)return;let i=Wd(pve(a));i&&n.push(...i)})}else if(ts(r)&&e.tool_name===Ud){let o=Wd(r);o&&n.push(...o)}return n.length>0?n:null}function e2(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function t2(e){if(typeof e!="string")return!1;let t=e.trim();if(/^data:image\//i.test(t))return!0;if(!/^https?:\/\//i.test(t)||typeof window>"u"||!window.location)return!1;try{return new URL(t,window.location.href).origin===window.location.origin}catch{return!1}}function AK(e){try{return new URL(String(e).trim()).host}catch{return""}}var PK=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],mve=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],bv=PK.length,CK=220,Wm=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),Lt=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),MK=e=>{if(typeof e!="number"||!Number.isFinite(e))return Lt(e);let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(1).replace(/\.0$/,"")}B`:t>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,"")}M`:t>=1e4?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}K`:e.toLocaleString()},Y5=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,EK={info:{light:["#eff6ff","#1d4ed8"],dark:["rgba(59,130,246,0.15)","#93c5fd"]},success:{light:["#f0fdf4","#15803d"],dark:["rgba(34,197,94,0.15)","#86efac"]},warning:{light:["#fffbeb","#b45309"],dark:["rgba(245,158,11,0.15)","#fcd34d"]},danger:{light:["#fef2f2","#b91c1c"],dark:["rgba(239,68,68,0.15)","#fca5a5"]}},gve={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},q5=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),X5=e=>({background:e?"rgba(0,0,0,0.35)":"#f3f4f6",color:e?"#ffffff":"#111827",borderRadius:"6px",padding:"8px 10px",fontSize:"12px",overflowX:"auto",margin:0,whiteSpace:"pre-wrap"}),Hm=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function zl({block:e,reason:t,colors:r,darkMode:n}){return ge.default.createElement("div",{className:"text-xs",style:{color:r.textMuted}},ge.default.createElement("div",{className:"mb-1"},"Unsupported block",e&&e.type?` \u201C${Lt(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),ge.default.createElement("pre",{style:{...X5(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function hve({block:e,colors:t,darkMode:r,onAction:n}){let o=e2(e.image_url)&&t2(e.image_url)?e.image_url.trim():null;return ge.default.createElement("div",{className:"overflow-hidden",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg}},o&&ge.default.createElement("img",{src:o,alt:Lt(e.title),style:{width:"100%",maxHeight:"220px",objectFit:"cover",display:"block"}}),ge.default.createElement("div",{className:"p-3 space-y-1.5"},e.title!=null&&ge.default.createElement("div",{style:Hm(t)},Lt(e.title)),e.body!=null&&ge.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ge.default.createElement(rs,{text:Lt(e.body),darkMode:r,onUiAction:n})),e.footer!=null&&ge.default.createElement("div",{className:"text-xs pt-1",style:{color:t.textMuted,borderTop:`1px solid ${t.cardBorder}`}},Lt(e.footer))))}function DK({block:e,colors:t,darkMode:r}){let n=e.delta!=null?Lt(e.delta):null,o=e.tone||(n&&n.trim().startsWith("-")?"negative":n?"positive":"neutral"),a=Y5(gve,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?MK(e.value):Lt(e.value);return ge.default.createElement("div",{style:{background:t.innerBg,border:`1px solid ${t.cardBorder}`,borderRadius:"10px",padding:"10px 12px"}},ge.default.createElement("div",{className:"text-xs",style:{color:t.textMuted}},Lt(e.label)),ge.default.createElement("div",{className:"text-lg font-semibold leading-tight mt-0.5",style:{color:t.textPrimary}},s),n&&ge.default.createElement("div",{className:"text-xs mt-0.5 font-medium",style:{color:i}},n))}function yve({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(Wm):[];return n.length===0?ge.default.createElement(zl,{block:e,reason:"stats needs an items array",colors:t,darkMode:r}):ge.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:"8px"}},n.map((o,a)=>ge.default.createElement(DK,{key:a,block:o,colors:t,darkMode:r})))}var G5=(e,t)=>({padding:"6px 10px",borderBottom:`1px solid ${e.cardBorder}`,color:e.textCell,textAlign:t?"right":"left",fontVariantNumeric:t?"tabular-nums":void 0,verticalAlign:"top"}),vve=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:ht.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function IK({columns:e,rows:t,colors:r,renderCell:n}){return ge.default.createElement("div",{style:{overflowX:"auto"}},ge.default.createElement("table",{className:"text-sm",style:{width:"100%",borderCollapse:"collapse"}},ge.default.createElement("thead",null,ge.default.createElement("tr",null,e.map((o,a)=>ge.default.createElement("th",{key:a,style:vve(r)},Lt(o))))),ge.default.createElement("tbody",null,t.map((o,a)=>ge.default.createElement("tr",{key:a},e.map((i,s)=>{let l=o[s];return ge.default.createElement("td",{key:s,style:G5(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():Lt(l))}))))))}function xve({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.columns)?e.columns:null,o=Array.isArray(e.rows)?e.rows:null;if(!n||!o)return ge.default.createElement(zl,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:Wm(i)?n.map(s=>i[s]):[i]);return ge.default.createElement("div",null,e.title!=null&&ge.default.createElement("div",{className:"mb-1.5",style:Hm(t)},Lt(e.title)),ge.default.createElement(IK,{columns:n,rows:a,colors:t}))}var bve=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},wve=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function Sve({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(Wm):[];if(o.length===0)return ge.default.createElement(zl,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:bve(o),i=Array.isArray(e.series)?e.series.filter(x=>typeof x=="string"):[],s=(i.length>0?i:wve(o,a)).slice(0,bv);if(!a||s.length===0)return ge.default.createElement(zl,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?mve:PK,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=ge.default.createElement(Ku,{contentStyle:{background:u,border:`1px solid ${t.cardBorder}`,borderRadius:"8px",fontSize:"12px"},labelStyle:{color:t.textPrimary,fontWeight:600,marginBottom:"4px"},itemStyle:{color:t.textCell},formatter:x=>typeof x=="number"?x.toLocaleString():Lt(x)}),f=s.length>1||n==="pie"?ge.default.createElement(Z1,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,p=ge.default.createElement(ge.default.Fragment,null,ge.default.createElement(Ol,{stroke:t.cardBorder,vertical:!1}),ge.default.createElement(Il,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),ge.default.createElement($l,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:MK,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=ge.default.createElement($5,{data:o,margin:m},p,d,f,s.map((x,h)=>ge.default.createElement(Tk,{key:x,type:"monotone",dataKey:x,stroke:l[h],strokeWidth:2,dot:{r:4,strokeWidth:2,stroke:u,fill:l[h]},activeDot:{r:5,strokeWidth:2,stroke:u},isAnimationActive:!1})));else if(n==="area")y=ge.default.createElement(oc,{data:o,margin:m},p,d,f,s.map((x,h)=>ge.default.createElement(Ml,{key:x,type:"monotone",dataKey:x,stroke:l[h],strokeWidth:2,fill:l[h],fillOpacity:.12,dot:{r:3,strokeWidth:2,stroke:u,fill:l[h]},isAnimationActive:!1})));else if(n==="pie"){let x=s[0],h=[...o].sort((b,_)=>(Number(_[x])||0)-(Number(b[x])||0)),g=h.slice(0,bv),v=h.slice(bv);v.length>0&&(g[bv-1]={[a]:"Other",[x]:v.reduce((b,_)=>b+(Number(_[x])||0),Number(g[bv-1][x])||0)}),y=ge.default.createElement(F5,{margin:m},d,f,ge.default.createElement(gk,{data:g,dataKey:x,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},g.map((b,_)=>ge.default.createElement(Cl,{key:_,fill:l[_]}))))}else y=ge.default.createElement(L5,{data:o,margin:m,barCategoryGap:"25%",barGap:2},p,d,f,s.map((x,h)=>ge.default.createElement(jk,{key:x,dataKey:x,fill:l[h],radius:[4,4,0,0],maxBarSize:24,isAnimationActive:!1})));return ge.default.createElement("div",null,e.title!=null&&ge.default.createElement("div",{className:"mb-1",style:Hm(t)},Lt(e.title)),ge.default.createElement("div",{style:{width:"100%",height:CK,minWidth:0}},ge.default.createElement(Eu,{width:"100%",height:CK},y)))}function kve({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return ge.default.createElement(zl,{block:e,reason:"list needs an items array",colors:t,darkMode:r});let a=e.ordered?"ol":"ul";return ge.default.createElement("div",null,e.title!=null&&ge.default.createElement("div",{className:"mb-1",style:Hm(t)},Lt(e.title)),ge.default.createElement(a,{className:`${e.ordered?"list-decimal":"list-disc"} pl-5 text-sm space-y-0.5`,style:{color:t.textCell}},o.map((i,s)=>ge.default.createElement("li",{key:s},typeof i=="string"?ge.default.createElement(rs,{text:i,darkMode:r,onUiAction:n}):Lt(i)))))}function _ve({block:e,colors:t}){let r=Number(e.value),n=Number.isFinite(r)?Math.max(0,Math.min(100,r)):0;return ge.default.createElement("div",null,ge.default.createElement("div",{className:"flex items-center justify-between text-xs mb-1"},ge.default.createElement("span",{style:{color:t.textCell}},Lt(e.label)),ge.default.createElement("span",{className:"font-mono",style:{color:t.textMuted}},Math.round(n),"%")),ge.default.createElement("div",{style:{height:"8px",borderRadius:"999px",background:t.trackBg,overflow:"hidden"}},ge.default.createElement("div",{style:{width:`${n}%`,height:"100%",background:_o,borderRadius:"999px",transition:"width 0.3s ease"}})))}var Ave=["text","textarea","number","select","checkbox"],V5=e=>Lt(e.name||e.label),NK=e=>Lt(e.label||e.name),TK=e=>Ave.includes(e.type)?e.type:"text";function Cve({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(f=>Wm(f)&&(f.name||f.label)),[a,i]=(0,ge.useState)(()=>Object.fromEntries(o.map(f=>[V5(f),TK(f)==="checkbox"?!1:""]))),[s,l]=(0,ge.useState)(!1);if(o.length===0)return ge.default.createElement(zl,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?Lt(e.submit):"Submit",c=(f,p)=>i(m=>({...m,[f]:p}));return ge.default.createElement("form",{onSubmit:f=>{f.preventDefault();let p=o.map(m=>{let y=a[V5(m)];return`${NK(m)}: ${typeof y=="boolean"?y?"yes":"no":Lt(y)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?Lt(e.submit):"Submitted"}: ${p}`,values:{...a}})},className:"space-y-2.5",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg,padding:"12px"}},e.title!=null&&ge.default.createElement("div",{style:Hm(t)},Lt(e.title)),o.map(f=>{let p=V5(f),m=TK(f),y=NK(f),x=`genui-field-${p.replace(/\W+/g,"-")}`;return m==="checkbox"?ge.default.createElement("label",{key:p,className:"flex items-center gap-2 text-sm",style:{color:t.textCell}},ge.default.createElement("input",{type:"checkbox",checked:!!a[p],onChange:h=>c(p,h.target.checked),style:{accentColor:_o}}),y):ge.default.createElement("div",{key:p},ge.default.createElement("label",{htmlFor:x,className:"block text-xs mb-1",style:{color:t.textSecondary}},y,f.required?" *":""),m==="textarea"?ge.default.createElement("textarea",{id:x,name:p,value:a[p],onChange:h=>c(p,h.target.value),placeholder:f.placeholder!=null?Lt(f.placeholder):void 0,required:!!f.required,rows:3,className:"aa-field",style:{...q5(t),resize:"vertical"}}):m==="select"?ge.default.createElement("select",{id:x,name:p,value:a[p],onChange:h=>c(p,h.target.value),required:!!f.required,className:"aa-field",style:q5(t)},ge.default.createElement("option",{value:""},f.placeholder!=null?Lt(f.placeholder):"Select\u2026"),(Array.isArray(f.options)?f.options:[]).map((h,g)=>ge.default.createElement("option",{key:g,value:Lt(h)},Lt(h)))):ge.default.createElement("input",{id:x,name:p,type:m==="number"?"number":"text",value:a[p],onChange:h=>c(p,m==="number"&&h.target.value!==""?Number(h.target.value):h.target.value),placeholder:f.placeholder!=null?Lt(f.placeholder):void 0,required:!!f.required,className:"aa-field",style:q5(t)}))}),ge.default.createElement("div",{className:"flex items-center gap-3 pt-1"},ge.default.createElement("button",{type:"submit","data-testid":"genui-form-submit",style:{padding:"6px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,background:_o,color:"#ffffff",border:"1px solid transparent",cursor:"pointer"}},u),s&&ge.default.createElement("span",{className:"text-xs",style:{color:t.textMuted}},"Sent to the agent")))}function Eve({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.options)?e.options:null,[a,i]=(0,ge.useState)(null);return!o||o.length===0?ge.default.createElement(zl,{block:e,reason:"choices needs options",colors:t,darkMode:r}):ge.default.createElement("div",null,e.prompt!=null&&ge.default.createElement("div",{className:"text-sm mb-1.5",style:{color:t.textCell}},Lt(e.prompt)),ge.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=Lt(s),c=a===l;return ge.default.createElement("button",{key:l,type:"button","data-testid":"genui-choice",onClick:()=>{i(l),n&&n({kind:"choice",text:u})},style:{padding:"5px 12px",borderRadius:"999px",fontSize:"13px",cursor:"pointer",border:`1px solid ${c?_o:t.inputBorder}`,background:c?_o:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function Nve({url:e,alt:t,colors:r,darkMode:n}){let[o,a]=(0,ge.useState)(!1);if(o)return ge.default.createElement("img",{src:e,alt:t,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}});let i=AK(e);return ge.default.createElement("button",{type:"button",onClick:()=>a(!0),"data-testid":"genui-image-load",className:"text-xs w-full",style:{border:`1px dashed ${r.cardBorder}`,borderRadius:"8px",padding:"14px 12px",color:r.textMuted,background:n?"rgba(255,255,255,0.03)":"#f9fafb"}},"Load image from ",i||"another site")}function Tve({block:e,colors:t,darkMode:r}){if(!e2(e.url))return ge.default.createElement(zl,{block:e,reason:"image URL must be http(s) or data:",colors:t,darkMode:r});let n=e.url.trim(),o=e.alt!=null?Lt(e.alt):"";return ge.default.createElement("figure",{style:{margin:0}},t2(n)?ge.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):ge.default.createElement(Nve,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&ge.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},Lt(e.caption)))}function Ove({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(Y5(EK,e.tone)||EK.info)[r?"dark":"light"];return ge.default.createElement("div",{style:{background:o,borderLeft:`3px solid ${a}`,borderRadius:"8px",padding:"10px 12px"}},e.title!=null&&ge.default.createElement("div",{className:"text-sm font-semibold mb-0.5",style:{color:a}},Lt(e.title)),ge.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ge.default.createElement(rs,{text:Lt(e.body),darkMode:r,onUiAction:n})))}function Pve({block:e,colors:t,darkMode:r}){return ge.default.createElement("div",null,e.language!=null&&ge.default.createElement("div",{className:"text-xs font-mono mb-1",style:{color:t.textMuted}},Lt(e.language)),ge.default.createElement("pre",{style:X5(r)},Lt(e.code)))}function OK({block:e,colors:t,darkMode:r,onAction:n}){let o=e.text??e.body??e.content??e.markdown;return ge.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ge.default.createElement(rs,{text:Lt(o),darkMode:r,onUiAction:n}))}var Mve=3;function r2({value:e,colors:t,darkMode:r,depth:n}){if(e==null||typeof e!="object")return typeof e=="boolean"?ge.default.createElement("span",{className:"font-mono"},String(e)):typeof e=="number"?ge.default.createElement("span",{style:{fontVariantNumeric:"tabular-nums"}},e.toLocaleString()):ge.default.createElement("span",null,Lt(e));if(n>=Mve)return ge.default.createElement("pre",{style:{...X5(r),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2));if(Array.isArray(e)){if(e.length===0)return ge.default.createElement("span",{style:{color:t.textMuted}},"\u2014");if(e.every(Wm)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return ge.default.createElement(IK,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>ge.default.createElement(r2,{value:i,colors:t,darkMode:r,depth:n+1})})}return e.every(a=>a==null||typeof a!="object")?ge.default.createElement("span",null,e.map(Lt).join(", ")):ge.default.createElement("ul",{className:"list-disc pl-5 space-y-0.5"},e.map((a,i)=>ge.default.createElement("li",{key:i},ge.default.createElement(r2,{value:a,colors:t,darkMode:r,depth:n+1}))))}let o=Object.entries(e);return o.length===0?ge.default.createElement("span",{style:{color:t.textMuted}},"{}"):ge.default.createElement("table",{className:"text-sm",style:{borderCollapse:"collapse",width:n===0?"100%":"auto"}},ge.default.createElement("tbody",null,o.map(([a,i])=>ge.default.createElement("tr",{key:a},ge.default.createElement("th",{scope:"row",className:"font-mono text-xs",style:{...G5(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),ge.default.createElement("td",{style:G5(t,!1)},ge.default.createElement(r2,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function Dve({block:e,colors:t,darkMode:r}){let n="value"in e?e.value:e.data;return ge.default.createElement("div",{style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",overflow:"hidden"}},e.title!=null&&ge.default.createElement("div",{className:"px-3 pt-2",style:Hm(t)},Lt(e.title)),ge.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},ge.default.createElement(r2,{value:n,colors:t,darkMode:r,depth:0})))}var Ive={card:hve,stat:DK,stats:yve,table:xve,chart:Sve,list:kve,progress:_ve,form:Cve,choices:Eve,image:Tve,callout:Ove,code:Pve,object:Dve,text:OK,markdown:OK};function Is({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(Wm):[];if(n.length===0)return null;let o=fi(r);return ge.default.createElement("div",{className:"space-y-3",onClick:a=>a.stopPropagation()},n.map((a,i)=>{let s=typeof a.type=="string"?a.type.toLowerCase():"unknown",l=Y5(Ive,s);return ge.default.createElement("div",{key:i,"data-testid":"genui-block","data-block-type":s},l?ge.default.createElement(l,{block:a,colors:o,darkMode:r,onAction:t}):ge.default.createElement(zl,{block:a,colors:o,darkMode:r}))}))}var jve=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,wv=(e,t)=>e.split(jve).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return _n.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return _n.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return _n.default.createElement("code",{key:o,className:"px-1 py-0.5 rounded text-[0.9em]",style:{background:"rgba(127,127,127,0.15)"}},r.slice(1,-1));let a=r.match(/^\[([^\]]+)\]\(((?:https?:\/\/|\/)[^)\s]+)\)$/);return a?_n.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),jK=e=>/^\s*\|.*\|\s*$/.test(e),$ve=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),$K=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function rs({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` -`),a=0,i=0;for(;a_n.default.createElement("th",{key:p,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},wv(f,`th${d}-${p}`))))),_n.default.createElement("tbody",null,c.map((f,p)=>_n.default.createElement("tr",{key:p},u.map((m,y)=>_n.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},wv(f[y]??"",`td${d}-${p}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;a_n.default.createElement("li",{key:d},wv(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(_n.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(_n.default.createElement("div",{key:i++},wv(s,`p${i}`))),a+=1}return _n.default.createElement("div",{className:"break-words"},n)}var Sa=G(Y()),Lve=e=>{let t=e.mcp_server||e.server;return t?`MCP server \xB7 ${t}`:typeof e.name=="string"&&e.name.startsWith("mcp__")?`MCP server \xB7 ${e.name.split("__")[1]}`:e.gem?`gem \xB7 ${e.gem}`:e.source?String(e.source):"agent-defined \xB7 method on the agent class"},zve=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function Z5({tool:e,darkMode:t}){let r=zve(e);return Sa.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Sa.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Sa.default.createElement("div",{className:"text-xs font-mono",style:{color:t?"rgba(255,255,255,0.45)":"#9ca3af",display:"flex",flexWrap:"wrap",columnGap:"16px",rowGap:"4px"}},Sa.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Sa.default.createElement("span",null,"source: ",Lve(e))))}function J5({tools:e,darkMode:t}){let[r,n]=(0,Sa.useState)(null),o=(e||[]).filter(s=>s&&s.name);if(o.length===0)return null;let a=o.find(s=>s.name===r),i=s=>({background:t?"rgba(34,197,94,0.12)":"#f0fdf4",color:t?"#86efac":"#15803d",border:`1px solid ${s?t?"#4ade80":"#22c55e":"transparent"}`,borderRadius:"6px",padding:"2px 8px",fontSize:"11px",cursor:"pointer"});return Sa.default.createElement("div",{style:{marginTop:"8px"}},Sa.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Sa.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Sa.default.createElement("button",{key:s.name,onClick:l=>{l.stopPropagation(),n(r===s.name?null:s.name)},title:r===s.name?"Hide definition":"Show definition",style:i(r===s.name)},"\u2699 ",s.name))),a&&Sa.default.createElement("div",{onClick:s=>s.stopPropagation(),style:{marginTop:"6px",padding:"8px 10px",borderRadius:"8px",background:t?"rgba(34,197,94,0.06)":"#f7fef9",border:`1px solid ${t?"rgba(34,197,94,0.25)":"#bbf7d0"}`}},Sa.default.createElement(Z5,{tool:a,darkMode:t})))}var Bve=["application/json","application/xml","application/x-yaml","application/csv"],Fve=/\.(csv|md|txt|json|ya?ml)$/i;function LK(e){let t=String(e?.type||e?.content_type||"").toLowerCase(),r=String(e?.name||e?.filename||"");return t.startsWith("image/")?"image":t==="application/pdf"?"document":t.startsWith("text/")||Bve.includes(t)||Fve.test(r)?"text":"file"}function zK(e){let t=Number(e);return!Number.isFinite(t)||t<0?"":t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}function BK(e){if(typeof e!="string")return!1;let t=e.trim();if(/^(data:image\/|blob:)/i.test(t))return!0;if(/^\/[\\/]/.test(t))return!1;if(t.startsWith("/"))return!0;if(!/^https?:\/\//i.test(t)||typeof window>"u"||!window.location)return!1;try{return new URL(t,window.location.href).origin===window.location.origin}catch{return!1}}var FK=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,Sv=e=>{if(e==null)return null;if(typeof e=="object")return JSON.stringify(e,null,2);try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},Uve=["text","output","body","content"],UK=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},Wve=e=>{let t=UK(e.tool_result)??UK(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=Uve.find(a=>typeof t[a]=="string"&&t[a].trim().length>0);if(!r)return null;let n=[t.error&&"error",t.status!=null&&`status ${t.status}`,typeof t.url=="string"&&t.url.replace(/^https?:\/\//,""),typeof t.agent=="string"&&`\u2192 ${t.agent}`,t.truncated&&"truncated"].filter(Boolean).join(" \xB7 "),o=Object.fromEntries(Object.entries(t).filter(([a])=>a!==r));return{field:r,meta:n,body:t[r],rest:o}},Hve=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||Sv(e.content)),KK=280,Kve=["tool","system","developer"],kv=(e,t=KK)=>e.replace(/\s+/g," ").trim().slice(0,t),Q5=e=>{if(e==null)return null;if(typeof e=="object")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return String(e)}},qK=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:Q5(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:Q5(t)}]:[]},VK=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),qve=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||VK(o.content))return;let i=qK(o);if(i.length===0)return;let s=new Set;Array.isArray(o.tool_calls)?o.tool_calls.forEach(u=>u.id&&s.add(u.id)):o.tool_call_id&&s.add(o.tool_call_id);let l=[];for(let u=a+1;u0&&c.tool_call_id&&!s.has(c.tool_call_id))break;l.push(u)}l.length!==0&&(l.forEach((u,c)=>{let d=t[u],f=i.find(p=>p.name&&p.name===d.tool_name)||i[Math.min(c,i.length-1)];f&&f.args&&!d.tool_arguments&&r.set(u,{tool_arguments:f.args,created_at:o.created_at||d.created_at})}),n.add(a))}),t.map((o,a)=>r.has(a)?{...o,...r.get(a)}:o).filter((o,a)=>!n.has(a))},WK=e=>Kve.includes(e.role)&&typeof e.content=="string"&&kv(e.content).length>=KK,Vve=({message:e,darkMode:t})=>{let r=e.trace_duration_ms||0;if(!r||e.span_duration_ms==null)return null;let n=Math.min((e.span_start_ms||0)/r*100,98),o=Math.max(e.span_duration_ms/r*100,2),a=e.role==="tool"?"#22c55e":e.role==="assistant"?"#ef4444":"#60a5fa";return Me.default.createElement("span",{title:`${Math.round(e.span_duration_ms)}ms \xB7 starts at ${Math.round(e.span_start_ms||0)}ms of ${Math.round(r)}ms`,style:{position:"relative",width:"96px",height:"5px",borderRadius:"999px",background:t?"rgba(255,255,255,0.08)":"#f3f4f6",flexShrink:0,marginTop:"8px",display:"inline-block"}},Me.default.createElement("span",{style:{position:"absolute",top:0,bottom:0,left:`${n}%`,width:`${Math.min(o,100-n)}%`,borderRadius:"999px",background:a}}))},n2=e=>({background:e?"rgba(0,0,0,0.35)":"#f3f4f6",color:e?"#ffffff":"#111827",borderRadius:"6px",padding:"8px 10px",fontSize:"12px",overflowX:"auto",margin:0}),mn=(e,t)=>{switch(e){case"user":return t?{background:"rgba(59,130,246,0.15)",color:"#93c5fd",label:"User"}:{background:"#eff6ff",color:"#1d4ed8",label:"User"};case"assistant":return t?{background:"rgba(239,68,68,0.12)",color:"#fca5a5",label:"Assistant"}:{background:"#fef2f2",color:"#b91c1c",label:"Assistant"};case"tool":return t?{background:"rgba(245,158,11,0.12)",color:"#fcd34d",label:"Tool"}:{background:"#fffbeb",color:"#b45309",label:"Tool"};case"system":return t?{background:"rgba(139,92,246,0.15)",color:"#c4b5fd",label:"System"}:{background:"#f5f3ff",color:"#6d28d9",label:"System"};case"developer":return t?{background:"rgba(20,184,166,0.15)",color:"#5eead4",label:"Dev"}:{background:"#f0fdfa",color:"#0f766e",label:"Dev"};default:return t?{background:"rgba(255,255,255,0.08)",color:"rgba(255,255,255,0.7)",label:e}:{background:"#f3f4f6",color:"#374151",label:e}}},HK={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function o2({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=fi(t);return Me.default.createElement("div",{className:"flex flex-wrap gap-2 mt-1.5"},a.map((s,l)=>{let u=String(s.content_type||""),c=(s.kind==="image"||u.startsWith("image/"))&&BK(s.url),d=zK(s.byte_size);return Me.default.createElement("span",{key:s.id??`${s.filename}-${l}`,"data-testid":r,title:[s.filename,u,d].filter(Boolean).join(" \xB7 "),className:"inline-flex items-center gap-2 rounded-lg px-2 py-1 text-xs",style:{background:i.mutedBg,border:`1px solid ${i.cardBorder}`,color:i.textCell,maxWidth:"260px"}},c?Me.default.createElement("img",{src:s.url,alt:s.filename||"",style:{width:"36px",height:"36px",objectFit:"cover",borderRadius:"4px",flexShrink:0}}):Me.default.createElement("span",{className:"font-mono",style:{color:i.textMuted,flexShrink:0}},HK[s.kind]||HK.file),Me.default.createElement("span",{className:"min-w-0"},Me.default.createElement("span",{className:"block truncate"},s.filename||"attachment"),d&&Me.default.createElement("span",{className:"block font-mono",style:{color:i.textMuted}},d)),n&&Me.default.createElement("button",{type:"button","data-testid":o,onClick:f=>{f.stopPropagation(),n(s,l)},title:"Remove","aria-label":`Remove ${s.filename||"attachment"}`,className:"font-mono",style:{color:i.textMuted,background:"none",border:"none",cursor:"pointer",padding:"0 2px"}},"\u2715"))}))}var GK=e=>{let t=new Set;return Array.isArray(e.tool_calls)?e.tool_calls.forEach(r=>r&&r.id!=null&&t.add(r.id)):e.tool_call_id&&t.add(e.tool_call_id),t},Gve=(e,t)=>{let r=Um(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?GK(o).has(e.tool_call_id):Um(o)));return n?Um(n,{callId:e.tool_call_id}):null},Yve=(e,t)=>{let r=GK(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===Ud&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function Di({messages:e,darkMode:t,tools:r,onUiAction:n,onEditMessage:o,onDeleteMessage:a,testIdPrefix:i}){let[s,l]=(0,Me.useState)({}),[u,c]=(0,Me.useState)(null),[d,f]=(0,Me.useState)(""),[p,m]=(0,Me.useState)(!1),[y,x]=(0,Me.useState)(null),h=k=>l(A=>({...A,[k]:!A[k]})),g={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},v=k=>i?`${i}-${k}`:void 0,b=k=>k.stopPropagation(),_=k=>{c(k.id),f(k.content||""),x(null)},w=()=>{c(null),x(null)},C=async k=>{if(!p){m(!0),x(null);try{await o(k,d),c(null)}catch(A){x(A.message||"Could not save the message")}finally{m(!1)}}},S=qve(e);return Me.default.createElement("div",{className:"space-y-3"},S.map(k=>{let A=mn(k.role,t),O=!!s[k.id],$=u===k.id,F=!!((o||a)&&["user","assistant"].includes(k.role)),P=k.role==="tool"&&k.tool_name===Ud?Gve(k,S):null,z=k.role==="assistant"&&!$?K5(k.content):null,N=k.role==="assistant"&&!Yve(k,S)?Um(k):null,D=WK(k)&&!O,T=Hve(k)||WK(k),E=Sv(k.tool_arguments),I=Sv(k.tool_result)||Sv(k.content),j=k.tool_calls&&(!Array.isArray(k.tool_calls)||k.tool_calls.length>0)?Sv(k.tool_calls):null,q=k.role==="tool"?Wve(k):null,te=k.tool_name?(r||[]).find(Z=>Z&&Z.name===k.tool_name):null,K=k.role==="tool"?Q5(k.tool_arguments):null,le=k.role==="tool"&&!!K,pe=mn("assistant",t),re=mn("tool",t),_e=k.role==="tool"&&!k.tool_arguments&&S.some(Z=>Z&&Z.role==="assistant"&&(k.tool_call_id&&Z.tool_call_id===k.tool_call_id||Array.isArray(Z.tool_calls)&&Z.tool_calls.some(R=>R.id&&R.id===k.tool_call_id))),ue=k.role==="assistant"&&!VK(k.content)?qK(k):[],se=n2(t);return Me.default.createElement("div",{key:k.id,className:"group","data-testid":i,"data-message-id":i?k.id:void 0,"data-role":i?k.role:void 0},Me.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${T?"cursor-pointer":""}`,onClick:T?()=>h(k.id):void 0,style:O?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},Me.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},(le?[pe,re]:[A]).map(Z=>Me.default.createElement("span",{key:Z.label,className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Z.background,color:Z.color,textAlign:"center"}},Z.label))),Me.default.createElement("div",{className:"min-w-0 flex-1"},Me.default.createElement("div",{className:"text-sm break-words",style:{color:g.textPrimary}},$?Me.default.createElement("div",{className:"space-y-2",onClick:b},Me.default.createElement("textarea",{"data-testid":v("editor"),value:d,onChange:Z=>f(Z.target.value),onKeyDown:Z=>{Z.key==="Escape"&&w(),Z.key==="Enter"&&(Z.metaKey||Z.ctrlKey)&&C(k)},rows:Math.min(12,Math.max(3,d.split(` -`).length)),autoFocus:!0,className:"aa-field w-full",style:{padding:"8px 10px",borderRadius:"8px",border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,background:t?"rgba(255,255,255,0.06)":"#ffffff",color:g.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"}}),Me.default.createElement("div",{className:"flex items-center gap-2 text-xs"},Me.default.createElement("button",{type:"button","data-testid":v("save"),onClick:()=>C(k),disabled:p,style:{padding:"4px 10px",borderRadius:"6px",background:"#ef4444",color:"#ffffff",border:"none",cursor:p?"wait":"pointer",fontWeight:500}},p?"Saving\u2026":"Save"),Me.default.createElement("button",{type:"button","data-testid":v("cancel"),onClick:w,disabled:p,style:{padding:"4px 10px",borderRadius:"6px",background:"transparent",color:g.textSecondary,border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,cursor:"pointer"}},"Cancel"),y&&Me.default.createElement("span",{style:{color:"#dc2626"}},y))):P?Me.default.createElement("div",null,Me.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:re.color}},"\u2699 ",k.tool_name," \xB7 ",P.length," block",P.length===1?"":"s"),Me.default.createElement(Is,{blocks:P,onAction:n,darkMode:t})):k.role==="tool"?Me.default.createElement("span",{style:{display:"grid",gap:"2px"}},K&&!_e&&Me.default.createElement("span",{className:"font-mono text-xs break-words"},k.tool_name&&Me.default.createElement("span",{style:{color:re.color}},"\u2699 ",k.tool_name," "),Me.default.createElement("span",{style:{color:le?pe.color:g.textMuted}},"in:")," ",kv(K,180),K.length>180?"\u2026":""),q?Me.default.createElement("span",null,k.tool_name&&!(K&&!_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:re.color}},"\u2699 ",k.tool_name),(K||_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:le?re.color:g.textMuted}},"out:"),q.meta&&Me.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:g.textMuted}},q.meta),"\u201C",q.body.replace(/\s+/g," ").trim().slice(0,180),q.body.length>180?"\u2026":"","\u201D"):k.content?Me.default.createElement("span",null,k.tool_name&&!(K&&!_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:re.color}},"\u2699 ",k.tool_name),(K||_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:le?re.color:g.textMuted}},"out:"),"\u201C",kv(k.content,180),k.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):Me.default.createElement("span",{className:"whitespace-pre-wrap"},k.tool_name?`\u2192 ${k.tool_name}(...)`:"\u2014")):D?Me.default.createElement("span",{style:{color:g.textSecondary}},kv(k.content),"\u2026"):ue.length>0?Me.default.createElement("span",{style:{display:"grid",gap:"2px"}},ue.map((Z,R)=>Me.default.createElement("span",{key:R,className:"font-mono text-xs break-words"},Z.name&&Me.default.createElement("span",{style:{color:g.textMuted}},Z.name," "),Me.default.createElement("span",{style:{color:g.textMuted}},"in:")," ",Z.args?Me.default.createElement(Me.default.Fragment,null,kv(Z.args,180),Z.args.length>180?"\u2026":""):"\u2014"))):z&&z.blocks?Me.default.createElement(Is,{blocks:z.blocks,onAction:n,darkMode:t}):z&&z.object?Me.default.createElement(Is,{blocks:[{type:"object",value:z.object}],darkMode:t}):Me.default.createElement(rs,{text:k.content||"\u2014",darkMode:t,onUiAction:n}),N&&!$&&Me.default.createElement("div",{className:"mt-2"},Me.default.createElement(Is,{blocks:N,onAction:n,darkMode:t})),k.role==="user"&&Me.default.createElement(o2,{attachments:k.attachments,darkMode:t,testId:v("attachment")})),Me.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:g.textMuted}},F&&!$&&Me.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:b},o&&Me.default.createElement("button",{type:"button","data-testid":v("edit"),onClick:()=>_(k),className:"hover:underline",style:{color:g.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&Me.default.createElement("button",{type:"button","data-testid":v("delete"),onClick:()=>a(k),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),k.created_at&&Me.default.createElement("span",null,new Date(k.created_at).toLocaleTimeString()),k.tool_name&&k.role!=="tool"&&Me.default.createElement("span",{className:"px-1.5 py-0.5 rounded",style:{background:A.background,color:A.color}},"\u2699 ",k.tool_name),k.duration_ms!=null&&Me.default.createElement("span",null,FK(k.duration_ms)),(k.tool_calls||[]).length>0&&Me.default.createElement("span",null,k.tool_calls.length," tool call",k.tool_calls.length>1?"s":""),k.content_checksum&&Me.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",k.content_checksum.slice(0,8)))),Me.default.createElement(Vve,{message:k,darkMode:t}),T&&Me.default.createElement("svg",{className:`w-3.5 h-3.5 mt-1 flex-shrink-0 transition-transform ${O?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:g.textMuted}},Me.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),O&&Me.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:A.color+"55"}},Me.default.createElement("div",{className:"flex flex-wrap gap-x-5 gap-y-1 text-xs font-mono",style:{color:g.textSecondary}},k.created_at&&Me.default.createElement("span",null,new Date(k.created_at).toLocaleString()),k.tool_call_id&&Me.default.createElement("span",null,"call: ",k.tool_call_id),k.duration_ms!=null&&Me.default.createElement("span",null,"took ",FK(k.duration_ms)),k.content_checksum&&Me.default.createElement("span",null,"\u{1F512} ",k.content_checksum)),E&&Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:le?pe.color:g.textMuted}},"Arguments",le?" \xB7 from the agent":""),Me.default.createElement("pre",{style:se},E)),q?Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:le?re.color:g.textMuted}},"Result",le?" \xB7 from the tool":""),Object.keys(q.rest).length>0&&Me.default.createElement("pre",{style:se},JSON.stringify(q.rest,null,2)),Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:g.textMuted}},q.field," \xB7 ",q.body.length.toLocaleString()," chars"),Me.default.createElement("pre",{style:{...se,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},q.body.slice(0,8e3),q.body.length>8e3?` -\u2026`:"")):I?Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},k.role==="tool"?"Result":"Content (parsed)"),Me.default.createElement("pre",{style:se},I)):k.role==="tool"&&k.content?Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:le?re.color:g.textMuted}},"Result",le?" \xB7 from the tool":""," \xB7 ",k.content.length.toLocaleString()," chars"),Me.default.createElement("pre",{style:{...se,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},k.content.slice(0,8e3),k.content.length>8e3?` -\u2026`:"")):null,j&&Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Requested tool calls"),Me.default.createElement("pre",{style:se},j)),te&&Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Tool definition"),Me.default.createElement(Z5,{tool:te,darkMode:t}))))}))}var Wt=G(Y());var Fr=G(Y());var An=e=>({cardBg:e?"#1f1f1f":"#ffffff",cardBorder:e?"#2a2a2a":"#e5e7eb",innerBg:e?"rgba(255,255,255,0.04)":"#f9fafb",panelBg:e?"rgba(0,0,0,0.35)":"#f9fafb",preBg:e?"rgba(255,255,255,0.06)":"#eef0f3",trackBg:e?"rgba(255,255,255,0.08)":"#f3f4f6",hoverBg:e?"rgba(255,255,255,0.04)":"#f9fafb",controlBg:e?"rgba(255,255,255,0.06)":"#f3f4f6",controlActiveBg:e?"#2a2a2a":"#ffffff",textPrimary:e?"#ffffff":"#111827",textSecondary:e?"rgba(255,255,255,0.6)":"#6b7280",textMuted:e?"rgba(255,255,255,0.4)":"#9ca3af",textBody:e?"rgba(255,255,255,0.75)":"#4b5563",link:"#3b82f6",good:e?"#4ade80":"#16a34a",bad:"#ef4444"}),YK=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function Hd({open:e,darkMode:t,size:r=14,style:n}){return Fr.default.createElement("svg",{className:`flex-shrink-0 transition-transform ${e?"rotate-180":""}`,width:r,height:r,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:An(t).textMuted,...n},"aria-hidden":"true"},Fr.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function a2({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=An(e);return Fr.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var Qa={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function Km({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=An(t),i=(e||[]).filter(Boolean);return i.length===0?null:Fr.default.createElement("div",{className:`flex-shrink-0 text-sm ${n}`,style:{display:"grid",gridTemplateColumns:i.map(s=>s.width?`${s.width}px`:"minmax(0, auto)").join(" "),alignItems:"center",columnGap:`${r}px`,color:a.textSecondary,...o}},i.map(s=>{let l=s.content!=null&&s.content!==!1&&s.content!=="";return Fr.default.createElement("div",{key:s.key,title:(l?s.title:s.empty)||void 0,className:"min-w-0 truncate",style:{textAlign:s.align||"right"}},l?s.content:Fr.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}var XK=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:An(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),Xve=e=>{if(e==null)return{text:"",json:!1};if(typeof e=="object")return{text:JSON.stringify(e,null,2),json:!0};let t=String(e);if(!/^[[{]/.test(t.trim()))return{text:t,json:!1};try{return{text:JSON.stringify(JSON.parse(t),null,2),json:!0}}catch{return{text:t,json:!1}}};function qm({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=Vm(),c=An(t),d=(e||[]).filter(f=>f&&(f.text||s));return d.some(f=>f.text)?Fr.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:ht.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((f,p)=>{let m=`${f.label}-${p}`,y=l(m),x=f.max||i,h=!f.text,g=String(f.text??"").replace(/\s+/g," ").trim(),v=Xve(f.text),b=!h&&(v.json||g.length>60||g!==String(f.text).trim());return Fr.default.createElement("div",{key:m},Fr.default.createElement("div",{onClick:b?_=>{_.stopPropagation(),u(m)}:void 0,title:b?y?"Collapse":"Expand":void 0,style:{cursor:b?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},Fr.default.createElement("span",{style:{color:f.color||c.textMuted}},b?y?"\u25BE":"\u25B8":"\xA0"," ",f.label,":")," ",!y&&(h?Fr.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):YK(g,x))),y&&Fr.default.createElement("pre",{onClick:_=>_.stopPropagation(),style:XK(t,{wrap:!v.json})},v.text))})):null}function _v({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=An(n);return Fr.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&Fr.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>Fr.default.createElement("button",{key:s.id,type:"button",onClick:l=>{l.stopPropagation(),r(s.id)},title:s.hint,className:"px-2 py-0.5 text-xs rounded transition-colors",style:t===s.id?{background:i.controlActiveBg,color:i.textPrimary,boxShadow:n?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:i.textSecondary}},s.label)))}function ZK({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=An(o);return Fr.default.createElement("div",null,Fr.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Fr.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&Fr.default.createElement("span",{style:{color:s.textMuted}},YK(t,i))),r&&Fr.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:XK(o,{wrap:a})},t))}function Vm(e={}){let[t,r]=(0,Fr.useState)(e),n=(0,Fr.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,Fr.useCallback)(a=>!!t[a],[t]),n,r]}var R5={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},QK=[{id:"time",label:"Time",hint:"Chronological \u2014 reads as a waterfall"},{id:"duration",label:"Slowest",hint:"Longest-running first"},{id:"name",label:"Name",hint:"Group repeated tool calls together"}],Cn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,eP=e=>{switch(e){case"root":return co.spans.root;case"prompt":return co.spans.prompt;case"generate":return co.spans.generate;case"llm":return co.spans.llm;case"thinking":return co.spans.thinking;case"tool":return co.spans.tool;case"response":return co.spans.response;default:return"-"}},Zve=(e,t)=>{let r=Math.max(e||0,1),n=Math.max(t||1,1);if(n<=1)return 100;let o=Math.log(r)/Math.log(n);return Math.min(100,Math.max(4,o*100))},Jve=(e,t)=>{let r=[...e||[]];switch(t){case"duration":return r.sort((n,o)=>(o.duration||0)-(n.duration||0));case"name":return r.sort((n,o)=>(n.name||"").localeCompare(o.name||""));default:return r.sort((n,o)=>(n.start||0)-(o.start||0))}},Qve=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},Rve=(e,t)=>{if(!t.duration_ms)return Cn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Cn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},e0e=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},JK=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,tP=e=>{let t=e.spans||[],r=a=>{for(let i of t){let s=(i.attributes||{})[a];if(s)return s}return null},n=r("llm.prompt");if(!n){let a=r("prompt.input.messages");if(a)try{n=[...JSON.parse(a)].reverse().find(l=>l&&l.role==="user"&&l.content)?.content}catch{}}let o=r("llm.completion")||r("llm.output.message");return{input:n,output:o}},t0e=e=>{let t=e.attributes||{},r=null,n="input",o="user";if(t["prompt.input.messages"])try{let u=[...JSON.parse(t["prompt.input.messages"])].reverse().find(c=>c&&c.role==="user"&&c.content);typeof u?.content=="string"&&(r=u.content)}catch{}if(!r&&t["llm.prompt"]&&(r=String(t["llm.prompt"])),!r&&(t["tool.input.args"]||t["tool.arguments"])){let l=t["tool.input.args"]||t["tool.arguments"];r=typeof l=="string"?l:JSON.stringify(l),n="in",o="assistant"}let a=null,i="output",s="assistant";return t["llm.output.message"]||t["llm.completion"]?a=t["llm.output.message"]||t["llm.completion"]:(t["tool.output.result"]||t["tool.result"])&&(a=t["tool.output.result"]||t["tool.result"],i="out",s="tool"),a!=null&&typeof a!="string"&&(a=JSON.stringify(a)),{input:r,output:a,inputLabel:n,inputTone:o,outputLabel:i,outputTone:s}},r0e=(e,t)=>{let r=t0e(e),n=tP(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},n0e=e=>{let t={...e.attributes||{}},r=f=>{let p=t[f];return delete t[f],p},n=[],o=f=>n.push({id:`${e.span_id}-m${n.length}`,...f}),a=r("prompt.input.instructions")||r("llm.instructions");a&&o({role:"system",content:String(a)});let i=r("prompt.input.messages");if(i)try{JSON.parse(i).forEach(f=>{f&&o({role:f.role||"user",content:typeof f.content=="string"?f.content:JSON.stringify(f.content),tool_call_id:f.tool_call_id,tool_calls:f.tool_calls})})}catch{t["prompt.input.messages"]=i}let s=r("llm.prompt");s&&o({role:"user",content:String(s)});let l=r("tool.input.args")||r("tool.arguments"),u=r("tool.output.result")||r("tool.result");if(l||u){let f=r("tool.name");o({role:"tool",tool_name:f||(e.name||"").replace(/^tool\./,""),tool_arguments:l,content:u?String(u):null})}let c=r("llm.completion"),d=r("llm.output.message");return(c||d)&&o({role:"assistant",content:String(c||d)}),{messages:n,rest:t}},rP=e=>{for(let t of e?.spans||[]){let r=(t.attributes||{})["prompt.input.tools"];if(r)try{let n=typeof r=="string"?JSON.parse(r):r;if(Array.isArray(n)&&n.length>0)return n}catch{}}return[]};function o0e({span:e,darkMode:t,tools:r=[]}){let[n,o]=Vm(),a=An(t),{messages:i,rest:s}=n0e(e),l=null,u=s["prompt.input.tools"];if(u)try{let p=typeof u=="string"?JSON.parse(u):u;Array.isArray(p)&&p.length>0&&(l=p,delete s["prompt.input.tools"])}catch{}let c=Object.entries(s).sort((p,m)=>JK(p[0])-JK(m[0])),d=i.length===1&&i[0].role==="tool"?i[0]:null,f=d?.tool_arguments==null?null:typeof d.tool_arguments=="string"?d.tool_arguments:JSON.stringify(d.tool_arguments);return Wt.default.createElement("div",{onClick:p=>p.stopPropagation(),style:{margin:"4px 0 8px 0",padding:"10px 12px",borderRadius:"8px",background:a.panelBg,border:`1px solid ${a.cardBorder}`,fontFamily:ht.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},Wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},Wt.default.createElement("span",null,"duration: ",Cn(e.duration)),Wt.default.createElement("span",null,"status: ",e.status||"OK"),Qve(e)>0&&Wt.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),Wt.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&Wt.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},Wt.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},Wt.default.createElement("span",{style:{color:mn("tool",t).color}},"\u2699 ",d.tool_name),f&&Wt.default.createElement(Wt.default.Fragment,null," ",Wt.default.createElement("span",{style:{color:mn("assistant",t).color}},"in:")," ",Wt.default.createElement("span",{style:{color:a.textBody}},f))),d.content&&Wt.default.createElement("div",{style:{fontSize:"12px"}},Wt.default.createElement("span",{style:{color:mn("tool",t).color}},"out:")," ",Wt.default.createElement("span",{style:{color:a.textBody,whiteSpace:"pre-wrap",display:"inline-block",maxHeight:"240px",overflowY:"auto",verticalAlign:"top",maxWidth:"100%"}},d.content))),i.length>0&&!d&&Wt.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},Wt.default.createElement(Di,{messages:i,darkMode:t,tools:l||r})),l&&Wt.default.createElement(J5,{tools:l,darkMode:t}),c.length>0&&Wt.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([p,m])=>{let y=p.match(/args|result|input|output/)?e0e(m):null,x=!y&&(p.endsWith(".instructions")||p.match(/input|output|result/))&&typeof m=="string"?m:null,h=y||x;if(!h)return Wt.default.createElement("div",{key:p,style:{wordBreak:"break-all"}},Wt.default.createElement("span",{style:{color:a.textMuted}},p,":")," ",typeof m=="string"?m:JSON.stringify(m));let g=`${e.span_id}:${p}`;return Wt.default.createElement(ZK,{key:p,label:p,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function a0e({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=An(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:r0e(e,t);return Wt.default.createElement(Wt.default.Fragment,null,Wt.default.createElement("div",{className:`py-0.5 px-1 -mx-1 rounded transition-colors ${u?`cursor-pointer ${r?"hover:bg-white/5":"hover:bg-gray-100"}`:""}`,style:{paddingLeft:n==="time"?`${(e.nested||0)*16}px`:0,background:a?l.hoverBg:void 0},onClick:u?()=>i():void 0,title:u?`${e.name} \u2014 click for span details`:e.name},Wt.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},Wt.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},eP(e.type)),Wt.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),Wt.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:ht.mono,color:l.textMuted}},Rve(e,t)),u&&Wt.default.createElement(Hd,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),Wt.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},Wt.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":R5[e.type]||"#9ca3af",left:n==="time"?`${t.duration_ms?e.start/t.duration_ms*100:0}%`:0,width:n==="time"?`${t.duration_ms?Math.max(e.duration/t.duration_ms*100,1):1}%`:`${Zve(e.duration,o)}%`}})),c&&Wt.default.createElement(qm,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:mn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:mn(c.outputTone,r).color,max:160}]})),a&&Wt.default.createElement(o0e,{span:e,darkMode:r,tools:s}))}function nP({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=Vm(),s=An(t),l=Jve(e?.spans,r),u=n||rP(e);if(l.length===0)return Wt.default.createElement("div",{className:"text-sm py-2",style:{color:s.textMuted}},"No spans recorded for this trace.");let c=Math.max(...l.map(d=>d.duration||0),1);return Wt.default.createElement("div",{className:"space-y-2"},l.map((d,f)=>{let p=`${o}${d.span_id||f}`;return Wt.default.createElement(a0e,{key:p,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(p),onToggle:()=>i(p)})}))}var i0e=[{id:"spans",label:"Spans",hint:"Timing waterfall with span details"},{id:"conversation",label:"Conversation",hint:"The run as a message stream \u2014 prompt, tool calls, response"}],s0e=e=>{let t=0,r=[];(e?.spans||[]).forEach(a=>{(a.nested||0)!==0&&(a.type==="tool"?r.push(a):(a.type==="llm"||a.type==="generate")&&(t=Math.max(t,a.duration||0)))});let n=r.reduce((a,i)=>a+(i.duration||0),0);t=Math.max(t-n,0);let o=e?.duration_ms||t+n||1;return{generation:t,tools:r,toolTotal:n,total:o,overhead:Math.max(o-t-n,0)}};function l0e({trace:e,darkMode:t}){let r=An(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=s0e(e);if(n===0&&a===0||n/i>=.99&&a/i<.01)return null;let l=c=>`${(c/i*100).toFixed(c/i<.01?2:1)}%`,u=(c,d)=>ut.default.createElement("div",{style:{width:`${Math.max(c/i*100,.4)}%`,background:d,height:"100%"}});return ut.default.createElement("div",{style:{marginTop:"14px",paddingTop:"12px",borderTop:`1px solid ${r.cardBorder}`}},ut.default.createElement("div",{style:{fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em",color:r.textSecondary,marginBottom:"6px"}},"Time breakdown \u2014 generation vs tools"),ut.default.createElement("div",{style:{display:"flex",height:"10px",borderRadius:"5px",overflow:"hidden",background:r.trackBg}},u(n,"#ef4444"),u(a,"#10b981"),s>0&&u(s,t?"rgba(255,255,255,0.2)":"#d1d5db")),ut.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"8px",fontSize:"12px",fontFamily:ht.mono,color:r.textBody}},ut.default.createElement("span",null,ut.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",Cn(n)," (",l(n),")"),ut.default.createElement("span",null,ut.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Cn(a)," (",l(a),")"),s>0&&ut.default.createElement("span",null,ut.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Cn(s)," (",l(s),")")),o.length>0&&ut.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:ht.mono,color:r.textSecondary}},o.map((c,d)=>ut.default.createElement("span",{key:d},c.name," ",Cn(c.duration)," (",l(c.duration||0),")"))))}function u0e({trace:e,darkMode:t}){let[r,n]=(0,ut.useState)(null),[o,a]=(0,ut.useState)(!1),i=An(t);if((0,ut.useEffect)(()=>{if(e?.id==null)return;let l=!0;return n(null),a(!1),fetch(`/api/interactions/trace-${e.id}`).then(u=>u.ok?u.json():Promise.reject(new Error("request failed"))).then(u=>l&&n(u.interaction)).catch(()=>l&&a(!0)),()=>{l=!1}},[e?.id]),o)return ut.default.createElement("div",{className:"text-sm py-4",style:{color:i.bad}},"Couldn't load the conversation for this trace.");if(!r)return ut.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"Loading conversation\u2026");let s=r.instructions?[{id:`trace-${e.id}-system`,role:"system",content:r.instructions,created_at:r.created_at},...r.messages||[]]:r.messages||[];return s.length===0?ut.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"This trace predates content capture \u2014 no conversation to show."):ut.default.createElement(Di,{messages:s,darkMode:t,tools:rP(e)})}function Av({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,ut.useState)("spans"),[i,s]=(0,ut.useState)("time"),l=An(t),u=(e?.spans||[]).length,c=Rk(e),d=e?.tokens||{},f=(0,ut.useCallback)(p=>a(n?p:"spans"),[n]);return e?ut.default.createElement("div",null,ut.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2 mb-2"},ut.default.createElement("div",{className:"flex items-center gap-1"},n&&ut.default.createElement(_v,{options:i0e,value:o,onChange:f,darkMode:t}),ut.default.createElement("span",{className:"text-xs ml-2",style:{color:l.textSecondary}},u," ",u===1?"span":"spans")),o==="spans"&&u>0&&ut.default.createElement(_v,{options:QK,value:i,onChange:s,darkMode:t,label:"Sort"})),o==="conversation"?ut.default.createElement("div",{className:"rounded-lg border p-4",style:{background:l.cardBg,borderColor:l.cardBorder}},ut.default.createElement(u0e,{trace:e,darkMode:t})):ut.default.createElement(ut.default.Fragment,null,i==="time"?ut.default.createElement("div",{className:"flex justify-between text-xs mb-2",style:{color:l.textMuted}},ut.default.createElement("span",null,"0ms"),ut.default.createElement("span",null,Math.round((e.duration_ms||0)*.33),"ms"),ut.default.createElement("span",null,Math.round((e.duration_ms||0)*.66),"ms"),ut.default.createElement("span",null,Cn(e.duration_ms))):ut.default.createElement("div",{className:"text-xs mb-2",style:{color:l.textMuted}},"Bar length compares duration on a log scale"),ut.default.createElement(nP,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&ut.default.createElement("div",{className:"mt-3"},ut.default.createElement(ic,{...c,label:"Context pressure",darkMode:t})),ut.default.createElement(l0e,{trace:e,darkMode:t}),!r&&ut.default.createElement("div",{className:"mt-4 pt-4 border-t flex items-center flex-wrap gap-x-6 gap-y-1 text-sm",style:{borderColor:l.cardBorder,color:l.textSecondary}},ut.default.createElement("span",null,"Tokens:"),d.thinking>0&&ut.default.createElement("span",{className:"text-amber-500",style:{fontFamily:ht.mono}},"T:",d.thinking.toLocaleString()),ut.default.createElement("span",{className:"text-blue-500",style:{fontFamily:ht.mono}},"in:",(d.input||0).toLocaleString()),ut.default.createElement("span",{className:"text-green-500",style:{fontFamily:ht.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&ut.default.createElement("span",{style:{fontFamily:ht.mono}},e.provider,e.model?` \xB7 ${e.model}`:"")),e.error&&ut.default.createElement("div",{className:"mt-4 p-3 rounded-lg border",style:{background:t?"rgba(239,68,68,0.1)":"#fef2f2",borderColor:t?"rgba(239,68,68,0.3)":"#fecaca"}},ut.default.createElement("span",{className:"text-sm",style:{color:t?"#fca5a5":"#b91c1c"}},e.error))):null}var c0e=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},d0e=e=>e==null?null:`$${e.toFixed(4)}`;function i2({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=An(t),a=tP(e),i=Rk(e),s=e.status!=="ERROR",l=c0e(e.tokens);return gn.default.createElement(a2,{darkMode:t,id:`trace-row-${e.id}`},gn.default.createElement("div",{className:`p-4 flex items-center justify-between flex-wrap gap-y-2 cursor-pointer transition-colors ${t?"hover:bg-white/5":"hover:bg-gray-50"}`,onClick:n,style:r?{background:o.hoverBg}:void 0},gn.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},gn.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:ht.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),gn.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:ht.mono,color:o.textMuted}},e.short_id),gn.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),gn.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},gn.default.createElement(Km,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&gn.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:ht.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:Qa.context,empty:"Context: no generation in this trace reported its token counts",content:i&&gn.default.createElement(ic,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:Qa.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&gn.default.createElement(gn.default.Fragment,null,gn.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Cn(e.duration_ms))},{key:"tokens",width:Qa.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:Qa.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&gn.default.createElement(gn.default.Fragment,null,gn.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),d0e(e.estimated_cost))},{key:"status",width:Qa.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:gn.default.createElement("span",{style:{color:s?o.good:o.bad}},gn.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),gn.default.createElement(Hd,{open:r,darkMode:t}))),!r&&gn.default.createElement(qm,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:mn("user",t).color},{label:"output",text:a.output,color:mn("assistant",t).color}]}),r&&gn.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},gn.default.createElement(Av,{trace:e,darkMode:t})))}function RK(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function eq(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function ct(e=""){return RK(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function Gm(e="",t={}){window.history.pushState(t,"",ct(e))}function Eo(e=window.location.pathname){return eq(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function It(e,t={}){if(!e)return;let r=Eo(e);Gm(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:ct(r)}}))}var tq=({minutes:e,agentId:t=null})=>{let r=new URLSearchParams({minutes:String(e)});return t!=null&&t!==""&&r.set("agent_id",String(t)),`/api/traces?${r.toString()}`};var rq=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],f0e=3e4,p0e=e=>{let t={};return e.forEach((r,n)=>{t[r]=rq[n%rq.length]}),t},m0e=e=>{let t={};return e.forEach(r=>{(r.spans||[]).forEach(n=>{if((n.nested||0)===0)return;let o=n.name||n.type||"unknown";t[o]||(t[o]={name:o,type:n.type,count:0,total:0,max:0,errors:0});let a=t[o];a.count+=1,a.total+=n.duration||0,a.max=Math.max(a.max,n.duration||0),n.error&&(a.errors+=1)})}),Object.values(t).map(r=>({...r,avg:r.total/r.count})).sort((r,n)=>n.total-r.total)},g0e=(e,t,r,n=60)=>{let o=Date.now(),a=[],i=n*1e3,s=Math.max(1,Math.round(r*60/n));for(let l=s-1;l>=0;l--){let u=o-(l+1)*i,c=o-l*i,d=e.filter(p=>p.timestamp_ms>=u&&p.timestamp_ms{f[p]=d.filter(m=>m.agent===p).length}),a.push({time:r>1440?new Date(c).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(c).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),timestamp:c,requests:d.length,errors:d.filter(p=>p.status==="ERROR").length,avgLatency:d.length>0?Math.round(d.reduce((p,m)=>p+(m.duration_ms||0),0)/d.length):0,traces:d,...f})}return a};function Kd({agentId:e=null,embedded:t=!1}){let{darkMode:r}=st(),[n,o]=(0,W.useState)([]),[a,i]=(0,W.useState)([]),[s,l]=(0,W.useState)({}),[u,c]=(0,W.useState)(!0),[d,f]=(0,W.useState)(null),[p,m]=(0,W.useState)(null),y=(0,W.useRef)(new URLSearchParams(window.location.search).get("trace")),[x,h]=(0,W.useState)(null),[g,v]=(0,W.useState)({status:"all",agent:"all",action:"all"}),[b,_]=(0,W.useState)("time"),[w,C]=(0,W.useState)(null),[S,k]=(0,W.useState)("timeline"),[A,O]=(0,W.useState)("popular"),{timeWindow:$}=Ms(),F=(0,W.useCallback)(async()=>{try{let L=await fetch(tq({minutes:$.minutes,agentId:e}));if(!L.ok)throw new Error(`Request failed (${L.status})`);let B=await L.json();o(B.traces||[]),i(B.agents||[]),l(B.agent_ids||{}),f(null)}catch(L){f(L.message)}finally{c(!1)}},[$.minutes,e]);(0,W.useEffect)(()=>{F();let L=setInterval(F,f0e);return()=>clearInterval(L)},[F]);let P=(0,W.useMemo)(()=>p0e(a),[a]);(0,W.useEffect)(()=>{C(null)},[$.id]);let z=(0,W.useMemo)(()=>g0e(n,a,$.minutes,$.bucketSeconds),[n,a,$]),N=Math.max(0,Math.ceil(z.length/6)-1),D=(0,W.useMemo)(()=>{let L=n;if(w!==null){let B=z[w];B&&(L=B.traces||[])}if(g.status!=="all"&&(L=L.filter(B=>g.status==="success"?B.status!=="ERROR":B.status==="ERROR")),g.agent!=="all"&&(L=L.filter(B=>B.agent===g.agent)),g.action!=="all")if(g.action.includes("#")){let[B,H]=g.action.split("#");L=L.filter(M=>M.agent===B&&M.action===H)}else L=L.filter(B=>B.action===g.action);return b==="latency"&&(L=[...L].sort((B,H)=>(H.duration_ms||0)-(B.duration_ms||0))),x&&!L.some(B=>B.id===x.id)&&(L=[x,...L]),L},[n,w,z,g,b,x]);(0,W.useEffect)(()=>{let L=y.current;if(!L)return;let B=M=>{y.current=null,m(M.id),setTimeout(()=>{document.getElementById(`trace-row-${M.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},H=n.find(M=>M.id===L||M.trace_id===L||M.short_id&&String(L).startsWith(M.short_id));if(H){B(H);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent(L)}`).then(M=>M.ok?M.json():Promise.reject(new Error("not found"))).then(({trace:M})=>{h(M),B(M)}).catch(()=>{y.current=null})},[n]);let T=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};L.forEach(M=>{M.agent&&(B[M.agent]||(B[M.agent]={agent:M.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),B[M.agent].count++,B[M.agent].totalDuration+=M.duration_ms||0,B[M.agent].cost+=M.estimated_cost||0,M.status==="ERROR"&&B[M.agent].errors++,M.tokens&&(B[M.agent].tokens.thinking+=M.tokens.thinking||0,B[M.agent].tokens.input+=M.tokens.input||0,B[M.agent].tokens.output+=M.tokens.output||0),M.action&&(B[M.agent].actions[M.action]=(B[M.agent].actions[M.action]||0)+1))});let H={popular:M=>M.count,longest:M=>M.totalDuration/(M.count||1),cost:M=>M.cost,tokens:M=>(M.tokens.input||0)+(M.tokens.output||0)+(M.tokens.thinking||0),errors:M=>M.errors}[A]||(M=>M.count);return Object.values(B).sort((M,ne)=>H(ne)-H(M)||ne.count-M.count)},[n,z,w,A]),E=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};return L.forEach(H=>{if(!H.agent)return;let M=`${H.agent}#${H.action||"unknown"}`;B[M]||(B[M]={key:M,agent:H.agent,action:H.action||"unknown",count:0,totalDuration:0,errors:0,minDuration:1/0,maxDuration:0,tokens:{thinking:0,input:0,output:0}}),B[M].count++,B[M].totalDuration+=H.duration_ms||0,B[M].minDuration=Math.min(B[M].minDuration,H.duration_ms||0),B[M].maxDuration=Math.max(B[M].maxDuration,H.duration_ms||0),H.status==="ERROR"&&B[M].errors++,H.tokens&&(B[M].tokens.thinking+=H.tokens.thinking||0,B[M].tokens.input+=H.tokens.input||0,B[M].tokens.output+=H.tokens.output||0)}),Object.values(B).forEach(H=>{H.minDuration===1/0&&(H.minDuration=0)}),Object.values(B).sort((H,M)=>M.count-H.count)},[n,z,w]),I=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};return L.forEach(H=>{(H.spans||[]).forEach(M=>{if(M.type!=="tool")return;let ne=M.attributes?.["tool.name"]||M.name?.replace(/^tool\./,"")||"unknown";B[ne]||(B[ne]={name:ne,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),B[ne].count++,B[ne].totalDuration+=M.duration||0,B[ne].maxDuration=Math.max(B[ne].maxDuration,M.duration||0),M.error&&B[ne].errors++,H.agent&&B[ne].agents.add(`${H.agent}#${H.action||"unknown"}`)})}),Object.values(B).map(H=>({...H,agents:[...H.agents],avgDuration:H.count?H.totalDuration/H.count:0})).sort((H,M)=>M.totalDuration-H.totalDuration)},[n,z,w]),j=(0,W.useMemo)(()=>g.agent==="all"?E.map(L=>L.key):E.filter(L=>L.agent===g.agent).map(L=>L.key),[g.agent,E]),q=(0,W.useMemo)(()=>m0e(D),[D]),te=L=>{if(L&&L.activeTooltipIndex!==void 0){let B=L.activeTooltipIndex;C(w===B?null:B),m(null)}},K=L=>(L?.input||0)+(L?.output||0)+(L?.thinking||0),le=L=>{let B=L.count?L.errors/L.count:0;return[{label:`Calls ${$.label||""}`.trim(),value:L.count.toLocaleString()},{label:"Errors",value:`${(B*100).toFixed(1)}%`,tone:L.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round(L.totalDuration/(L.count||1))}ms`},{label:"Tokens",value:K(L.tokens).toLocaleString()},{label:"Cost",value:pe(L.cost),title:"Estimated from token counts at this model's published rates",tone:L.cost?void 0:"muted"},{label:"Actions",value:(L.agents?.length||0).toLocaleString()}]},pe=L=>L?L<.01?"<$0.01":`$${L.toFixed(2)}`:"\u2014",re=W.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},W.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),W.default.createElement("select",{value:A,onChange:L=>O(L.target.value),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:`1px solid ${r?"rgba(255,255,255,0.15)":"#e5e7eb"}`,background:r?"rgba(255,255,255,0.05)":"#ffffff",color:r?"#f9fafb":"#111827"}},W.default.createElement("option",{value:"popular"},"Most calls"),W.default.createElement("option",{value:"longest"},"Longest average"),W.default.createElement("option",{value:"cost"},"Highest cost"),W.default.createElement("option",{value:"tokens"},"Most tokens"),W.default.createElement("option",{value:"errors"},"Most errors"))),_e=L=>v(B=>({...B,agent:B.agent===L?"all":L})),ue=L=>{let B=s[L];if(!B)return _e(L);let H=ct(`/agents/${B}`);window.history.pushState(window.history.state,"",H),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:H}}))},se=L=>{let B=q[0]?.total||1,H=L?"rgba(0,0,0,0.3)":"white",M=L?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",ne=L?"white":"#111827",U=L?"rgba(255,255,255,0.5)":"#6b7280",oe={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return W.default.createElement("div",{style:{padding:L?"0 24px 24px 24px":0}},W.default.createElement("div",{style:{background:H,border:M,borderRadius:"12px",padding:"16px"}},W.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:ne,marginBottom:"4px"}},"Slowest operations"),W.default.createElement("div",{style:{fontSize:"12px",color:U,marginBottom:"14px"}},"Span durations aggregated across ",D.length," trace",D.length===1?"":"s"," \u2014 ranked by total time"),q.length===0?W.default.createElement("div",{style:{fontSize:"13px",color:U,padding:"12px 0"}},"No spans in the current selection"):W.default.createElement("div",{style:{display:"grid",gap:"10px"}},q.map(ye=>W.default.createElement("div",{key:ye.name,style:{display:"flex",alignItems:"center",gap:"12px"}},W.default.createElement("div",{style:{width:"220px",flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},W.default.createElement("span",{style:{color:U}},eP(ye.type)),W.default.createElement("span",{style:{fontSize:"13px",color:ye.errors>0?"#ef4444":ne,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ye.name)),W.default.createElement("div",{style:{flex:1,height:"18px",background:L?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},W.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ye.total/B*100,.5)}%`,background:oe[ye.type]||"#6366f1"}})),W.default.createElement("div",{style:{width:"260px",flexShrink:0,fontSize:"12px",color:U,fontFamily:ht.mono,textAlign:"right"}},ye.count,"\xD7 \xB7 avg ",Cn(ye.avg)," \xB7 max ",Cn(ye.max)," \xB7 \u03A3 ",Cn(ye.total)))))))};if(u)return W.default.createElement("div",{className:"flex items-center justify-center h-64"},W.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let Z={requests:z.reduce((L,B)=>L+B.requests,0),errors:z.reduce((L,B)=>L+B.errors,0),avgLatency:(()=>{let L=z.filter(B=>B.requests>0);return L.length===0?0:Math.round(L.reduce((B,H)=>B+H.avgLatency,0)/L.length)})(),throughput:(z.reduce((L,B)=>L+B.requests,0)/$.minutes).toFixed(1)},R=n.length===0;return r?W.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},W.default.createElement("div",{style:{padding:"24px 24px 0 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px",paddingBottom:"16px"}},W.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},W.default.createElement("div",null,!t&&W.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),W.default.createElement("p",{style:{fontSize:"14px",color:"rgba(255,255,255,0.6)",marginTop:"4px"}},w!==null?`Viewing ${z[w]?.time} \u2022 ${D.length} requests`:`Last ${$.label} \u2022 Click timeline to drill down`)),W.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},W.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px"}},["timeline","agents","actions","tools","spans"].map(L=>W.default.createElement("button",{key:L,onClick:()=>k(L),style:{padding:"6px 12px",background:S===L?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},L))),!e&&W.default.createElement("select",{value:g.agent,onChange:L=>v({...g,agent:L.target.value,action:"all"}),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"180px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Agents"),a.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.action,onChange:L=>v({...g,action:L.target.value}),style:{padding:"8px 12px",background:g.action!=="all"?"rgba(239, 68, 68, 0.3)":"rgba(255,255,255,0.1)",border:g.action!=="all"?"1px solid #ef4444":"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"220px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Actions"),j.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.status,onChange:L=>v({...g,status:L.target.value}),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px"}},W.default.createElement("option",{value:"all"},"All Status"),W.default.createElement("option",{value:"success"},"Success"),W.default.createElement("option",{value:"error"},"Error")),W.default.createElement("select",{value:b,onChange:L=>_(L.target.value),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px"}},W.default.createElement("option",{value:"time"},"Newest first"),W.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&W.default.createElement("button",{onClick:()=>C(null),style:{padding:"8px 16px",background:"rgba(255,255,255,0.2)",color:"white",borderRadius:"8px",border:"none",fontSize:"14px",fontWeight:"500",cursor:"pointer"}},"Clear Selection")))),d&&W.default.createElement("div",{style:{margin:"0 24px 16px 24px",padding:"12px 16px",background:"rgba(239, 68, 68, 0.1)",borderRadius:"8px",color:"#ef4444",fontSize:"13px"}},"Failed to load traces: ",d),W.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},W.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},W.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"}},W.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),W.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries(P).map(([L,B])=>W.default.createElement("div",{key:L,style:{display:"flex",alignItems:"center",gap:"6px"}},W.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:B}}),W.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},L.replace("Agent","")))))),W.default.createElement("div",{style:{height:"150px"}},W.default.createElement(Eu,{width:"100%",height:"100%"},W.default.createElement(oc,{data:z,onClick:te,style:{cursor:"pointer"}},W.default.createElement("defs",null,Object.entries(P).map(([L,B])=>W.default.createElement("linearGradient",{key:L,id:`gradient-${L}`,x1:"0",y1:"0",x2:"0",y2:"1"},W.default.createElement("stop",{offset:"5%",stopColor:B,stopOpacity:.8}),W.default.createElement("stop",{offset:"95%",stopColor:B,stopOpacity:.1})))),W.default.createElement(Ol,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),W.default.createElement(Il,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:N}),W.default.createElement($l,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),W.default.createElement(Ku,{contentStyle:{background:"rgba(0,0,0,0.9)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",padding:"12px"},labelStyle:{color:"white",fontWeight:"600",marginBottom:"8px"},itemStyle:{color:"rgba(255,255,255,0.8)",fontSize:"12px"},formatter:(L,B)=>[L,B.replace("Agent","")]}),Object.keys(P).map(L=>W.default.createElement(Ml,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:P[L],fill:`url(#gradient-${L})`}))))),W.default.createElement("div",{style:{display:"flex",gap:"24px",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"white"}},Z.requests),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},Z.errors),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},Z.avgLatency,"ms"),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},Z.throughput,"/min"),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),S==="agents"&&W.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},re,W.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"16px"}},T.map(L=>W.default.createElement(lp,{key:L.agent,name:L.agent,accentColor:P[L.agent],subtitle:L.agents?.length?L.agents.join(", "):void 0,badge:W.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:P[L.agent]+"30",color:P[L.agent],borderRadius:"4px",whiteSpace:"nowrap"}},L.count," calls"),onClick:()=>ue(L.agent),stats:le(L),footer:W.default.createElement(W.default.Fragment,null,W.default.createElement("span",null,s[L.agent]?"Open agent \u2192":"Not linked to an agent record"),W.default.createElement("button",{onClick:B=>{B.stopPropagation(),_e(L.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:g.agent===L.agent?"#ef4444":"inherit",font:"inherit"}},g.agent===L.agent?"Clear filter":"Filter traces"))})))),S==="actions"&&W.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},W.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:"12px"}},E.map(L=>{let B=g.action===L.key;return W.default.createElement("div",{key:L.key,onClick:()=>{v({...g,action:B?"all":L.key}),k("timeline")},style:{background:B?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:B?"1px solid #ef4444":`1px solid ${P[L.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},W.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},W.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},W.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:P[L.agent]}}),W.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},L.agent),W.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",L.action)),W.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:P[L.agent]+"30",color:P[L.agent],borderRadius:"4px"}},L.count," calls")),W.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),W.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(L.totalDuration/L.count),"ms")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),W.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(L.minDuration),"ms / ",Math.round(L.maxDuration),"ms")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),W.default.createElement("div",{style:{fontSize:"13px",color:L.errors>0?"#ef4444":"#10b981"}},L.errors," (",(L.errors/L.count*100).toFixed(0),"%)")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),W.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},K(L.tokens).toLocaleString()))))}))),S==="spans"&&se(!0),S==="timeline"&&!R&&W.default.createElement("div",{className:"space-y-4"},D.length===0?W.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):D.map(L=>W.default.createElement(i2,{key:L.id,trace:L,darkMode:!0,expanded:p===L.id,onToggle:()=>m(p===L.id?null:L.id)}))),R&&S==="timeline"&&W.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},W.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),W.default.createElement("p",{style:{color:"rgba(255,255,255,0.4)",fontSize:"14px",marginTop:"8px"}},"Run an agent, or point your app's ActiveAgent telemetry at this workspace to see traces appear here"))):W.default.createElement("div",{className:"space-y-6"},W.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},W.default.createElement("div",null,W.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),W.default.createElement("p",{className:"text-sm text-gray-500"},w!==null?`Viewing ${z[w]?.time} \u2022 ${D.length} requests`:`Last ${$.label} \u2022 Click timeline to drill down`)),W.default.createElement("div",{className:"flex items-center space-x-3 flex-wrap gap-y-2 min-w-0"},W.default.createElement(Ds,null),W.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},["timeline","agents","actions","tools","spans"].map(L=>W.default.createElement("button",{key:L,onClick:()=>k(L),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${S===L?"bg-white shadow text-gray-900":"text-gray-600"}`},L))),W.default.createElement("select",{value:g.agent,onChange:L=>v({...g,agent:L.target.value,action:"all"}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",style:{maxWidth:"180px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Agents"),a.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.action,onChange:L=>v({...g,action:L.target.value}),className:`px-3 py-2 border rounded-lg text-sm focus:ring-2 focus:ring-red-500 ${g.action!=="all"?"border-red-500 bg-red-50":"border-gray-300"}`,style:{maxWidth:"220px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Actions"),j.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.status,onChange:L=>v({...g,status:L.target.value}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},W.default.createElement("option",{value:"all"},"All Status"),W.default.createElement("option",{value:"success"},"Success"),W.default.createElement("option",{value:"error"},"Error")),W.default.createElement("select",{value:b,onChange:L=>_(L.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},W.default.createElement("option",{value:"time"},"Newest first"),W.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&W.default.createElement("button",{onClick:()=>C(null),className:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors text-sm font-medium"},"Clear Selection"))),d&&W.default.createElement("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700"},"Failed to load traces: ",d),W.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},W.default.createElement("div",{className:"flex justify-between items-center mb-3"},W.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),W.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries(P).map(([L,B])=>W.default.createElement("div",{key:L,className:"flex items-center gap-1.5"},W.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:B}}),W.default.createElement("span",{className:"text-xs text-gray-500"},L.replace("Agent","")))))),W.default.createElement("div",{className:"h-36"},W.default.createElement(Eu,{width:"100%",height:"100%"},W.default.createElement(oc,{data:z,onClick:te,style:{cursor:"pointer"}},W.default.createElement("defs",null,Object.entries(P).map(([L,B])=>W.default.createElement("linearGradient",{key:L,id:`gradient-light-${L}`,x1:"0",y1:"0",x2:"0",y2:"1"},W.default.createElement("stop",{offset:"5%",stopColor:B,stopOpacity:.6}),W.default.createElement("stop",{offset:"95%",stopColor:B,stopOpacity:.05})))),W.default.createElement(Ol,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),W.default.createElement(Il,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),W.default.createElement($l,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),W.default.createElement(Ku,{contentStyle:{background:"white",border:"1px solid #e5e7eb",borderRadius:"8px",boxShadow:"0 4px 6px -1px rgba(0,0,0,0.1)"},labelStyle:{color:"#111827",fontWeight:"600",marginBottom:"8px"},formatter:(L,B)=>[L,B.replace("Agent","")]}),Object.keys(P).map(L=>W.default.createElement(Ml,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:P[L],fill:`url(#gradient-light-${L})`}))))),W.default.createElement("div",{className:"flex gap-6 mt-3 pt-3 border-t border-gray-100"},W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-gray-900"},Z.requests),W.default.createElement("div",{className:"text-xs text-gray-500"},"Total Requests")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-red-500"},Z.errors),W.default.createElement("div",{className:"text-xs text-gray-500"},"Errors")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-green-600"},Z.avgLatency,"ms"),W.default.createElement("div",{className:"text-xs text-gray-500"},"Avg Latency")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-amber-500"},Z.throughput,"/min"),W.default.createElement("div",{className:"text-xs text-gray-500"},"Throughput")))),S==="agents"&&W.default.createElement("div",null,re,W.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},T.map(L=>W.default.createElement(lp,{key:L.agent,name:L.agent,accentColor:P[L.agent],subtitle:L.agents?.length?L.agents.join(", "):void 0,badge:W.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:P[L.agent]+"20",color:P[L.agent]}},L.count," calls"),onClick:()=>ue(L.agent),stats:le(L),footer:W.default.createElement(W.default.Fragment,null,W.default.createElement("span",null,s[L.agent]?"Open agent \u2192":"Not linked to an agent record"),W.default.createElement("button",{onClick:B=>{B.stopPropagation(),_e(L.agent)},className:g.agent===L.agent?"text-red-600":"hover:text-gray-700"},g.agent===L.agent?"Clear filter":"Filter traces"))})))),S==="actions"&&W.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},E.map(L=>{let B=g.action===L.key;return W.default.createElement("div",{key:L.key,onClick:()=>{v({...g,action:B?"all":L.key}),k("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${B?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:P[L.agent],borderLeftWidth:B?"2px":"4px"}},W.default.createElement("div",{className:"flex items-center justify-between mb-3"},W.default.createElement("div",{className:"flex items-center gap-2"},W.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:P[L.agent]}}),W.default.createElement("span",{className:"font-semibold text-gray-900"},L.agent),W.default.createElement("span",{className:"text-gray-500"},"#",L.action)),W.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:P[L.agent]+"20",color:P[L.agent]}},L.count," calls")),W.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),W.default.createElement("div",{className:"font-medium"},Math.round(L.totalDuration/L.count),"ms")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),W.default.createElement("div",{className:"text-gray-600"},Math.round(L.minDuration),"ms / ",Math.round(L.maxDuration),"ms")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Errors"),W.default.createElement("div",{className:L.errors>0?"text-red-600":"text-green-600"},L.errors," (",(L.errors/L.count*100).toFixed(0),"%)")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),W.default.createElement("div",{className:"text-gray-600"},K(L.tokens).toLocaleString()))))})),S==="tools"&&(I.length===0?W.default.createElement("div",{className:"text-center py-8 text-gray-500 text-sm"},"No tool calls in this window"):W.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},W.default.createElement("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium text-gray-500 border-b border-gray-100"},W.default.createElement("div",{className:"flex-1"},"Tool"),W.default.createElement("div",{className:"w-20 text-right"},"Calls"),W.default.createElement("div",{className:"w-24 text-right"},"Total time"),W.default.createElement("div",{className:"w-20 text-right"},"Avg"),W.default.createElement("div",{className:"w-20 text-right"},"Slowest")),I.map(L=>{let B=I[0].totalDuration?L.totalDuration/I[0].totalDuration*100:0;return W.default.createElement("div",{key:L.name,className:"px-4 py-2 border-b border-gray-50 last:border-0"},W.default.createElement("div",{className:"flex items-center gap-4 text-sm"},W.default.createElement("div",{className:"flex-1 min-w-0"},W.default.createElement("div",{className:"font-medium text-gray-900 truncate",title:L.name},L.name),L.agents.length>0&&W.default.createElement("div",{className:"text-xs text-gray-400 truncate",title:L.agents.join(", ")},L.agents.join(", "))),W.default.createElement("div",{className:"w-20 text-right text-gray-700",style:{fontFamily:ht.mono}},L.count.toLocaleString(),L.errors>0&&W.default.createElement("span",{className:"text-red-600 ml-1",title:`${L.errors} failed`},"(",L.errors,")")),W.default.createElement("div",{className:"w-24 text-right text-gray-900 font-medium",style:{fontFamily:ht.mono}},Cn(L.totalDuration)),W.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:ht.mono}},Cn(L.avgDuration)),W.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:ht.mono}},Cn(L.maxDuration))),W.default.createElement("div",{className:"h-1 bg-gray-100 rounded mt-1.5"},W.default.createElement("div",{className:"h-1 bg-green-500 rounded",style:{width:`${Math.max(B,1)}%`}})))}))),S==="spans"&&se(!1),S==="timeline"&&!R&&W.default.createElement("div",{className:"space-y-4"},D.length===0?W.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):D.map(L=>W.default.createElement(i2,{key:L.id,trace:L,darkMode:!1,expanded:p===L.id,onToggle:()=>m(p===L.id?null:L.id)}))),R&&S==="timeline"&&W.default.createElement("div",{className:"text-center py-12"},W.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),W.default.createElement("p",{className:"text-gray-500 text-sm mt-2"},"Run an agent, or point your app's ActiveAgent telemetry at this workspace to see traces appear here")))}var be=G(Y());var s2=G(Y());function oP({trace:e,darkMode:t,height:r=8}){let n=An(t);if(!e)return s2.default.createElement("div",{className:"rounded",style:{height:`${r}px`,background:n.trackBg}});let o=e.spans||[],a=e.duration_ms||1,i=[...o].sort((s,l)=>(s.nested||0)-(l.nested||0));return s2.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>s2.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${Cn(s.duration)}`,style:{position:"absolute",top:0,bottom:0,left:`${Math.min(s.start/a*100,99)}%`,width:`${Math.max(s.duration/a*100,.8)}%`,background:s.error?"#ef4444":R5[s.type]||"#9ca3af"}})))}var ns=G(Y());var or=G(Y());var Ur=G(Y());var X="var(--font-mono)",qd=e=>e>=1?"success":e>=.7?"warning":"error",ra={success:{strong:"var(--color-success)",soft:"var(--color-success-soft)",text:"var(--color-success-text)"},warning:{strong:"var(--color-warning)",soft:"var(--color-warning-soft)",text:"var(--color-warning-text)"},error:{strong:"var(--color-error)",soft:"var(--color-error-soft)",text:"var(--color-error-text)"},info:{strong:"var(--color-info)",soft:"var(--color-info-soft)",text:"var(--color-info-text)"},muted:{strong:"var(--color-text-muted)",soft:"var(--color-muted)",text:"var(--color-text-secondary)"},accent:{strong:"var(--color-accent-ui)",soft:"var(--color-accent-ui-tint)",text:"var(--color-accent-ui)"}},aP={object:"=",sample:"~",pass:co.success,fault:co.error,info:co.info,on:"[x]",off:"[ ]",link:co.arrow,chevron:co.chevronRight};function Ra({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Ur.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:X,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},aP.chevron):Ur.default.createElement("span",{title:i,style:{fontFamily:X,fontSize:n,fontWeight:o,color:r||(e==="fault"?"var(--color-error)":e==="info"?"var(--color-info)":e==="pass"?"var(--color-success)":"var(--color-text-muted)"),flexShrink:0,...a}},aP[e]||e)}function Te({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=ra[e]||ra.muted;return Ur.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:X,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function qe({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return Ur.default.createElement(a,{htmlFor:i,style:{fontFamily:X,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function eo({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,title:a,style:i,testId:s}){return Ur.default.createElement("button",{type:"button","data-testid":s,onClick:t,title:a,style:{padding:"4px 10px",borderRadius:n?6:999,cursor:t?"pointer":"default",fontFamily:o?X:"inherit",fontSize:o?11:12,fontWeight:o?400:500,background:e?"var(--color-accent-ui-tint)":"var(--color-card)",border:`1px solid ${e?"var(--color-accent-ui)":"var(--color-border)"}`,color:e?"var(--color-accent-ui)":o?"var(--color-text-muted)":"var(--color-text-cell)",...i}},r)}function sc({options:e,value:t,onChange:r,style:n}){return Ur.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return Ur.default.createElement("button",{key:o.value,type:"button",onClick:()=>r(o.value),"aria-pressed":a,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${a?"var(--color-accent-ui)":"var(--color-border)"}`,color:a?"var(--color-accent-ui)":"var(--color-text-cell)"}},o.label)}))}function de({variant:e="secondary",size:t="md",children:r,onClick:n,disabled:o=!1,title:a,type:i="button",style:s,testId:l}){let c={padding:t==="sm"?"6px 12px":"8px 14px",borderRadius:8,cursor:o?"not-allowed":"pointer",fontSize:13,fontWeight:500,opacity:o?.5:1,whiteSpace:"nowrap",fontFamily:"inherit"},d={primary:{background:"var(--color-accent-ui)",color:"var(--color-on-accent)",border:"1px solid transparent"},secondary:{background:"transparent",color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)"},danger:{background:"transparent",color:"var(--color-error)",border:"1px solid transparent"},ghost:{background:"transparent",color:"var(--color-text-secondary)",border:"1px solid transparent"}};return Ur.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function Ve({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Ur.default.createElement("div",{"data-testid":o,className:n,style:{background:"var(--color-card)",border:"1px solid var(--color-border)",borderRadius:12,padding:t,...r},...a},e)}function Ym({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Ur.default.createElement(Ve,{testId:a},Ur.default.createElement(qe,{size:11,spacing:"0.05em"},e),Ur.default.createElement("div",{style:{marginTop:8,fontFamily:X,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Ur.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},r))}function En({title:e,meta:t,children:r,style:n,testId:o,bodyStyle:a}){return Ur.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Ur.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Ur.default.createElement(qe,null,e),t&&Ur.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},t)),Ur.default.createElement("div",{style:a},r))}function nq({passed:e,total:t,label:r,labelWidth:n=128,width:o,height:a=6,color:i,valueWidth:s=38,style:l}){let u=t?e/t:0,c=i||ra[qd(u)].strong;return Ur.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Ur.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Ur.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Ur.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Ur.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function Ii({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i}){return Ur.default.createElement("a",{href:r,title:i,onClick:s=>{t&&(s.preventDefault(),t(s))},style:{fontFamily:X,fontSize:o,color:n,textDecoration:"none",...a}},e," ",aP.link)}function Kn({children:e,style:t}){return Ur.default.createElement("div",{style:{padding:"20px 12px",fontFamily:X,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Bl=G(Y());var h0e=/\/agents\/(\d+)/;function ka(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function y0e(e){return t=>t===e?{}:null}function Cv(e){return t=>e.test(t)?{agentId:t.match(h0e)?.[1]}:null}function l2(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var v0e=e=>e.assistantEnabled!==!1,x0e=Cv(/\/agents\/\d+\/(interactions|history)/),b0e=["recording","context","run","scenario_result"],w0e=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function S0e(e){let t=e.match(w0e);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var iP=[{view:"assistant",match:y0e("/assistant"),path:"/assistant",enabled:v0e},{view:"traces",match:ka("/traces"),path:"/traces"},{view:"metrics",match:ka("/metrics"),path:"/metrics"},{view:"catalogs",match:ka("/catalogs"),path:"/catalogs"},{view:"interactions",match:ka("/interactions"),path:"/interactions"},{view:"tools",match:ka("/tools"),path:"/tools"},{view:"mcp",match:e=>{if(!e.startsWith("/mcp"))return null;let t=e.match(/^\/mcp\/([^/?#]+)/)?.[1];return t?{focusServer:decodeURIComponent(t)}:{}},path:"/mcp"},{view:"evaluations",match:ka("/evaluations"),path:"/evaluations"},{view:"analytics",match:ka("/analytics"),path:"/analytics"},{view:"projects",match:ka("/projects"),path:"/projects"},{view:"exploration",match:ka("/explorations"),path:"/explorations"},{view:"builder",match:ka("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=x0e(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:l2("/interactions")},{view:"agent-analytics",match:Cv(/\/agents\/\d+\/analytics/),path:l2("/analytics")},{view:"editor",match:Cv(/\/agents\/\d+\/edit/),path:l2("/edit")},{view:"runner",match:Cv(/\/agents\/\d+\/run/),path:l2("/run")},{view:"history",match:Cv(/\/agents\/\d+\/?$/)},{view:"replay",match:S0e},{view:"sessions",match:ka("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:ka("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:ka("/organization"),path:"/organization"},{view:"settings",match:ka("/settings"),path:"/settings"}],k0e="list",oq=[{id:"agents",label:null,items:[{view:"assistant",label:"Ask ActiveAgents",glyph:">"},{view:"list",label:"Agents",icon:"agents",badge:"agentCount"},{view:"builder",label:"New Agent",icon:"newAgent"},{view:"sandbox",label:"Run Agents",icon:"demo"},{view:"projects",label:"Projects",glyph:""}]},{id:"observability",label:"Observability",items:[{view:"traces",label:"Traces",icon:"traces"},{view:"interactions",label:"Interactions",icon:"interactions",badge:"pendingInputCount",badgeTone:"attention",badgeTitle:"requests waiting for an answer"},{view:"tools",label:"Tools",icon:"tools"},{view:"mcp",label:"MCP Services",icon:"mcp"},{view:"metrics",label:"Metrics",icon:"metrics"},{view:"evaluations",label:"Evaluations",icon:"evaluations"},{view:"catalogs",label:"Catalogs",icon:"evaluations"},{view:"sessions",label:"Sessions",icon:"replay",also:["replay"]}]},{id:"workspace",label:"Workspace",items:[{view:"organization",label:"Organization",glyph:"\u{1F3E2}"},{view:"settings",label:"Settings",glyph:"\u2699\uFE0F"}]}];function aq(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function Ev(e,t={}){return iP.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function iq(e,t={}){for(let r of iP){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:k0e}}function u2(e,{agent:t=null,features:r={}}={}){if(!Ev(e,r))return null;let n=iP.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function sq(e){for(let t of oq){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function Xm(e,t){return!b0e.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function lq(e={}){return oq.map(t=>({...t,items:t.items.filter(r=>Ev(r.view,e))}))}var _0e=["agent_defined","dashboard","mcp"],lP={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},A0e={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},d2=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],uP=e=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let t=Number(e);return t>=1e3?`${(t/1e3).toFixed(1)}s`:`${Math.round(t)}ms`},Nv=(e,t=Date.now())=>{if(!e)return"never";let r=new Date(e).getTime();if(Number.isNaN(r))return"never";let n=Math.floor((t-r)/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let o=Math.floor(n/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`},C0e="sandbox:",Vd=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(C0e))),Tv=e=>Vd(e)&&!e.known,f2=e=>!!e&&!e.known&&!Vd(e);function uq(e){return Tv(e)?"this sandbox is no longer running, so it offers no tools \u2014 switch it off, and start a new sandbox from Settings \u2192 Integrations to enable its runtime":Vd(e)?"tools are listed by the running app each time the agent runs":"no tools recorded for this service yet"}var sP=e=>{if(typeof e=="string")return e.trim()||null;if(!e||typeof e!="object")return null;let t=e.key||e.name;return t&&String(t).trim()||null};function c2(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=sP(o);a&&r.set(a,o)});let n={};return(e.services||[]).forEach(o=>{let a=r.get(o.key),i=a&&typeof a=="object"&&Array.isArray(a.tools)?a.tools.map(s=>String(s&&s.name?s.name:s)):null;n[o.key]={on:r.has(o.key),tools:Object.fromEntries((o.tools||[]).map(s=>[s.name,i===null||i.includes(s.name)]))}}),n}var cq=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function dq(e,t,{query:r="",filter:n=null}={}){let o=cq(r);return(e.services||[]).filter(a=>n?n==="enabled"?t[a.key]?.on:a.status===n:!0).filter(a=>o(a.name,a.description)||(a.tools||[]).some(i=>o(i.name))).map(a=>{let i=t[a.key]||{on:!1,tools:{}},s=a.tools||[],l=s.map(c=>({...c,on:!!i.tools[c.name]})),u=l.filter(c=>c.on);return{...a,on:i.on,tools:l,offeredCount:s.length,enabledCount:u.length,toolsLabel:`${u.length}/${s.length}`,partial:i.on&&u.length{let o=t[n.key];!o||!o.on||(n.tools||[]).forEach(a=>{o.tools[a.name]&&r.push({...a,key:`${n.key}:${a.name}`,source:"mcp",editable:!1,enabled:!0,server:n.name,serverKey:n.key})})}),r}function fq(e,t,r=[]){let n=new Set((r||[]).map(String));return(e.tools||[]).map(o=>({...o,on:o.editable?n.has(o.key):o.enabled!==!1})).concat(E0e(e,t).map(o=>({...o,on:!0})))}function pq(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=cq(n),s=fq(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return _0e.map(u=>{let c=s.filter(p=>p.source===u),d=c.some(p=>p.editable),f=c.filter(p=>p.on).length;return{source:u,name:lP[u],meta:`${A0e[u]} \xB7 ${c.length} ${c.length===1?"tool":"tools"}`,countLabel:d?`${f}/${c.length} on`:`${c.length} offered`,editable:d,total:c.length,enabledCount:f,keys:c.map(p=>p.key),rows:l.filter(p=>p.source===u)}}).filter(u=>u.total>0)}function mq(e,t,r,{range:n="7d"}={}){let o=fq(e,t,r),a=e.usage_available!==!1,i=e.services||[],s=i.filter(p=>t[p.key]?.on),l=o.filter(p=>p.source!=="mcp"&&p.on),u=o.filter(p=>p.source==="mcp"),c=o.reduce((p,m)=>p+(m.calls||0),0),d=o.reduce((p,m)=>p+(m.errors||0),0),f=o.filter(p=>p.on&&!p.calls).length;return[{key:"tools",label:"Tools enabled",value:String(l.length+u.length),sub:`${l.length} direct \xB7 ${u.length} offered through MCP`},{key:"services",label:"MCP services",value:`${s.length}/${i.length}`,sub:s.length?`on for this agent: ${s.map(p=>p.name).join(", ")}`:"none enabled for this agent"},{key:"calls",label:"Tool calls",value:a?String(c):"\u2014",sub:a?`${d} error${d===1?"":"s"} in the last ${n} \xB7 traced`:"no calls recorded in this window yet"},{key:"unused",label:"Never called",value:a?String(f):"\u2014",sub:"enabled but unused in this window",tone:a&&f>6?"warning":null}]}function gq(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function cP(e,t=[]){let r=gq(e);if(r.length===0)return null;let n=new Set((t||[]).map(String)),o=r.filter(a=>n.has(a)).length;return o===0?"off":o===r.length?"on":"partial"}function N0e(e=[],t=[],r=!0){let n=(e||[]).map(String);return r?n.concat(t.filter(o=>!n.includes(o))):n.filter(o=>!t.includes(o))}function hq(e=[],t,r=[]){let n=(e||[]).map(String),o=cP(t,n);if(!o)return n;let a=new Set(N0e(n,gq(t),o==="off")),i=(r||[]).map(String),s=new Set(i);return a.size===s.size&&[...a].every(u=>s.has(u))?i:[...a]}function yq(e,t,r){let n=c2(e,t.mcpServers),o=c2(e,r.mcpServers),a=0;Object.keys(n).forEach(d=>{n[d].on!==o[d].on&&(a+=1),Object.keys(n[d].tools).forEach(f=>{n[d].tools[f]!==o[d].tools[f]&&(a+=1)})});let i=new Set((t.tools||[]).map(String)),s=new Set((r.tools||[]).map(String));(e.tools||[]).forEach(d=>{d.editable&&i.has(d.key)!==s.has(d.key)&&(a+=1)});let l=new Set((t.approvalRequiredTools||[]).map(String)),u=new Set((r.approvalRequiredTools||[]).map(String));return(e.tools||[]).concat((e.services||[]).flatMap(d=>d.tools||[])).forEach(d=>{(d.approval_names||[]).some(f=>l.has(f)!==u.has(f))&&(a+=1)}),a}function vq(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=sP(i);s&&n.set(s,i)});let o=[];(e.services||[]).forEach(i=>{let s=t[i.key];if(!s||!s.on)return;let l=(i.tools||[]).map(p=>p.name),u=l.filter(p=>s.tools[p]),c=n.get(i.key),d=l.length>0&&u.lengthi.key));return(r||[]).forEach(i=>{let s=sP(i);s&&!a.has(s)&&o.push(i)}),o}function dP(e,t=[]){let r=new Set((e.tools||[]).filter(a=>a.editable).map(a=>a.key)),n=(t||[]).map(String).filter(a=>!r.has(a)),o=(e.tools||[]).filter(a=>a.editable&&t.includes(a.key)).map(a=>a.key);return n.concat(o)}var fP="/api/input_requests",p2="action-agent:input-requests-changed",bq=3e4,xq=100,T0e=["text","choice","confirm","secret"];function wq({agentId:e=null,runId:t=null}={}){let r=new URLSearchParams;e!=null&&r.set("agent_id",String(e)),t!=null&&r.set("run_id",String(t));let n=r.toString();return n?`${fP}?${n}`:fP}function Zm(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function Sq(e){let t=Zm(e).length;if(t!==0)return t>=xq?`${xq-1}+`:t}function pP(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?Zm(e.input_requests).length>0?"awaiting":"poll":"finished"}function mP(e){return T0e.includes(e?.kind)?e.kind:null}function kq(e){return(Array.isArray(e?.options)?e.options:[]).map(t=>{if(t&&typeof t=="object"){let r=String(t.value??t.label??"");return{value:r,label:String(t.label??r)}}return t==null?null:{value:String(t),label:String(t)}}).filter(t=>t&&t.value!=="")}function _q(e){return e?.id==null?"answer":`answer-${e.id}`}function Aq(e){switch(mP(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:_q(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:kq(e).map(t=>t.label)}];default:return[]}}function Cq(e,t){if(t?.kind==="form"){let r=t.values?.[_q(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return kq(e).find(r=>r.label===t.text)?.value}var O0e={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function P0e(e,t={}){if(e>=200&&e<300)return{state:t?.input_request?.status==="declined"?"declined":"answered"};if(e===409){let r=t?.status||null;return{state:"closed",status:r,message:O0e[r]||"No longer waiting for an answer"}}return e===422?{state:"invalid",message:t?.error||"That answer does not fit this request"}:e===404?{state:"error",message:"This request is no longer available"}:{state:"error",message:t?.error||`Request failed (${e})`}}function gP(e){return["answered","declined","closed"].includes(e?.state)}async function Eq(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${fP}/${encodeURIComponent(e.id)}/${r?"decline":"answer"}`,a;try{a=await n(o,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(r?{}:{answer:t})})}catch{return{state:"error",message:"Could not reach the server. Try again."}}let i=await a.json().catch(()=>({}));return P0e(a.status,i)}function Nq(e,t){return t?.state==="closed"?t.message:t?.state==="declined"?e?.kind==="confirm"?"Declined: the tool does not run":"Declined":t?.state==="answered"?e?.kind==="confirm"?"Approved: the tool runs":"Answered: the run continues":null}function Tq(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function Oq(e,t=Date.now()){if(!e)return null;let r=new Date(e).getTime();if(Number.isNaN(r))return null;let n=Math.floor((r-t)/6e4);if(n<0)return"expired";if(n<60)return`expires in ${Math.max(n,1)}m`;let o=Math.floor(n/60);return o<48?`expires in ${o}h`:`expires in ${Math.floor(o/24)}d`}function Pq(e,t=Date.now()){return e?`asked ${Nv(e,t)}`:null}function Mq(e){let t=e?.arguments;return t==null||typeof t=="object"&&Object.keys(t).length===0?null:typeof t=="string"?t:JSON.stringify(t,null,2)}function Dq(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=u2("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function Iq(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function m2(){window.dispatchEvent(new CustomEvent(p2))}function g2({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=bq}={}){let[o,a]=(0,Bl.useState)(null),[i,s]=(0,Bl.useState)(null),l=(0,Bl.useRef)(0),u=(0,Bl.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(wq({agentId:e}));if(!d.ok)throw new Error(`Request failed (${d.status})`);let f=await d.json();if(c!==l.current)return;a(Array.isArray(f.input_requests)?f.input_requests:[]),s(null)}catch(d){if(c!==l.current)return;s(d.message)}},[e]);return(0,Bl.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(p2,u),()=>{clearInterval(c),window.removeEventListener(p2,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var M0e={text:"question",choice:"choice",confirm:"approval",secret:"secret"},D0e={answered:"success",declined:"muted",closed:"warning"},hP={fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},I0e={flex:1,minWidth:0,padding:"7px 10px",borderRadius:8,border:"1px solid var(--color-border-strong)",background:"var(--color-surface)",color:"var(--color-text-primary)",fontFamily:X,fontSize:13};function j0e({request:e,busy:t,onSubmit:r}){let[n,o]=(0,or.useState)("");return or.default.createElement("form",{onSubmit:i=>{if(i.preventDefault(),!n||t)return;let s=n;o(""),r(s)},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},or.default.createElement("input",{type:"password",autoComplete:"off",spellCheck:!1,"data-aa-secret":"","data-testid":"input-request-secret","aria-label":e.prompt,value:n,onChange:i=>o(i.target.value),disabled:t,style:I0e}),or.default.createElement(de,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function $0e({request:e,busy:t,onApprove:r,onDecline:n}){let o=Mq(e);return or.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},o&&or.default.createElement("pre",{"data-testid":"input-request-arguments",style:{margin:0,padding:"8px 10px",borderRadius:8,maxHeight:200,overflow:"auto",whiteSpace:"pre-wrap",background:"var(--color-muted)",color:"var(--color-text-cell)",fontFamily:X,fontSize:12}},o),or.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},or.default.createElement(de,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),or.default.createElement(de,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function Gd({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=st(),[a,i]=(0,or.useState)(!1),[s,l]=(0,or.useState)(r),u=mP(e),c=gP(s),d=async g=>{if(a||c)return;i(!0);let v=await Eq(e,g);i(!1),l(v),gP(v)&&(m2(),t&&t(e,v))},f=g=>{g!==void 0&&d({answer:g})},p=()=>d({decline:!0}),m=n?Dq(e):null,y=Tq(e.actor),x=Oq(e.expires_at),h=Pq(e.created_at);return or.default.createElement("div",{"data-testid":"input-request-card","data-kind":e.kind,"data-state":s?.state||"pending",style:{border:"1px solid var(--color-border)",borderRadius:10,background:"var(--color-card)",padding:"12px 14px",display:"flex",flexDirection:"column",gap:8}},or.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},or.default.createElement(Te,{tone:e.kind==="confirm"?"warning":"info",size:10},M0e[e.kind]||e.kind),or.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e.agent?.name||"An agent"," is asking"),m&&or.default.createElement(Ii,{href:ct(m),onClick:()=>It(m),title:"Open the run this request paused"},or.default.createElement("span",{"data-testid":"input-request-run-link"},"run #",e.run_id)),x&&or.default.createElement("span",{style:{...hP,marginLeft:"auto",color:x==="expired"?"var(--color-error-text)":hP.color}},x)),or.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},e.prompt),or.default.createElement("div",{style:{...hP,display:"flex",gap:10,flexWrap:"wrap"}},y&&or.default.createElement("span",{"data-testid":"input-request-actor"},"for ",y),e.tool_name&&or.default.createElement("span",{"data-testid":"input-request-tool"},"via ",e.tool_name),h&&or.default.createElement("span",null,h)),c?or.default.createElement("div",{"data-testid":"input-request-outcome"},or.default.createElement(Te,{tone:D0e[s.state]||"muted"},Nq(e,s))):or.default.createElement(or.default.Fragment,null,(u==="text"||u==="choice")&&or.default.createElement(Is,{blocks:Aq(e),darkMode:o,onAction:g=>f(Cq(e,g))}),u==="confirm"&&or.default.createElement($0e,{request:e,busy:a,onApprove:()=>f(!0),onDecline:p}),u==="secret"&&or.default.createElement(j0e,{request:e,busy:a,onSubmit:f}),u!=="confirm"&&or.default.createElement("div",null,or.default.createElement(de,{variant:"ghost",size:"sm",onClick:p,disabled:a,testId:"input-request-decline",style:{padding:"2px 0"}},"Decline")),s?.message&&or.default.createElement("div",{"data-testid":"input-request-error",role:"alert",style:{fontSize:12,color:"var(--color-error-text)"}},s.message)))}function L0e({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:ns.default.createElement("section",{"data-testid":"needs-input-lane","aria-label":"Needs input",style:{border:"1px solid var(--color-warning)",borderRadius:12,background:"var(--color-warning-soft)",padding:14,display:"flex",flexDirection:"column",gap:10}},ns.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},ns.default.createElement(qe,{color:"var(--color-warning-text)"},"Needs input"),ns.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:X,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),ns.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Each run is paused until its request is answered. Answering continues the same run.")),e.map(n=>ns.default.createElement(Gd,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>ns.default.createElement(Gd,{key:n.id,request:n,initialOutcome:o})))}function yP({agentId:e=null}){let{requests:t}=g2({agentId:e}),[r,n]=(0,ns.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=Zm(t).filter(s=>!o.has(s.id));return ns.default.createElement(L0e,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var jq=G(Y());function lc({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=Xm(e,t);return a?jq.default.createElement("a",{href:ct(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),It(a))},style:{fontFamily:X,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var z0e=e=>{let t=null;if((e?.generations||[]).forEach(a=>{let i=a.tokens||{},s=(i.input||0)+(i.output||0);s>0&&(!t||s>t.total)&&(t={input:i.input||0,output:i.output||0,cached:i.cached||0,thinking:i.thinking||0,model:a.model,total:s})}),!t)return null;let r=ac(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=ac(a.content)+ac(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:xv(t.model),cached:t.cached,thinking:t.thinking,segments:[{key:"messages",label:"Messages",tokens:o},{key:"tool_results",label:"Tool results",tokens:n},{key:"instructions",label:"Instructions",tokens:r},{key:"output",label:"Generated output",tokens:t.output}]}},$q=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],B0e=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],F0e=[{id:"conversation",label:"Conversation",hint:"Messages, tool calls and responses in order"},{id:"spans",label:"Spans",hint:"Each generation as a trace \u2014 waterfall, span details, timings"}],U0e=3e4,Fl=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),Lq=e=>{if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/1e3);return t<60?"just now":t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`};function W0e({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=An(t),[i,s]=(0,be.useState)(null),[l,u]=(0,be.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,be.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(y=>y.ok?y.json():Promise.reject(new Error("not found"))).then(({trace:y})=>m&&s(y)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let f=!!i,p=(i?.spans||[]).length;return be.default.createElement("div",{className:`rounded-lg px-2 py-1.5 -mx-2 transition-colors ${f?t?"hover:bg-white/5":"hover:bg-gray-100":""}`,style:n?{background:a.hoverBg}:void 0},be.default.createElement("div",{className:f?"cursor-pointer":void 0,onClick:f?o:void 0,title:f?`${p} spans \u2014 click for the trace`:void 0},be.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},be.default.createElement("span",{title:e.cache_hit?`${Fl(e.tokens.cached)} cached prompt tokens`:"No prompt cache hit",style:{color:e.cache_hit?a.good:a.textMuted}},e.cache_hit?"\u26A1 cache hit":"\u25CF generated"),e.thinking&&be.default.createElement("span",{className:"text-amber-500",title:`${Fl(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Fl(e.tokens.thinking)),be.default.createElement("span",null,e.model||"unknown-model"),e.provider&&be.default.createElement("span",null,e.provider),be.default.createElement("span",{className:"text-blue-500"},"in:",Fl(e.tokens.input)),be.default.createElement("span",{className:"text-green-500"},"out:",Fl(e.tokens.output)),e.finish_reason&&be.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&be.default.createElement("span",null,Cn(d)),c&&be.default.createElement("a",{href:ct(`/traces?trace=${c}`),title:`${c} \u2014 open in Traces`,style:{color:a.link},className:"hover:underline",onClick:m=>m.stopPropagation()},"trace:",c.slice(0,8)," \u2192"),l&&be.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),be.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?be.default.createElement(oP,{trace:i,darkMode:t}):d>0?be.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},be.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,f&&be.default.createElement(be.default.Fragment,null,be.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},p," ",p===1?"span":"spans"),be.default.createElement(Hd,{open:n,darkMode:t,size:12})))),n&&i&&be.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},be.default.createElement(Av,{trace:i,darkMode:t,compact:!0})))}function Ul({agentId:e=null,embedded:t=!1}){let{darkMode:r}=st(),[n,o]=(0,be.useState)([]),[a,i]=(0,be.useState)(!0),[s,l]=(0,be.useState)(null),[u,c]=(0,be.useState)(null),[d,f]=(0,be.useState)({}),{timeWindow:p}=Ms(),m=(0,be.useCallback)(async()=>{try{let F=await fetch(`/api/interactions?minutes=${p.minutes}${e?`&agent_id=${e}`:""}`);if(!F.ok)throw new Error(`Request failed (${F.status})`);let P=await F.json();o(P.interactions||[]),l(null)}catch(F){l(F.message)}finally{i(!1)}},[p.minutes,e]);(0,be.useEffect)(()=>{m();let F=setInterval(m,U0e);return()=>clearInterval(F)},[m]);let[y,x]=(0,be.useState)("recent"),h=(0,be.useMemo)(()=>{let F=[...new Set(n.map(P=>P.display_name).filter(Boolean))].sort();return Object.fromEntries(F.map((P,z)=>[P,$q[z%$q.length]]))},[n]),g=(0,be.useMemo)(()=>{let F=n.reduce((z,N)=>z+(N.tokens?.total||0),0),P=new Set(n.map(z=>z.display_name).filter(Boolean));return{interactions:n.length,tokens:F,agents:P.size,avgTokens:n.length?Math.round(F/n.length):0}},[n]),v=(0,be.useMemo)(()=>{if(n.length===0)return[];let F=Date.now(),P=p.bucketSeconds*1e3,z=Math.max(1,Math.round(p.minutes*60/p.bucketSeconds)),N=Object.keys(h);return Array.from({length:z},(D,T)=>{let E=F-(z-1-T)*P,I=E-P,j=n.filter(q=>{let te=new Date(q.last_activity_at).getTime();return te>=I&&te1440?new Date(E).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(E).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),...Object.fromEntries(N.map(q=>[q,j.filter(te=>te.display_name===q).length]))}})},[n,h,p]),b=Math.max(0,Math.ceil(v.length/6)-1),_=(0,be.useCallback)(F=>{let P=[...F];switch(y){case"tokens":return P.sort((z,N)=>(N.tokens?.total||0)-(z.tokens?.total||0));case"messages":return P.sort((z,N)=>(N.message_count||0)-(z.message_count||0));default:return P.sort((z,N)=>String(N.last_activity_at).localeCompare(String(z.last_activity_at)))}},[y]),w=(0,be.useMemo)(()=>{let F=new Map;n.forEach(z=>{let N=z.agent_name||z.agent?.name||"Unattributed",D=z.action_name,T=`${N}#${D||""}`;F.has(T)||F.set(T,{key:T,title:D?`${N} ${D.charAt(0).toUpperCase()}${D.slice(1)} Agent Interactions`:`${N} Interactions`,sessions:[],tokens:0,lastActivity:z.last_activity_at});let E=F.get(T);E.sessions.push(z),E.tokens+=z.tokens?.total||0,z.last_activity_at>E.lastActivity&&(E.lastActivity=z.last_activity_at)});let P=[...F.values()].map(z=>({...z,sessions:_(z.sessions)}));return y==="tokens"?P.sort((z,N)=>N.tokens-z.tokens):y==="messages"?P.sort((z,N)=>N.sessions.length-z.sessions.length):P.sort((z,N)=>String(N.lastActivity).localeCompare(String(z.lastActivity)))},[n,y,_]),C=async F=>{if(u===F){c(null);return}if(c(F),!d[F])try{let P=await fetch(`/api/interactions/${F}`);if(P.ok){let z=await P.json();f(N=>({...N,[F]:z.interaction}))}}catch{}},[S,k]=(0,be.useState)({}),[A,O]=Vm(),$=An(r);return a?be.default.createElement("div",{className:"flex items-center justify-center h-64"},be.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):be.default.createElement("div",{className:"space-y-6"},be.default.createElement("div",{className:"flex items-start justify-between"},!t&&be.default.createElement("div",null,be.default.createElement("h1",{className:"text-2xl font-bold",style:{color:$.textPrimary}},"Interactions"),be.default.createElement("p",{className:"text-sm mt-1",style:{color:$.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),be.default.createElement("div",{className:"flex items-center gap-3"},be.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},be.default.createElement("span",{className:"text-xs px-1",style:{color:$.textMuted}},"Sort"),B0e.map(F=>be.default.createElement("button",{key:F.id,onClick:()=>x(F.id),className:"px-2 py-1 text-xs rounded transition-colors",style:y===F.id?{background:r?"#2a2a2a":"#ffffff",color:$.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:$.textSecondary}},F.label))),be.default.createElement(Ds,null))),be.default.createElement(yP,{agentId:e}),s&&be.default.createElement("div",{className:"p-3 rounded-lg text-sm",style:{background:r?"rgba(239,68,68,0.1)":"#fef2f2",color:"#ef4444"}},"Failed to load interactions: ",s),n.length>0&&be.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:$.cardBg,borderColor:$.cardBorder}},be.default.createElement("div",{className:"flex items-center justify-between mb-3"},be.default.createElement("h3",{className:"text-sm font-semibold",style:{color:$.textPrimary}},"Interactions over time"),be.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(h).map(([F,P])=>be.default.createElement("span",{key:F,className:"flex items-center gap-1.5 text-xs",style:{color:$.textSecondary}},be.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:P}}),F)))),be.default.createElement("div",{className:"h-32"},be.default.createElement(Eu,{width:"100%",height:"100%"},be.default.createElement(oc,{data:v},be.default.createElement("defs",null,Object.entries(h).map(([F,P])=>be.default.createElement("linearGradient",{key:F,id:`ix-gradient-${F.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},be.default.createElement("stop",{offset:"5%",stopColor:P,stopOpacity:.6}),be.default.createElement("stop",{offset:"95%",stopColor:P,stopOpacity:.05})))),be.default.createElement(Ol,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),be.default.createElement(Il,{dataKey:"time",stroke:r?"rgba(255,255,255,0.4)":"#9ca3af",tick:{fontSize:10,fill:r?"rgba(255,255,255,0.5)":"#6b7280"},tickLine:!1,interval:b}),be.default.createElement($l,{stroke:r?"rgba(255,255,255,0.4)":"#9ca3af",tick:{fontSize:10,fill:r?"rgba(255,255,255,0.5)":"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),be.default.createElement(Ku,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${$.cardBorder}`,borderRadius:"8px"},labelStyle:{color:$.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(h).map(([F,P])=>be.default.createElement(Ml,{key:F,type:"monotone",dataKey:F,stackId:"1",stroke:P,strokeWidth:2,fill:`url(#ix-gradient-${F.replace(/\W/g,"-")})`}))))),be.default.createElement("div",{className:"flex items-center gap-8 pt-3 mt-3 border-t",style:{borderColor:$.cardBorder}},[{label:"Interactions",value:g.interactions.toLocaleString()},{label:"Agents",value:g.agents.toLocaleString()},{label:"Total tokens",value:Fl(g.tokens)},{label:"Avg / interaction",value:Fl(g.avgTokens)}].map(F=>be.default.createElement("div",{key:F.label},be.default.createElement("div",{className:"text-lg font-bold",style:{color:$.textPrimary}},F.value),be.default.createElement("div",{className:"text-xs",style:{color:$.textSecondary}},F.label))))),n.length===0?be.default.createElement("div",{className:"text-center py-12"},be.default.createElement("div",{className:"text-lg",style:{color:$.textMuted}},"No interactions in the last ",p.label),be.default.createElement("p",{className:"text-sm mt-2",style:{color:$.textSecondary}},"Widen the time window, or run an agent to start recording its conversation stream")):be.default.createElement("div",{className:"space-y-8"},w.map(F=>be.default.createElement("div",{key:F.key,className:"space-y-4"},be.default.createElement("div",{className:"flex items-baseline justify-between"},be.default.createElement("h2",{className:"text-sm font-semibold",style:{color:$.textPrimary}},F.title),be.default.createElement("span",{className:"text-xs",style:{color:$.textMuted}},F.sessions.length," ",F.sessions.length===1?"interaction":"interactions",F.tokens>0&&` \xB7 ${Fl(F.tokens)} tokens`)),F.sessions.map(P=>{let z=d[P.id],N=u===P.id,D=S[P.id]||"conversation",T=P.tokens?.total||0,E=(P.tokens?.input||0)+(P.tokens?.output||0)||T;return be.default.createElement(a2,{key:P.id,darkMode:r,className:"shadow-sm"},be.default.createElement("div",{className:`flex items-center justify-between flex-wrap gap-y-2 p-4 cursor-pointer transition-colors ${r?"hover:bg-white/5":"hover:bg-gray-50"}`,onClick:()=>C(P.id),style:N?{background:$.hoverBg}:void 0},be.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},P.source==="telemetry"?be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium rounded flex-shrink-0",style:{background:r?"rgba(168,85,247,0.15)":"#faf5ff",color:r?"#d8b4fe":"#7e22ce"},title:"Reported by an app running this agent outside the platform"},"REPORTED"):be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),be.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:$.textPrimary}},P.display_name),P.agent&&be.default.createElement("span",{className:"text-sm truncate",style:{color:$.textSecondary}},P.agent.name),P.service_name&&be.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:$.textMuted}},P.service_name)),be.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},be.default.createElement(Km,{darkMode:r,cells:[{key:"activity",width:Qa.count,content:P.message_count>0?`${P.message_count} messages`:`${P.tool_count||0} tool ${P.tool_count===1?"call":"calls"}`},{key:"tokens",width:Qa.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:T>0&&`${Fl(T)} tokens`},{key:"context",width:Qa.context,empty:"Context: this interaction recorded no token counts",content:T>0&&be.default.createElement(ic,{compact:!0,darkMode:r,label:"Context",used:E,limit:xv(P.model),segments:[{key:"messages",label:"Context",tokens:E}]})},{key:"age",width:Qa.age,title:P.last_activity_at||void 0,empty:"No activity recorded",content:Lq(P.last_activity_at)&&be.default.createElement("span",{style:{color:$.textMuted}},Lq(P.last_activity_at))}]}),P.source!=="telemetry"&&be.default.createElement(lc,{kind:"context",id:P.id,title:"Replay this conversation"}),be.default.createElement(Hd,{open:N,darkMode:r}))),!N&&be.default.createElement(qm,{darkMode:r,onClick:()=>C(P.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:P.preview?.input,color:mn("user",r).color},{label:"output",text:P.preview?.output,color:mn("assistant",r).color}]}),N&&be.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:$.cardBorder,background:$.innerBg}},z?be.default.createElement(be.default.Fragment,null,be.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},be.default.createElement(_v,{options:F0e,value:D,onChange:I=>k(j=>({...j,[P.id]:I})),darkMode:r}),be.default.createElement("span",{className:"text-xs",style:{color:$.textSecondary}},z.messages.length," ",z.messages.length===1?"message":"messages",z.generations.length>0&&` \xB7 ${z.generations.length} ${z.generations.length===1?"generation":"generations"}`)),D==="conversation"&&be.default.createElement(be.default.Fragment,null,z.messages.length===0&&be.default.createElement("div",{className:"text-sm",style:{color:$.textMuted}},"No conversation content captured for this run. Enable content capture in the reporting app to record prompts, tool arguments, and responses."),be.default.createElement(Di,{darkMode:r,messages:z.instructions?[{id:`ctx-${P.id}-system`,role:"system",content:z.instructions,created_at:P.created_at},...z.messages]:z.messages}),(()=>{let I=z0e(z);return I?be.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:$.cardBorder}},be.default.createElement(ic,{...I,label:"Context pressure",estimated:!0,darkMode:r})):null})()),D==="spans"&&(z.generations.length===0?be.default.createElement("div",{className:"text-sm",style:{color:$.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):be.default.createElement("div",{className:"space-y-2"},z.generations.map(I=>be.default.createElement(W0e,{key:I.id,generation:I,darkMode:r,maxMs:Math.max(...z.generations.map(j=>(j.duration_seconds||0)*1e3),1),expanded:A(`${P.id}:${I.id}`),onToggle:()=>O(`${P.id}:${I.id}`)}))))):be.default.createElement("div",{className:"flex justify-center py-6"},be.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var Le=G(Y());function Bq(e,t){let r=i=>{let s=Object.values(t[i]||{})[0];if(!s)return null;let l=s.scenario||s;return{key:i,prompt:l.prompt,group:l.group??null,notes:l.notes??null,expectations:l.expectations||{},position:l.position}},n=new Set(e.map(i=>i.key)),o=e.map(i=>{let s=r(i.key);if(!s)return i;let l=["prompt","group","notes","expectations"].some(u=>JSON.stringify(i[u]??null)!==JSON.stringify(s[u]??null));return{...i,...s,catalogChanged:l}}),a=Object.keys(t).filter(i=>!n.has(i)).map(i=>({...r(i),id:null,enabled:!1,orphan:!0}));return[...o,...a]}var zq=e=>/^[1-9]\d*$/.test(e||"")?e:null;function vP(e){let t=new URLSearchParams(e),r=zq(t.get("evaluation"));return r?{evaluationId:r,runId:zq(t.get("run"))}:null}async function Fq(e,t,r){if(!t||e.some(a=>String(a.id)===String(t)))return e;let n=await r(`/api/evaluations/${encodeURIComponent(t)}`);if(!n.ok)throw new Error(`Requested evaluation is unavailable (HTTP ${n.status})`);let o=await n.json();if(!o.evaluation)throw new Error("Requested evaluation is unavailable");return[o.evaluation,...e]}var Fe=G(Y());var un=e=>{let t=Number(e)||0;return Math.abs(t)>=1e6?`${(t/1e6).toFixed(1)}M`:Math.abs(t)>=1e3?`${(t/1e3).toFixed(1)}K`:`${Math.round(t)}`},xP=e=>e==null?"\u2014":un(e),to=e=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let t=Number(e);return t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},Ov=e=>{if(e==null)return"\u2014";let t=Number(e);return t===0?"$0.00":Math.abs(t)<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`},Pv=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var Jm=(e,t="%",r=0)=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let n=Number(e);return`${n>0?"+":n<0?"-":""}${Math.abs(n).toFixed(r)}${t}`},vo=e=>{if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t} min ago`;if(t<1440){let n=Math.floor(t/60);return`${n} hour${n===1?"":"s"} ago`}let r=Math.floor(t/1440);return`${r} day${r===1?"":"s"} ago`},No=(e,t=null)=>{let r=String(e||""),n=r.lastIndexOf("/");return n>0?{short:r.slice(n+1),provider:r.slice(0,n)}:{short:r,provider:t||""}};var H0e=["trace_error_rate","trace_latency"],wP=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],zt=(e,t)=>`${e} ${t}${e===1?"":"s"}`,Mv=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},Uq=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),bP=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,K0e=(e,t)=>t>0?`${e}/${t} \xB7 ${bP(e/t)}`:"\u2014",Wq=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},js=e=>e?.type==="llm_judge"?"judge":H0e.includes(e?.type)?"telemetry":"rules",h2=e=>{let t=e?.config||{};switch(e?.type){case"response_present":return"Response present";case"min_length":return"Response length";case"max_latency_ms":return"Latency";case"token_budget":return"Output tokens";case"contains":return"Must contain";case"not_contains":return"Must not contain";case"trace_error_rate":return"Trace error rate";case"trace_latency":return"Trace latency";case"llm_judge":return t.description||Uq(e.key);default:return Uq(e?.key)}},Rm=e=>{let t=e?.config||{};switch(e?.type){case"response_present":return"non-empty output";case"min_length":return`\u2265 ${t.chars??40} chars`;case"max_latency_ms":return`\u2264 ${Wq(t.ms??5e3)}`;case"token_budget":return`\u2264 ${t.output_tokens??1e3} output tokens`;case"contains":return`matches /${t.pattern||""}/i`;case"not_contains":return`no /${t.pattern||""}/i`;case"trace_error_rate":return`error rate \u2264 ${t.max_error_rate??5}% \xB7 ${t.window_hours??168}h`;case"trace_latency":return`avg \u2264 ${Wq(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${Mv(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},Dv=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},eg=(e,t=null)=>{let r=t?.scores||{};if(Object.prototype.hasOwnProperty.call(r,"_judge_label"))return r._judge_label||"rules";let n=r._verdict?.judge;return n&&n!=="pass rate"?n:e?.judge_kind==="judge_defined"?`judge-defined KPIs${e.judge_model?` \xB7 ${e.judge_model}`:""}`:e?.judge_kind==="llm"?e.judge_model||"LLM judge":"rules"},SP=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,Yd=(e,t=null)=>{let r=SP(e,t);if(e?.scenario_suite){let a=t?.samples_evaluated&&r?Math.round(t.samples_evaluated/r):e.scenario_count||0;return`${zt(a,"scenario")} \xD7 ${zt(r,"model")}`}let n=(e?.criteria||[]).length,o=n===1?"criterion":"criteria";return r>1?`${n} ${o} \xD7 ${zt(r,"model")}`:`${n} ${o} \xB7 ${zt(e?.sample_size??0,"sample")}`},kP=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),tg=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var Iv=e=>{let t=e?.scores?._cohorts||e?.scores?._models;if(t&&typeof t=="object"&&Object.keys(t).length)return Object.keys(t);if(Array.isArray(e?.models)&&e.models.length)return e.models;let r=[];return tg(e).forEach(([,n])=>{kP(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},Xd=(e,t)=>!e||typeof e!="object"?null:kP(e)?t&&e[t]||null:e,Kq=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null;var Qm=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,Zd=(e,t)=>e!=null&&t?e/t:null,y2=(e,t)=>{if(!e||typeof e!="object")return!1;if(Number(e.estimated)>0||e.cost_basis==="estimated"||e.cost_basis==="mixed")return!0;let r=Qm(e,t);return r!=null&&t!=null&&e.cost!=null&&r{if(!e)return[];let t=e.scores||{},r=t._models;if(r&&typeof r=="object"&&Object.keys(r).length)return Object.entries(r).map(([a,i])=>({label:a,model:i.model||a,provider:i.provider||null,samples:i.scenarios??null,passed:i.passed??null,errored:i.errored??0,avg_score:i.avg_score??null,avg_duration_ms:i.avg_duration_ms??null,input_tokens:i.input_tokens??null,output_tokens:i.output_tokens??null,cost:i.cost??null,priced:Qm(i,i.scenarios),reported:i.reported??null,estimated:y2(i,i.scenarios),judge_cost:i.judge_cost??null,judge_calls:i.judge_calls??0,faults:i.faults||{},kind:"replay"}));let n=t._cohorts;if(n&&typeof n=="object"&&Object.keys(n).length)return Object.entries(n).map(([a,i])=>({label:a,model:a,provider:i.provider||null,samples:i.samples??null,passed:i.passed??null,errored:0,avg_score:null,avg_duration_ms:i.avg_duration_ms??null,input_tokens:i.input_tokens??null,output_tokens:i.output_tokens??null,cost:i.cost??null,priced:Qm(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=Iv(e);return o.length?o.map(a=>{let i=tg(e).map(([,s])=>Xd(s,a)).filter(s=>s&&s.total!=null).map(s=>s.total);return{label:a,model:a,provider:null,samples:i.length?Math.max(...i):null,passed:null,errored:0,avg_score:null,avg_duration_ms:null,input_tokens:null,output_tokens:null,cost:null,priced:null,reported:null,estimated:!1,judge_cost:null,judge_calls:0,faults:{},kind:e.selection||t._selection?"replay":"sample"}}):[{label:null,model:null,provider:null,samples:e.samples_evaluated??null,passed:e.samples_passed??null,errored:0,avg_score:null,avg_duration_ms:null,input_tokens:null,output_tokens:null,cost:null,priced:null,reported:null,estimated:!1,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}]},qq=(e,t)=>{let r=tg(e).map(([,o])=>Xd(o,t)).filter(Boolean),n=r.filter(o=>o.score!=null);return{avg:n.length?n.reduce((o,a)=>o+a.score,0)/n.length:null,scored:n.length,cleared:n.filter(o=>o.score>=.7).length,below:n.filter(o=>o.score<.7).length,skipped:r.filter(o=>o.skipped).length}},Vq=20,jv=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,_P=(e=[],t=null)=>{let r=jv(e,t),n=e.length=Vq;return`${zt(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},ng=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:jv(r,n)-t,$v=(e,t,{olderNumber:r=t?.number,comparable:n=!0}={})=>{if(!e||e.status!=="complete")return null;if(!t)return{text:"first run",tone:"muted"};let o=Number.isFinite(r)?`#${r}`:"previous";if(t.status!=="complete")return{text:`${o} ${t.status}`,tone:"muted"};if(!n)return{text:"partial run",tone:"muted"};let a=(e.samples_passed||0)-(t.samples_passed||0);return a===0?{text:`same as ${o}`,tone:"muted"}:{text:`${a>0?"+":""}${a} passed vs ${o}`,tone:a>0?"success":"error"}},Gq=(e,t)=>{if(!e||!t)return null;let r=e.agent_version?.id??null,n=t.agent_version?.id??null;return r==null||n==null?{kind:"unrecorded",text:"release not recorded"}:r===n?{kind:"same",text:"same version"}:{kind:"new",text:`new version${e.agent_version?.number!=null?` v${e.agent_version.number}`:""}`}},Yq=e=>{if(!e||!("version_state"in e)&&!e.agent_version)return null;let t=e.agent_version;if(!t)return{text:"release not recorded",tone:"warning",title:"This run named no release, so nothing says which version of the agent it scored"};let r=t.release_digest?` \xB7 ${String(t.release_digest).slice(0,7)}`:"",n=`v${t.number}${r}`,o=e.version_state||"current";return o==="earlier"?{text:n,tone:"muted",title:`An earlier version of the agent${t.revision?` \xB7 ${t.revision}`:""}`}:o==="unrecorded"?{text:n,tone:"warning",title:"The version this run scored was not recorded"}:{text:n,tone:"success",title:`The agent's current version${t.revision?` \xB7 ${t.revision}`:""}`}},ji=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=Qm(t,r||0),a=r!=null||n!=null?{cost:n,count:r||0,priced:o,reported:t.reported??null,estimatedCount:t.estimated??null,basis:t.cost_basis??null,estimated:y2(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??Zd(n,o),inputTokens:t.input_tokens??null,outputTokens:t.output_tokens??null,modelTimeMs:t.model_time_ms??null}:null,i=t.judge,s=i&&typeof i=="object"?{cost:i.cost??null,calls:i.calls||0,byKind:i.by_kind||{},model:i.model||null,inputTokens:i.input_tokens??null,outputTokens:i.output_tokens??null,source:i.source||null,estimated:i.estimated??(i.source==null||i.source!=="reported"),run:i.run&&typeof i.run=="object"?i.run:null}:null;if(!a&&!s)return null;let l=t.total??(a?.cost!=null||s?.cost!=null?(a?.cost||0)+(s?.cost||0):null),u=!!(a?.cost!=null&&a.estimated||s?.cost!=null&&s.estimated);return{agent:a,judge:s,total:l,totalEstimated:u,runtimeMs:t.runtime_ms??null}},Xq=e=>{let t=e?.agent||null,r=e?.judge||null;return t&&t.count>0&&t.cost==null?r?"judge only \xB7 agent unpriced":"agent unpriced":t&&r?"agent + judge":t?"agent only":"judge only"},Lv=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},zv=e=>{if(!e)return"";let t=["define","score","recommend","verdict"];return Object.entries(e.byKind||{}).sort(([n],[o])=>t.indexOf(n)-t.indexOf(o)).map(([n,o])=>`${n} ${o}`).join(" \xB7 ")},q0e=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=ji(l);u&&(a+=1,u.agent&&(r+=u.agent.count,n+=u.agent.priced),u.agent?.cost!=null&&(t=(t||0)+u.agent.cost,u.agent.estimated&&(i=!0)),u.judge?.cost!=null&&(o=(o||0)+u.judge.cost,u.judge.estimated&&(s=!0)))}),{agentCost:t,interactions:r,pricedInteractions:n,perInteraction:Zd(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},og=e=>{if(!e)return null;if(e.headline_run&&typeof e.headline_run=="object")return e.headline_run;let t=e.latest_run||null;return e.headline_run_id!=null?t&&t.id===e.headline_run_id?t:null:t&&t.status==="complete"?t:null},AP=e=>e?e.standing?e.standing:e.archived_at?"archived":og(e)?"current":"none":"none",V0e=["current","unrecorded"],Zq=(e=[],{focusId:t=null}={})=>{let r=t!=null?e.filter(c=>String(c.id)===String(t)):[],n=r.length>0,o=n?r:e,a={total:0,stale:0,archived:0,none:0},i=[],s={},l=0,u=0;return o.forEach(c=>{let d=og(c),f=AP(c);if(!(n?!!d:!!d&&V0e.includes(f))){a.total+=1,f==="archived"?a.archived+=1:f==="stale"?a.stale+=1:a.none+=1;return}i.push(d),l+=d.samples_evaluated||0,u+=d.samples_passed||0,(c.per_model&&typeof c.per_model=="object"&&Object.keys(c.per_model).length?Object.entries(c.per_model).map(([y,x])=>({label:y,passed:x?.passed||0,total:x?.total||0})):rg(d).filter(y=>y.label&&y.samples>0).map(y=>({label:y.label,passed:y.passed||0,total:y.samples||0}))).forEach(({label:y,passed:x,total:h})=>{let g=s[y]||={label:y,passed:0,total:0};g.passed+=x,g.total+=h})}),{evaluations:o.length,counted:i.length,notCounted:a,runs:i,samplesScored:l,samplesPassed:u,passRatio:l?u/l:null,perModel:Object.values(s),spend:q0e(i),focused:n}},Jq=e=>{let t=e?.notCounted;if(!t||!t.total)return null;let r=[];return t.stale&&r.push(`${t.stale} stale`),t.archived&&r.push(`${t.archived} archived`),t.none&&r.push(`${t.none} ${t.none===1?"has":"have"} no complete run`),[`${t.total} not counted`,...r].join(" \xB7 ")},v2=(e,t)=>{if(!t)return[];let r=[],n=`/agents/${e?.agent?.id}/run`;t.status==="failed"&&r.push({kind:"failed",label:"run failed",scope:Number.isFinite(t.number)?`run #${t.number}`:"latest run",text:t.error_message||"The run ended before any criterion was scored.",action:{label:"Run agent",path:n,hint:"Run Agent ->"}});let o=Array.isArray(t.scores?._missing_models)?t.scores._missing_models:[];o.length&&r.push({kind:"missing",label:`no generations \xD7${o.length}`,scope:"comparison cohorts",text:"The comparison asked for these models, but the agent has no recorded generations under them. Run the agent under each model, then run the evaluation again.",chipsLabel:"missing models",chips:o,action:{label:"Run agent",path:n,hint:"Run Agent ->"}});let a={judge:[],telemetry:[],rules:[]},i=[];tg(t).forEach(([u,c])=>{let d=Dv(e,u);(kP(c)?Object.entries(c):[[null,c]]).forEach(([p,m])=>{!m||typeof m!="object"||(m.skipped?a[js(d)].push({key:u,model:p,reason:m.reason}):m.score!=null&&m.score<.7&&i.push({key:u,model:p,stats:m,criterion:d}))})});let s=u=>[...new Set(u.map(c=>c.key))],l=u=>`${s(u).length} ${s(u).length===1?"criterion":"criteria"}`;if(a.judge.length&&r.push({kind:"judge",label:`judge skipped \xD7${a.judge.length}`,scope:l(a.judge),text:a.judge[0].reason||"The LLM judge could not score these criteria.",chipsLabel:"unscored criteria",chips:s(a.judge),action:{label:"Add provider key",path:"/settings",hint:"Settings ->"}}),a.telemetry.length&&r.push({kind:"telemetry",label:`no telemetry \xD7${a.telemetry.length}`,scope:l(a.telemetry),text:a.telemetry[0].reason||"No traces were recorded for this agent in the criterion window.",chipsLabel:"unscored criteria",chips:s(a.telemetry),action:{label:"Open traces",path:"/traces",hint:"Traces ->"}}),a.rules.length&&r.push({kind:"samples",label:`no samples \xD7${a.rules.length}`,scope:l(a.rules),text:a.rules[0].reason||"No generation could be scored against these criteria.",chipsLabel:"unscored criteria",chips:s(a.rules),action:{label:"Run agent",path:n,hint:"Run Agent ->"}}),i.length){let u=[...new Set(i.map(c=>c.model).filter(Boolean))];r.push({kind:"below",label:`below pass mark \xD7${i.length}`,scope:`${l(i)}${u.length?` \xB7 ${zt(u.length,"model")}`:""}`,text:`Scored under the pass mark (pass \u2265 ${bP(.7)}). Each line is what the criterion expects against how the samples did; tighten the agent's instructions or revisit the budget before running again.`,details:i.map(c=>`${c.key}${c.model?` \xB7 ${c.model}`:""} ${bP(c.stats.score)} \xB7 expects ${Rm(c.criterion)} \xB7 ${K0e(c.stats.passed,c.stats.total)} passed`)})}return r},Hq=e=>String(e||"").replace(/_/g," "),x2=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=rg(e),i=new Map(a.map(c=>[c.label,c])),s=o&&o.length?o:a.map(c=>c.label),l=e?.scores?._verdict?.winner||null;return s.map(c=>{let d=i.get(c)||{},f=t.filter(A=>n(A)===c),p=f.filter(A=>A?.status&&A.status!=="pending"),m=d.samples??(r||f.length||null),y=d.passed??p.filter(A=>A.status==="passed").length,x=Object.keys(d.faults||{}).length?d.faults:p.reduce((A,O)=>O.fault?{...A,[O.fault]:(A[O.fault]||0)+1}:A,{}),h=A=>f.find(O=>O.fault===A)||null,g=A=>A==="low_quality"?1:0,v=Object.entries(x).sort((A,O)=>O[1]-A[1]||(h(O[0])?1:0)-(h(A[0])?1:0)||g(A[0])-g(O[0])||A[0].localeCompare(O[0])),[b,_]=v[0]||[],w=b?h(b):null,C=m||null,S=A=>A==null||!C?null:A/C,k=d.avg_score??(p.length&&p.some(A=>A.score!=null)?p.filter(A=>A.score!=null).reduce((A,O)=>A+Number(O.score),0)/p.filter(A=>A.score!=null).length:null);return{label:c,model:d.model||c,provider:d.provider||null,winner:l===c,passed:y,total:m,scored:d.samples??p.length,passRate:m?y/m:null,avgScore:k==null?null:Number(k),avgDurationMs:d.avg_duration_ms??null,inputTokens:d.input_tokens??null,outputTokens:d.output_tokens??null,avgInputTokens:S(d.input_tokens),avgOutputTokens:S(d.output_tokens),avgTokens:d.input_tokens==null&&d.output_tokens==null?null:S((d.input_tokens||0)+(d.output_tokens||0)),cost:d.cost??null,priced:d.priced??null,reported:d.reported??null,estimated:d.estimated??!1,judgeCost:d.judge_cost??null,judgeCalls:d.judge_calls??0,costPerInteraction:Zd(d.cost,d.priced),faults:v.map(([A,O])=>({fault:A,name:Hq(A),count:O})),typicalFault:b?{fault:b,name:Hq(b),count:_,scenarioKey:w?.scenario_key||null,summary:(w?.diagnosis?.summary||w?.recommendation||"").toString().trim()||null}:null}}).sort((c,d)=>(d.passRate??-1)-(c.passRate??-1)||(d.avgScore??-1)-(c.avgScore??-1)||s.indexOf(c.label)-s.indexOf(d.label))},Qq=(e,{max:t=120}={})=>{if(!e)return"\u2014";if(!e.typicalFault)return e.scored?"no faults":"\u2014";let{name:r,count:n,scenarioKey:o,summary:a}=e.typicalFault,i=`${r} \xD7${n}`;if(!a)return i;let s=o?`${o}: ${a}`:a;return`${i} \xB7 ${Mv(s,t)}`},Rq=(e=[],t=[],r=n=>n?.model)=>e.map(n=>{let o=n.kind==="instruction"?t.filter(s=>(n.scenario_keys||[]).includes(s?.scenario_key)&&s?.fault):t.filter(s=>s?.fault===n.fault);if(!o.length)return n;let a={},i={};return o.forEach(s=>{let l=r(s);l&&(a[l]=(a[l]||0)+1,i[l]=[...new Set([...i[l]||[],s.scenario_key].filter(Boolean))])}),{...n,count_by_model:a,scenario_keys_by_model:i}}),CP=(e=[],t=null)=>!t||t==="all"?e:e.filter(r=>!Array.isArray(r.models)||r.models.length===0||r.models.includes(t)).map(r=>{if(!Array.isArray(r.models)||!r.models.length)return r;let n={...r,models:[t]};return r.count_by_model?.[t]!=null&&(n.count=r.count_by_model[t]),r.scenario_keys_by_model?.[t]&&(n.scenario_keys=r.scenario_keys_by_model[t]),n}),eV=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,CP(e,r).length])),tV=e=>(Array.isArray(e)?e:[]).filter(t=>t&&t.session_id&&t.status==="ready"&&(t.sandbox_type==null||t.sandbox_type==="app_runtime")&&!("runtime_server_key"in t&&!t.runtime_server_key)).map(t=>({value:t.session_id,label:rV(t)})),rV=e=>{if(!e||!e.session_id)return null;let t=[e.repository,e.repository_ref].filter(Boolean).join("@"),r=String(e.session_id).slice(0,8);return t?`${t} \xB7 ${r}`:`sandbox ${r}`},ag=e=>rV(e?.sandbox),nV=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},oV=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"";var G0e=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],aV=["openai","anthropic","ollama","openrouter","mock"];function Y0e(e,t=aV){let r=String(e??"").trim(),n=r.indexOf("/"),o=n>=0?r.slice(0,n):r,a=n>=0?r.slice(n+1):"";if(a.trim()){if(t.includes(o))return{provider:o,model:a};if(t.includes("openrouter"))return{provider:"openrouter",model:r}}let i=G0e.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function X0e(e,t,r=aV){let n=Y0e(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function iV(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:X0e(r,o)}]:[]}))}function Bv(e,{providers:t,qualify:r=!0}){let n=iV(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function sV(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=iV(t,r),i=new Set(a.map(c=>n?c.qualified:c.id)),s=new Map;a.forEach(c=>{let d=n?c.id:c.qualified;s.has(d)||s.set(d,n?c.qualified:c.id)});let l=c=>i.has(c)?c:s.get(c)??c;if(n){let c=e.flatMap(d=>o.get(d)??[l(d)]);return{models:[...new Set(c)],restore:new Map}}let u=new Map;return e.forEach(c=>{let d=l(c);u.set(d,[...u.get(d)||[],c])}),{models:[...u.keys()],restore:u}}function uc(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function Fv(e){return e.join(", ")}function lV(e,t){return[...new Set([...e,...uc(t)])]}function uV(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function cV(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function dV({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var To=G(Y());function Uv({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,To.useState)(""),[f,p]=(0,To.useState)(""),m=(0,To.useRef)(null),y=(0,To.useId)(),x=uc(e),h=(0,To.useRef)(x);h.current=x;let g=S=>{let k=lV(h.current,S);k.length!==h.current.length&&(t(Fv(k)),p(`Added ${k.slice(h.current.length).join(", ")}`)),d("")},v=S=>{t(Fv(h.current.filter(k=>k!==S))),p(`Removed ${S}`),m.current?.focus()},b=(S,k)=>{if(S.includes(",")){let{complete:A,rest:O}=uV(S);g(A),d(O)}else cV(k.nativeEvent?.inputType,S,r)?g(S):d(S.trimStart())},_=S=>{let k=dV(S,c,h.current.length);k==="commit"?(S.preventDefault(),setTimeout(()=>g(m.current?.value||""),0)):k==="removeLast"&&(S.preventDefault(),v(h.current[h.current.length-1]))},w=r.filter(S=>!x.includes(S)),C=[i,a&&`${y}-title`,`${y}-selected`].filter(Boolean).join(" ");return To.default.createElement("div",{"data-testid":u,onClick:S=>{S.target===S.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},x.map(S=>To.default.createElement("span",{key:S,style:Z0e},To.default.createElement("span",{style:{overflowWrap:"anywhere"}},S),To.default.createElement("button",{type:"button",onClick:()=>v(S),"aria-label":`Remove ${S}`,title:`Remove ${S}`,style:J0e},"\xD7"))),To.default.createElement(sl,{inputRef:m,id:s,"aria-label":l,"aria-describedby":C,title:a,value:c,models:w,onChange:b,onKeyDown:_,onBlur:()=>{c.trim()&&g(c)},placeholder:x.length?"Add a model":n,style:{flex:"1 1 80px",minWidth:80,padding:0,border:"none",background:"transparent",font:"inherit",color:"inherit"}}),a&&To.default.createElement("span",{id:`${y}-title`,style:EP},a),To.default.createElement("span",{id:`${y}-selected`,style:EP},x.length?`Chosen: ${x.join(", ")}`:"No models chosen"),To.default.createElement("span",{role:"status","aria-live":"polite",style:EP},f))}var Z0e={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:X,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},J0e={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},EP={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Ht=G(Y());var os=G(Y());var Q0e="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",R0e="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",b2=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Wl=(e,t=!1)=>Xr(e,{estimated:t}),fV=e=>{if(!e)return null;let t=[];if(e.agent){let r=[`agent ${Xr(e.agent.cost,{estimated:e.agent.estimated})}`,zt(e.agent.count,b2(e))];e.agent.perInteraction!=null&&r.push(`${Wl(e.agent.perInteraction,e.agent.estimated)} each`),t.push(r.join(" \xB7 "))}return e.judge&&t.push(`judge ${Xr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${zt(e.judge.calls,"call")}`),t.join(" \xB7 ")};function NP({label:e,value:t,sub:r,title:n,valueColor:o,testId:a,first:i=!1}){return os.default.createElement("div",{"data-testid":a,title:n,style:{padding:"10px 16px",minWidth:0,borderLeft:i?"none":"1px solid var(--color-border-light)"}},os.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},e),os.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),os.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}function Wv({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{agent:n,judge:o,total:a,totalEstimated:i}=e,s=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${un(n.inputTokens)} \xB7 out ${un(n.outputTokens)}`:"",u=o?[zt(o.calls,"call"),zv(o),o.model,Lv(o),"offline"].filter(Boolean).join(" \xB7 "):t&&t!=="rules"?`judge ${t} \xB7 spend not recorded`:"no judge asked \xB7 rules only";return os.default.createElement(Ve,{padding:0,testId:r,style:{overflow:"hidden"}},os.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},os.default.createElement(NP,{first:!0,label:"Agent cost",title:Q0e,value:n?Xr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:"var(--color-text-muted)",sub:n?`${zt(n.count,b2(e))}${n.perInteraction!=null?` \xB7 ${Wl(n.perInteraction,n.estimated)} per interaction`:""}${s}`:"nothing replayed or sampled",testId:"run-spend-agent"}),os.default.createElement(NP,{label:"Judge cost",title:R0e,value:o?Xr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:"var(--color-text-muted)",sub:u,testId:"run-spend-judge"}),os.default.createElement(NP,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:a!=null?Xr(a,{estimated:i}):"\u2014",sub:Xq(e),testId:"run-spend-total"})),i&&os.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},xs))}function w2({run:e,testId:t}){if(!e)return Ht.default.createElement(Te,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Ht.default.createElement(Te,{tone:"error",testId:t},"failed");if(e.status==="pending")return Ht.default.createElement(Te,{tone:"warning",testId:t},"queued");if(e.status==="running")return Ht.default.createElement(Te,{tone:"warning",testId:t},"running");if(e.samples_evaluated)return Ht.default.createElement(Te,{tone:qd(Kq(e)),testId:t},`${Un(e.samples_passed||0,e.samples_evaluated)} passed`);if(e.average_score!=null){let r=Number(e.average_score);return Ht.default.createElement(Te,{tone:r>=.85?"success":r>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${Xo(r)}`)}return Ht.default.createElement(Te,{tone:"muted",testId:t},"no samples")}function exe({run:e,testId:t="run-version"}){let r=Yq(e);return r?Ht.default.createElement(Te,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var pV={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},mV={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},gV=Qa.cost+32,txe=e=>rg(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:No(t.label||"").short||"all samples",passed:t.passed,total:t.samples}));function Hv({runs:e=[],runCount:t=null,evaluation:r,agentName:n,selectedId:o=null,onOpen:a,previousRun:i=null,barsFor:s=null,deltaFor:l=null,title:u="Runs",testId:c="suite-runs-panel"}){let{darkMode:d}=st(),f=e.map((p,m)=>{let y=ng(p,m,e,t),x=e[m+1]||(m===0&&e.length===1?i:null),h=x?Number.isFinite(x.number)?x.number:y-1:null,g=l?l(p,x,h):$v(p,x,{olderNumber:h}),v=g&&x?Gq(p,x):null,b=ji(p);return{run:p,number:y,latest:m===0,when:vo(p.completed_at||p.created_at),meta:[`@${n||r?.agent?.name||"agent"}`,Yd(r,p),eg(r,p),ag(p)&&`against ${ag(p)}`].filter(Boolean).join(" \xB7 "),bars:s?s(p):txe(p),delta:g,version:v,spend:b,selected:p.id===o}});return Ht.default.createElement(En,{title:u,meta:_P(e,t),testId:c,bodyStyle:{overflowX:"auto"}},f.length===0&&Ht.default.createElement(Kn,null,"[ ] no runs yet"),Ht.default.createElement("div",{style:{minWidth:920}},f.map(p=>Ht.default.createElement("div",{key:p.run.id,role:"button",tabIndex:0,"data-testid":"evaluation-run","data-run-id":p.run.id,"data-selected":p.selected?"true":"false",onClick:()=>a?.(p.run),onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),a?.(p.run))},className:p.selected?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:"minmax(220px, 1.4fr) minmax(180px, 1fr) auto",gap:16,alignItems:"center",padding:"10px 14px 10px 12px",borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:p.selected?"var(--color-muted)":void 0,borderLeft:`2px solid ${p.selected?"var(--color-accent-ui)":"transparent"}`}},Ht.default.createElement("div",{style:{minWidth:0}},Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ht.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${p.number}`),Ht.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},p.when),p.latest&&Ht.default.createElement(Te,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),p.run.status==="failed"&&Ht.default.createElement(Te,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(p.run.status==="running"||p.run.status==="pending")&&Ht.default.createElement(Te,{tone:"warning",size:10,style:{padding:"1px 6px"}},p.run.status==="pending"?"queued":"running"),Ht.default.createElement(exe,{run:p.run})),Ht.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},p.meta),p.run.status==="failed"&&p.run.error_message&&Ht.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${p.run.error_message}`)),Ht.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},p.bars.map(m=>m.passed==null||m.total==null?Ht.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Ht.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Ht.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Ht.default.createElement(nq,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Ht.default.createElement(Km,{darkMode:d,cells:[{key:"agent",width:gV,title:p.spend?.agent?`Agent: ${zt(p.spend.agent.count,b2(p.spend))}${p.spend.agent.perInteraction!=null?` \xB7 ${Wl(p.spend.agent.perInteraction,p.spend.agent.estimated)} per interaction`:""}${p.spend.agent.estimated?" \xB7 ~ estimated from tokens \xD7 model rates":""}`:void 0,empty:"Agent cost: nothing replayed or sampled in this run",content:p.spend?.agent?.cost!=null&&Ht.default.createElement("span",{style:{fontFamily:X,fontSize:11}},Ht.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Xr(p.spend.agent.cost,{estimated:p.spend.agent.estimated}))},{key:"judge",width:gV,title:p.spend?.judge?`Judge: ${zt(p.spend.judge.calls,"call")}${zv(p.spend.judge)?` \xB7 ${zv(p.spend.judge)}`:""}${Lv(p.spend.judge)?` \xB7 ${Lv(p.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:p.spend?.judge?.cost!=null&&Ht.default.createElement("span",{style:{fontFamily:X,fontSize:11}},Ht.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),Xr(p.spend.judge.cost,{estimated:p.spend.judge.estimated}))},{key:"delta",width:136,title:p.delta?`Samples passed, against the run before${p.version?` \xB7 ${p.version.text}`:""}`:void 0,empty:"Movement is read once the run completes",content:p.delta&&Ht.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Ht.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,color:pV[p.delta.tone]||pV.muted}},p.delta.text),p.version&&Ht.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:X,fontSize:10,color:mV[p.version.kind]||mV.same}},p.version.text))},{key:"badge",width:132,content:Ht.default.createElement(w2,{run:p.run,testId:p.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Ht.default.createElement(Ra,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var hV=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[zt(n,"run"),r?`latest #${ng(r,0,e,t)} ${vo(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${Un(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var ro=G(Y());function Qd({evaluation:e,run:t=null,keys:r=null,spend:n=null,reportPath:o=null,onDelete:a,deleting:i=!1,deleteLabel:s="Delete evaluation"}){let l=(r||(e.criteria||[]).map(p=>p.key)).map(p=>Dv(e,p)),u={fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},c={fontFamily:X,fontSize:11,color:"var(--color-text-cell)"},d=(p,m,y)=>ro.default.createElement("span",{"data-testid":m,title:y,style:{...u,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},p),f=fV(n);return ro.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},ro.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},ro.default.createElement("span",{style:u},"judge"),ro.default.createElement("span",{style:{...c,fontWeight:600}},eg(e,t)),ro.default.createElement("span",{style:{...u,marginLeft:8}},"criteria"),l.length===0&&ro.default.createElement("span",{style:u},e.judge_kind==="judge_defined"?"defined by the judge on the first run":e.scenario_suite?"each scenario's own expectations":"\u2014"),l.map((p,m)=>ro.default.createElement(ro.default.Fragment,{key:p.key||m},m>0&&ro.default.createElement("span",{style:u},"\xB7"),ro.default.createElement("span",{style:c,title:Rm(p)||void 0},h2(p)),js(p)==="telemetry"&&d("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),js(p)==="judge"&&d("judge",void 0,"Scored by the judge model; needs provider credentials"))),ro.default.createElement("span",{style:{...u,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},hb(.7))),ro.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},ro.default.createElement("span",{style:{...u,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&ro.default.createElement("span",{style:{...u,minWidth:0,textWrap:"pretty"},title:"What this run spent: the agent's replays or sampled interactions, and the judge's own calls"},f),f&&n?.totalEstimated&&ro.default.createElement("span",{style:{...u,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},xs),o&&ro.default.createElement(Ii,{href:ct(o),onClick:()=>It(o),title:"The run rendered as a report page"},"run report"),a&&ro.default.createElement("button",{type:"button",onClick:p=>{p.stopPropagation(),a()},disabled:i,title:"Delete this evaluation and its runs",style:{marginLeft:"auto",background:"transparent",border:"none",padding:0,cursor:i?"not-allowed":"pointer",fontFamily:X,fontSize:11,color:"var(--color-error)",opacity:i?.5:1}},i?"Deleting\u2026":s)))}var rxe=["tools","contains","not_contains"];function nxe(e){let t=e.expectations||{},r=[];return rxe.forEach(n=>{t[n]?.length&&r.push(`${n}: ${t[n].join(", ")}`)}),e.notes&&r.push(`notes: ${e.notes}`),r.push(`key: ${e.key}`),`${e.prompt} | ${r.join(" | ")}`}function yV(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(nxe(n))}),t.join(` -`)}var he=G(Y());var Cr=G(Y());var oxe=e=>e>=.85?"success":e>=.7?"warning":"error";function Kv({label:e,children:t,title:r,nowrap:n=!0}){return Cr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",Cr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function qv({label:e,short:t,provider:r,winner:n=!1,passed:o,total:a,avgScore:i,criteria:s,latencyMs:l,inputTokens:u,outputTokens:c,cost:d,perInteraction:f,estimated:p=!1,judgeCost:m=null,judgeCalls:y=0,judgeEstimated:x=!1,unit:h="interaction",badges:g=[],note:v,testId:b="model-scorecard"}){let _=o!=null&&a>0,w=_?o/a:null,C=_?qd(w):i!=null?oxe(i):"muted",S=ra[C].strong,k=m!=null||y>0;return Cr.default.createElement(Ve,{padding:"14px 16px",testId:b,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},Cr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Cr.default.createElement("span",{style:{fontFamily:X,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&Cr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},r),n&&Cr.default.createElement(Te,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),Cr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},Cr.default.createElement("span",{style:{fontFamily:X,fontSize:26,fontWeight:700,lineHeight:1,color:S},"data-testid":"model-scorecard-headline"},_?Un(o,a):i!=null?Xo(i):"\u2014"),Cr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},_?`${h==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),Cr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Cr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:S,width:`${Math.round((w??i??0)*100)}%`}})),Cr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:X,fontSize:11,color:"var(--color-text-secondary)"}},Cr.default.createElement(Kv,{label:"score"},Xo(i)),s&&Cr.default.createElement(Kv,{label:"criteria"},Un(s.cleared,s.scored)),l!=null&&Cr.default.createElement(Kv,{label:"latency"},to(l)),(u!=null||c!=null)&&Cr.default.createElement("span",{style:{whiteSpace:"nowrap"}},Cr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",Cr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},xP(u))," \xB7 ",Cr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",Cr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},xP(c))),d!=null&&Cr.default.createElement(Kv,{label:"cost",title:`What the agent spent under this model${f!=null?` \u2014 ${Wl(f,p)} per ${h}`:""}${p?` \xB7 ${cp()}`:""}`},Xr(d,{estimated:p}),f!=null&&Cr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Wl(f,p)} / ${h}`)),k&&Cr.default.createElement(Kv,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},Xr(m,{estimated:x}),Cr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${zt(y,"call")}`))),(g.length>0||v)&&Cr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},g.map(A=>Cr.default.createElement(Te,{key:A.text,tone:A.tone,testId:A.testId},A.text)),v&&Cr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:v.color||"var(--color-text-muted)"}},v.text)))}var dr=G(Y());var TP={fontFamily:X,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},OP={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},ig={...OP,fontFamily:X,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},sg={...TP,textAlign:"right"},axe=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function Vv({rows:e=[],unit:t="scenario",judgedBy:r=null,judgeEstimated:n=!1,title:o="Model comparison",testId:a="model-comparison-table"}){if(!e.length)return null;let i=e.some(d=>d.cost!=null),s=e.some(d=>d.judgeCost!=null||d.judgeCalls>0),l=e.some(d=>d.avgTokens!=null),u=e.some(d=>d.avgDurationMs!=null),c=e.some(d=>d.cost!=null&&d.estimated||d.judgeCost!=null&&n);return dr.default.createElement(Ve,{padding:0,style:{overflow:"hidden"},testId:a},dr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},dr.default.createElement(qe,null,o),dr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),c&&dr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},xs)),dr.default.createElement("div",{style:{overflowX:"auto"}},dr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},dr.default.createElement("thead",null,dr.default.createElement("tr",{style:{background:"var(--color-muted)"}},dr.default.createElement("th",{style:TP},"Model"),dr.default.createElement("th",{style:sg},"Passed"),dr.default.createElement("th",{style:sg},"Mean score"),u&&dr.default.createElement("th",{style:sg},"Avg latency"),l&&dr.default.createElement("th",{style:sg,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&dr.default.createElement("th",{style:sg,title:`Cohort spend, and per ${t}`},"Cost"),s&&dr.default.createElement("th",{style:sg,title:"What the judge spent scoring this model's answers"},"Judge"),dr.default.createElement("th",{style:{...TP,width:"34%"}},"Typical fault"))),dr.default.createElement("tbody",null,e.map(d=>{let{short:f,provider:p}=No(d.label,d.provider||"");return dr.default.createElement("tr",{key:d.label,"data-testid":"model-comparison-row","data-model":d.label},dr.default.createElement("td",{style:{...OP,whiteSpace:"nowrap"}},dr.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:d.label},f),d.winner&&dr.default.createElement("span",{style:{marginLeft:6,fontFamily:X,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick"),p&&dr.default.createElement("span",{style:{display:"block",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},p)),dr.default.createElement("td",{style:{...ig,color:axe(d.passRate),fontWeight:600}},Un(d.passed,d.total)),dr.default.createElement("td",{style:ig},Xo(d.avgScore)),u&&dr.default.createElement("td",{style:ig},d.avgDurationMs==null?"\u2014":to(d.avgDurationMs)),l&&dr.default.createElement("td",{style:ig,title:d.avgInputTokens==null?void 0:`${Math.round(d.avgInputTokens)} in \xB7 ${Math.round(d.avgOutputTokens||0)} out per ${t}`},d.avgTokens==null?"\u2014":un(Math.round(d.avgTokens))),i&&dr.default.createElement("td",{style:ig,title:d.cost!=null&&d.estimated?cp():void 0,"data-testid":"model-comparison-cost"},Xr(d.cost,{estimated:d.estimated}),d.costPerInteraction!=null&&dr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},`${Xr(d.costPerInteraction,{estimated:d.estimated})}/${t}`)),s&&dr.default.createElement("td",{style:ig,"data-testid":"model-comparison-judge"},d.judgeCost==null&&!d.judgeCalls?"\u2014":Xr(d.judgeCost,{estimated:n}),d.judgeCalls>0&&dr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},zt(d.judgeCalls,"call"))),dr.default.createElement("td",{style:{...OP,color:d.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},Qq(d)))})))))}var cc=G(Y());async function vV(e,{navigator:t=globalThis.navigator,document:r=globalThis.document}={}){let n=String(e??"");if(t?.clipboard?.writeText)try{return await t.clipboard.writeText(n),!0}catch{}if(!r?.body||typeof r.execCommand!="function")return!1;let o=r.createElement("textarea");o.value=n,o.setAttribute("readonly",""),o.style.position="fixed",o.style.top="0",o.style.left="0",o.style.opacity="0",r.body.appendChild(o);try{return o.select(),typeof o.setSelectionRange=="function"&&o.setSelectionRange(0,n.length),r.execCommand("copy")===!0}catch{return!1}finally{r.body.removeChild(o)}}function Gv({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,cc.useState)("idle"),a=(0,cc.useRef)(null);(0,cc.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await vV(l):!1;o(u?"copied":"failed"),clearTimeout(a.current),a.current=setTimeout(()=>o("idle"),2e3)},s=n==="copied"?"Copied":n==="failed"?"Copy failed":"Copy fix prompt";return cc.default.createElement(de,{size:"sm",variant:"ghost",onClick:i,testId:t,title:"Copy a Markdown brief of this fix \u2014 the scenarios, what they expect, what the agent did, and how to verify \u2014 for your coding harness",style:{padding:"4px 8px",fontSize:12,color:n==="failed"?"var(--color-error)":n==="copied"?"var(--color-success-text)":"var(--color-text-secondary)",...r}},s)}var S2=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var dt=G(Y());var kt=G(Y());var Xv={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},PP={width:"100%",boxSizing:"border-box",padding:"12px 14px",borderRadius:8,border:"1px solid var(--color-border)",background:"var(--color-background)",color:"var(--color-text-primary)",fontFamily:"var(--font-mono)",fontSize:13};function MP({title:e,onClose:t,children:r}){let n=(0,kt.useRef)(null);return(0,kt.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),kt.default.createElement("dialog",{ref:n,className:"aa-fix-dialog","aria-label":e,onCancel:o=>{o.preventDefault(),t()},style:{width:"min(760px, calc(100vw - 32px))",maxHeight:"calc(100dvh - 40px)",boxSizing:"border-box",padding:0,borderRadius:16,border:"1px solid var(--color-border)",background:"var(--color-card, var(--color-background))",color:"var(--color-text-primary)"}},kt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},kt.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),kt.default.createElement("button",{type:"button","aria-label":"Close dialog",onClick:t,style:{background:"none",border:0,color:"var(--color-text-secondary)",cursor:"pointer",fontSize:24}},"\xD7")),kt.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function Yv(e,t="GET",r){let n=await fetch(e,{method:t,headers:r?{"Content-Type":"application/json"}:void 0,body:r?JSON.stringify(r):void 0,cache:"no-store"}),o=await n.json().catch(()=>({}));if(!n.ok)throw new Error(o.error||"Could not connect Claude Code. Please try again.");return o.login}var ixe=e=>e==="expired"?"This sign-in expired. Start again to get a fresh authorization page.":e==="completed"?"Claude Code signed in, but not with a Claude subscription. Start again and choose your Claude.ai account.":"Sign-in did not finish. Start again to retry.";function Rd({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,kt.useState)(null),[i,s]=(0,kt.useState)(!1),[l,u]=(0,kt.useState)(""),[c,d]=(0,kt.useState)(!1),[f,p]=(0,kt.useState)(null),m=(0,kt.useRef)(null),y=(0,kt.useRef)(t);y.current=t,(0,kt.useEffect)(()=>{let v=!1;return Yv(n).then(b=>{v||a(b)}).catch(b=>{v||p(b.message)}),()=>{v=!0}},[n]),(0,kt.useEffect)(()=>{if(!i)return;let v=!1,b,_=async()=>{try{let w=await Yv(n);if(v)return;if(a(w),w.authorize_url&&m.current&&(m.current.location=w.authorize_url,m.current=null),w.logged_in){s(!1),u(""),d(!1),r?.(),y.current?.();return}if(!["starting","awaiting_code","submitted"].includes(w.status)){p(ixe(w.status)),d(!1);return}b=setTimeout(_,1200)}catch(w){v||(p(w.message),d(!1))}};return b=setTimeout(_,300),()=>{v=!0,clearTimeout(b)}},[n,i]);let x=async()=>{p(null),u(""),d(!0),m.current=window.open("about:blank","_blank"),m.current&&(m.current.opener=null);try{a(await Yv(n,"POST")),s(!0)}catch(v){m.current?.close(),m.current=null,p(v.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await Yv(n,"DELETE")),r?.()}catch(v){p(v.message)}finally{d(!1)}},g=async v=>{if(v.preventDefault(),!l.trim()||c)return;let b=l.trim();u(""),d(!0),p(null);try{a(await Yv(`${n}/code`,"POST",{claude_login_code:b}))}catch(_){p(_.message),d(!1)}};return kt.default.createElement("section",{style:Xv,"data-testid":"sandbox-claude-login"},kt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},kt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},kt.default.createElement("strong",null,"Claude Code"),kt.default.createElement(Te,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&kt.default.createElement(de,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),kt.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",color:"var(--color-text-secondary)",margin:"10px 0"}},"Usage counts against your own Claude Pro, Max, or Team plan. Your login stays inside this sandbox and ends when the sandbox stops."),!o?.logged_in&&kt.default.createElement(de,{variant:"primary",onClick:x,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),f&&!i&&kt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},f),i&&kt.default.createElement(MP,{title:"Connect your Claude subscription",onClose:h},kt.default.createElement("p",{style:{margin:0,fontSize:14,lineHeight:"22px",color:"var(--color-text-secondary)"}},"Authorize Claude Code on Claude\u2019s website. Then paste the one-time code below to finish signing in to this sandbox."),kt.default.createElement("div",{style:{...Xv,fontSize:12}},kt.default.createElement("strong",null,e.repository||"Checkout sandbox"),kt.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?kt.default.createElement("a",{href:o.authorize_url,target:"_blank",rel:"noreferrer",style:{color:"var(--color-text-link, var(--color-accent-ui))",fontSize:13}},"Reopen Claude authorization page \u2197"):kt.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),kt.default.createElement("form",{onSubmit:g,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},kt.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),kt.default.createElement("input",{id:`claude-login-code-${e.session_id}`,type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,maxLength:2048,value:l,onChange:v=>u(v.target.value),placeholder:"Paste the code from Claude",style:PP,disabled:c||o?.status!=="awaiting_code"}),kt.default.createElement(de,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),f&&kt.default.createElement(kt.default.Fragment,null,kt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},f),kt.default.createElement(de,{onClick:x,disabled:c},"Start sign-in again")),kt.default.createElement("p",{style:{margin:0,fontSize:12,lineHeight:"18px",color:"var(--color-text-muted)"}},"The code is sent once to Claude Code running in your sandbox. ActiveAgent does not store your Claude subscription token.")))}var Ne=G(Y());var _2=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var ef=(e,t)=>`${e} ${t}${e===1?"":"s"}`,Zv=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},A2=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),xV=e=>String(e??"").replace(/\s+/g," ").trim(),ug=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),lg=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},sxe=e=>{if(e==null||e===""||Number.isNaN(Number(e)))return null;let t=Number(e);return t===0?"$0.00":Math.abs(t)<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`},lxe=e=>{if(e==null||e===""||Number.isNaN(Number(e)))return null;let t=Math.max(0,Number(e));if(t<1e3)return`${Math.round(t)}ms`;if(t<6e4)return`${(t/1e3).toFixed(1).replace(/\.0$/,"")}s`;let r=Math.round(t/1e3);return r<3600?`${Math.floor(r/60)}m ${r%60}s`:`${Math.floor(r/3600)}h ${Math.floor(r%3600/60)}m`},SV=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:ef(Number(t),"turn"),sxe(r),lxe(n)].filter(Boolean).join(" \xB7 "),kV=(e,t=Date.now())=>{if(!e)return null;let r=new Date(e).getTime();if(Number.isNaN(r))return null;let n=Math.ceil((r-t)/6e4);return n<=0?"past its expiry":n<60?`expires in ${n}m`:`expires in ${Math.floor(n/60)}h${n%60?` ${n%60}m`:""}`},Xe=(e,t)=>{let r=i=>Array.isArray(i)?i.filter(Boolean).join(", "):typeof i=="string"?i:"",n=ug(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},uxe={pending:{label:"Queued",tone:"progress"},provisioning:{label:"Booting",tone:"progress"},ready:{label:"Ready",tone:"success"},running:{label:"Running",tone:"success"},completed:{label:"Completed",tone:"neutral"},expired:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}},_V=e=>uxe[e]||{label:A2(e)||"Unknown",tone:"neutral"},C2=e=>["pending","provisioning"].includes(e?.status),AV=e=>e?.status==="ready",cxe={queued:{label:"Queued",tone:"progress"},running:{label:"Running",tone:"progress"},succeeded:{label:"Succeeded",tone:"success"},failed:{label:"Failed",tone:"error"},cancelled:{label:"Cancelled",tone:"neutral"}},tf=e=>cxe[e]||{label:A2(e)||"Unknown",tone:"neutral"},E2=e=>["queued","running"].includes(e?.status),Qv=e=>["succeeded","failed","cancelled"].includes(e?.status),IP=e=>Qv(e)&&e?.diff_pending===!0,jP=e=>Qv(e)&&!IP(e),CV=e=>e?.status==="cancelled"&&jP(e)&&e?.diff==null&&!(Number(e?.event_count)>0),$P=e=>{if(!Qv(e)){let t=Number(e?.event_count)||0;return t>0?ef(t,"event"):""}return SV(null,e)},EV=e=>[tf(e?.status).label,$P(e)].filter(Boolean).join(" \xB7 "),NV=(e,t=80)=>{let r=String(e||"").split(` -`).map(n=>n.trim()).find(Boolean)||"";return Zv(r,t)||"(empty prompt)"},dc=(e,t,r)=>{if(!t||t[r]==null)return e;let n=e.findIndex(a=>a[r]===t[r]);if(n===-1)return[t,...e];let o=e.slice();return o[n]={...e[n],...t},o},TV=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?dc(e,t,r):e,OV=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},PV=(e,t)=>{let r=new Set(t||[]),n={},o=[];return(e||[]).forEach(a=>{!a||a.status==="expired"||a.sandbox_type&&a.sandbox_type!=="app_runtime"||(r.has(a.repository)?(n[a.repository]||=[]).push(a):o.push(a))}),{byRepository:n,others:o}},MV=(e,t)=>{let r=Array.isArray(e)?e:[],n=Array.isArray(t?.events)?t.events:[],o=Math.max(0,Math.min(Number(t?.events_offset)||0,r.length));return[...r.slice(0,o),...n]},$s=(e,t)=>{let r=String(e??"");if(!t)return r;let n=String(t).replace(/\/+$/,"");return r===n?".":r.startsWith(`${n}/`)?r.slice(n.length+1):r},dxe={Bash:e=>e.command,Read:(e,t)=>$s(e.file_path,t),Write:(e,t)=>$s(e.file_path,t),Edit:(e,t)=>$s(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${ef(e.edits.length,"edit")})`:"";return`${$s(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>$s(e.notebook_path,t),NotebookRead:(e,t)=>$s(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${$s(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${$s(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>$s(e.path,t),WebFetch:e=>e.url,WebSearch:e=>e.query,Task:e=>e.description||e.prompt,Agent:e=>e.description||e.prompt,TodoWrite:e=>Array.isArray(e.todos)?ef(e.todos.length,"todo"):"",BashOutput:e=>e.bash_id,KillShell:e=>e.shell_id,KillBash:e=>e.shell_id,Skill:e=>e.skill||e.command,SlashCommand:e=>e.command},fxe=["command","file_path","path","url","query","pattern","description","name","prompt"],pxe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!ug(t))return Zv(xV(typeof t=="string"?t:lg(t)),120);let n=dxe[e],o=n?n(t,r):null;if(o==null||o===""){let a=fxe.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?$s(t[a],r):t[a]:o=Object.keys(t).length?lg(t):""}return Zv(xV(o),120)},mxe=e=>e==null?"":typeof e=="string"?e:Array.isArray(e)?e.map(t=>typeof t=="string"?t:t?.type==="text"?t.text??"":t?.type==="image"?"[image]":lg(t)).join(` -`):lg(e),gxe=(e,{chars:t=600,lines:r=12}={})=>{let n=String(e??"").replace(/\s+$/,""),o=n.split(` + `).concat(x.x,",").concat(x.y),w=Yt(e.id)?yl("recharts-radial-line-"):e.id;return Ea.createElement("text",$l({},n,{dominantBaseline:"central",className:ut("recharts-radial-bar-label",i)}),Ea.createElement("defs",null,Ea.createElement("path",{id:w,d:S})),Ea.createElement("textPath",{xlinkHref:"#".concat(w)},r))},ufe=(e,t,r)=>{var n=e.cx,o=e.cy,a=e.innerRadius,i=e.outerRadius,s=e.startAngle,l=e.endAngle,u=(s+l)/2;if(r==="outside"){var c=Wr(n,o,i+t,u),d=c.x,f=c.y;return{x:d,y:f,textAnchor:d>=n?"start":"end",verticalAnchor:"middle"}}if(r==="center")return{x:n,y:o,textAnchor:"middle",verticalAnchor:"middle"};if(r==="centerTop")return{x:n,y:o,textAnchor:"middle",verticalAnchor:"start"};if(r==="centerBottom")return{x:n,y:o,textAnchor:"middle",verticalAnchor:"end"};var p=(a+i)/2,m=Wr(n,o,p,u),y=m.x,b=m.y;return{x:y,y:b,textAnchor:"middle",verticalAnchor:"middle"}},Mm=e=>e!=null&&"cx"in e&&Oe(e.cx),cfe={angle:0,offset:5,zIndex:Xt.label,position:"middle",textBreakAll:!1};function dfe(e){if(!Mm(e))return e;var t=e.cx,r=e.cy,n=e.outerRadius,o=n*2;return{x:t-n,y:r-n,width:o,upperWidth:o,lowerWidth:o,height:o}}function jl(e){var t,r,n=Kt(e,cfe),o=n.viewBox,a=n.parentViewBox,i=n.position,s=n.value,l=n.children,u=n.content,c=n.className,d=c===void 0?"":c,f=n.textBreakAll,p=n.labelRef,m=afe(),y=lU(),b=i==="center"?y:m??y,h,g,v;o==null?h=b:Mm(o)?h=o:h=qh(o);var x=dfe(h);if(!h||Yt(s)&&Yt(l)&&!(0,oo.isValidElement)(u)&&typeof u!="function")return null;var S=Mm(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(Mm(h))S||(v=ufe(h,n.offset,n.position));else if(x){var w=$b({viewBox:x,position:i,offset:n.offset,parentViewBox:Mm(a)?void 0:a,clamp:!0});v=Id(Id({x:w.x,y:w.y,textAnchor:w.horizontalAnchor,verticalAnchor:w.verticalAnchor},w.width!==void 0?{width:w.width}:{}),w.height!==void 0?{height:w.height}:{})}var A=Id(Id(Id(Id({},((t=v)===null||t===void 0?void 0:t.x)!==void 0?{x:v.x}:{}),((r=v)===null||r===void 0?void 0:r.y)!==void 0?{y:v.y}:{}),n),{},{viewBox:h});if((0,oo.isValidElement)(u)){var k=A.labelRef,_=oU(A,Rde);return(0,oo.cloneElement)(u,_)}if(typeof u=="function"){var C=A.content,E=oU(A,efe);if(g=(0,oo.createElement)(u,E),(0,oo.isValidElement)(g))return g}else g=ife(n);var j=tn(n);return S&&Mm(h)?lfe(n,i,g,j,h):v==null?null:Ea.createElement(Hr,{zIndex:n.zIndex},Ea.createElement(Md,$l({ref:p,className:ut("recharts-label",d)},j,v,{textAnchor:nk(j.textAnchor)?j.textAnchor:v.textAnchor,breakAll:f}),g))}jl.displayName="Label";var ffe=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?Ea.createElement(jl,$l({key:"label-implicit"},n)):ra(e)?Ea.createElement(jl,$l({key:"label-implicit",value:e},n)):(0,oo.isValidElement)(e)?e.type===jl?(0,oo.cloneElement)(e,Id({key:"label-implicit"},n)):Ea.createElement(jl,$l({key:"label-implicit",content:e},n)):Dd(e)?Ea.createElement(jl,$l({key:"label-implicit",content:e},n)):e&&typeof e=="object"?Ea.createElement(jl,$l({},e,{key:"label-implicit"},n)):null};function dU(e){var t=e.label,r=e.labelRef,n=lU();return ffe(t,n,r)||null}var Ll=V(Y()),Im=V(Y());var pfe=["valueAccessor"],mfe=["dataKey","clockWise","id","textBreakAll","zIndex"];function ak(){return ak=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(eU(t))return t},pU=(0,Im.createContext)(void 0),Dm=pU.Provider,mU=(0,Im.createContext)(void 0),gU=mU.Provider;function yfe(){return(0,Im.useContext)(pU)}function vfe(){return(0,Im.useContext)(mU)}function ok(e){var t=e.valueAccessor,r=t===void 0?hfe:t,n=fU(e,pfe),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=fU(n,mfe),c=yfe(),d=vfe(),f=c||d;return!f||!f.length?null:Ll.createElement(Hr,{zIndex:l??Xt.label},Ll.createElement(cr,{className:"recharts-label-list"},f.map((p,m)=>{var y,b=Yt(o)?r(p,m):Nt(p.payload,o),h=Yt(i)?{}:{id:"".concat(i,"-").concat(m)};return Ll.createElement(jl,ak({key:"label-".concat(m)},tn(p),u,h,{fill:(y=n.fill)!==null&&y!==void 0?y:p.fill,parentViewBox:p.parentViewBox,value:b,textBreakAll:s,viewBox:p.viewBox,index:m,zIndex:0}))})))}ok.displayName="LabelList";function ec(e){var t=e.label;return t?t===!0?Ll.createElement(ok,{key:"labelList-implicit"}):Ll.isValidElement(t)||Dd(t)?Ll.createElement(ok,{key:"labelList-implicit",content:t}):typeof t=="object"?Ll.createElement(ok,ak({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var hU=V(Y());function t5(){return t5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=e.cx,r=e.cy,n=e.r,o=e.className,a=ut("recharts-dot",o);return Oe(t)&&Oe(r)&&Oe(n)?hU.createElement("circle",t5({},en(e),Ip(e),{className:a,cx:t,cy:r,r:n})):null};var r5=e=>e.graphicalItems.polarItems,xfe=te([rn,pd],Wy),sk=te([r5,fn,xfe],Hy),bfe=te([sk],Ky),lk=te([bfe,ud],qy),wfe=te([lk,fn,sk],sO),tLe=te([lk,fn,sk],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=Nt(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:Nt(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),yU=()=>{},Sfe=te([lk,fn,sk,Sm,rn,yB],Gy),kfe=te([fn,ES,NS,yU,Sfe,yU,_t,rn],Yy),vU=te([fn,_t,lk,wfe,Lu,rn,kfe],Xy),_fe=te([vU,Td,Ol],Zy),Cfe=te([fn,vU,_fe,rn],Jy),rLe=te([Ol,Cfe],Fw);var Afe={radiusAxis:{},angleAxis:{}},xU=yr({name:"polarAxis",initialState:Afe,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Lt(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Lt(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),uk=xU.actions,iLe=uk.addRadiusAxis,sLe=uk.removeRadiusAxis,lLe=uk.addAngleAxis,uLe=uk.removeAngleAxis;var bU=xU.reducer;function ck(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Dt=V(Y()),Um=V(Y());function wU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function SU(e){for(var t=1;tt,n5=te([r5,Ofe],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),Pfe=[],o5=(e,t,r)=>r?.length===0?Pfe:r,kU=te([ud,n5,o5],(e,t,r)=>{var n=e.chartData;if(t!=null){var o;if(t?.data!=null&&t.data.length>0?o=t.data:o=n,(!o||!o.length)&&r!=null&&(o=r.map(a=>SU(SU({},t.presentationProps),a.props))),o!=null)return o}}),_U=te([kU,n5,o5],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=Nt(n,t.nameKey,t.name),s;return r!=null&&(a=r[o])!==null&&a!==void 0&&(a=a.props)!==null&&a!==void 0&&a.fill?s=r[o].props.fill:typeof n=="object"&&n!=null&&"fill"in n?s=n.fill:s=t.fill,{value:Za(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),CU=te([kU,n5,o5,Nr],(e,t,r,n)=>{if(!(t==null||e==null))return AU({offset:n,pieSettings:t,displayedData:e,cells:r})});var MU=V(Y()),IU=V(TU());var OU=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",PU=null,s5=null,DU=e=>{if(e===PU&&Array.isArray(s5))return s5;var t=[];return MU.Children.forEach(e,r=>{Yt(r)||((0,IU.isFragment)(r)?t=t.concat(DU(r.props.children)):t.push(r))}),s5=t,PU=e,t};function nv(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>OU(o)):n=[OU(t)],DU(e).forEach(o=>{var a=vo(o,"type.displayName")||vo(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var jm=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var $m=V(Y()),ov=V(Y());function jU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function $U(e){for(var t=1;t{var n=wt();return(o,a)=>i=>{e?.(o,a,i),n(DS({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},iv=e=>{var t=wt();return(r,n)=>o=>{e?.(r,n,o),t(E9())}},sv=(e,t,r)=>{var n=wt();return(o,a)=>i=>{e?.(o,a,i),n(N9({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var lv=V(Y());function rc(e){var t=e.tooltipEntrySettings,r=wt(),n=vr(),o=(0,lv.useRef)(null);return(0,lv.useLayoutEffect)(()=>{n||(o.current===null?r(k9(t)):o.current!==t&&r(_9({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,lv.useLayoutEffect)(()=>()=>{o.current&&(r(C9(o.current)),o.current=null)},[r]),null}var nc=V(Y());function Lm(e){var t=e.legendPayload,r=wt(),n=vr(),o=(0,nc.useRef)(null);return(0,nc.useLayoutEffect)(()=>{n||(o.current===null?r(JN(t)):o.current!==t&&r(QN({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,nc.useLayoutEffect)(()=>()=>{o.current&&(r(RN(o.current)),o.current=null)},[r]),null}function zU(e){var t=e.legendPayload,r=wt(),n=Pe(_t),o=(0,nc.useRef)(null);return(0,nc.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(JN(t)):o.current!==t&&r(QN({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,nc.useLayoutEffect)(()=>()=>{o.current&&(r(RN(o.current)),o.current=null)},[r]),null}var UU=V(Y()),dv=V(Y());function Ufe(e,t){return qfe(e)||Kfe(e,t)||Hfe(e,t)||Wfe()}function Wfe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Hfe(e,t){if(e){if(typeof e=="string")return BU(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?BU(e,t):void 0}}function BU(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r2&&arguments[2]!==void 0?arguments[2]:[],n=[];for(var o of r)n.push({status:"removed",prev:o});for(var a=0;ae[Math.floor(a*r)]);return l5(n,t)}function Gfe(e,t){var r=t.map((n,o)=>e[o]);return l5(r,t)}function Yfe(e,t){for(var r=new Map,n=0;n{var p=r(d,f);if(p!=null){var m=n.get(p);if(m!==void 0)return o.add(p),m}}),i=[];for(var s of n){var l=Ufe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return l5(a,t,i)}function cv(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===jd?Vfe(e,t):r===uv?Gfe(e,t):Xfe(e,t,r)}var zm=V(Y());function wk(e,t){var r=(0,zm.useRef)(e),n=(0,zm.useRef)(t.current),o=(0,zm.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,zm.useCallback)(function(i,s){var l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(s===0){o.current=!0;return}s===1&&(n.current=i),s>0&&o.current&&l&&(t.current=i)},[t]);return{startValue:n.current,syncStepValue:a}}function Zfe(e,t){return epe(e)||Rfe(e,t)||Qfe(e,t)||Jfe()}function Jfe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Qfe(e,t){if(e){if(typeof e=="string")return FU(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?FU(e,t):void 0}}function FU(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{typeof e=="function"&&e(),a(!0)},[e]),s=(0,dv.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function ac(e){var t,r=e.animationInput,n=e.animationIdPrefix,o=e.items,a=e.previousItemsRef,i=e.isAnimationActive,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.onAnimationStart,d=e.onAnimationEnd,f=e.animationInterpolateFn,p=e.animationMatchBy,m=e.shouldUpdatePreviousRef,y=e.children,b=e.layout,h=gw(r,n),g=wk(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,x=cv(v,o,p??jd);return UU.createElement(mw,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},S=>{var w=v==null,A=o==null?o:f(x,S,b),k=m?m(S):S>0;return g.syncStepValue(A,S,k),A==null?null:y(A,S,w)})}var KU=V(Y()),c5=V(Y());var Sk=V(Y());var u5;function tpe(e,t){return ape(e)||ope(e,t)||npe(e,t)||rpe()}function rpe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function npe(e,t){if(e){if(typeof e=="string")return WU(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?WU(e,t):void 0}}function WU(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=Sk.useState(()=>yl("uid-")),t=tpe(e,1),r=t[0];return r},kk=(u5=Sk.useId)!==null&&u5!==void 0?u5:ipe;function HU(e,t){var r=kk();return t||(e?"".concat(e,"-").concat(r):r)}var spe=(0,c5.createContext)(void 0),ic=e=>{var t=e.id,r=e.type,n=e.children,o=HU("recharts-".concat(r),t);return KU.createElement(spe.Provider,{value:o},n(o))};var is=V(Y());var lpe={cartesianItems:[],polarItems:[]},qU=yr({name:"graphicalItems",initialState:lpe,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Lt(t.payload))},prepare:kr()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Mo(e).cartesianItems.indexOf(Lt(n));a>-1&&(e.cartesianItems[a]=Lt(o))},prepare:kr()},removeCartesianGraphicalItem:{reducer(e,t){var r=Mo(e).cartesianItems.indexOf(Lt(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:kr()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Lt(t.payload))},prepare:kr()},removePolarGraphicalItem:{reducer(e,t){var r=Mo(e).polarItems.indexOf(Lt(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:kr()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Mo(e).polarItems.indexOf(Lt(n));a>-1&&(e.polarItems[a]=Lt(o))},prepare:kr()}}}),Bm=qU.actions,VU=Bm.addCartesianGraphicalItem,GU=Bm.replaceCartesianGraphicalItem,YU=Bm.removeCartesianGraphicalItem,XU=Bm.addPolarGraphicalItem,ZU=Bm.removePolarGraphicalItem,JU=Bm.replacePolarGraphicalItem;var QU=qU.reducer;var upe=e=>{var t=wt(),r=(0,is.useRef)(null);return(0,is.useLayoutEffect)(()=>{r.current===null?t(VU(e)):r.current!==e&&t(GU({prev:r.current,next:e})),r.current=e},[t,e]),(0,is.useLayoutEffect)(()=>()=>{r.current&&(t(YU(r.current)),r.current=null)},[t]),null},Fm=(0,is.memo)(upe),cpe=e=>{var t=wt(),r=(0,is.useRef)(null);return(0,is.useLayoutEffect)(()=>{r.current===null?t(XU(e)):r.current!==e&&t(JU({prev:r.current,next:e})),r.current=e},[t,e]),(0,is.useLayoutEffect)(()=>()=>{r.current&&(t(ZU(r.current)),r.current=null)},[t]),null},RU=(0,is.memo)(cpe);var dpe=["key"],fpe=["onMouseEnter","onClick","onMouseLeave"],ppe=["id"],mpe=["id"];function $d(){return $d=Object.assign?Object.assign.bind():function(e){for(var t=1;tnv(e.children,Dl),[e.children]),r=Pe(n=>_U(n,e.id,t));return r==null?null:Dt.createElement(zU,{legendPayload:r})}function bpe(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Dt.isValidElement(e)){var t,r=(t=e.props)===null||t===void 0?void 0:t.fill;return typeof r=="string"?r:void 0}var n=e.fill;return typeof n=="string"?n:void 0}}var wpe=Dt.memo(e=>{var t=e.dataKey,r=e.nameKey,n=e.sectors,o=e.stroke,a=e.strokeWidth,i=e.fill,s=e.name,l=e.hide,u=e.tooltipType,c=e.formatter,d=e.id,f=e.activeShape,p=bpe(f),m=n.map(b=>{var h=b.tooltipPayload;return p==null||h==null?h:h.map(g=>pn(pn({},g),{},{color:p,fill:p}))}),y={dataDefinedOnItem:m,getPosition:b=>{var h;return(h=n[Number(b)])===null||h===void 0?void 0:h.tooltipPosition},settings:{stroke:o,strokeWidth:a,fill:i,dataKey:t,nameKey:r,name:Za(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Dt.createElement(rc,{tooltipEntrySettings:y})}),Spe=(e,t)=>e>t?"start":etypeof t=="function"?vn(t(e),r,r*.8):vn(t,r,r*.8),_pe=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=xw(a,i),l=o+vn(e.cx,a,a/2),u=n+vn(e.cy,i,i/2),c=vn(e.innerRadius,s,0),d=kpe(r,e.outerRadius,s),f=e.maxRadius||Math.sqrt(a*a+i*i)/2;return{cx:l,cy:u,innerRadius:c,outerRadius:d,maxRadius:f}},Cpe=(e,t)=>{var r=jr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Ape=(e,t)=>{if(Dt.isValidElement(e))return Dt.cloneElement(e,t);if(typeof e=="function")return e(t);var r=ut("recharts-pie-label-line",typeof e!="boolean"?e.className:""),n=t.key,o=_k(t,dpe);return Dt.createElement(Os,$d({},o,{type:"linear",className:r}))},Epe=(e,t,r)=>{if(Dt.isValidElement(e))return Dt.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Dt.isValidElement(n)))return n;var o=ut("recharts-pie-label-text",ck(e));return Dt.createElement(Md,$d({},t,{alignmentBaseline:"middle",className:o}),n)};function Npe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label,a=r.labelLine,i=r.dataKey;if(!n||!o||!t)return null;var s=en(r),l=qa(o),u=qa(a),c=typeof o=="object"&&"offsetRadius"in o&&typeof o.offsetRadius=="number"&&o.offsetRadius||20,d=t.map((f,p)=>{var m=(f.startAngle+f.endAngle)/2,y=Wr(f.cx,f.cy,f.outerRadius+c,m),b=pn(pn(pn(pn({},s),f),{},{stroke:"none"},l),{},{index:p,textAnchor:Spe(y.x,f.cx)},y),h=pn(pn(pn(pn({},s),f),{},{fill:"none",stroke:f.fill},u),{},{index:p,points:[Wr(f.cx,f.cy,f.outerRadius,m),y],key:"line"});return Dt.createElement(Hr,{zIndex:Xt.label,key:"label-".concat(f.startAngle,"-").concat(f.endAngle,"-").concat(f.midAngle,"-").concat(p)},Dt.createElement(cr,null,a&&Ape(a,h),Epe(o,b,Nt(f,i))))});return Dt.createElement(cr,{className:"recharts-pie-labels"},d)}function Tpe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Dt.createElement(ec,{label:o}):Dt.createElement(Npe,{sectors:t,props:r,showLabels:n})}function Ope(e){var t=e.sectors,r=e.activeShape,n=e.inactiveShape,o=e.allOtherPieProps,a=e.shape,i=e.id,s=e.animationElapsedTime,l=e.isAnimating,u=e.isEntrance,c=Pe(Pi),d=Pe(Cm),f=Pe(KS),p=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,b=_k(o,fpe),h=av(p,o.dataKey,i),g=iv(y),v=sv(m,o.dataKey,i);return t==null||t.length===0?null:Dt.createElement(Dt.Fragment,null,t.map((x,S)=>{if(x?.startAngle===0&&x?.endAngle===0&&t.length!==1)return null;var w=f==null||f===i,A=String(S)===c&&(d==null||o.dataKey===d)&&w,k=c?n:null,_=r&&A?r:k,C=pn(pn({},x),{},{stroke:x.stroke,tabIndex:-1,index:S,isActive:A,animationElapsedTime:s,isAnimating:l,isEntrance:u,[J1]:S,[Q1]:i});return Dt.createElement(cr,$d({key:"sector-".concat(x?.startAngle,"-").concat(x?.endAngle,"-").concat(x.midAngle,"-").concat(S),tabIndex:-1,className:"recharts-pie-sector"},xl(b,x,S),{onMouseEnter:h(x,S),onMouseLeave:g(x,S),onClick:v(x,S)}),Dt.createElement(tc,{option:_??a,DefaultShape:tW,shapeProps:C}))}))}function AU(e){var t,r=e.pieSettings,n=e.displayedData,o=e.cells,a=e.offset,i=r.cornerRadius,s=r.startAngle,l=r.endAngle,u=r.dataKey,c=r.nameKey,d=r.tooltipType,f=Math.abs(r.minAngle),p=Cpe(s,l),m=Math.abs(p),y=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,b=n.filter(k=>Nt(k,u,0)!==0).length,h=(m>=360?b:b-1)*y,g=n.reduce((k,_)=>{var C=Nt(_,u,0);return k+(Oe(C)?C:0)},0),v=f>0&&g>0&&n.some(k=>{var _=Nt(k,u,0),C=(Oe(_)?_:0)/g;return _!==0&&C*m0){var A;w=n.map((k,_)=>{var C=Nt(k,u,0),E=Nt(k,c,_),j=_pe(r,a,k),F=(Oe(C)?C:0)/g,D,z=pn(pn({},k),o&&o[_]&&o[_].props),N=z!=null&&"fill"in z&&typeof z.fill=="string"?z.fill:r.fill;_?D=A.endAngle+jr(p)*y*(C!==0?1:0):D=s;var O=D+jr(p)*((C!==0?x:0)+F*S),$=(D+O)/2,T=(j.innerRadius+j.outerRadius)/2,I=[{name:E,value:C,payload:z,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],P=Wr(j.cx,j.cy,T,$);return A=pn(pn(pn(pn({},r.presentationProps),{},{percent:F,cornerRadius:typeof i=="string"?parseFloat(i):i,name:E,tooltipPayload:I,midAngle:$,middleRadius:T,tooltipPosition:P},z),j),{},{value:C,dataKey:u,startAngle:D,endAngle:O,payload:z,paddingAngle:C!==0?jr(p)*y:0}),A})}return w}function Ppe(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,Um.useMemo)(()=>!t||!r?[]:r.map(a=>({value:a.value,payload:a.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:a.cx,cy:a.cy,innerRadius:a.innerRadius,outerRadius:a.outerRadius,startAngle:a.startAngle,endAngle:a.endAngle,clockWise:!1},fill:a.fill})),[r,t]);return Dt.createElement(gU,{value:t?o:void 0},n)}var Mpe=(e,t)=>{if(e==null)return[];var r=[],n=e.find(a=>a.status!=="removed"),o=n?n.next.startAngle:0;return e.forEach((a,i)=>{if(a.status!=="removed"){var s=i>0?vo(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=hr(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=pn(pn({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=hr(0,a.next.endAngle-a.next.startAngle,t),d=pn(pn({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function Ipe(e){var t,r,n,o,a=e.props,i=e.previousSectorsRef,s=e.id,l=a.sectors,u=a.activeShape,c=a.inactiveShape,d=a.animationInterpolateFn,f=oc(a.onAnimationStart,a.onAnimationEnd),p=f.isAnimating,m=f.handleAnimationStart,y=f.handleAnimationEnd,b=H6();if(b==null)return null;var h=l[0];return Dt.createElement(Ppe,{showLabels:!p,sectors:l},Dt.createElement(ac,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:y,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:b},(g,v,x)=>Dt.createElement(cr,null,Dt.createElement(Ope,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:p||v<1,isEntrance:x}))),Dt.createElement(Tpe,{showLabels:!p,sectors:l,props:a}),Dt.createElement(cU,{cx:(t=h?.cx)!==null&&t!==void 0?t:0,cy:(r=h?.cy)!==null&&r!==void 0?r:0,innerRadius:(n=h?.innerRadius)!==null&&n!==void 0?n:0,outerRadius:(o=h?.outerRadius)!==null&&o!==void 0?o:0,startAngle:a.startAngle,endAngle:a.endAngle,clockWise:!1},a.children))}var Dpe={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Mpe,animationMatchBy:uv,cx:"50%",cy:"50%",dataKey:"value",endAngle:360,fill:"#808080",hide:!1,innerRadius:0,isAnimationActive:"auto",label:!1,labelLine:!0,legendType:"rect",minAngle:0,nameKey:"name",outerRadius:"80%",paddingAngle:0,rootTabIndex:0,shape:tW,startAngle:0,stroke:"#fff",zIndex:Xt.area};function jpe(e){var t=e.id,r=_k(e,ppe),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,Um.useMemo)(()=>nv(e.children,Dl),[e.children]),s=Pe(c=>CU(c,t,i)),l=(0,Um.useRef)(null),u=ut("recharts-pie",o);return n||s==null?(l.current=null,Dt.createElement(cr,{tabIndex:a,className:u})):Dt.createElement(Hr,{zIndex:e.zIndex},Dt.createElement(wpe,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:s,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,formatter:e.formatter,id:t,activeShape:e.activeShape}),Dt.createElement(cr,{tabIndex:a,className:u},Dt.createElement(Ipe,{props:pn(pn({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function $pe(e){var t=Kt(e,Dpe),r=t.id,n=_k(t,mpe),o=en(n);return Dt.createElement(ic,{id:r,type:"pie"},a=>Dt.createElement(Dt.Fragment,null,Dt.createElement(RU,{type:"pie",id:a,data:n.data,dataKey:n.dataKey,hide:n.hide,angleAxisId:0,radiusAxisId:0,name:n.name,nameKey:n.nameKey,tooltipType:n.tooltipType,legendType:n.legendType,fill:n.fill,cx:n.cx,cy:n.cy,startAngle:n.startAngle,endAngle:n.endAngle,paddingAngle:n.paddingAngle,minAngle:n.minAngle,innerRadius:n.innerRadius,outerRadius:n.outerRadius,cornerRadius:n.cornerRadius,presentationProps:o,maxRadius:t.maxRadius}),Dt.createElement(xpe,$d({},n,{id:a})),Dt.createElement(jpe,$d({},n,{id:a}))))}var Ck=$pe;Ck.displayName="Pie";var fv=V(Y()),Ek=V(Y());var Lpe=["points"];function rW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function d5(e){for(var t=1;t{var h,g,v=d5(d5(d5({r:3},i),f),{},{index:b,cx:(h=y.x)!==null&&h!==void 0?h:void 0,cy:(g=y.y)!==null&&g!==void 0?g:void 0,dataKey:a,value:y.value,payload:y.payload,points:t});return fv.createElement(Hpe,{key:"dot-".concat(b),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),fv.createElement(Hr,{zIndex:c},fv.createElement(cr,Ak({className:n},m),p))}var pv=V(Y()),Ok=V(Y());function nW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Tk(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var gW=te([mW,wo,So],(e,t,r)=>{if(!(!e||t==null||r==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,r-e.top-e.bottom)}});var sc=()=>Pe(gW),hW=()=>Pe(U9);function yW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function p5(e){for(var t=1;t{var t=e.point,r=e.childIndex,n=e.mainColor,o=e.activeDot,a=e.dataKey,i=e.clipPath;if(o===!1||t.x==null||t.y==null)return null;var s={index:r,dataKey:a,cx:t.x,cy:t.y,r:4,fill:n??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},l=p5(p5(p5({},s),qa(o)),Ip(o)),u;return(0,Ok.isValidElement)(o)?u=(0,Ok.cloneElement)(o,l):typeof o=="function"?u=o(l):u=pv.createElement(ik,l),pv.createElement(cr,{className:"recharts-active-dot",clipPath:i},u)};function mv(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?Xt.activeDot:i,l=Pe(Pi),u=hW();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return Yt(c)?null:pv.createElement(Hr,{zIndex:s},pv.createElement(Qpe,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function Rpe(e,t){return nme(e)||rme(e,t)||tme(e,t)||eme()}function eme(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tme(e,t){if(e){if(typeof e=="string")return vW(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?vW(e,t):void 0}}function vW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!Yt(n))return vn(n,t,0)},bW=(e,t,r)=>{var n={},o=e.filter(md),a=e.filter(u=>u.stackId==null),i=o.reduce((u,c)=>{var d=u[c.stackId];return d==null&&(d=[]),d.push(c),u[c.stackId]=d,u},n),s=Object.entries(i).map(u=>{var c,d=Rpe(u,2),f=d[0],p=d[1],m=p.map(b=>b.dataKey),y=xW(t,r,(c=p[0])===null||c===void 0?void 0:c.barSize);return{stackId:f,dataKeys:m,barSize:y}}),l=a.map(u=>{var c=[u.dataKey].filter(f=>f!=null),d=xW(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function wW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Pk(e){for(var t=1;tg+(v.barSize||0),0);f+=(i-1)*s,f>=r&&(f-=(i-1)*s,s=0),f>=r&&d>0&&(c=!0,d*=.9,f=i*d);var p=Math.round((r-f)/2),m={offset:p-s,size:0};l=n.reduce((g,v)=>{var x,S={stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(x=v.barSize)!==null&&x!==void 0?x:0}},w=[...g,S];return m=S.position,w},u)}else{var y=vn(t,r,0,!0);r-2*y-(i-1)*s<=0&&(s=0);var b=(r-2*y-(i-1)*s)/i;b>1&&(b=Math.round(b));var h=ht(o)?Math.min(b,o):b;l=n.reduce((g,v,x)=>[...g,{stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:y+i*(b-h)/2+(h+s)*x,size:h}}],u)}return l}}var SW=(e,t,r,n,o,a,i)=>{var s=Yt(i)?t:i,l=sme(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>Pk(Pk({},u),{},{position:Pk(Pk({},u.position),{},{offset:u.position.offset-o/2})}))),l};var kW=(e,t)=>{var r=Bu(t);if(!(!e||r==null||t==null)){var n=t.stackId;if(n!=null){var o=e[n];if(o){var a=o.stackedData;if(a)return a.find(i=>i.key===r)}}}};var _W=(e,t)=>{if(!(e==null||t==null)){var r=e.find(n=>n.stackId===t.stackId&&t.dataKey!=null&&n.dataKeys.includes(t.dataKey));if(r!=null)return r.position}};function CW(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&ht(e.zIndex)?e.zIndex:t}var AW=V(Y());var Mk=e=>{var t=e.chartData,r=wt(),n=vr();return(0,AW.useEffect)(()=>n?()=>{}:(r(QO(t)),()=>{r(QO(void 0))}),[t,r,n]),null};var EW={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},NW=yr({name:"brush",initialState:EW,reducers:{setBrushSettings(e,t){return t.payload==null?EW:t.payload}}}),Dze=NW.actions.setBrushSettings;var TW=NW.reducer;function lme(e){return(e%180+180)%180}var OW=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=lme(o),i=a*Math.PI/180,s=Math.atan(n/r),l=i>s&&i{e.dots.push(t.payload)},removeDot:(e,t)=>{var r=Mo(e).dots.findIndex(n=>n===t.payload);r!==-1&&e.dots.splice(r,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var r=Mo(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(Lt(t.payload))},removeLine:(e,t)=>{var r=Mo(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),Wm=PW.actions,Bze=Wm.addDot,Fze=Wm.removeDot,Uze=Wm.addArea,Wze=Wm.removeArea,Hze=Wm.addLine,Kze=Wm.removeLine;var MW=PW.reducer;var gv=V(Y()),hv=V(Y());function cme(e,t){return mme(e)||pme(e,t)||fme(e,t)||dme()}function dme(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function fme(e,t){if(e){if(typeof e=="string")return IW(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?IW(e,t):void 0}}function IW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,hv.useState)("".concat(yl("recharts"),"-clip")),n=cme(r,1),o=n[0],a=sc();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return gv.createElement(gme.Provider,{value:o},gv.createElement("defs",null,gv.createElement("clipPath",{id:o},gv.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var nn=V(Y()),Wo=V(Y());function jW(){}function m5(e){if(!e||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)==="[object Object]":!1}function $W(e,t,r){return yv(e,t,void 0,void 0,void 0,void 0,r)}function yv(e,t,r,n,o,a,i){let s=i(e,t,r,n,o,a);if(s!==void 0)return s;if(typeof e==typeof t)switch(typeof e){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return e===t;case"number":return e===t||Object.is(e,t);case"function":return e===t;case"object":return vv(e,t,a,i)}return vv(e,t,a,i)}function vv(e,t,r,n){if(Object.is(e,t))return!0;let o=bl(e),a=bl(t);if(o==="[object Arguments]"&&(o=Lp),a==="[object Arguments]"&&(a=Lp),o!==a)return!1;switch(o){case Dp:return e.toString()===t.toString();case jp:return Du(e.valueOf(),t.valueOf());case $p:case Zb:case Xb:return Object.is(e.valueOf(),t.valueOf());case Gb:return e.source===t.source&&e.flags===t.flags;case z$:return e===t}r=r??new Map;let i=r.get(e),s=r.get(t);if(i!=null&&s!=null)return i===t;r.set(e,t),r.set(t,e);try{switch(o){case Jb:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!yv(u,t.get(l),l,e,t,r,n))return!1;return!0;case Qb:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cyv(d,p,void 0,e,t,r,n));if(f===-1)return!1;u.splice(f,1)}return!0}case Rb:case r1:case n1:case o1:case a1:case F$:case i1:case s1:case l1:case U$:case u1:case c1:if(Jh(e)!==Jh(t)||e.length!==t.length)return!1;for(let l=0;le*o)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-o)<=0}function BW(e,t){return Ik(e,t+1)}function FW(e,t,r,n,o){for(var a=(n||[]).slice(),i=t.start,s=t.end,l=0,u=1,c=i,d=function(){var m=n?.[l];if(m===void 0)return{v:Ik(n,u)};var y=l,b,h=()=>(b===void 0&&(b=r(m,y)),b),g=m.coordinate,v=l===0||Ld(e,g,h,c,s);v||(l=0,c=i,u+=1),v&&(c=g+e*(h()/2+o),l+=u)},f;u<=a.length;)if(f=d(),f)return f.v;return[]}function UW(e,t,r,n,o){var a=(n||[]).slice(),i=a.length;if(i===0)return[];for(var s=t.start,l=t.end,u=1;u<=i;u++){for(var c=(i-1)%u,d=s,f=!0,p=function(){var x=n[y];if(x==null)return 0;var S=y,w,A=()=>(w===void 0&&(w=r(x,S)),w),k=x.coordinate,_=y===c||Ld(e,k,A,d,l);if(!_)return f=!1,1;_&&(d=k+e*(A()/2+o))},m,y=c;y(y===void 0&&(y=r(p,f)),y);if(f===i-1){var h=e*(m.coordinate+e*b()/2-l);a[f]=m=Uo(Uo({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[f]=m=Uo(Uo({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var g=Ld(e,m.tickCoord,b,s,l);g&&(l=m.tickCoord-e*(b()/2+o),a[f]=Uo(Uo({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function bme(e,t,r,n,o,a){var i=(n||[]).slice(),s=i.length,l=t.start,u=t.end;if(a){var c=n[s-1];if(c!=null){var d=r(c,s-1),f=e*(c.coordinate+e*d/2-u);if(i[s-1]=c=Uo(Uo({},c),{},{tickCoord:f>0?c.coordinate-f*e:c.coordinate}),c.tickCoord!=null){var p=Ld(e,c.tickCoord,()=>d,l,u);p&&(u=c.tickCoord-e*(d/2+o),i[s-1]=Uo(Uo({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,y=function(g){var v=i[g];if(v==null)return 1;var x=v,S,w=()=>(S===void 0&&(S=r(v,g)),S);if(g===0){var A=e*(x.coordinate-e*w()/2-l);i[g]=x=Uo(Uo({},x),{},{tickCoord:A<0?x.coordinate-A*e:x.coordinate})}else i[g]=x=Uo(Uo({},x),{},{tickCoord:x.coordinate});if(x.tickCoord!=null){var k=Ld(e,x.tickCoord,w,l,u);k&&(l=x.tickCoord+e*(w()/2+o),i[g]=Uo(Uo({},x),{},{isShow:!0}))}},b=0;b{var A=typeof u=="function"?u(S.value,w):S.value;return m==="width"?LW(Pd(A,{fontSize:t,letterSpacing:r}),y,d):Pd(A,{fontSize:t,letterSpacing:r})[m]},h=o[0],g=o[1],v=o.length>=2&&h!=null&&g!=null?jr(g.coordinate-h.coordinate):1,x=zW(a,v,m);return l==="equidistantPreserveStart"?FW(v,x,b,o,i):l==="equidistantPreserveEnd"?UW(v,x,b,o,i):(l==="preserveStart"||l==="preserveStartEnd"?p=bme(v,x,b,o,i,l==="preserveStartEnd"):p=xme(v,x,b,o,i),p.filter(S=>S.isShow))}var HW=e=>{var t=e.ticks,r=e.label,n=e.labelGapWithTick,o=n===void 0?5:n,a=e.tickSize,i=a===void 0?0:a,s=e.tickMargin,l=s===void 0?0:s,u=0;if(t){Array.from(t).forEach(p=>{if(p){var m=p.getBoundingClientRect();m.width>u&&(u=m.width)}});var c=r?r.getBoundingClientRect().width:0,d=i+l,f=u+d+c+(r?o:0);return Math.round(f)}return 0};var KW=e=>{var t=e.ticks,r=e.label,n=e.labelGapWithTick,o=n===void 0?5:n,a=e.tickSize,i=a===void 0?0:a,s=e.tickMargin,l=s===void 0?0:s,u=0;if(t){Array.from(t).forEach(p=>{if(p){var m=p.getBoundingClientRect();m.height>u&&(u=m.height)}});var c=r?r.getBoundingClientRect().height:0,d=i+l,f=u+d+c+(r?o:0);return Math.round(f)}return 0};var wme={xAxis:{},yAxis:{}},qW=yr({name:"renderedTicks",initialState:wme,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=Lt(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),VW=qW.actions,GW=VW.setRenderedTicks,YW=VW.removeRenderedTicks;var XW=qW.reducer;var Sme=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function ZW(e,t){return Ame(e)||Cme(e,t)||_me(e,t)||kme()}function kme(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _me(e,t){if(e){if(typeof e=="string")return JW(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?JW(e,t):void 0}}function JW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{if(!(n==null||r==null)){var i=t.map(l=>({value:l.value,coordinate:l.coordinate,offset:l.offset,index:l.index})),s=a.current;s!=null&&s.axisId===n&&s.axisType===r&&g5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(GW({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,Wo.useEffect)(()=>n==null||r==null?na:()=>{o(YW({axisId:n,axisType:r}))},[o,n,r]),null}var zme=(0,Wo.forwardRef)((e,t)=>{var r=e.ticks,n=r===void 0?[]:r,o=e.tick,a=e.tickLine,i=e.stroke,s=e.tickFormatter,l=e.unit,u=e.padding,c=e.tickTextProps,d=e.orientation,f=e.mirror,p=e.x,m=e.y,y=e.width,b=e.height,h=e.tickSize,g=e.tickMargin,v=e.fontSize,x=e.letterSpacing,S=e.getTicksConfig,w=e.events,A=e.axisType,k=e.axisId,_=xv(En(En({},S),{},{ticks:n}),v,x),C=en(S),E=qa(o),j=nk(C.textAnchor)?C.textAnchor:Dme(d,f),F=jme(d,f),D={};typeof a=="object"&&(D=a);var z=En(En({},C),{},{fill:"none"},D),N=_.map(T=>En({entry:T},Ime(T,p,m,y,b,d,h,f,g))),O=N.map(T=>{var I=T.entry,P=T.line;return nn.createElement(cr,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(I.value,"-").concat(I.coordinate,"-").concat(I.tickCoord)},a&&nn.createElement("line",zd({},z,P,{className:ut("recharts-cartesian-axis-tick-line",vo(a,"className"))})))}),$=N.map((T,I)=>{var P,H,Q=T.entry,K=T.tick,ue=En(En(En(En({verticalAnchor:F},C),{},{textAnchor:j,stroke:"none",fill:i},K),{},{index:I,payload:Q,visibleTicksCount:_.length,tickFormatter:s,padding:u},c),{},{angle:(P=(H=c?.angle)!==null&&H!==void 0?H:C.angle)!==null&&P!==void 0?P:0}),pe=En(En({},ue),E);return nn.createElement(cr,zd({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(Q.value,"-").concat(Q.coordinate,"-").concat(Q.tickCoord)},xl(w,Q,I)),o&&nn.createElement($me,{option:o,tickProps:pe,value:"".concat(typeof s=="function"?s(Q.value,I):Q.value).concat(l||"")}))});return nn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(A,"-ticks")},nn.createElement(Lme,{ticks:_,axisId:k,axisType:A}),$.length>0&&nn.createElement(Hr,{zIndex:Xt.label},nn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(A,"-tick-labels"),ref:t},$)),O.length>0&&nn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(A,"-tick-lines")},O))}),Bme=(0,Wo.forwardRef)((e,t)=>{var r=e.axisLine,n=e.width,o=e.height,a=e.className,i=e.hide,s=e.ticks,l=e.axisType,u=e.axisId,c=Eme(e,Sme),d=(0,Wo.useState)(""),f=ZW(d,2),p=f[0],m=f[1],y=(0,Wo.useState)(""),b=ZW(y,2),h=b[0],g=b[1],v=(0,Wo.useRef)(null);(0,Wo.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var S;return HW({ticks:v.current,label:(S=e.labelRef)===null||S===void 0?void 0:S.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})},getCalculatedHeight:()=>{var S;return KW({ticks:v.current,label:(S=e.labelRef)===null||S===void 0?void 0:S.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var x=(0,Wo.useCallback)(S=>{if(S){var w=S.getElementsByClassName("recharts-cartesian-axis-tick-value");v.current=w;var A=w[0];if(A){var k=window.getComputedStyle(A),_=k.fontSize,C=k.letterSpacing;(_!==p||C!==h)&&(m(_),g(C))}}},[p,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:nn.createElement(Hr,{zIndex:e.zIndex},nn.createElement(cr,{className:ut("recharts-cartesian-axis",a)},nn.createElement(Mme,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:en(e)}),nn.createElement(zme,{ref:x,axisType:l,events:c,fontSize:p,getTicksConfig:e,height:e.height,letterSpacing:h,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:u}),nn.createElement(sU,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},nn.createElement(dU,{label:e.label,labelRef:e.labelRef}),e.children)))}),bv=nn.forwardRef((e,t)=>{var r=Kt(e,Di);return nn.createElement(Bme,zd({},r,{ref:t}))});bv.displayName="CartesianAxis";var Nn=V(Y());var Dk=V(Y());var RW={grid:{stroke:"#ccc",fill:"none"}};var eH=(0,Dk.createContext)(RW),YBe=eH.Provider,tH=()=>(0,Dk.useContext)(eH);var Fme=["x1","y1","x2","y2","key"],Ume=["offset"],Wme=["xAxisId","yAxisId"],Hme=["xAxisId","yAxisId"];function rH(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Ho(e){for(var t=1;t{var t=e.fill;if(!t||t==="none")return null;var r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.ry;return Nn.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function nH(e){var t=e.option,r=e.lineItemProps,n;if(Nn.isValidElement(t))n=Nn.cloneElement(t,r);else if(typeof t=="function")n=t(r);else{var o,a=r.x1,i=r.y1,s=r.x2,l=r.y2,u=r.key,c=jk(r,Fme),d=(o=en(c))!==null&&o!==void 0?o:{},f=d.offset,p=jk(d,Ume),m=Array.isArray(p.strokeDasharray)?p.strokeDasharray.join(","):p.strokeDasharray;n=Nn.createElement("line",Bd({},p,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function Xme(e){var t=e.x,r=e.width,n=e.horizontal,o=n===void 0?!0:n,a=e.horizontalPoints;if(!o||!a||!a.length)return null;var i=e.xAxisId,s=e.yAxisId,l=jk(e,Wme),u=a.map((c,d)=>{var f=Ho(Ho({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return Nn.createElement(nH,{key:"line-".concat(d),option:o,lineItemProps:f})});return Nn.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function Zme(e){var t=e.y,r=e.height,n=e.vertical,o=n===void 0?!0:n,a=e.verticalPoints;if(!o||!a||!a.length)return null;var i=e.xAxisId,s=e.yAxisId,l=jk(e,Hme),u=a.map((c,d)=>{var f=Ho(Ho({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return Nn.createElement(nH,{option:o,lineItemProps:f,key:"line-".concat(d)})});return Nn.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function Jme(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.horizontalPoints,l=e.horizontal,u=l===void 0?!0:l;if(!u||!t||!t.length||s==null)return null;var c=s.map(f=>Math.round(f+o-o)).sort((f,p)=>f-p);o!==c[0]&&c.unshift(0);var d=c.map((f,p)=>{var m=c[p+1],y=m==null,b=y?o+i-f:m-f;if(b<=0)return null;var h=p%t.length;return Nn.createElement("rect",{key:"react-".concat(p),y:f,x:n,height:b,width:a,stroke:"none",fill:t[h],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return Nn.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function Qme(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,o=e.fillOpacity,a=e.x,i=e.y,s=e.width,l=e.height,u=e.verticalPoints;if(!r||!n||!n.length)return null;var c=u.map(f=>Math.round(f+a-a)).sort((f,p)=>f-p);a!==c[0]&&c.unshift(0);var d=c.map((f,p)=>{var m=c[p+1],y=m==null,b=y?a+s-f:m-f;if(b<=0)return null;var h=p%n.length;return Nn.createElement("rect",{key:"react-".concat(p),x:f,y:i,width:b,height:l,stroke:"none",fill:n[h],fillOpacity:o,className:"recharts-cartesian-grid-bg"})});return Nn.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var Rme=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return WN(xv(Ho(Ho(Ho({},Di),r),{},{ticks:HN(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},ege=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return WN(xv(Ho(Ho(Ho({},Di),r),{},{ticks:HN(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},tge={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Xt.grid};function zl(e){var t,r,n,o,a,i,s=Xp(),l=Zp(),u=nw(),c=Ho(Ho({},Kt(e,tge)),{},{x:Oe(e.x)?e.x:u.left,y:Oe(e.y)?e.y:u.top,width:Oe(e.width)?e.width:u.width,height:Oe(e.height)?e.height:u.height}),d=c.xAxisId,f=c.yAxisId,p=c.x,m=c.y,y=c.width,b=c.height,h=c.syncWithTicks,g=c.horizontalValues,v=c.verticalValues,x=vr(),S=Pe(O=>TO(O,"xAxis",d,x)),w=Pe(O=>TO(O,"yAxis",f,x)),A=tH(),k={stroke:(t=c.stroke)!==null&&t!==void 0?t:A.grid.stroke,strokeWidth:(r=c.strokeWidth)!==null&&r!==void 0?r:A.grid.strokeWidth,strokeOpacity:(n=c.strokeOpacity)!==null&&n!==void 0?n:A.grid.strokeOpacity,strokeDasharray:(o=c.strokeDasharray)!==null&&o!==void 0?o:A.grid.strokeDasharray};if(!ba(y)||!ba(b)||!Oe(p)||!Oe(m))return null;var _=c.verticalCoordinatesGenerator||Rme,C=c.horizontalCoordinatesGenerator||ege,E=c.horizontalPoints,j=c.verticalPoints;if((!E||!E.length)&&typeof C=="function"){var F=g&&g.length,D=C({yAxis:w?Ho(Ho({},w),{},{ticks:F?g:w.ticks}):void 0,width:s??y,height:l??b,offset:u},F?!0:h);Yp(Array.isArray(D),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof D,"]")),Array.isArray(D)&&(E=D)}if((!j||!j.length)&&typeof _=="function"){var z=v&&v.length,N=_({xAxis:S?Ho(Ho({},S),{},{ticks:z?v:S.ticks}):void 0,width:s??y,height:l??b,offset:u},z?!0:h);Yp(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(j=N)}return Nn.createElement(Hr,{zIndex:c.zIndex},Nn.createElement("g",{className:"recharts-cartesian-grid"},Nn.createElement(Yme,{fill:(a=c.fill)!==null&&a!==void 0?a:A.grid.fill,fillOpacity:(i=c.fillOpacity)!==null&&i!==void 0?i:A.grid.fillOpacity,x:c.x,y:c.y,width:c.width,height:c.height,ry:c.ry}),Nn.createElement(Jme,Bd({},c,{horizontalPoints:E})),Nn.createElement(Qme,Bd({},c,{verticalPoints:j})),Nn.createElement(Xme,Bd({},c,k,{offset:u,horizontalPoints:E,xAxis:S,yAxis:w})),Nn.createElement(Zme,Bd({},c,k,{offset:u,verticalPoints:j,xAxis:S,yAxis:w}))))}zl.displayName="CartesianGrid";var fr=V(Y()),Bl=V(Y());var oH=V(Y());var rge=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function h5(){return h5=Object.assign?Object.assign.bind():function(e){for(var t=1;tp+m,0);if(!o)return aH(t,e);for(var a=Math.floor(e/o),i=e%o,s=[],l=0,u=0;li){s=[...n.slice(0,l),i-u];break}}var f=s.length%2===0?[0,t]:[t];return[...sge(n,a),...s,...f].map(p=>"".concat(p,"px")).join(", ")}function uge(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return lge(r,t,n)}return aH(t,r)}function iH(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=nge(e,rge),l=i??!1,u;if(o!=null){var c,d=s.pathRef,f=age((c=d?.current)!==null&&c!==void 0?c:null);u=uge(a,f,o)}else a!=null&&(u=String(a));return oH.createElement(Os,h5({},s,{connectNulls:l,strokeDasharray:u}))}var Fd=V(Y());function sH(e){var t=(0,Fd.useRef)(0),r=(0,Fd.useRef)(0),n=(0,Fd.useRef)(!1),o=(0,Fd.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,Fd.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(bi(t.current+a*i),i);return a>0&&i>0&&(r.current=Math.max(r.current,s),s>=i)?(n.current=!0,null):s},[])}var cH=V(Y()),wv=V(Y());var cge={},lH=yr({name:"errorBars",initialState:cge,reducers:{addErrorBar:(e,t)=>{var r=t.payload,n=r.itemId,o=r.errorBar;e[n]||(e[n]=[]),e[n].push(o)},replaceErrorBar:(e,t)=>{var r=t.payload,n=r.itemId,o=r.prev,a=r.next;e[n]&&(e[n]=e[n].map(i=>i.dataKey===o.dataKey&&i.direction===o.direction?a:i))},removeErrorBar:(e,t)=>{var r=t.payload,n=r.itemId,o=r.errorBar;e[n]&&(e[n]=e[n].filter(a=>a.dataKey!==o.dataKey||a.direction!==o.direction))}}}),y5=lH.actions,y7e=y5.addErrorBar,v7e=y5.replaceErrorBar,x7e=y5.removeErrorBar;var uH=lH.reducer;var dge=["children"];function fge(e,t){if(e==null)return{};var r,n,o=pge(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},gge=(0,wv.createContext)(mge);function $k(e){var t=e.children,r=fge(e,dge);return cH.createElement(gge.Provider,{value:r},t)}var v5=V(Y());function Ud(e,t){var r,n,o=Pe(u=>Ls(u,e)),a=Pe(u=>zs(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:Ln.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:zn.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function Hm(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=sc(),a=Ud(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=Pe(v=>xO(v,t,!1)),c=Pe(v=>bO(v,r,!1));if(!l||!o)return null;var d=o.x,f=o.y,p=o.width,m=o.height,y=i&&u?Math.min(u[0],u[1]):d-p/2,b=s&&c?Math.min(c[0],c[1]):f-m/2,h=i&&u?Math.abs(u[1]-u[0]):p*2,g=s&&c?Math.abs(c[1]-c[0]):m*2;return v5.createElement("clipPath",{id:"clipPath-".concat(n)},v5.createElement("rect",{x:y,y:b,width:h,height:g}))}var dH=(e,t,r,n)=>ni(e,"xAxis",t,n),fH=(e,t,r,n)=>ri(e,"xAxis",t,n),pH=(e,t,r,n)=>ni(e,"yAxis",r,n),mH=(e,t,r,n)=>ri(e,"yAxis",r,n),hge=te([_t,dH,pH,fH,mH],(e,t,r,n,o)=>Bo(e,"xAxis")?Ci(t,n,!1):Ci(r,o,!1)),yge=(e,t,r,n,o)=>o;function vge(e){return e.type==="line"}var xge=te([Vu,yge],(e,t)=>e.filter(vge).find(r=>r.id===t)),gH=te([_t,dH,pH,fH,mH,xge,hge,cd],(e,t,r,n,o,a,i,s)=>{var l=s.chartData,u=s.dataStartIndex,c=s.dataEndIndex;if(!(a==null||t==null||r==null||n==null||o==null||n.length===0||o.length===0||i==null||e!=="horizontal"&&e!=="vertical")){var d=a.dataKey,f=a.data,p;if(f!=null&&f.length>0?p=f:p=l?.slice(u,c+1),p!=null)return hH({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:p})}});function Lk(e){var t=qa(e),r=3,n=2;if(t!=null){var o=t.r,a=t.strokeWidth,i=Number(o),s=Number(a);return(Number.isNaN(i)||i<0)&&(i=r),(Number.isNaN(s)||s<0)&&(s=n),{r:i,strokeWidth:s}}return{r,strokeWidth:n}}var bge=["id"],wge=["type","layout","connectNulls","needClip","shape","strokeDasharray"],Sge=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function zk(){return zk=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var Tge=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=Nge(e),n=[];for(var o of e)if(o.status==="matched")n.push(Bs(Bs({},o.next),{},{x:hr(o.prev.x,o.next.x,t),y:hr(o.prev.y,o.next.y,t)}));else if(o.status==="added")if(o.next.x!=null){var a=o.next.x-r;n.push(Bs(Bs({},o.next),{},{x:hr(a,o.next.x,t),y:o.next.y}))}else n.push(o.next);else if(o.status==="removed"&&o.prev.x!=null){var i=o.prev.x+r;n.push(Bs(Bs({},o.prev),{},{x:hr(o.prev.x,i,t),y:o.prev.y}))}return n},w5={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Tge,animationMatchBy:jd,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:iH,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Xt.line,type:"linear"},Oge=e=>{var t=e.dataKey,r=e.name,n=e.stroke,o=e.legendType,a=e.hide;return[{inactive:a,dataKey:t,type:o,color:n,value:Za(r,t),payload:e}]},Pge=fr.memo(e=>{var t=e.dataKey,r=e.data,n=e.stroke,o=e.strokeWidth,a=e.fill,i=e.name,s=e.hide,l=e.unit,u=e.formatter,c=e.tooltipType,d=e.id,f={dataDefinedOnItem:r,getPosition:na,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Za(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return fr.createElement(rc,{tooltipEntrySettings:f})});function Mge(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=b5(n,bge),u=en(l);return fr.createElement(Nk,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function Ige(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,Bl.useMemo)(()=>n?.map(a=>{var i,s,l={x:(i=a.x)!==null&&i!==void 0?i:0,y:(s=a.y)!==null&&s!==void 0?s:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Bs(Bs({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return fr.createElement(Dm,{value:t?o:void 0},r)}function Dge(e){var t=e.clipPathId,r=e.pathRef,n=e.points,o=e.props,a=e.animationElapsedTime,i=e.isAnimating,s=e.isEntrance,l=e.visibleLength,u=o.type,c=o.layout,d=o.connectNulls,f=o.needClip,p=o.shape,m=o.strokeDasharray,y=b5(o,wge),b=Bs(Bs({},tn(y)),{},{fill:"none",className:"recharts-line-curve",clipPath:f?"url(#clipPath-".concat(t,")"):void 0,points:n,type:u,layout:c,connectNulls:d,strokeDasharray:m??o.strokeDasharray,pathRef:r,animationElapsedTime:a,isAnimating:i,isEntrance:o.animateNewValues?s:!1,visibleLength:l});return fr.createElement(fr.Fragment,null,n?.length>1&&fr.createElement(tc,{option:p,DefaultShape:w5.shape,shapeProps:b}),fr.createElement(Mge,{points:n,clipPathId:t,props:o}))}function jge(e){var t=e.clipPathId,r=e.props,n=e.pathRef,o=e.previousPointsRef,a=r.points,i=r.isAnimationActive,s=r.animationBegin,l=r.animationDuration,u=r.animationEasing,c=r.animationMatchBy,d=r.animationInterpolateFn,f=r.layout,p=Ege(n.current),m=oc(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,b=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=sH(a),x=(0,Bl.useCallback)(S=>S>0&&p>0,[p]);return fr.createElement(Ige,{points:a,showLabels:g},r.children,fr.createElement(ac,{animationInput:a,animationIdPrefix:"recharts-line-",items:a,previousItemsRef:o,isAnimationActive:i,animationBegin:s,animationDuration:l,animationEasing:u,onAnimationStart:b,onAnimationEnd:h,animationInterpolateFn:d,animationMatchBy:c,shouldUpdatePreviousRef:x,layout:f},(S,w,A)=>{var k=y||w<1,_=k?v(w,p):null;return fr.createElement(Dge,{props:r,points:S,clipPathId:t,pathRef:n,animationElapsedTime:w,isAnimating:k,isEntrance:A,visibleLength:_})}),fr.createElement(ec,{label:r.label}))}function $ge(e){var t=e.clipPathId,r=e.props,n=(0,Bl.useRef)(null),o=(0,Bl.useRef)(null);return fr.createElement(jge,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var Lge=(e,t)=>{var r,n;return{x:(r=e.x)!==null&&r!==void 0?r:void 0,y:(n=e.y)!==null&&n!==void 0?n:void 0,value:e.value,errorVal:Nt(e.payload,t)}},x5=class extends Bl.Component{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.xAxisId,s=t.yAxisId,l=t.top,u=t.left,c=t.width,d=t.height,f=t.id,p=t.needClip,m=t.zIndex;if(r)return null;var y=ut("recharts-line",a),b=f,h=Lk(n),g=h.r,v=h.strokeWidth,x=jm(n),S=g*2+v,w=p?"url(#clipPath-".concat(x?"":"dots-").concat(b,")"):void 0;return fr.createElement(Hr,{zIndex:m},fr.createElement(cr,{className:y},p&&fr.createElement("defs",null,fr.createElement(Hm,{clipPathId:b,xAxisId:i,yAxisId:s}),!x&&fr.createElement("clipPath",{id:"clipPath-dots-".concat(b)},fr.createElement("rect",{x:u-S/2,y:l-S/2,width:c+S,height:d+S}))),fr.createElement($k,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:Lge,errorBarOffset:0},fr.createElement($ge,{props:this.props,clipPathId:b}))),fr.createElement(mv,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}};function zge(e){var t=Kt(e,w5),r=t.activeDot,n=t.animateNewValues,o=t.animationBegin,a=t.animationDuration,i=t.animationEasing,s=t.connectNulls,l=t.dot,u=t.hide,c=t.isAnimationActive,d=t.label,f=t.legendType,p=t.xAxisId,m=t.yAxisId,y=t.id,b=b5(t,Sge),h=Ud(p,m),g=h.needClip,v=sc(),x=Sa(),S=vr(),w=Pe(E=>gH(E,p,m,S,y));if(x!=="horizontal"&&x!=="vertical"||w==null||v==null)return null;var A=v.height,k=v.width,_=v.x,C=v.y;return fr.createElement(x5,zk({},b,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:o,animationDuration:a,animationEasing:i,isAnimationActive:c,hide:u,label:d,legendType:f,xAxisId:p,yAxisId:m,points:w,layout:x,height:A,width:k,left:_,top:C,needClip:g}))}function hH(e){var t=e.layout,r=e.xAxis,n=e.yAxis,o=e.xAxisTicks,a=e.yAxisTicks,i=e.dataKey,s=e.bandSize,l=e.displayedData;return l.map((u,c)=>{var d=Nt(u,i);if(t==="horizontal"){var f=Wp({axis:r,ticks:o,bandSize:s,entry:u,index:c}),p=Yt(d)?null:n.scale.map(d);return{x:f,y:p??null,value:d,payload:u}}var m=Yt(d)?null:r.scale.map(d),y=Wp({axis:n,ticks:a,bandSize:s,entry:u,index:c});return m==null||y==null?null:{x:m,y,value:d,payload:u}}).filter(Boolean)}function Bge(e){var t=Kt(e,w5),r=vr();return fr.createElement(ic,{id:t.id,type:"line"},n=>fr.createElement(fr.Fragment,null,fr.createElement(Lm,{legendPayload:Oge(t)}),fr.createElement(Pge,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:n}),fr.createElement(Fm,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),fr.createElement(zge,zk({},t,{id:n}))))}var Bk=fr.memo(Bge,ka);Bk.displayName="Line";var ir=V(Y()),Wd=V(Y());function ji(e,t){var r,n;return(r=(n=e.graphicalItems.cartesianItems.find(o=>o.id===t))===null||n===void 0?void 0:n.xAxisId)!==null&&r!==void 0?r:f5}function $i(e,t){var r,n;return(r=(n=e.graphicalItems.cartesianItems.find(o=>o.id===t))===null||n===void 0?void 0:n.yAxisId)!==null&&r!==void 0?r:f5}var vH=(e,t,r)=>ni(e,"xAxis",ji(e,t),r),xH=(e,t,r)=>ri(e,"xAxis",ji(e,t),r),bH=(e,t,r)=>ni(e,"yAxis",$i(e,t),r),wH=(e,t,r)=>ri(e,"yAxis",$i(e,t),r),Fge=te([_t,vH,bH,xH,wH],(e,t,r,n,o)=>Bo(e,"xAxis")?Ci(t,n,!1):Ci(r,o,!1)),Uge=(e,t)=>t,S5=te([Vu,Uge],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),SH=e=>{var t=_t(e),r=Bo(t,"xAxis");return r?"yAxis":"xAxis"},Wge=(e,t)=>{var r=SH(e);return r==="yAxis"?$i(e,t):ji(e,t)},kH=(e,t,r)=>wm(e,SH(e),Wge(e,t),r),Hge=te([S5,kH],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Bu(e);if(!(n==null||o==null)){var a=(r=t[n])===null||r===void 0?void 0:r.stackedData,i=a?.find(s=>s.key===o);if(i!=null)return i.map(s=>[s[0],s[1]])}}}),Kge=te([S5,kH],(e,t)=>{if(!(e==null||e.stackId==null||t==null)){var r=t[e.stackId];if(r!=null)return r.graphicalItems.map(n=>n.dataKey).filter(ro)}}),_H=te([_t,vH,bH,xH,wH,Hge,Cw,Fge,S5,TB,Kge],(e,t,r,n,o,a,i,s,l,u,c)=>{var d=i.chartData,f=i.dataStartIndex,p=i.dataEndIndex;if(!(l==null||e!=="horizontal"&&e!=="vertical"||t==null||r==null||n==null||o==null||n.length===0||o.length===0||s==null)){var m=l.data,y;if(m&&m.length>0?y=m:y=d?.slice(f,p+1),y!=null)return CH({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:f,areaSettings:l,stackedData:a,displayedData:y,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var Ko=V(Y());var qge=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],Vge=["id","baseLine"];function Sv(){return Sv=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return Oe(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),Oe(c)?Ko.createElement("rect",{x:sd.x||0));return Oe(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),Oe(c)?Ko.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[Km(Km({},r.next),{},{x:hr(r.prev.x,r.next.x,t),y:hr(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),OH={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:jd,animationInterpolateFn:nhe,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:EH,xAxisId:0,yAxisId:0,zIndex:Xt.area};function Uk(e,t){return e&&e!=="none"?e:t}var ohe=e=>{var t=e.dataKey,r=e.name,n=e.stroke,o=e.fill,a=e.legendType,i=e.hide;return[{inactive:i,dataKey:t,type:a,color:Uk(n,o),value:Za(r,t),payload:e}]},ahe=ir.memo(e=>{var t=e.dataKey,r=e.data,n=e.stroke,o=e.strokeWidth,a=e.fill,i=e.name,s=e.hide,l=e.unit,u=e.formatter,c=e.tooltipType,d=e.id,f={dataDefinedOnItem:r,getPosition:na,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Za(i,t),hide:s,type:c,color:Uk(n,a),unit:l,formatter:u,graphicalItemId:d}};return ir.createElement(rc,{tooltipEntrySettings:f})});function ihe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=en(n);return ir.createElement(Nk,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function she(e){var t=e.showLabels,r=e.children,n=e.points,o=n.map(a=>{var i,s,l={x:(i=a.x)!==null&&i!==void 0?i:0,y:(s=a.y)!==null&&s!==void 0?s:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Km(Km({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return ir.createElement(Dm,{value:t?o:void 0},r)}function lhe(e){var t=e.points,r=e.baseLine,n=e.needClip,o=e.clipPathId,a=e.props,i=e.animationElapsedTime,s=e.isAnimating,l=e.isEntrance,u=a.layout,c=a.type,d=a.stroke,f=a.connectNulls,p=a.isRange,m=a.shape,y=a.id,b=TH(a,Jge),h=tn(b),g=Km(Km({},h),{},{id:y,points:t,connectNulls:f,type:c,baseLine:r,layout:u,stroke:d,isRange:p,animationElapsedTime:i,isAnimating:s,isEntrance:l});return ir.createElement(ir.Fragment,null,t?.length>1&&ir.createElement(cr,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},ir.createElement(tc,{option:m,DefaultShape:OH.shape,shapeProps:g})),ir.createElement(ihe,{points:t,props:b,clipPathId:o}))}function uhe(e,t,r){if(Oe(e)){var n=Oe(t)?t:void 0;return hr(n,e,r)}if(Yt(e)||xo(e)){var o=Oe(t)?t:void 0;return hr(o,0,r)}return e}function che(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=e.previousPointsRef,a=e.previousBaselineRef,i=n.points,s=n.baseLine,l=n.isAnimationActive,u=n.animationBegin,c=n.animationDuration,d=n.animationEasing,f=n.animationMatchBy,p=n.animationInterpolateFn,m=(0,Wd.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=wk(m,a),b=Jp(),h=oc(n.onAnimationStart,n.onAnimationEnd),g=h.isAnimating,v=h.handleAnimationStart,x=h.handleAnimationEnd,S=y.startValue;if(b==null)return null;var w;return Array.isArray(s)&&Array.isArray(S)?w=cv(S,s,f):Array.isArray(s)?w=cv(null,s,f):w=null,ir.createElement(ac,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:v,onAnimationEnd:x,animationInterpolateFn:p,animationMatchBy:f,layout:b},(A,k,_)=>{var C;return k===1?C=s:Array.isArray(s)?C=p(w,k,b):C=_?s:uhe(s,S,k),y.syncStepValue(C,k),ir.createElement(she,{showLabels:!g,points:i},n.children,ir.createElement(lhe,{points:A,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:k,isAnimating:g||k<1,isEntrance:_}),ir.createElement(ec,{label:n.label}))})}function dhe(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Wd.useRef)(null),a=(0,Wd.useRef)();return ir.createElement(che,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var k5=class extends Wd.PureComponent{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.top,s=t.left,l=t.needClip,u=t.xAxisId,c=t.yAxisId,d=t.width,f=t.height,p=t.id,m=t.baseLine,y=t.zIndex;if(r)return null;var b=ut("recharts-area",a),h=p,g=Lk(n),v=g.r,x=g.strokeWidth,S=jm(n),w=v*2+x,A=l?"url(#clipPath-".concat(S?"":"dots-").concat(h,")"):void 0;return ir.createElement(Hr,{zIndex:y},ir.createElement(cr,{className:b},l&&ir.createElement("defs",null,ir.createElement(Hm,{clipPathId:h,xAxisId:u,yAxisId:c}),!S&&ir.createElement("clipPath",{id:"clipPath-dots-".concat(h)},ir.createElement("rect",{x:s-w/2,y:i-w/2,width:d+w,height:f+w}))),ir.createElement(dhe,{needClip:l,clipPathId:h,props:this.props})),ir.createElement(mv,{points:o,mainColor:Uk(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:A}),this.props.isRange&&Array.isArray(m)&&ir.createElement(mv,{points:m,mainColor:Uk(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:A}))}};function fhe(e){var t,r=e.activeDot,n=e.animationBegin,o=e.animationDuration,a=e.animationEasing,i=e.connectNulls,s=e.dot,l=e.fill,u=e.fillOpacity,c=e.hide,d=e.isAnimationActive,f=e.legendType,p=e.stroke,m=e.xAxisId,y=e.yAxisId,b=TH(e,Qge),h=Sa(),g=qS(),v=Ud(m,y),x=v.needClip,S=vr(),w=(t=Pe(z=>_H(z,e.id,S)))!==null&&t!==void 0?t:{},A=w.points,k=w.isRange,_=w.baseLine,C=sc();if(h!=="horizontal"&&h!=="vertical"||C==null||g!=="AreaChart"&&g!=="ComposedChart")return null;var E=C.height,j=C.width,F=C.x,D=C.y;return!A||!A.length?null:ir.createElement(k5,Fk({},b,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:_,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:E,hide:c,layout:h,isAnimationActive:d,isRange:k,legendType:f,needClip:x,points:A,stroke:p,width:j,left:F,top:D,xAxisId:m,yAxisId:y}))}var phe=(e,t,r,n,o)=>{var a=r??t;if(Oe(a))return a;var i=e==="horizontal"?o:n,s=i.scale.domain();if(i.type==="number"){var l=Math.max(s[0],s[1]),u=Math.min(s[0],s[1]);return a==="dataMin"?u:a==="dataMax"||l<0?l:Math.max(Math.min(s[0],s[1]),0)}return a==="dataMin"?s[0]:a==="dataMax"?s[1]:s[0]};function CH(e){var t=e.areaSettings,r=t.connectNulls,n=t.baseValue,o=t.dataKey,a=e.stackedData,i=e.layout,s=e.chartBaseValue,l=e.xAxis,u=e.yAxis,c=e.displayedData,d=e.dataStartIndex,f=e.xAxisTicks,p=e.yAxisTicks,m=e.bandSize,y=e.stackDataKeys,b=a&&a.length,h=phe(i,s,n,l,u),g=i==="horizontal",v=!1,x=c.map((w,A)=>{var k,_,C,E;if(b)E=a[d+A];else{var j=Nt(w,o);Array.isArray(j)?(E=j,v=!0):E=[h,j]}var F=(k=(_=E)===null||_===void 0?void 0:_[1])!==null&&k!==void 0?k:null,D=Nt(w,o),z=b&&D==null&&y!=null&&y.length>0&&y.every($=>Nt(w,$)==null),N=F==null||b&&!r&&D==null||z;if(g){var O;return{x:Wp({axis:l,ticks:f,bandSize:m,entry:w,index:A}),y:N?null:(O=u.scale.map(F))!==null&&O!==void 0?O:null,value:E,payload:w}}return{x:N?null:(C=l.scale.map(F))!==null&&C!==void 0?C:null,y:Wp({axis:u,ticks:p,bandSize:m,entry:w,index:A}),value:E,payload:w}}),S;return b||v?S=x.map(w=>{var A,k=Array.isArray(w.value)?w.value[0]:null;if(g){var _;return{x:w.x,y:k!=null&&w.y!=null&&(_=u.scale.map(k))!==null&&_!==void 0?_:null,payload:w.payload}}return{x:k!=null&&(A=l.scale.map(k))!==null&&A!==void 0?A:null,y:w.y,payload:w.payload}}):S=g?u.scale.map(h):l.scale.map(h),{points:x,baseLine:S??0,isRange:v}}function mhe(e){var t=Kt(e,OH),r=vr();return ir.createElement(ic,{id:t.id,type:"area"},n=>ir.createElement(ir.Fragment,null,ir.createElement(Lm,{legendPayload:ohe(t)}),ir.createElement(ahe,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:n}),ir.createElement(Fm,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:Z1(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),ir.createElement(fhe,Fk({},t,{id:n}))))}var Fl=ir.memo(mhe,ka);Fl.displayName="Area";var Bt=V(Y()),ls=V(Y());var MH=V(Y());var ghe=!0,_5="Invariant failed";function PH(e,t){if(!e){if(ghe)throw new Error(_5);var r=typeof t=="function"?t():t,n=r?"".concat(_5,": ").concat(r):_5;throw new Error(n)}}var hhe=["option"];function yhe(e,t){if(e==null)return{};var r,n,o=vhe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n1&&arguments[1]!==void 0?arguments[1]:0;return(n,o)=>{if(Oe(t))return t;var a=Oe(n)||Yt(n);return a?t(n,o):(a||PH(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var xhe=(e,t,r)=>r,bhe=(e,t)=>t,kv=te([Vu,bhe],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),whe=te([kv],e=>e?.maxBarSize),She=(e,t,r,n)=>n,khe=te([_t,Vu,ji,$i,xhe],(e,t,r,n,o)=>t.filter(a=>e==="horizontal"?a.xAxisId===r:a.yAxisId===n).filter(a=>a.isPanorama===o).filter(a=>a.hide===!1).filter(a=>a.type==="bar")),_he=(e,t,r)=>{var n=_t(e),o=ji(e,t),a=$i(e,t);if(!(o==null||a==null))return n==="horizontal"?wm(e,"yAxis",a,r):wm(e,"xAxis",o,r)},Che=(e,t)=>{var r=_t(e),n=ji(e,t),o=$i(e,t);if(!(n==null||o==null))return r==="horizontal"?AO(e,"xAxis",n):AO(e,"yAxis",o)},Ahe=te([khe,NB,Che],bW),Ehe=(e,t,r)=>{var n,o,a=kv(e,t);if(a==null)return 0;var i=ji(e,t),s=$i(e,t);if(i==null||s==null)return 0;var l=_t(e),u=gT(e),c=a.maxBarSize,d=Yt(c)?u:c,f,p;return l==="horizontal"?(f=ni(e,"xAxis",i,r),p=ri(e,"xAxis",i,r)):(f=ni(e,"yAxis",s,r),p=ri(e,"yAxis",s,r)),(n=(o=Ci(f,p,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},DH=(e,t,r)=>{var n=_t(e),o=ji(e,t),a=$i(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=ni(e,"xAxis",o,r),s=ri(e,"xAxis",o,r)):(i=ni(e,"yAxis",a,r),s=ri(e,"yAxis",a,r)),Ci(i,s)}},Nhe=te([Ahe,gT,EB,Ow,Ehe,DH,whe],SW),The=(e,t,r)=>{var n=ji(e,t);if(n!=null)return ni(e,"xAxis",n,r)},Ohe=(e,t,r)=>{var n=$i(e,t);if(n!=null)return ni(e,"yAxis",n,r)},Phe=(e,t,r)=>{var n=ji(e,t);if(n!=null)return ri(e,"xAxis",n,r)},Mhe=(e,t,r)=>{var n=$i(e,t);if(n!=null)return ri(e,"yAxis",n,r)},Ihe=te([Nhe,kv],_W),Dhe=te([_he,kv],kW),jH=te([Nr,Vp,The,Ohe,Phe,Mhe,Ihe,_t,Cw,DH,Dhe,kv,She],(e,t,r,n,o,a,i,s,l,u,c,d,f)=>{var p=l.chartData,m=l.dataStartIndex,y=l.dataEndIndex;if(!(d==null||i==null||t==null||s!=="horizontal"&&s!=="vertical"||r==null||n==null||o==null||a==null||u==null)){var b=d.data,h;if(b!=null&&b.length>0?h=b:h=p?.slice(m,y+1),h!=null)return $H({layout:s,barSettings:d,pos:i,parentViewBox:t,bandSize:u,xAxis:r,yAxis:n,xAxisTicks:o,yAxisTicks:a,stackedData:c,displayedData:h,offset:e,cells:f,dataStartIndex:m})}});var A5=V(Y()),qm=V(Y());var jhe=["index"];function C5(){return C5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,qm.useContext)(LH);if(t!=null)return t.stackId;if(e!=null)return Z1(e)};var zhe=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),Bhe=e=>{var t=(0,qm.useContext)(LH);if(t!=null){var r=t.stackId;return"url(#".concat(zhe(r,e),")")}},E5=e=>{var t=e.index,r=$he(e,jhe),n=Bhe(t);return A5.createElement(cr,C5({className:"recharts-bar-stack-layer",clipPath:n},r))};var Fhe=["onMouseEnter","onMouseLeave","onClick"],Uhe=["value","background","tooltipPosition"],Whe=["id"],Hhe=["onMouseEnter","onClick","onMouseLeave"];function BH(e,t){return Ghe(e)||Vhe(e,t)||qhe(e,t)||Khe()}function Khe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function qhe(e,t){if(e){if(typeof e=="string")return FH(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?FH(e,t):void 0}}function FH(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.dataKey,r=e.name,n=e.fill,o=e.legendType,a=e.hide;return[{inactive:a,dataKey:t,type:o,color:n,value:Za(r,t),payload:e}]},Rhe=Bt.memo(e=>{var t=e.dataKey,r=e.stroke,n=e.strokeWidth,o=e.fill,a=e.name,i=e.hide,s=e.unit,l=e.formatter,u=e.tooltipType,c=e.id,d={dataDefinedOnItem:void 0,getPosition:na,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:Za(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return Bt.createElement(rc,{tooltipEntrySettings:d})});function eye(e){var t=Pe(Pi),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=Kk(a,Fhe),c=av(i,n,a.id),d=iv(s),f=sv(l,n,a.id);if(!o||r==null)return null;var p=qa(o);return Bt.createElement(Hr,{zIndex:CW(o,Xt.barBackground)},r.map((m,y)=>{var b=m.value,h=m.background,g=m.tooltipPosition,v=Kk(m,Uhe);if(!h)return null;var x=c(m,m.originalDataIndex),S=d(m,m.originalDataIndex),w=f(m,m.originalDataIndex),A=ao(ao(ao(ao(ao({option:o,isActive:String(m.originalDataIndex)===t},v),{},{fill:"#eee"},h),p),xl(u,m,y)),{},{onMouseEnter:x,onMouseLeave:S,onClick:w,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return Bt.createElement(Hk,lc({key:"background-bar-".concat(y)},A))}))}function tye(e){var t=e.showLabels,r=e.children,n=e.rects,o=n?.map(a=>{var i={x:a.x,y:a.y,width:a.width,lowerWidth:a.width,upperWidth:a.width,height:a.height};return ao(ao({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return Bt.createElement(Dm,{value:t?o:void 0},r)}function rye(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=Pe(Pi),l=Pe(Cm),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,ls.useState)(!1),f=BH(d,2),p=f[0],m=f[1],y=(0,ls.useState)(!1),b=BH(y,2),h=b[0],g=b[1];(0,ls.useEffect)(()=>{var k;return u?(m(!0),k=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(k)}},[u,c]);var v=(0,ls.useCallback)(()=>{u||m(!1)},[u]),x=u&&h,S=u||p,w;u?r===!0?w=t:w=r:w=t;var A=Bt.createElement(Hk,lc({},n,{name:String(n.name)},o,{isActive:x,option:w,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:v}));return S?Bt.createElement(Hr,{zIndex:Xt.activeBar},Bt.createElement(E5,{index:o.originalDataIndex},A)):A}function nye(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return Bt.createElement(Hk,lc({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function oye(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=en(n))!==null&&t!==void 0?t:{},l=s.id,u=Kk(s,Whe),c=n.shape,d=n.dataKey,f=n.activeBar,p=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,b=Kk(n,Hhe),h=av(p,d,l),g=iv(y),v=sv(m,d,l);return r?Bt.createElement(Bt.Fragment,null,r.map((x,S)=>Bt.createElement(E5,lc({index:x.originalDataIndex,key:"rectangle-".concat(x?.x,"-").concat(x?.y,"-").concat(x?.value,"-").concat(S),className:"recharts-bar-rectangle"},xl(b,x,S),{onMouseEnter:h(x,x.originalDataIndex),onMouseLeave:g(x,x.originalDataIndex),onClick:v(x,x.originalDataIndex)}),f?Bt.createElement(rye,{shape:c,activeBar:f,baseProps:u,entry:x,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):Bt.createElement(nye,{shape:c,baseProps:u,entry:x,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var aye=(e,t,r)=>e==null?[]:t===1?e.flatMap(n=>n.status==="removed"?[]:[n.next]):e.flatMap(n=>{if(n.status==="removed")return r==="horizontal"?[ao(ao({},n.prev),{},{height:hr(n.prev.height,0,t),y:hr(n.prev.y,n.prev.y+n.prev.height,t)})]:[ao(ao({},n.prev),{},{width:hr(n.prev.width,0,t)})];if(n.status==="matched")return[ao(ao({},n.next),{},{x:hr(n.prev.x,n.next.x,t),y:hr(n.prev.y,n.next.y,t),width:hr(n.prev.width,n.next.width,t),height:hr(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[ao(ao({},o),{},{height:hr(0,o.height,t),y:hr(o.stackedBarStart,o.y,t)})]:[ao(ao({},o),{},{width:hr(0,o.width,t),x:hr(o.stackedBarStart,o.x,t)})]});function iye(e){var t=e.props,r=e.previousRectanglesRef,n=t.data,o=t.isAnimationActive,a=t.animationBegin,i=t.animationDuration,s=t.animationEasing,l=t.animationInterpolateFn,u=t.layout,c=oc(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,f=c.handleAnimationStart,p=c.handleAnimationEnd;return Bt.createElement(tye,{showLabels:!d,rects:n},Bt.createElement(ac,{animationInput:n,animationIdPrefix:"recharts-bar-",items:n,previousItemsRef:r,isAnimationActive:o,animationBegin:a,animationDuration:i,animationEasing:s,onAnimationStart:f,onAnimationEnd:p,animationInterpolateFn:l,animationMatchBy:t.animationMatchBy,layout:u},(m,y,b)=>Bt.createElement(cr,null,Bt.createElement(oye,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:b}))),Bt.createElement(ec,{label:t.label}),t.children)}function sye(e){var t=(0,ls.useRef)(null);return Bt.createElement(iye,{previousRectanglesRef:t,props:e})}var WH=0,lye=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:Nt(e,t)}},N5=class extends ls.PureComponent{render(){var t=this.props,r=t.hide,n=t.data,o=t.dataKey,a=t.className,i=t.xAxisId,s=t.yAxisId,l=t.needClip,u=t.background,c=t.id;if(r||n==null)return null;var d=ut("recharts-bar",a),f=c;return Bt.createElement(cr,{className:d,id:c},l&&Bt.createElement("defs",null,Bt.createElement(Hm,{clipPathId:f,xAxisId:i,yAxisId:s})),Bt.createElement(cr,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(f,")"):void 0},Bt.createElement(eye,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),Bt.createElement(sye,this.props)))}},uye={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:aye,animationMatchBy:uv,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:WH,shape:Wk,xAxisId:0,yAxisId:0,zIndex:Xt.bar};function cye(e){var t=e.xAxisId,r=e.yAxisId,n=e.hide,o=e.legendType,a=e.minPointSize,i=e.activeBar,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.isAnimationActive,d=Ud(t,r),f=d.needClip,p=Sa(),m=vr(),y=nv(e.children,Dl),b=Pe(v=>jH(v,e.id,m,y));if(p!=="vertical"&&p!=="horizontal")return null;var h,g=b?.[0];return g==null||g.height==null||g.width==null?h=0:h=p==="vertical"?g.height/2:g.width/2,Bt.createElement($k,{xAxisId:t,yAxisId:r,data:b,dataPointFormatter:lye,errorBarOffset:h},Bt.createElement(N5,lc({},e,{layout:p,needClip:f,data:b,xAxisId:t,yAxisId:r,hide:n,legendType:o,minPointSize:a,activeBar:i,animationBegin:s,animationDuration:l,animationEasing:u,isAnimationActive:c})))}function $H(e){var t=e.layout,r=e.barSettings,n=r.dataKey,o=r.minPointSize,a=r.hasCustomShape,i=e.pos,s=e.bandSize,l=e.xAxis,u=e.yAxis,c=e.xAxisTicks,d=e.yAxisTicks,f=e.stackedData,p=e.displayedData,m=e.offset,y=e.cells,b=e.parentViewBox,h=e.dataStartIndex,g=t==="horizontal"?u:l,v=f?g.scale.domain():null,x=A6({numericAxis:g}),S=g.scale.map(x);return p.map((w,A)=>{var k,_,C,E,j,F;if(f){var D=f[A+h];if(D==null)return null;k=_6(D,v)}else k=Nt(w,n),Array.isArray(k)||(k=[x,k]);var z=IH(o,WH)(k[1],A);if(t==="horizontal"){var N,O=u.scale.map(k[0]),$=u.scale.map(k[1]);if(O==null||$==null)return null;_=KN({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:w,index:A}),C=(N=$??O)!==null&&N!==void 0?N:void 0,E=i.size;var T=O-$;if(j=xo(T)?0:T,F={x:_,y:m.top,width:E,height:m.height},Math.abs(z)>0&&Math.abs(j)0&&Math.abs(E)Bt.createElement(Bt.Fragment,null,Bt.createElement(Lm,{legendPayload:Qhe(t)}),Bt.createElement(Rhe,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:o}),Bt.createElement(Fm,{type:"bar",id:o,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:r,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:n,hasCustomShape:t.shape!=null&&t.shape!==Wk}),Bt.createElement(Hr,{zIndex:t.zIndex},Bt.createElement(cye,lc({},t,{id:o})))))}var qk=Bt.memo(dye,ka);qk.displayName="Bar";var Ul=V(Y()),Li=V(Y());var fye=["domain","range"],pye=["domain","range"];function HH(e,t){if(e==null)return{};var r,n,o=mye(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return VH(VH({},a),{},{type:i})},[a,i]);return(0,Li.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(aW(s)):r.current!==s&&t(iW({prev:r.current,next:s})),r.current=s)},[s,t]),(0,Li.useLayoutEffect)(()=>()=>{r.current&&(t(sW(r.current)),r.current=null)},[t]),null}var kye=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,Li.useRef)(null),i=(0,Li.useRef)(null),s=Pe(Vp),l=vr(),u=wt(),c="xAxis",d=Pe(w=>MS(w,c,t,l)),f=Pe(w=>_O(w,t)),p=Pe(w=>y9(w,t)),m=Pe(w=>tO(w,t));if((0,Li.useLayoutEffect)(()=>{if(!(n!=="auto"||!f||Dd(o)||(0,Li.isValidElement)(o)||m==null)){var w=a.current;if(w){var A=w.getCalculatedHeight();Math.round(f.height)!==Math.round(A)&&u(fW({id:t,height:A}))}}},[d,f,u,o,t,n,m]),f==null||p==null||m==null)return null;var y=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,g=O5(e,hye),v=m.id,x=m.scale,S=O5(m,yye);return Ul.createElement(bv,T5({},g,S,{ref:a,labelRef:i,x:p.x,y:p.y,width:f.width,height:f.height,className:ut("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},_ye={allowDataOverflow:Ln.allowDataOverflow,allowDecimals:Ln.allowDecimals,allowDuplicatedCategory:Ln.allowDuplicatedCategory,angle:Ln.angle,axisLine:Di.axisLine,height:Ln.height,hide:!1,includeHidden:Ln.includeHidden,interval:Ln.interval,label:!1,minTickGap:Ln.minTickGap,mirror:Ln.mirror,orientation:Ln.orientation,padding:Ln.padding,reversed:Ln.reversed,scale:Ln.scale,tick:Ln.tick,tickCount:Ln.tickCount,tickLine:Di.tickLine,tickSize:Di.tickSize,type:Ln.type,niceTicks:Ln.niceTicks,xAxisId:0},Cye=e=>{var t=Kt(e,_ye);return Ul.createElement(Ul.Fragment,null,Ul.createElement(Sye,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),Ul.createElement(kye,t))},Wl=Ul.memo(Cye,Vk);Wl.displayName="XAxis";var Hl=V(Y()),zi=V(Y());var Aye=["type"],Eye=["dangerouslySetInnerHTML","ticks","scale"],Nye=["id","scale"];function P5(){return P5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return YH(YH({},a),{},{type:i})},[i,a]);return(0,zi.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(lW(s)):r.current!==s&&t(uW({prev:r.current,next:s})),r.current=s)},[s,t]),(0,zi.useLayoutEffect)(()=>()=>{r.current&&(t(cW(r.current)),r.current=null)},[t]),null}function Dye(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,zi.useRef)(null),i=(0,zi.useRef)(null),s=Pe(Vp),l=vr(),u=wt(),c="yAxis",d=Pe(w=>CO(w,t)),f=Pe(w=>v9(w,t)),p=Pe(w=>MS(w,c,t,l)),m=Pe(w=>rO(w,t));if((0,zi.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Dd(o)||(0,zi.isValidElement)(o)||m==null)){var w=a.current;if(w){var A=w.getCalculatedWidth();Math.round(d.width)!==Math.round(A)&&u(dW({id:t,width:A}))}}},[p,d,u,o,t,n,m]),d==null||f==null||m==null)return null;var y=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,g=M5(e,Eye),v=m.id,x=m.scale,S=M5(m,Nye);return Hl.createElement(bv,P5({},g,S,{ref:a,labelRef:i,x:f.x,y:f.y,tickTextProps:n==="auto"?{width:void 0}:{width:n},width:d.width,height:d.height,className:ut("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:p,axisType:c,axisId:t}))}var jye={allowDataOverflow:zn.allowDataOverflow,allowDecimals:zn.allowDecimals,allowDuplicatedCategory:zn.allowDuplicatedCategory,angle:zn.angle,axisLine:Di.axisLine,hide:!1,includeHidden:zn.includeHidden,interval:zn.interval,label:!1,minTickGap:zn.minTickGap,mirror:zn.mirror,orientation:zn.orientation,padding:zn.padding,reversed:zn.reversed,scale:zn.scale,tick:zn.tick,tickCount:zn.tickCount,tickLine:Di.tickLine,tickSize:Di.tickSize,type:zn.type,niceTicks:zn.niceTicks,width:zn.width,yAxisId:0},$ye=e=>{var t=Kt(e,jye);return Hl.createElement(Hl.Fragment,null,Hl.createElement(Iye,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),Hl.createElement(Dye,t))},Kl=Hl.memo($ye,Vk);Kl.displayName="YAxis";var wK=V(Y()),SK=V(Y());var Yd=V(Y()),bK=V(Y());var uK=V(Y()),cK=V(Y());var Lye=(e,t)=>t,_v=te([Lye,_t,zw,$n,jO,Aa,Z9,Nr],rF);function zye(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Cv(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(zye(e)){var o=e.currentTarget.getBBox();r=o.width>0?t.width/o.width:1,n=o.height>0?t.height/o.height:1}else{var a=e.currentTarget;r=a.offsetWidth>0?t.width/a.offsetWidth:1,n=a.offsetHeight>0?t.height/a.offsetHeight:1}var i=(s,l)=>({relativeX:Math.round((s-t.left)/r),relativeY:Math.round((l-t.top)/n)});return"touches"in e?Array.from(e.touches).map(s=>i(s.clientX,s.clientY)):i(e.clientX,e.clientY)}var D5=Gn("mouseClick"),j5=_l();j5.startListening({actionCreator:D5,effect:(e,t)=>{var r=e.payload,n=_v(t.getState(),Cv(r));n?.activeIndex!=null&&t.dispatch(T9({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var Gk=Gn("mouseMove"),$5=_l(),Vm=null,Hd=null,I5=null;$5.startListening({actionCreator:Gk,effect:(e,t)=>{var r=e.payload,n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i?.includes("mousemove");Vm!==null&&(cancelAnimationFrame(Vm),Vm=null),Hd!==null&&(typeof a!="number"||!s)&&(clearTimeout(Hd),Hd=null),I5=Cv(r);var l=()=>{var u=t.getState(),c=Gu(u,u.tooltip.settings.shared);if(!I5){Vm=null,Hd=null;return}if(c==="axis"){var d=_v(u,I5);d?.activeIndex!=null?t.dispatch($S({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(jS())}Vm=null,Hd=null};if(!s){l();return}a==="raf"?Vm=requestAnimationFrame(l):typeof a=="number"&&Hd===null&&(Hd=setTimeout(l,a))}});function XH(e,t){return t instanceof HTMLElement?"HTMLElement <".concat(t.tagName,' class="').concat(t.className,'">'):t===window?"global.window":e==="children"&&typeof t=="object"&&t!==null?"<>":t}var ZH={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},JH=yr({name:"rootProps",initialState:ZH,reducers:{updateOptions:(e,t)=>{var r;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=(r=t.payload.barGap)!==null&&r!==void 0?r:ZH.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),QH=JH.reducer,RH=JH.actions.updateOptions;var Bye=null,Fye={updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)},eK=yr({name:"polarOptions",initialState:Bye,reducers:Fye}),tK=eK.actions.updatePolarOptions;var rK=eK.reducer;var L5=Gn("keyDown"),z5=Gn("focus"),B5=Gn("blur"),Av=_l(),Gm=null,Kd=null,Yk=null;Av.startListening({actionCreator:L5,effect:(e,t)=>{Yk=e.payload,Gm!==null&&(cancelAnimationFrame(Gm),Gm=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Kd!==null&&(typeof o!="number"||!i)&&(clearTimeout(Kd),Kd=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=Yk;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var f=Yu(c,Il(l),Tl(l),Zu(l)),p=f==null?-1:Number(f),m=!Number.isFinite(p)||p<0,y=Aa(l),b=Il(l),h=Gu(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=ev(l,h,"hover",String(c.index));t.dispatch(Qy({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=x9(l),x=v==="left-to-right"?1:-1,S=d==="ArrowRight"?1:-1,w;if(m){var A=Tl(l),k=Zu(l),_=S*x,C=z=>({active:!1,index:String(z),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(w=-1,_>0){for(var E=0;E=0;j--)if(Yu(C(j),b,A,k)!=null){w=j;break}if(w<0)return}else{w=p+S*x;var F=y?.length||b.length;if(F===0||w>=F||w<0)return}var D=ev(l,h,"hover",String(w));t.dispatch(Qy({active:!0,activeIndex:w.toString(),activeCoordinate:D}))}finally{Gm=null,Kd=null}};if(!i){s();return}o==="raf"?Gm=requestAnimationFrame(s):typeof o=="number"&&Kd===null&&(s(),Yk=null,Kd=setTimeout(()=>{Yk?s():(Kd=null,Gm=null)},o))}});Av.startListening({actionCreator:z5,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;if(!o.active&&o.index==null){var a="0",i=Gu(r,r.tooltip.settings.shared),s=ev(r,i,"hover",String(a));t.dispatch(Qy({active:!0,activeIndex:a,activeCoordinate:s}))}}}});Av.startListening({actionCreator:B5,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(Qy({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function Xk(e){e.persist();var t=e.currentTarget;return new Proxy(e,{get:(r,n)=>{if(n==="currentTarget")return t;var o=Reflect.get(r,n);return typeof o=="function"?o.bind(r):o}})}var oi=Gn("externalEvent"),U5=_l(),Zk=new Map,Ev=new Map,F5=new Map;U5.startListening({actionCreator:oi,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=Xk(o);F5.set(a,{handler:n,reactEvent:i});var s=Zk.get(a);s!==void 0&&(cancelAnimationFrame(s),Zk.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,f=d,p=f==="all"||f?.includes(a),m=Ev.get(a);m!==void 0&&(typeof c!="number"||!p)&&(clearTimeout(m),Ev.delete(a));var y=()=>{var g=F5.get(a);try{if(!g)return;var v=g.handler,x=g.reactEvent,S=t.getState(),w={activeCoordinate:BO(S),activeDataKey:Cm(S),activeIndex:Pi(S),activeLabel:HS(S),activeTooltipIndex:Pi(S),isTooltipActive:FO(S)};v&&v(w,x)}finally{Zk.delete(a),Ev.delete(a),F5.delete(a)}};if(!p){y();return}if(c==="raf"){var b=requestAnimationFrame(y);Zk.set(a,b)}else if(typeof c=="number"){if(!Ev.has(a)){y();var h=setTimeout(y,c);Ev.set(a,h)}}else y()}}});var Uye=te([Ml],e=>e.tooltipItemPayloads),nK=te([Uye,(e,t)=>t,(e,t,r)=>r],(e,t,r)=>{if(t!=null){var n=e.find(a=>a.settings.graphicalItemId===r);if(n!=null){var o=n.getPosition;if(o!=null)return o(t)}}});var W5=Gn("touchMove"),H5=_l(),qd=null,uc=null,oK=null,Nv=null;H5.startListening({actionCreator:W5,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){Nv=Xk(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");qd!==null&&(cancelAnimationFrame(qd),qd=null),uc!==null&&(typeof a!="number"||!s)&&(clearTimeout(uc),uc=null),oK=Array.from(r.touches).map(u=>Cv({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(Nv!=null){var u=t.getState(),c=Gu(u,u.tooltip.settings.shared);if(c==="axis"){var d,f=(d=oK)===null||d===void 0?void 0:d[0];if(f==null){qd=null,uc=null;return}var p=_v(u,f);p?.activeIndex!=null&&t.dispatch($S({activeIndex:p.activeIndex,activeDataKey:void 0,activeCoordinate:p.activeCoordinate}))}else if(c==="item"){var m,y=Nv.touches[0];if(document.elementFromPoint==null||y==null)return;var b=document.elementFromPoint(y.clientX,y.clientY);if(!b||!b.getAttribute)return;var h=b.getAttribute(J1),g=(m=b.getAttribute(Q1))!==null&&m!==void 0?m:void 0,v=Xu(u).find(w=>w.id===g);if(h==null||v==null||g==null)return;var x=v.dataKey,S=nK(u,h,g);t.dispatch(DS({activeDataKey:x,activeIndex:h,activeCoordinate:S,activeGraphicalItemId:g}))}qd=null,uc=null}};if(!s){l();return}a==="raf"?qd=requestAnimationFrame(l):typeof a=="number"&&uc===null&&(l(),Nv=null,uc=setTimeout(()=>{Nv?l():(uc=null,qd=null)},a))}}});var Tv={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},aK=yr({name:"eventSettings",initialState:Tv,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Lt(t.payload.throttledEvents))}}}),iK=aK.actions.setEventSettings;var sK=aK.reducer;var Wye=C1({brush:TW,cartesianAxis:pW,chartData:AF,errorBars:uH,eventSettings:sK,graphicalItems:QU,layout:w6,legend:G6,options:wF,polarAxis:bU,polarOptions:rK,referenceElements:MW,renderedTicks:XW,rootProps:QH,tooltip:O9,zIndex:dF}),lK=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return n6({reducer:Wye,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([j5.middleware,$5.middleware,Av.middleware,U5.middleware,H5.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(zN({type:"raf"}))},devTools:Ai.devToolsEnabled&&{serialize:{replacer:XH},name:"recharts-".concat(r)}})};function Jk(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=vr(),a=(0,cK.useRef)(null);if(o)return r;a.current==null&&(a.current=lK(t,n));var i=Qh;return uK.createElement(tz,{context:i,store:a.current},r)}var Qk=V(Y());function Hye(e){var t=e.layout,r=e.margin,n=wt(),o=vr();return(0,Qk.useEffect)(()=>{o||(n(v6(t)),n(UN(r)))},[n,o,t,r]),null}var Rk=(0,Qk.memo)(Hye,ka);var dK=V(Y());function e_(e){var t=wt();return(0,dK.useEffect)(()=>{t(RH(e))},[t,e]),null}var t_=V(Y());var Kye=e=>{var t=wt();return(0,t_.useEffect)(()=>{t(iK(e))},[t,e]),null},r_=(0,t_.memo)(Kye,ka);var ql=V(Y()),vK=V(Y());var Gd=V(Y()),q5=V(Y());var Vd=V(Y()),n_=V(Y());function fK(e){var t=e.zIndex,r=e.isPanorama,n=(0,n_.useRef)(null),o=wt();return(0,n_.useLayoutEffect)(()=>(n.current&&o(uF({zIndex:t,element:n.current,isPanorama:r})),()=>{o(cF({zIndex:t,isPanorama:r}))}),[o,t,r]),Vd.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function K5(e){var t=e.children,r=e.isPanorama,n=Pe(oF);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Vd.createElement(Vd.Fragment,null,o.map(i=>Vd.createElement(fK,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Vd.createElement(fK,{key:i,zIndex:i,isPanorama:r})))}var qye=["children"];function Vye(e,t){if(e==null)return{};var r,n,o=Gye(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=Xp(),n=Zp(),o=uw();if(!ba(r)||!ba(n))return null;var a=e.children,i=e.otherAttributes,s=e.title,l=e.desc,u,c;return i!=null&&(typeof i.tabIndex=="number"?u=i.tabIndex:u=o?0:void 0,typeof i.role=="string"?c=i.role:c=o?"application":void 0),Gd.createElement(Kh,o_({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:Yye,ref:t}),a)}),Zye=e=>{var t=e.children,r=Pe(od);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Gd.createElement(Kh,{width:n,height:o,x:i,y:a},t)},V5=(0,q5.forwardRef)((e,t)=>{var r=e.children,n=Vye(e,qye),o=vr();return o?Gd.createElement(Zye,null,Gd.createElement(K5,{isPanorama:!0},r)):Gd.createElement(Xye,o_({ref:t},n),Gd.createElement(K5,{isPanorama:!1},r))});var mn=V(Y()),tr=V(Y());var a_=V(Y());function Jye(e,t){return tve(e)||eve(e,t)||Rye(e,t)||Qye()}function Qye(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Rye(e,t){if(e){if(typeof e=="string")return pK(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?pK(e,t):void 0}}function pK(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{if(n!=null){var i=n.getBoundingClientRect(),s=i.width/n.offsetWidth;ht(s)&&s!==a&&e(b6(s))}},[n,e,a]),o}function gK(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function rve(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(NF(),null);function s_(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var dve=(0,tr.forwardRef)((e,t)=>{var r,n,o=(0,tr.useRef)(null),a=(0,tr.useState)({containerWidth:s_((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:s_((n=e.style)===null||n===void 0?void 0:n.height)}),i=i_(a,2),s=i[0],l=i[1],u=(0,tr.useCallback)((d,f)=>{l(p=>{var m=Math.round(d),y=Math.round(f);return p.containerWidth===m&&p.containerHeight===y?p:{containerWidth:m,containerHeight:y}})},[]),c=(0,tr.useCallback)(d=>{if(typeof t=="function"&&t(d),o.current!=null&&(o.current.disconnect(),o.current=null),d!=null&&typeof ResizeObserver<"u"){var f=d.getBoundingClientRect(),p=f.width,m=f.height;u(p,m);var y=h=>{var g=h[0];if(g!=null){var v=g.contentRect,x=v.width,S=v.height;u(x,S)}},b=new ResizeObserver(y);b.observe(d),o.current=b}},[t,u]);return(0,tr.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),mn.createElement(mn.Fragment,null,mn.createElement(sd,{width:s.containerWidth,height:s.containerHeight}),mn.createElement("div",cc({ref:c},e)))}),fve=(0,tr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,tr.useState)({containerWidth:s_(r),containerHeight:s_(n)}),a=i_(o,2),i=a[0],s=a[1],l=(0,tr.useCallback)((c,d)=>{s(f=>{var p=Math.round(c),m=Math.round(d);return f.containerWidth===p&&f.containerHeight===m?f:{containerWidth:p,containerHeight:m}})},[]),u=(0,tr.useCallback)(c=>{if(typeof t=="function"&&t(c),c!=null){var d=c.getBoundingClientRect(),f=d.width,p=d.height;l(f,p)}},[t,l]);return mn.createElement(mn.Fragment,null,mn.createElement(sd,{width:i.containerWidth,height:i.containerHeight}),mn.createElement("div",cc({ref:u},e)))}),pve=(0,tr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return mn.createElement(mn.Fragment,null,mn.createElement(sd,{width:r,height:n}),mn.createElement("div",cc({ref:t},e)))}),mve=(0,tr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?mn.createElement(fve,cc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?mn.createElement(pve,cc({},e,{width:r,height:n,ref:t})):mn.createElement(mn.Fragment,null,mn.createElement(sd,{width:r,height:n}),mn.createElement("div",cc({ref:t},e)))});function gve(e){return e?dve:mve}var yK=(0,tr.forwardRef)((e,t)=>{var r=e.children,n=e.className,o=e.height,a=e.onClick,i=e.onContextMenu,s=e.onDoubleClick,l=e.onMouseDown,u=e.onMouseEnter,c=e.onMouseLeave,d=e.onMouseMove,f=e.onMouseUp,p=e.onTouchEnd,m=e.onTouchMove,y=e.onTouchStart,b=e.style,h=e.width,g=e.responsive,v=e.dispatchTouchEvents,x=v===void 0?!0:v,S=(0,tr.useRef)(null),w=wt(),A=(0,tr.useState)(null),k=i_(A,2),_=k[0],C=k[1],E=(0,tr.useState)(null),j=i_(E,2),F=j[0],D=j[1],z=mK(),N=ly(),O=N?.width>0?N.width:h,$=N?.height>0?N.height:o,T=(0,tr.useCallback)(q=>{z(q),typeof t=="function"&&t(q),C(q),D(q),q!=null&&(S.current=q)},[z,t,C,D]),I=(0,tr.useCallback)(q=>{w(D5(q)),w(oi({handler:a,reactEvent:q}))},[w,a]),P=(0,tr.useCallback)(q=>{w(Gk(q)),w(oi({handler:u,reactEvent:q}))},[w,u]),H=(0,tr.useCallback)(q=>{w(jS()),w(oi({handler:c,reactEvent:q}))},[w,c]),Q=(0,tr.useCallback)(q=>{w(Gk(q)),w(oi({handler:d,reactEvent:q}))},[w,d]),K=(0,tr.useCallback)(()=>{w(z5())},[w]),ue=(0,tr.useCallback)(()=>{w(B5())},[w]),pe=(0,tr.useCallback)(q=>{w(L5(q.key))},[w]),re=(0,tr.useCallback)(q=>{w(oi({handler:i,reactEvent:q}))},[w,i]),_e=(0,tr.useCallback)(q=>{w(oi({handler:s,reactEvent:q}))},[w,s]),de=(0,tr.useCallback)(q=>{w(oi({handler:l,reactEvent:q}))},[w,l]),le=(0,tr.useCallback)(q=>{w(oi({handler:f,reactEvent:q}))},[w,f]),Z=(0,tr.useCallback)(q=>{w(oi({handler:y,reactEvent:q}))},[w,y]),ee=(0,tr.useCallback)(q=>{x&&w(W5(q)),w(oi({handler:m,reactEvent:q}))},[w,x,m]),L=(0,tr.useCallback)(q=>{w(oi({handler:p,reactEvent:q}))},[w,p]),B=gve(g);return mn.createElement(YO.Provider,{value:_},mn.createElement(jE.Provider,{value:F},mn.createElement(B,{width:O??b?.width,height:$??b?.height,className:ut("recharts-wrapper",n),style:rve({position:"relative",cursor:"default",width:O,height:$},b),onClick:I,onContextMenu:re,onDoubleClick:_e,onFocus:K,onBlur:ue,onKeyDown:pe,onMouseDown:de,onMouseEnter:P,onMouseLeave:H,onMouseMove:Q,onMouseUp:le,onTouchEnd:L,onTouchMove:ee,onTouchStart:Z,ref:T},mn.createElement(cve,null),r)))});var hve=["width","height","responsive","children","className","style","compact","title","desc"];function yve(e,t){if(e==null)return{};var r,n,o=vve(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=e.width,n=e.height,o=e.responsive,a=e.children,i=e.className,s=e.style,l=e.compact,u=e.title,c=e.desc,d=yve(e,hve),f=en(d);return l?ql.createElement(ql.Fragment,null,ql.createElement(sd,{width:r,height:n}),ql.createElement(V5,{otherAttributes:f,title:u,desc:c},a)):ql.createElement(yK,{className:i,style:s,width:r,height:n,responsive:o??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},ql.createElement(V5,{otherAttributes:f,title:u,desc:c,ref:t},ql.createElement(DW,null,a)))});function G5(){return G5=Object.assign?Object.assign.bind():function(e){for(var t=1;twK.createElement(Ym,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Cve,tooltipPayloadSearcher:Ju,categoricalChartProps:e,ref:t}));var kK=V(Y()),_K=V(Y());var Ave=["axis","item"],X5=(0,_K.forwardRef)((e,t)=>kK.createElement(Ym,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Ave,tooltipPayloadSearcher:Ju,categoricalChartProps:e,ref:t}));var MK=V(Y()),IK=V(Y());var NK=V(Y()),dc=V(Y());var CK=V(Y());function AK(e){var t=wt();return(0,CK.useEffect)(()=>{t(tK(e))},[t,e]),null}var Eve=["layout"];function Z5(){return Z5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Kt(e,Bve);return MK.createElement(TK,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:zve,tooltipPayloadSearcher:Ju,categoricalChartProps:r,ref:t})});var DK=V(Y()),jK=V(Y());var Fve=["axis"],fc=(0,jK.forwardRef)((e,t)=>DK.createElement(Ym,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Fve,tooltipPayloadSearcher:Ju,categoricalChartProps:e,ref:t}));var Bi=V(Y()),Xm=[{id:"5m",label:"5m",minutes:5,bucketSeconds:10},{id:"10m",label:"10m",minutes:10,bucketSeconds:20},{id:"15m",label:"15m",minutes:15,bucketSeconds:30},{id:"30m",label:"30m",minutes:30,bucketSeconds:60},{id:"45m",label:"45m",minutes:45,bucketSeconds:60},{id:"1h",label:"1h",minutes:60,bucketSeconds:120},{id:"2h",label:"2h",minutes:120,bucketSeconds:240},{id:"3h",label:"3h",minutes:180,bucketSeconds:300},{id:"6h",label:"6h",minutes:360,bucketSeconds:600},{id:"12h",label:"12h",minutes:720,bucketSeconds:1200},{id:"1d",label:"1d",minutes:1440,bucketSeconds:1800},{id:"3d",label:"3d",minutes:4320,bucketSeconds:7200},{id:"7d",label:"7d",minutes:10080,bucketSeconds:14400},{id:"30d",label:"30d",minutes:43200,bucketSeconds:86400},{id:"90d",label:"90d",minutes:129600,bucketSeconds:259200}],$K="30m",LK="activeagents.timeWindow",zK=(0,Bi.createContext)(null),R5=e=>Xm.find(t=>t.id===e);function BK({children:e}){let[t,r]=(0,Bi.useState)(()=>{try{let a=localStorage.getItem(LK);if(a&&R5(a))return a}catch{}return $K}),n=(0,Bi.useCallback)(a=>{if(R5(a)){r(a);try{localStorage.setItem(LK,a)}catch{}}},[]),o=(0,Bi.useMemo)(()=>{let a=Xm.findIndex(s=>s.id===t),i=Xm[a]||R5($K);return{timeWindow:i,windowIndex:a,windows:Xm,setWindow:n,zoomTo:s=>{let l=Xm[Math.min(Math.max(s,0),Xm.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return Bi.default.createElement(zK.Provider,{value:o},e)}function Fs(){let e=(0,Bi.useContext)(zK);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var Zm=V(Y());function Us({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=Fs(),{darkMode:i}=lt(),s=xi(i),l={color:s.textSecondary};return Zm.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},Zm.default.createElement("button",{onClick:()=>a(r-1),disabled:r<=0,title:"Zoom in (shorter window)","aria-label":"Zoom in",className:"aa-zoom px-2 py-1 text-sm rounded-md disabled:opacity-30 disabled:cursor-not-allowed",style:l},"\u2212"),Zm.default.createElement("select",{value:n.id,onChange:u=>o(u.target.value),"aria-label":"Time window",className:`aa-field px-2 py-1 mx-1 text-sm rounded-md shadow ${e?"":"min-w-[4.5rem]"}`,style:{background:s.cardBg,color:s.textPrimary,border:`1px solid ${s.cardBorder}`}},t.map(u=>Zm.default.createElement("option",{key:u.id,value:u.id},u.label))),Zm.default.createElement("button",{onClick:()=>a(r+1),disabled:r>=t.length-1,title:"Zoom out (longer window)","aria-label":"Zoom out",className:"aa-zoom px-2 py-1 text-sm rounded-md disabled:opacity-30 disabled:cursor-not-allowed",style:l},"+"))}var bn=V(Y());var zr=V(Y());var Ov=e=>{let t=(e||"").toLowerCase();return t.includes("claude")?2e5:t.includes("gemini")?1e6:t.includes("llama")?131072:t.includes("gpt-4o")||t.includes("gpt-4-turbo")||t.includes("gpt-4.1")?128e3:t.includes("gpt-5")?4e5:128e3},pc=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},u_=e=>{let t=e?.spans||[],r=null;for(let m of t){let y=m.tokens||{},b=(y.input||0)+(y.output||0);b>0&&(!r||b>r.total)&&(r={input:y.input||0,output:y.output||0,thinking:y.thinking||0,cached:y.cached||0,total:b})}if(!r)return null;let n=m=>{for(let y of t){let b=(y.attributes||{})[m];if(b)return b}return null},o=(m,...y)=>{let b=Number(n(m));if(Number.isFinite(b)&&b>0)return b;for(let h of y){let g=n(h);if(g)return pc(g)}return 0},a=o("prompt.input.instructions.tokens","prompt.input.instructions","llm.instructions"),i=o("prompt.input.tools.tokens","prompt.input.tools","llm.tools"),s=o("prompt.input.mcp_tools.tokens","prompt.input.mcp_tools"),l=o("prompt.input.messages.tokens","prompt.input.messages","llm.messages"),u=0;for(let m of t){let y=m.attributes||{},b=y["tool.output.result"]||y["tool.result"],h=y["tool.input.args"]||y["tool.arguments"];b&&(u+=pc(b)),h&&(u+=pc(h))}u=Math.min(u,r.input);let c=["messages","toolResults","instructions","toolSchemas","mcpSchemas"],d={messages:l,toolResults:u,instructions:a,toolSchemas:i,mcpSchemas:s},f=c.reduce((m,y)=>m+d[y],0),p;if(f>0&&r.input>0){let m=r.input/f;p={};for(let b of c)p[b]=Math.round(d[b]*m);let y=r.input-c.reduce((b,h)=>b+p[h],0);if(y!==0){let b=c.reduce((h,g)=>p[g]>p[h]?g:h);p[b]=Math.max(p[b]+y,0)}}else p={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:Ov(e.model),cached:r.cached,thinking:r.thinking,estimated:f>0,segments:[{key:"messages",label:"Messages",tokens:p.messages},{key:"tool_results",label:"Tool results",tokens:p.toolResults},{key:"instructions",label:"Instructions",tokens:p.instructions},{key:"tool_schemas",label:"Tool schemas",tokens:p.toolSchemas},{key:"mcp_schemas",label:"MCP tool schemas",tokens:p.mcpSchemas},{key:"output",label:"Generated output",tokens:r.output}]}};var Uve={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},Jm=e=>e==null?"\u2014":e>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,"")}M`:e>=1e3?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(Math.round(e));function mc({used:e,limit:t=2e5,segments:r=[],cached:n=0,thinking:o=0,compact:a=!1,defaultOpen:i=!1,label:s="Context window",estimated:l=!1,darkMode:u=!1}){let[c,d]=(0,zr.useState)(i),f=r.filter(A=>A.tokens>0),p=e??f.reduce((A,k)=>A+k.tokens,0),m=t>0?p/t:0,y=m>=.9?"#dc2626":m>=.75?"#eab308":null,b=u?"rgba(255,255,255,0.4)":"#9ca3af",h=u?"rgba(255,255,255,0.6)":"#6b7280",g=u?"rgba(255,255,255,0.75)":"#4b5563",v=u?"rgba(255,255,255,0.1)":"#f3f4f6",x=`${Jm(p)} / ${Jm(t)} (${Math.round(m*100)}%)`,S=A=>A.key==="messages"&&y?y:A.color||Uve[A.key]||"#2563eb",w=A=>zr.default.createElement("div",{style:{display:"flex",height:A,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},f.map(k=>zr.default.createElement("div",{key:k.key,title:`${k.label} \xB7 ${Jm(k.tokens)}`,style:{width:`${Math.min(k.tokens/t*100,100)}%`,background:S(k)}})));return a?zr.default.createElement("span",{title:`${s}: ${x}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},w("6px"),zr.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:y||b,whiteSpace:"nowrap"}},Math.round(m*100),"%")):zr.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${y?y+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},zr.default.createElement("div",{onClick:A=>{A.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},zr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&zr.default.createElement("span",{style:{color:b,fontWeight:400}}," \xB7 estimated")),zr.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},zr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:y||g}},x),zr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:b,display:"inline-block",transform:c?"rotate(90deg)":"none",transition:"transform 0.15s ease"}},">"))),zr.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},w("9px")),m>=.9&&zr.default.createElement("div",{style:{marginTop:"6px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:"#dc2626"}},"[!] compaction imminent \u2014 next turn may drop the oldest messages"),c&&zr.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...f,{key:"__free",label:"Free space",tokens:Math.max(t-p,0)}].map(A=>zr.default.createElement("div",{key:A.key,style:{display:"flex",alignItems:"center",gap:"8px"}},zr.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:A.key==="__free"?v:S(A),border:A.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),zr.default.createElement("span",{style:{fontSize:"13px",color:g,flex:1}},A.label),zr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},Jm(A.tokens)),zr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:b,width:"46px",textAlign:"right"}},t>0?`${(A.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&zr.default.createElement("div",{style:{marginTop:"4px",paddingTop:"6px",borderTop:`1px solid ${u?"rgba(255,255,255,0.08)":"#f3f4f6"}`,display:"flex",gap:"16px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:b}},n>0&&zr.default.createElement("span",null,zr.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",Jm(n)),o>0&&zr.default.createElement("span",null,zr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",Jm(o)))))}var dt=V(Y());var Me=V(Y());var Tn=V(Y());var he=V(Y());var FK=["ui","json-ui","genui"],Xd="render_ui",us=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),eP=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Zd(e){let t=typeof e=="string"?eP(e):e;if(Array.isArray(t))return t.every(us)?t:null;if(us(t)){if(Array.isArray(t.blocks))return t.blocks.every(us)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(us)?t.ui:null}return null}function tP(e,t){let r=String(e||"").trim().toLowerCase();if(FK.includes(r))return Zd(t);if(r==="json"){let n=eP(t);return us(n)&&Array.isArray(n.ui)?Zd(n):null}return null}function rP(e){if(typeof e!="string")return null;let t=e.trim(),r=t.startsWith("{")&&t.endsWith("}"),n=t.startsWith("[")&&t.endsWith("]");if(!r&&!n)return null;let o=eP(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>us(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Zd(o);return a?{blocks:a}:{object:o}}var Wve=e=>us(e)?e.function?.name||e.name:void 0,Hve=e=>us(e)?e.function?.arguments??e.arguments??e.input:void 0;function Qm(e,{callId:t}={}){if(!us(e))return null;if(e.tool_name===Xd&&e.tool_arguments!=null){let o=Zd(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>us(a)&&a.id!=null);r.forEach(a=>{if(Wve(a)!==Xd||t!=null&&o&&a.id!==t)return;let i=Zd(Hve(a));i&&n.push(...i)})}else if(us(r)&&e.tool_name===Xd){let o=Zd(r);o&&n.push(...o)}return n.length>0?n:null}function c_(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function d_(e){if(typeof e!="string")return!1;let t=e.trim();if(/^data:image\//i.test(t))return!0;if(!/^https?:\/\//i.test(t)||typeof window>"u"||!window.location)return!1;try{return new URL(t,window.location.href).origin===window.location.origin}catch{return!1}}function UK(e){try{return new URL(String(e).trim()).host}catch{return""}}var GK=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],Kve=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],Pv=GK.length,WK=220,Rm=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),Ft=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),YK=e=>{if(typeof e!="number"||!Number.isFinite(e))return Ft(e);let t=Math.abs(e);return t>=1e9?`${(e/1e9).toFixed(1).replace(/\.0$/,"")}B`:t>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,"")}M`:t>=1e4?`${(e/1e3).toFixed(1).replace(/\.0$/,"")}K`:e.toLocaleString()},iP=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,HK={info:{light:["#eff6ff","#1d4ed8"],dark:["rgba(59,130,246,0.15)","#93c5fd"]},success:{light:["#f0fdf4","#15803d"],dark:["rgba(34,197,94,0.15)","#86efac"]},warning:{light:["#fffbeb","#b45309"],dark:["rgba(245,158,11,0.15)","#fcd34d"]},danger:{light:["#fef2f2","#b91c1c"],dark:["rgba(239,68,68,0.15)","#fca5a5"]}},qve={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},nP=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),sP=e=>({background:e?"rgba(0,0,0,0.35)":"#f3f4f6",color:e?"#ffffff":"#111827",borderRadius:"6px",padding:"8px 10px",fontSize:"12px",overflowX:"auto",margin:0,whiteSpace:"pre-wrap"}),eg=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Vl({block:e,reason:t,colors:r,darkMode:n}){return he.default.createElement("div",{className:"text-xs",style:{color:r.textMuted}},he.default.createElement("div",{className:"mb-1"},"Unsupported block",e&&e.type?` \u201C${Ft(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),he.default.createElement("pre",{style:{...sP(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function Vve({block:e,colors:t,darkMode:r,onAction:n}){let o=c_(e.image_url)&&d_(e.image_url)?e.image_url.trim():null;return he.default.createElement("div",{className:"overflow-hidden",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg}},o&&he.default.createElement("img",{src:o,alt:Ft(e.title),style:{width:"100%",maxHeight:"220px",objectFit:"cover",display:"block"}}),he.default.createElement("div",{className:"p-3 space-y-1.5"},e.title!=null&&he.default.createElement("div",{style:eg(t)},Ft(e.title)),e.body!=null&&he.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},he.default.createElement(cs,{text:Ft(e.body),darkMode:r,onUiAction:n})),e.footer!=null&&he.default.createElement("div",{className:"text-xs pt-1",style:{color:t.textMuted,borderTop:`1px solid ${t.cardBorder}`}},Ft(e.footer))))}function XK({block:e,colors:t,darkMode:r}){let n=e.delta!=null?Ft(e.delta):null,o=e.tone||(n&&n.trim().startsWith("-")?"negative":n?"positive":"neutral"),a=iP(qve,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?YK(e.value):Ft(e.value);return he.default.createElement("div",{style:{background:t.innerBg,border:`1px solid ${t.cardBorder}`,borderRadius:"10px",padding:"10px 12px"}},he.default.createElement("div",{className:"text-xs",style:{color:t.textMuted}},Ft(e.label)),he.default.createElement("div",{className:"text-lg font-semibold leading-tight mt-0.5",style:{color:t.textPrimary}},s),n&&he.default.createElement("div",{className:"text-xs mt-0.5 font-medium",style:{color:i}},n))}function Gve({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(Rm):[];return n.length===0?he.default.createElement(Vl,{block:e,reason:"stats needs an items array",colors:t,darkMode:r}):he.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:"8px"}},n.map((o,a)=>he.default.createElement(XK,{key:a,block:o,colors:t,darkMode:r})))}var aP=(e,t)=>({padding:"6px 10px",borderBottom:`1px solid ${e.cardBorder}`,color:e.textCell,textAlign:t?"right":"left",fontVariantNumeric:t?"tabular-nums":void 0,verticalAlign:"top"}),Yve=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:vt.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function ZK({columns:e,rows:t,colors:r,renderCell:n}){return he.default.createElement("div",{style:{overflowX:"auto"}},he.default.createElement("table",{className:"text-sm",style:{width:"100%",borderCollapse:"collapse"}},he.default.createElement("thead",null,he.default.createElement("tr",null,e.map((o,a)=>he.default.createElement("th",{key:a,style:Yve(r)},Ft(o))))),he.default.createElement("tbody",null,t.map((o,a)=>he.default.createElement("tr",{key:a},e.map((i,s)=>{let l=o[s];return he.default.createElement("td",{key:s,style:aP(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():Ft(l))}))))))}function Xve({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.columns)?e.columns:null,o=Array.isArray(e.rows)?e.rows:null;if(!n||!o)return he.default.createElement(Vl,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:Rm(i)?n.map(s=>i[s]):[i]);return he.default.createElement("div",null,e.title!=null&&he.default.createElement("div",{className:"mb-1.5",style:eg(t)},Ft(e.title)),he.default.createElement(ZK,{columns:n,rows:a,colors:t}))}var Zve=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},Jve=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function Qve({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(Rm):[];if(o.length===0)return he.default.createElement(Vl,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:Zve(o),i=Array.isArray(e.series)?e.series.filter(b=>typeof b=="string"):[],s=(i.length>0?i:Jve(o,a)).slice(0,Pv);if(!a||s.length===0)return he.default.createElement(Vl,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?Kve:GK,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=he.default.createElement(Qu,{contentStyle:{background:u,border:`1px solid ${t.cardBorder}`,borderRadius:"8px",fontSize:"12px"},labelStyle:{color:t.textPrimary,fontWeight:600,marginBottom:"4px"},itemStyle:{color:t.textCell},formatter:b=>typeof b=="number"?b.toLocaleString():Ft(b)}),f=s.length>1||n==="pie"?he.default.createElement(iw,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,p=he.default.createElement(he.default.Fragment,null,he.default.createElement(zl,{stroke:t.cardBorder,vertical:!1}),he.default.createElement(Wl,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),he.default.createElement(Kl,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:YK,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=he.default.createElement(Y5,{data:o,margin:m},p,d,f,s.map((b,h)=>he.default.createElement(Bk,{key:b,type:"monotone",dataKey:b,stroke:l[h],strokeWidth:2,dot:{r:4,strokeWidth:2,stroke:u,fill:l[h]},activeDot:{r:5,strokeWidth:2,stroke:u},isAnimationActive:!1})));else if(n==="area")y=he.default.createElement(fc,{data:o,margin:m},p,d,f,s.map((b,h)=>he.default.createElement(Fl,{key:b,type:"monotone",dataKey:b,stroke:l[h],strokeWidth:2,fill:l[h],fillOpacity:.12,dot:{r:3,strokeWidth:2,stroke:u,fill:l[h]},isAnimationActive:!1})));else if(n==="pie"){let b=s[0],h=[...o].sort((x,S)=>(Number(S[b])||0)-(Number(x[b])||0)),g=h.slice(0,Pv),v=h.slice(Pv);v.length>0&&(g[Pv-1]={[a]:"Other",[b]:v.reduce((x,S)=>x+(Number(S[b])||0),Number(g[Pv-1][b])||0)}),y=he.default.createElement(Q5,{margin:m},d,f,he.default.createElement(Ck,{data:g,dataKey:b,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},g.map((x,S)=>he.default.createElement(Dl,{key:S,fill:l[S]}))))}else y=he.default.createElement(X5,{data:o,margin:m,barCategoryGap:"25%",barGap:2},p,d,f,s.map((b,h)=>he.default.createElement(qk,{key:b,dataKey:b,fill:l[h],radius:[4,4,0,0],maxBarSize:24,isAnimationActive:!1})));return he.default.createElement("div",null,e.title!=null&&he.default.createElement("div",{className:"mb-1",style:eg(t)},Ft(e.title)),he.default.createElement("div",{style:{width:"100%",height:WK,minWidth:0}},he.default.createElement(ju,{width:"100%",height:WK},y)))}function Rve({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return he.default.createElement(Vl,{block:e,reason:"list needs an items array",colors:t,darkMode:r});let a=e.ordered?"ol":"ul";return he.default.createElement("div",null,e.title!=null&&he.default.createElement("div",{className:"mb-1",style:eg(t)},Ft(e.title)),he.default.createElement(a,{className:`${e.ordered?"list-decimal":"list-disc"} pl-5 text-sm space-y-0.5`,style:{color:t.textCell}},o.map((i,s)=>he.default.createElement("li",{key:s},typeof i=="string"?he.default.createElement(cs,{text:i,darkMode:r,onUiAction:n}):Ft(i)))))}function e0e({block:e,colors:t}){let r=Number(e.value),n=Number.isFinite(r)?Math.max(0,Math.min(100,r)):0;return he.default.createElement("div",null,he.default.createElement("div",{className:"flex items-center justify-between text-xs mb-1"},he.default.createElement("span",{style:{color:t.textCell}},Ft(e.label)),he.default.createElement("span",{className:"font-mono",style:{color:t.textMuted}},Math.round(n),"%")),he.default.createElement("div",{style:{height:"8px",borderRadius:"999px",background:t.trackBg,overflow:"hidden"}},he.default.createElement("div",{style:{width:`${n}%`,height:"100%",background:Oo,borderRadius:"999px",transition:"width 0.3s ease"}})))}var t0e=["text","textarea","number","select","checkbox"],oP=e=>Ft(e.name||e.label),KK=e=>Ft(e.label||e.name),qK=e=>t0e.includes(e.type)?e.type:"text";function r0e({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(f=>Rm(f)&&(f.name||f.label)),[a,i]=(0,he.useState)(()=>Object.fromEntries(o.map(f=>[oP(f),qK(f)==="checkbox"?!1:""]))),[s,l]=(0,he.useState)(!1);if(o.length===0)return he.default.createElement(Vl,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?Ft(e.submit):"Submit",c=(f,p)=>i(m=>({...m,[f]:p}));return he.default.createElement("form",{onSubmit:f=>{f.preventDefault();let p=o.map(m=>{let y=a[oP(m)];return`${KK(m)}: ${typeof y=="boolean"?y?"yes":"no":Ft(y)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?Ft(e.submit):"Submitted"}: ${p}`,values:{...a}})},className:"space-y-2.5",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg,padding:"12px"}},e.title!=null&&he.default.createElement("div",{style:eg(t)},Ft(e.title)),o.map(f=>{let p=oP(f),m=qK(f),y=KK(f),b=`genui-field-${p.replace(/\W+/g,"-")}`;return m==="checkbox"?he.default.createElement("label",{key:p,className:"flex items-center gap-2 text-sm",style:{color:t.textCell}},he.default.createElement("input",{type:"checkbox",checked:!!a[p],onChange:h=>c(p,h.target.checked),style:{accentColor:Oo}}),y):he.default.createElement("div",{key:p},he.default.createElement("label",{htmlFor:b,className:"block text-xs mb-1",style:{color:t.textSecondary}},y,f.required?" *":""),m==="textarea"?he.default.createElement("textarea",{id:b,name:p,value:a[p],onChange:h=>c(p,h.target.value),placeholder:f.placeholder!=null?Ft(f.placeholder):void 0,required:!!f.required,rows:3,className:"aa-field",style:{...nP(t),resize:"vertical"}}):m==="select"?he.default.createElement("select",{id:b,name:p,value:a[p],onChange:h=>c(p,h.target.value),required:!!f.required,className:"aa-field",style:nP(t)},he.default.createElement("option",{value:""},f.placeholder!=null?Ft(f.placeholder):"Select\u2026"),(Array.isArray(f.options)?f.options:[]).map((h,g)=>he.default.createElement("option",{key:g,value:Ft(h)},Ft(h)))):he.default.createElement("input",{id:b,name:p,type:m==="number"?"number":"text",value:a[p],onChange:h=>c(p,m==="number"&&h.target.value!==""?Number(h.target.value):h.target.value),placeholder:f.placeholder!=null?Ft(f.placeholder):void 0,required:!!f.required,className:"aa-field",style:nP(t)}))}),he.default.createElement("div",{className:"flex items-center gap-3 pt-1"},he.default.createElement("button",{type:"submit","data-testid":"genui-form-submit",style:{padding:"6px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,background:Oo,color:"#ffffff",border:"1px solid transparent",cursor:"pointer"}},u),s&&he.default.createElement("span",{className:"text-xs",style:{color:t.textMuted}},"Sent to the agent")))}function n0e({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.options)?e.options:null,[a,i]=(0,he.useState)(null);return!o||o.length===0?he.default.createElement(Vl,{block:e,reason:"choices needs options",colors:t,darkMode:r}):he.default.createElement("div",null,e.prompt!=null&&he.default.createElement("div",{className:"text-sm mb-1.5",style:{color:t.textCell}},Ft(e.prompt)),he.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=Ft(s),c=a===l;return he.default.createElement("button",{key:l,type:"button","data-testid":"genui-choice",onClick:()=>{i(l),n&&n({kind:"choice",text:u})},style:{padding:"5px 12px",borderRadius:"999px",fontSize:"13px",cursor:"pointer",border:`1px solid ${c?Oo:t.inputBorder}`,background:c?Oo:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function o0e({url:e,alt:t,colors:r,darkMode:n}){let[o,a]=(0,he.useState)(!1);if(o)return he.default.createElement("img",{src:e,alt:t,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}});let i=UK(e);return he.default.createElement("button",{type:"button",onClick:()=>a(!0),"data-testid":"genui-image-load",className:"text-xs w-full",style:{border:`1px dashed ${r.cardBorder}`,borderRadius:"8px",padding:"14px 12px",color:r.textMuted,background:n?"rgba(255,255,255,0.03)":"#f9fafb"}},"Load image from ",i||"another site")}function a0e({block:e,colors:t,darkMode:r}){if(!c_(e.url))return he.default.createElement(Vl,{block:e,reason:"image URL must be http(s) or data:",colors:t,darkMode:r});let n=e.url.trim(),o=e.alt!=null?Ft(e.alt):"";return he.default.createElement("figure",{style:{margin:0}},d_(n)?he.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):he.default.createElement(o0e,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&he.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},Ft(e.caption)))}function i0e({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(iP(HK,e.tone)||HK.info)[r?"dark":"light"];return he.default.createElement("div",{style:{background:o,borderLeft:`3px solid ${a}`,borderRadius:"8px",padding:"10px 12px"}},e.title!=null&&he.default.createElement("div",{className:"text-sm font-semibold mb-0.5",style:{color:a}},Ft(e.title)),he.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},he.default.createElement(cs,{text:Ft(e.body),darkMode:r,onUiAction:n})))}function s0e({block:e,colors:t,darkMode:r}){return he.default.createElement("div",null,e.language!=null&&he.default.createElement("div",{className:"text-xs font-mono mb-1",style:{color:t.textMuted}},Ft(e.language)),he.default.createElement("pre",{style:sP(r)},Ft(e.code)))}function VK({block:e,colors:t,darkMode:r,onAction:n}){let o=e.text??e.body??e.content??e.markdown;return he.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},he.default.createElement(cs,{text:Ft(o),darkMode:r,onUiAction:n}))}var l0e=3;function f_({value:e,colors:t,darkMode:r,depth:n}){if(e==null||typeof e!="object")return typeof e=="boolean"?he.default.createElement("span",{className:"font-mono"},String(e)):typeof e=="number"?he.default.createElement("span",{style:{fontVariantNumeric:"tabular-nums"}},e.toLocaleString()):he.default.createElement("span",null,Ft(e));if(n>=l0e)return he.default.createElement("pre",{style:{...sP(r),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2));if(Array.isArray(e)){if(e.length===0)return he.default.createElement("span",{style:{color:t.textMuted}},"\u2014");if(e.every(Rm)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return he.default.createElement(ZK,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>he.default.createElement(f_,{value:i,colors:t,darkMode:r,depth:n+1})})}return e.every(a=>a==null||typeof a!="object")?he.default.createElement("span",null,e.map(Ft).join(", ")):he.default.createElement("ul",{className:"list-disc pl-5 space-y-0.5"},e.map((a,i)=>he.default.createElement("li",{key:i},he.default.createElement(f_,{value:a,colors:t,darkMode:r,depth:n+1}))))}let o=Object.entries(e);return o.length===0?he.default.createElement("span",{style:{color:t.textMuted}},"{}"):he.default.createElement("table",{className:"text-sm",style:{borderCollapse:"collapse",width:n===0?"100%":"auto"}},he.default.createElement("tbody",null,o.map(([a,i])=>he.default.createElement("tr",{key:a},he.default.createElement("th",{scope:"row",className:"font-mono text-xs",style:{...aP(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),he.default.createElement("td",{style:aP(t,!1)},he.default.createElement(f_,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function u0e({block:e,colors:t,darkMode:r}){let n="value"in e?e.value:e.data;return he.default.createElement("div",{style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",overflow:"hidden"}},e.title!=null&&he.default.createElement("div",{className:"px-3 pt-2",style:eg(t)},Ft(e.title)),he.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},he.default.createElement(f_,{value:n,colors:t,darkMode:r,depth:0})))}var c0e={card:Vve,stat:XK,stats:Gve,table:Xve,chart:Qve,list:Rve,progress:e0e,form:r0e,choices:n0e,image:a0e,callout:i0e,code:s0e,object:u0e,text:VK,markdown:VK};function Ws({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(Rm):[];if(n.length===0)return null;let o=xi(r);return he.default.createElement("div",{className:"space-y-3",onClick:a=>a.stopPropagation()},n.map((a,i)=>{let s=typeof a.type=="string"?a.type.toLowerCase():"unknown",l=iP(c0e,s);return he.default.createElement("div",{key:i,"data-testid":"genui-block","data-block-type":s},l?he.default.createElement(l,{block:a,colors:o,darkMode:r,onAction:t}):he.default.createElement(Vl,{block:a,colors:o,darkMode:r}))}))}var d0e=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,Mv=(e,t)=>e.split(d0e).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return Tn.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return Tn.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return Tn.default.createElement("code",{key:o,className:"px-1 py-0.5 rounded text-[0.9em]",style:{background:"rgba(127,127,127,0.15)"}},r.slice(1,-1));let a=r.match(/^\[([^\]]+)\]\(((?:https?:\/\/|\/)[^)\s]+)\)$/);return a?Tn.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),JK=e=>/^\s*\|.*\|\s*$/.test(e),f0e=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),QK=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function cs({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` +`),a=0,i=0;for(;aTn.default.createElement("th",{key:p,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},Mv(f,`th${d}-${p}`))))),Tn.default.createElement("tbody",null,c.map((f,p)=>Tn.default.createElement("tr",{key:p},u.map((m,y)=>Tn.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},Mv(f[y]??"",`td${d}-${p}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aTn.default.createElement("li",{key:d},Mv(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(Tn.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(Tn.default.createElement("div",{key:i++},Mv(s,`p${i}`))),a+=1}return Tn.default.createElement("div",{className:"break-words"},n)}var Na=V(Y()),p0e=e=>{let t=e.mcp_server||e.server;return t?`MCP server \xB7 ${t}`:typeof e.name=="string"&&e.name.startsWith("mcp__")?`MCP server \xB7 ${e.name.split("__")[1]}`:e.gem?`gem \xB7 ${e.gem}`:e.source?String(e.source):"agent-defined \xB7 method on the agent class"},m0e=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function lP({tool:e,darkMode:t}){let r=m0e(e);return Na.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Na.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Na.default.createElement("div",{className:"text-xs font-mono",style:{color:t?"rgba(255,255,255,0.45)":"#9ca3af",display:"flex",flexWrap:"wrap",columnGap:"16px",rowGap:"4px"}},Na.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Na.default.createElement("span",null,"source: ",p0e(e))))}function uP({tools:e,darkMode:t}){let[r,n]=(0,Na.useState)(null),o=(e||[]).filter(s=>s&&s.name);if(o.length===0)return null;let a=o.find(s=>s.name===r),i=s=>({background:t?"rgba(34,197,94,0.12)":"#f0fdf4",color:t?"#86efac":"#15803d",border:`1px solid ${s?t?"#4ade80":"#22c55e":"transparent"}`,borderRadius:"6px",padding:"2px 8px",fontSize:"11px",cursor:"pointer"});return Na.default.createElement("div",{style:{marginTop:"8px"}},Na.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Na.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Na.default.createElement("button",{key:s.name,onClick:l=>{l.stopPropagation(),n(r===s.name?null:s.name)},title:r===s.name?"Hide definition":"Show definition",style:i(r===s.name)},"\u2699 ",s.name))),a&&Na.default.createElement("div",{onClick:s=>s.stopPropagation(),style:{marginTop:"6px",padding:"8px 10px",borderRadius:"8px",background:t?"rgba(34,197,94,0.06)":"#f7fef9",border:`1px solid ${t?"rgba(34,197,94,0.25)":"#bbf7d0"}`}},Na.default.createElement(lP,{tool:a,darkMode:t})))}var g0e=["application/json","application/xml","application/x-yaml","application/csv"],h0e=/\.(csv|md|txt|json|ya?ml)$/i;function RK(e){let t=String(e?.type||e?.content_type||"").toLowerCase(),r=String(e?.name||e?.filename||"");return t.startsWith("image/")?"image":t==="application/pdf"?"document":t.startsWith("text/")||g0e.includes(t)||h0e.test(r)?"text":"file"}function eq(e){let t=Number(e);return!Number.isFinite(t)||t<0?"":t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}function tq(e){if(typeof e!="string")return!1;let t=e.trim();if(/^(data:image\/|blob:)/i.test(t))return!0;if(/^\/[\\/]/.test(t))return!1;if(t.startsWith("/"))return!0;if(!/^https?:\/\//i.test(t)||typeof window>"u"||!window.location)return!1;try{return new URL(t,window.location.href).origin===window.location.origin}catch{return!1}}var rq=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,Iv=e=>{if(e==null)return null;if(typeof e=="object")return JSON.stringify(e,null,2);try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},y0e=["text","output","body","content"],nq=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},v0e=e=>{let t=nq(e.tool_result)??nq(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=y0e.find(a=>typeof t[a]=="string"&&t[a].trim().length>0);if(!r)return null;let n=[t.error&&"error",t.status!=null&&`status ${t.status}`,typeof t.url=="string"&&t.url.replace(/^https?:\/\//,""),typeof t.agent=="string"&&`\u2192 ${t.agent}`,t.truncated&&"truncated"].filter(Boolean).join(" \xB7 "),o=Object.fromEntries(Object.entries(t).filter(([a])=>a!==r));return{field:r,meta:n,body:t[r],rest:o}},x0e=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||Iv(e.content)),iq=280,b0e=["tool","system","developer"],Dv=(e,t=iq)=>e.replace(/\s+/g," ").trim().slice(0,t),cP=e=>{if(e==null)return null;if(typeof e=="object")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return String(e)}},sq=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:cP(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:cP(t)}]:[]},lq=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),w0e=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||lq(o.content))return;let i=sq(o);if(i.length===0)return;let s=new Set;Array.isArray(o.tool_calls)?o.tool_calls.forEach(u=>u.id&&s.add(u.id)):o.tool_call_id&&s.add(o.tool_call_id);let l=[];for(let u=a+1;u0&&c.tool_call_id&&!s.has(c.tool_call_id))break;l.push(u)}l.length!==0&&(l.forEach((u,c)=>{let d=t[u],f=i.find(p=>p.name&&p.name===d.tool_name)||i[Math.min(c,i.length-1)];f&&f.args&&!d.tool_arguments&&r.set(u,{tool_arguments:f.args,created_at:o.created_at||d.created_at})}),n.add(a))}),t.map((o,a)=>r.has(a)?{...o,...r.get(a)}:o).filter((o,a)=>!n.has(a))},oq=e=>b0e.includes(e.role)&&typeof e.content=="string"&&Dv(e.content).length>=iq,S0e=({message:e,darkMode:t})=>{let r=e.trace_duration_ms||0;if(!r||e.span_duration_ms==null)return null;let n=Math.min((e.span_start_ms||0)/r*100,98),o=Math.max(e.span_duration_ms/r*100,2),a=e.role==="tool"?"#22c55e":e.role==="assistant"?"#ef4444":"#60a5fa";return Me.default.createElement("span",{title:`${Math.round(e.span_duration_ms)}ms \xB7 starts at ${Math.round(e.span_start_ms||0)}ms of ${Math.round(r)}ms`,style:{position:"relative",width:"96px",height:"5px",borderRadius:"999px",background:t?"rgba(255,255,255,0.08)":"#f3f4f6",flexShrink:0,marginTop:"8px",display:"inline-block"}},Me.default.createElement("span",{style:{position:"absolute",top:0,bottom:0,left:`${n}%`,width:`${Math.min(o,100-n)}%`,borderRadius:"999px",background:a}}))},p_=e=>({background:e?"rgba(0,0,0,0.35)":"#f3f4f6",color:e?"#ffffff":"#111827",borderRadius:"6px",padding:"8px 10px",fontSize:"12px",overflowX:"auto",margin:0}),xn=(e,t)=>{switch(e){case"user":return t?{background:"rgba(59,130,246,0.15)",color:"#93c5fd",label:"User"}:{background:"#eff6ff",color:"#1d4ed8",label:"User"};case"assistant":return t?{background:"rgba(239,68,68,0.12)",color:"#fca5a5",label:"Assistant"}:{background:"#fef2f2",color:"#b91c1c",label:"Assistant"};case"tool":return t?{background:"rgba(245,158,11,0.12)",color:"#fcd34d",label:"Tool"}:{background:"#fffbeb",color:"#b45309",label:"Tool"};case"system":return t?{background:"rgba(139,92,246,0.15)",color:"#c4b5fd",label:"System"}:{background:"#f5f3ff",color:"#6d28d9",label:"System"};case"developer":return t?{background:"rgba(20,184,166,0.15)",color:"#5eead4",label:"Dev"}:{background:"#f0fdfa",color:"#0f766e",label:"Dev"};default:return t?{background:"rgba(255,255,255,0.08)",color:"rgba(255,255,255,0.7)",label:e}:{background:"#f3f4f6",color:"#374151",label:e}}},aq={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function m_({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=xi(t);return Me.default.createElement("div",{className:"flex flex-wrap gap-2 mt-1.5"},a.map((s,l)=>{let u=String(s.content_type||""),c=(s.kind==="image"||u.startsWith("image/"))&&tq(s.url),d=eq(s.byte_size);return Me.default.createElement("span",{key:s.id??`${s.filename}-${l}`,"data-testid":r,title:[s.filename,u,d].filter(Boolean).join(" \xB7 "),className:"inline-flex items-center gap-2 rounded-lg px-2 py-1 text-xs",style:{background:i.mutedBg,border:`1px solid ${i.cardBorder}`,color:i.textCell,maxWidth:"260px"}},c?Me.default.createElement("img",{src:s.url,alt:s.filename||"",style:{width:"36px",height:"36px",objectFit:"cover",borderRadius:"4px",flexShrink:0}}):Me.default.createElement("span",{className:"font-mono",style:{color:i.textMuted,flexShrink:0}},aq[s.kind]||aq.file),Me.default.createElement("span",{className:"min-w-0"},Me.default.createElement("span",{className:"block truncate"},s.filename||"attachment"),d&&Me.default.createElement("span",{className:"block font-mono",style:{color:i.textMuted}},d)),n&&Me.default.createElement("button",{type:"button","data-testid":o,onClick:f=>{f.stopPropagation(),n(s,l)},title:"Remove","aria-label":`Remove ${s.filename||"attachment"}`,className:"font-mono",style:{color:i.textMuted,background:"none",border:"none",cursor:"pointer",padding:"0 2px"}},"\u2715"))}))}var uq=e=>{let t=new Set;return Array.isArray(e.tool_calls)?e.tool_calls.forEach(r=>r&&r.id!=null&&t.add(r.id)):e.tool_call_id&&t.add(e.tool_call_id),t},k0e=(e,t)=>{let r=Qm(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?uq(o).has(e.tool_call_id):Qm(o)));return n?Qm(n,{callId:e.tool_call_id}):null},_0e=(e,t)=>{let r=uq(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===Xd&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function Fi({messages:e,darkMode:t,tools:r,onUiAction:n,onEditMessage:o,onDeleteMessage:a,testIdPrefix:i}){let[s,l]=(0,Me.useState)({}),[u,c]=(0,Me.useState)(null),[d,f]=(0,Me.useState)(""),[p,m]=(0,Me.useState)(!1),[y,b]=(0,Me.useState)(null),h=_=>l(C=>({...C,[_]:!C[_]})),g={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},v=_=>i?`${i}-${_}`:void 0,x=_=>_.stopPropagation(),S=_=>{c(_.id),f(_.content||""),b(null)},w=()=>{c(null),b(null)},A=async _=>{if(!p){m(!0),b(null);try{await o(_,d),c(null)}catch(C){b(C.message||"Could not save the message")}finally{m(!1)}}},k=w0e(e);return Me.default.createElement("div",{className:"space-y-3"},k.map(_=>{let C=xn(_.role,t),E=!!s[_.id],j=u===_.id,F=!!((o||a)&&["user","assistant"].includes(_.role)),D=_.role==="tool"&&_.tool_name===Xd?k0e(_,k):null,z=_.role==="assistant"&&!j?rP(_.content):null,N=_.role==="assistant"&&!_0e(_,k)?Qm(_):null,O=oq(_)&&!E,$=x0e(_)||oq(_),T=Iv(_.tool_arguments),I=Iv(_.tool_result)||Iv(_.content),P=_.tool_calls&&(!Array.isArray(_.tool_calls)||_.tool_calls.length>0)?Iv(_.tool_calls):null,H=_.role==="tool"?v0e(_):null,Q=_.tool_name?(r||[]).find(Z=>Z&&Z.name===_.tool_name):null,K=_.role==="tool"?cP(_.tool_arguments):null,ue=_.role==="tool"&&!!K,pe=xn("assistant",t),re=xn("tool",t),_e=_.role==="tool"&&!_.tool_arguments&&k.some(Z=>Z&&Z.role==="assistant"&&(_.tool_call_id&&Z.tool_call_id===_.tool_call_id||Array.isArray(Z.tool_calls)&&Z.tool_calls.some(ee=>ee.id&&ee.id===_.tool_call_id))),de=_.role==="assistant"&&!lq(_.content)?sq(_):[],le=p_(t);return Me.default.createElement("div",{key:_.id,className:"group","data-testid":i,"data-message-id":i?_.id:void 0,"data-role":i?_.role:void 0},Me.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${$?"cursor-pointer":""}`,onClick:$?()=>h(_.id):void 0,style:E?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},Me.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},(ue?[pe,re]:[C]).map(Z=>Me.default.createElement("span",{key:Z.label,className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Z.background,color:Z.color,textAlign:"center"}},Z.label))),Me.default.createElement("div",{className:"min-w-0 flex-1"},Me.default.createElement("div",{className:"text-sm break-words",style:{color:g.textPrimary}},j?Me.default.createElement("div",{className:"space-y-2",onClick:x},Me.default.createElement("textarea",{"data-testid":v("editor"),value:d,onChange:Z=>f(Z.target.value),onKeyDown:Z=>{Z.key==="Escape"&&w(),Z.key==="Enter"&&(Z.metaKey||Z.ctrlKey)&&A(_)},rows:Math.min(12,Math.max(3,d.split(` +`).length)),autoFocus:!0,className:"aa-field w-full",style:{padding:"8px 10px",borderRadius:"8px",border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,background:t?"rgba(255,255,255,0.06)":"#ffffff",color:g.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"}}),Me.default.createElement("div",{className:"flex items-center gap-2 text-xs"},Me.default.createElement("button",{type:"button","data-testid":v("save"),onClick:()=>A(_),disabled:p,style:{padding:"4px 10px",borderRadius:"6px",background:"#ef4444",color:"#ffffff",border:"none",cursor:p?"wait":"pointer",fontWeight:500}},p?"Saving\u2026":"Save"),Me.default.createElement("button",{type:"button","data-testid":v("cancel"),onClick:w,disabled:p,style:{padding:"4px 10px",borderRadius:"6px",background:"transparent",color:g.textSecondary,border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,cursor:"pointer"}},"Cancel"),y&&Me.default.createElement("span",{style:{color:"#dc2626"}},y))):D?Me.default.createElement("div",null,Me.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:re.color}},"\u2699 ",_.tool_name," \xB7 ",D.length," block",D.length===1?"":"s"),Me.default.createElement(Ws,{blocks:D,onAction:n,darkMode:t})):_.role==="tool"?Me.default.createElement("span",{style:{display:"grid",gap:"2px"}},K&&!_e&&Me.default.createElement("span",{className:"font-mono text-xs break-words"},_.tool_name&&Me.default.createElement("span",{style:{color:re.color}},"\u2699 ",_.tool_name," "),Me.default.createElement("span",{style:{color:ue?pe.color:g.textMuted}},"in:")," ",Dv(K,180),K.length>180?"\u2026":""),H?Me.default.createElement("span",null,_.tool_name&&!(K&&!_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:re.color}},"\u2699 ",_.tool_name),(K||_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ue?re.color:g.textMuted}},"out:"),H.meta&&Me.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:g.textMuted}},H.meta),"\u201C",H.body.replace(/\s+/g," ").trim().slice(0,180),H.body.length>180?"\u2026":"","\u201D"):_.content?Me.default.createElement("span",null,_.tool_name&&!(K&&!_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:re.color}},"\u2699 ",_.tool_name),(K||_e)&&Me.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ue?re.color:g.textMuted}},"out:"),"\u201C",Dv(_.content,180),_.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):Me.default.createElement("span",{className:"whitespace-pre-wrap"},_.tool_name?`\u2192 ${_.tool_name}(...)`:"\u2014")):O?Me.default.createElement("span",{style:{color:g.textSecondary}},Dv(_.content),"\u2026"):de.length>0?Me.default.createElement("span",{style:{display:"grid",gap:"2px"}},de.map((Z,ee)=>Me.default.createElement("span",{key:ee,className:"font-mono text-xs break-words"},Z.name&&Me.default.createElement("span",{style:{color:g.textMuted}},Z.name," "),Me.default.createElement("span",{style:{color:g.textMuted}},"in:")," ",Z.args?Me.default.createElement(Me.default.Fragment,null,Dv(Z.args,180),Z.args.length>180?"\u2026":""):"\u2014"))):z&&z.blocks?Me.default.createElement(Ws,{blocks:z.blocks,onAction:n,darkMode:t}):z&&z.object?Me.default.createElement(Ws,{blocks:[{type:"object",value:z.object}],darkMode:t}):Me.default.createElement(cs,{text:_.content||"\u2014",darkMode:t,onUiAction:n}),N&&!j&&Me.default.createElement("div",{className:"mt-2"},Me.default.createElement(Ws,{blocks:N,onAction:n,darkMode:t})),_.role==="user"&&Me.default.createElement(m_,{attachments:_.attachments,darkMode:t,testId:v("attachment")})),Me.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:g.textMuted}},F&&!j&&Me.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:x},o&&Me.default.createElement("button",{type:"button","data-testid":v("edit"),onClick:()=>S(_),className:"hover:underline",style:{color:g.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&Me.default.createElement("button",{type:"button","data-testid":v("delete"),onClick:()=>a(_),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),_.created_at&&Me.default.createElement("span",null,new Date(_.created_at).toLocaleTimeString()),_.tool_name&&_.role!=="tool"&&Me.default.createElement("span",{className:"px-1.5 py-0.5 rounded",style:{background:C.background,color:C.color}},"\u2699 ",_.tool_name),_.duration_ms!=null&&Me.default.createElement("span",null,rq(_.duration_ms)),(_.tool_calls||[]).length>0&&Me.default.createElement("span",null,_.tool_calls.length," tool call",_.tool_calls.length>1?"s":""),_.content_checksum&&Me.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",_.content_checksum.slice(0,8)))),Me.default.createElement(S0e,{message:_,darkMode:t}),$&&Me.default.createElement("svg",{className:`w-3.5 h-3.5 mt-1 flex-shrink-0 transition-transform ${E?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:g.textMuted}},Me.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),E&&Me.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:C.color+"55"}},Me.default.createElement("div",{className:"flex flex-wrap gap-x-5 gap-y-1 text-xs font-mono",style:{color:g.textSecondary}},_.created_at&&Me.default.createElement("span",null,new Date(_.created_at).toLocaleString()),_.tool_call_id&&Me.default.createElement("span",null,"call: ",_.tool_call_id),_.duration_ms!=null&&Me.default.createElement("span",null,"took ",rq(_.duration_ms)),_.content_checksum&&Me.default.createElement("span",null,"\u{1F512} ",_.content_checksum)),T&&Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:ue?pe.color:g.textMuted}},"Arguments",ue?" \xB7 from the agent":""),Me.default.createElement("pre",{style:le},T)),H?Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:ue?re.color:g.textMuted}},"Result",ue?" \xB7 from the tool":""),Object.keys(H.rest).length>0&&Me.default.createElement("pre",{style:le},JSON.stringify(H.rest,null,2)),Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:g.textMuted}},H.field," \xB7 ",H.body.length.toLocaleString()," chars"),Me.default.createElement("pre",{style:{...le,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},H.body.slice(0,8e3),H.body.length>8e3?` +\u2026`:"")):I?Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},_.role==="tool"?"Result":"Content (parsed)"),Me.default.createElement("pre",{style:le},I)):_.role==="tool"&&_.content?Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:ue?re.color:g.textMuted}},"Result",ue?" \xB7 from the tool":""," \xB7 ",_.content.length.toLocaleString()," chars"),Me.default.createElement("pre",{style:{...le,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},_.content.slice(0,8e3),_.content.length>8e3?` +\u2026`:"")):null,P&&Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Requested tool calls"),Me.default.createElement("pre",{style:le},P)),Q&&Me.default.createElement("div",null,Me.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Tool definition"),Me.default.createElement(lP,{tool:Q,darkMode:t}))))}))}var qt=V(Y());var Kr=V(Y());var On=e=>({cardBg:e?"#1f1f1f":"#ffffff",cardBorder:e?"#2a2a2a":"#e5e7eb",innerBg:e?"rgba(255,255,255,0.04)":"#f9fafb",panelBg:e?"rgba(0,0,0,0.35)":"#f9fafb",preBg:e?"rgba(255,255,255,0.06)":"#eef0f3",trackBg:e?"rgba(255,255,255,0.08)":"#f3f4f6",hoverBg:e?"rgba(255,255,255,0.04)":"#f9fafb",controlBg:e?"rgba(255,255,255,0.06)":"#f3f4f6",controlActiveBg:e?"#2a2a2a":"#ffffff",textPrimary:e?"#ffffff":"#111827",textSecondary:e?"rgba(255,255,255,0.6)":"#6b7280",textMuted:e?"rgba(255,255,255,0.4)":"#9ca3af",textBody:e?"rgba(255,255,255,0.75)":"#4b5563",link:"#3b82f6",good:e?"#4ade80":"#16a34a",bad:"#ef4444"}),cq=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function Jd({open:e,darkMode:t,size:r=14,style:n}){return Kr.default.createElement("svg",{className:`flex-shrink-0 transition-transform ${e?"rotate-180":""}`,width:r,height:r,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:On(t).textMuted,...n},"aria-hidden":"true"},Kr.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function g_({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=On(e);return Kr.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var ai={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function tg({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=On(t),i=(e||[]).filter(Boolean);return i.length===0?null:Kr.default.createElement("div",{className:`flex-shrink-0 text-sm ${n}`,style:{display:"grid",gridTemplateColumns:i.map(s=>s.width?`${s.width}px`:"minmax(0, auto)").join(" "),alignItems:"center",columnGap:`${r}px`,color:a.textSecondary,...o}},i.map(s=>{let l=s.content!=null&&s.content!==!1&&s.content!=="";return Kr.default.createElement("div",{key:s.key,title:(l?s.title:s.empty)||void 0,className:"min-w-0 truncate",style:{textAlign:s.align||"right"}},l?s.content:Kr.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}var dq=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:On(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),C0e=e=>{if(e==null)return{text:"",json:!1};if(typeof e=="object")return{text:JSON.stringify(e,null,2),json:!0};let t=String(e);if(!/^[[{]/.test(t.trim()))return{text:t,json:!1};try{return{text:JSON.stringify(JSON.parse(t),null,2),json:!0}}catch{return{text:t,json:!1}}};function rg({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=ng(),c=On(t),d=(e||[]).filter(f=>f&&(f.text||s));return d.some(f=>f.text)?Kr.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:vt.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((f,p)=>{let m=`${f.label}-${p}`,y=l(m),b=f.max||i,h=!f.text,g=String(f.text??"").replace(/\s+/g," ").trim(),v=C0e(f.text),x=!h&&(v.json||g.length>60||g!==String(f.text).trim());return Kr.default.createElement("div",{key:m},Kr.default.createElement("div",{onClick:x?S=>{S.stopPropagation(),u(m)}:void 0,title:x?y?"Collapse":"Expand":void 0,style:{cursor:x?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},Kr.default.createElement("span",{style:{color:f.color||c.textMuted}},x?y?"\u25BE":"\u25B8":"\xA0"," ",f.label,":")," ",!y&&(h?Kr.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):cq(g,b))),y&&Kr.default.createElement("pre",{onClick:S=>S.stopPropagation(),style:dq(t,{wrap:!v.json})},v.text))})):null}function jv({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=On(n);return Kr.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&Kr.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>Kr.default.createElement("button",{key:s.id,type:"button",onClick:l=>{l.stopPropagation(),r(s.id)},title:s.hint,className:"px-2 py-0.5 text-xs rounded transition-colors",style:t===s.id?{background:i.controlActiveBg,color:i.textPrimary,boxShadow:n?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:i.textSecondary}},s.label)))}function fq({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=On(o);return Kr.default.createElement("div",null,Kr.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Kr.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&Kr.default.createElement("span",{style:{color:s.textMuted}},cq(t,i))),r&&Kr.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:dq(o,{wrap:a})},t))}function ng(e={}){let[t,r]=(0,Kr.useState)(e),n=(0,Kr.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,Kr.useCallback)(a=>!!t[a],[t]),n,r]}var dP={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},mq=[{id:"time",label:"Time",hint:"Chronological \u2014 reads as a waterfall"},{id:"duration",label:"Slowest",hint:"Longest-running first"},{id:"name",label:"Name",hint:"Group repeated tool calls together"}],Pn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,fP=e=>{switch(e){case"root":return yo.spans.root;case"prompt":return yo.spans.prompt;case"generate":return yo.spans.generate;case"llm":return yo.spans.llm;case"thinking":return yo.spans.thinking;case"tool":return yo.spans.tool;case"response":return yo.spans.response;default:return"-"}},A0e=(e,t)=>{let r=Math.max(e||0,1),n=Math.max(t||1,1);if(n<=1)return 100;let o=Math.log(r)/Math.log(n);return Math.min(100,Math.max(4,o*100))},E0e=(e,t)=>{let r=[...e||[]];switch(t){case"duration":return r.sort((n,o)=>(o.duration||0)-(n.duration||0));case"name":return r.sort((n,o)=>(n.name||"").localeCompare(o.name||""));default:return r.sort((n,o)=>(n.start||0)-(o.start||0))}},N0e=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},T0e=(e,t)=>{if(!t.duration_ms)return Pn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Pn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},O0e=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},pq=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,pP=e=>{let t=e.spans||[],r=a=>{for(let i of t){let s=(i.attributes||{})[a];if(s)return s}return null},n=r("llm.prompt");if(!n){let a=r("prompt.input.messages");if(a)try{n=[...JSON.parse(a)].reverse().find(l=>l&&l.role==="user"&&l.content)?.content}catch{}}let o=r("llm.completion")||r("llm.output.message");return{input:n,output:o}},P0e=e=>{let t=e.attributes||{},r=null,n="input",o="user";if(t["prompt.input.messages"])try{let u=[...JSON.parse(t["prompt.input.messages"])].reverse().find(c=>c&&c.role==="user"&&c.content);typeof u?.content=="string"&&(r=u.content)}catch{}if(!r&&t["llm.prompt"]&&(r=String(t["llm.prompt"])),!r&&(t["tool.input.args"]||t["tool.arguments"])){let l=t["tool.input.args"]||t["tool.arguments"];r=typeof l=="string"?l:JSON.stringify(l),n="in",o="assistant"}let a=null,i="output",s="assistant";return t["llm.output.message"]||t["llm.completion"]?a=t["llm.output.message"]||t["llm.completion"]:(t["tool.output.result"]||t["tool.result"])&&(a=t["tool.output.result"]||t["tool.result"],i="out",s="tool"),a!=null&&typeof a!="string"&&(a=JSON.stringify(a)),{input:r,output:a,inputLabel:n,inputTone:o,outputLabel:i,outputTone:s}},M0e=(e,t)=>{let r=P0e(e),n=pP(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},I0e=e=>{let t={...e.attributes||{}},r=f=>{let p=t[f];return delete t[f],p},n=[],o=f=>n.push({id:`${e.span_id}-m${n.length}`,...f}),a=r("prompt.input.instructions")||r("llm.instructions");a&&o({role:"system",content:String(a)});let i=r("prompt.input.messages");if(i)try{JSON.parse(i).forEach(f=>{f&&o({role:f.role||"user",content:typeof f.content=="string"?f.content:JSON.stringify(f.content),tool_call_id:f.tool_call_id,tool_calls:f.tool_calls})})}catch{t["prompt.input.messages"]=i}let s=r("llm.prompt");s&&o({role:"user",content:String(s)});let l=r("tool.input.args")||r("tool.arguments"),u=r("tool.output.result")||r("tool.result");if(l||u){let f=r("tool.name");o({role:"tool",tool_name:f||(e.name||"").replace(/^tool\./,""),tool_arguments:l,content:u?String(u):null})}let c=r("llm.completion"),d=r("llm.output.message");return(c||d)&&o({role:"assistant",content:String(c||d)}),{messages:n,rest:t}},mP=e=>{for(let t of e?.spans||[]){let r=(t.attributes||{})["prompt.input.tools"];if(r)try{let n=typeof r=="string"?JSON.parse(r):r;if(Array.isArray(n)&&n.length>0)return n}catch{}}return[]};function D0e({span:e,darkMode:t,tools:r=[]}){let[n,o]=ng(),a=On(t),{messages:i,rest:s}=I0e(e),l=null,u=s["prompt.input.tools"];if(u)try{let p=typeof u=="string"?JSON.parse(u):u;Array.isArray(p)&&p.length>0&&(l=p,delete s["prompt.input.tools"])}catch{}let c=Object.entries(s).sort((p,m)=>pq(p[0])-pq(m[0])),d=i.length===1&&i[0].role==="tool"?i[0]:null,f=d?.tool_arguments==null?null:typeof d.tool_arguments=="string"?d.tool_arguments:JSON.stringify(d.tool_arguments);return qt.default.createElement("div",{onClick:p=>p.stopPropagation(),style:{margin:"4px 0 8px 0",padding:"10px 12px",borderRadius:"8px",background:a.panelBg,border:`1px solid ${a.cardBorder}`,fontFamily:vt.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},qt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},qt.default.createElement("span",null,"duration: ",Pn(e.duration)),qt.default.createElement("span",null,"status: ",e.status||"OK"),N0e(e)>0&&qt.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),qt.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&qt.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},qt.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},qt.default.createElement("span",{style:{color:xn("tool",t).color}},"\u2699 ",d.tool_name),f&&qt.default.createElement(qt.default.Fragment,null," ",qt.default.createElement("span",{style:{color:xn("assistant",t).color}},"in:")," ",qt.default.createElement("span",{style:{color:a.textBody}},f))),d.content&&qt.default.createElement("div",{style:{fontSize:"12px"}},qt.default.createElement("span",{style:{color:xn("tool",t).color}},"out:")," ",qt.default.createElement("span",{style:{color:a.textBody,whiteSpace:"pre-wrap",display:"inline-block",maxHeight:"240px",overflowY:"auto",verticalAlign:"top",maxWidth:"100%"}},d.content))),i.length>0&&!d&&qt.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},qt.default.createElement(Fi,{messages:i,darkMode:t,tools:l||r})),l&&qt.default.createElement(uP,{tools:l,darkMode:t}),c.length>0&&qt.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([p,m])=>{let y=p.match(/args|result|input|output/)?O0e(m):null,b=!y&&(p.endsWith(".instructions")||p.match(/input|output|result/))&&typeof m=="string"?m:null,h=y||b;if(!h)return qt.default.createElement("div",{key:p,style:{wordBreak:"break-all"}},qt.default.createElement("span",{style:{color:a.textMuted}},p,":")," ",typeof m=="string"?m:JSON.stringify(m));let g=`${e.span_id}:${p}`;return qt.default.createElement(fq,{key:p,label:p,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function j0e({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=On(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:M0e(e,t);return qt.default.createElement(qt.default.Fragment,null,qt.default.createElement("div",{className:`py-0.5 px-1 -mx-1 rounded transition-colors ${u?`cursor-pointer ${r?"hover:bg-white/5":"hover:bg-gray-100"}`:""}`,style:{paddingLeft:n==="time"?`${(e.nested||0)*16}px`:0,background:a?l.hoverBg:void 0},onClick:u?()=>i():void 0,title:u?`${e.name} \u2014 click for span details`:e.name},qt.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},qt.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},fP(e.type)),qt.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),qt.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:vt.mono,color:l.textMuted}},T0e(e,t)),u&&qt.default.createElement(Jd,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),qt.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},qt.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":dP[e.type]||"#9ca3af",left:n==="time"?`${t.duration_ms?e.start/t.duration_ms*100:0}%`:0,width:n==="time"?`${t.duration_ms?Math.max(e.duration/t.duration_ms*100,1):1}%`:`${A0e(e.duration,o)}%`}})),c&&qt.default.createElement(rg,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:xn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:xn(c.outputTone,r).color,max:160}]})),a&&qt.default.createElement(D0e,{span:e,darkMode:r,tools:s}))}function gP({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=ng(),s=On(t),l=E0e(e?.spans,r),u=n||mP(e);if(l.length===0)return qt.default.createElement("div",{className:"text-sm py-2",style:{color:s.textMuted}},"No spans recorded for this trace.");let c=Math.max(...l.map(d=>d.duration||0),1);return qt.default.createElement("div",{className:"space-y-2"},l.map((d,f)=>{let p=`${o}${d.span_id||f}`;return qt.default.createElement(j0e,{key:p,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(p),onToggle:()=>i(p)})}))}var $0e=[{id:"spans",label:"Spans",hint:"Timing waterfall with span details"},{id:"conversation",label:"Conversation",hint:"The run as a message stream \u2014 prompt, tool calls, response"}],L0e=e=>{let t=0,r=[];(e?.spans||[]).forEach(a=>{(a.nested||0)!==0&&(a.type==="tool"?r.push(a):(a.type==="llm"||a.type==="generate")&&(t=Math.max(t,a.duration||0)))});let n=r.reduce((a,i)=>a+(i.duration||0),0);t=Math.max(t-n,0);let o=e?.duration_ms||t+n||1;return{generation:t,tools:r,toolTotal:n,total:o,overhead:Math.max(o-t-n,0)}};function z0e({trace:e,darkMode:t}){let r=On(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=L0e(e);if(n===0&&a===0||n/i>=.99&&a/i<.01)return null;let l=c=>`${(c/i*100).toFixed(c/i<.01?2:1)}%`,u=(c,d)=>dt.default.createElement("div",{style:{width:`${Math.max(c/i*100,.4)}%`,background:d,height:"100%"}});return dt.default.createElement("div",{style:{marginTop:"14px",paddingTop:"12px",borderTop:`1px solid ${r.cardBorder}`}},dt.default.createElement("div",{style:{fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em",color:r.textSecondary,marginBottom:"6px"}},"Time breakdown \u2014 generation vs tools"),dt.default.createElement("div",{style:{display:"flex",height:"10px",borderRadius:"5px",overflow:"hidden",background:r.trackBg}},u(n,"#ef4444"),u(a,"#10b981"),s>0&&u(s,t?"rgba(255,255,255,0.2)":"#d1d5db")),dt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"8px",fontSize:"12px",fontFamily:vt.mono,color:r.textBody}},dt.default.createElement("span",null,dt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",Pn(n)," (",l(n),")"),dt.default.createElement("span",null,dt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Pn(a)," (",l(a),")"),s>0&&dt.default.createElement("span",null,dt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Pn(s)," (",l(s),")")),o.length>0&&dt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:vt.mono,color:r.textSecondary}},o.map((c,d)=>dt.default.createElement("span",{key:d},c.name," ",Pn(c.duration)," (",l(c.duration||0),")"))))}function B0e({trace:e,darkMode:t}){let[r,n]=(0,dt.useState)(null),[o,a]=(0,dt.useState)(!1),i=On(t);if((0,dt.useEffect)(()=>{if(e?.id==null)return;let l=!0;return n(null),a(!1),fetch(`/api/interactions/trace-${e.id}`).then(u=>u.ok?u.json():Promise.reject(new Error("request failed"))).then(u=>l&&n(u.interaction)).catch(()=>l&&a(!0)),()=>{l=!1}},[e?.id]),o)return dt.default.createElement("div",{className:"text-sm py-4",style:{color:i.bad}},"Couldn't load the conversation for this trace.");if(!r)return dt.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"Loading conversation\u2026");let s=r.instructions?[{id:`trace-${e.id}-system`,role:"system",content:r.instructions,created_at:r.created_at},...r.messages||[]]:r.messages||[];return s.length===0?dt.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"This trace predates content capture \u2014 no conversation to show."):dt.default.createElement(Fi,{messages:s,darkMode:t,tools:mP(e)})}function $v({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,dt.useState)("spans"),[i,s]=(0,dt.useState)("time"),l=On(t),u=(e?.spans||[]).length,c=u_(e),d=e?.tokens||{},f=(0,dt.useCallback)(p=>a(n?p:"spans"),[n]);return e?dt.default.createElement("div",null,dt.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2 mb-2"},dt.default.createElement("div",{className:"flex items-center gap-1"},n&&dt.default.createElement(jv,{options:$0e,value:o,onChange:f,darkMode:t}),dt.default.createElement("span",{className:"text-xs ml-2",style:{color:l.textSecondary}},u," ",u===1?"span":"spans")),o==="spans"&&u>0&&dt.default.createElement(jv,{options:mq,value:i,onChange:s,darkMode:t,label:"Sort"})),o==="conversation"?dt.default.createElement("div",{className:"rounded-lg border p-4",style:{background:l.cardBg,borderColor:l.cardBorder}},dt.default.createElement(B0e,{trace:e,darkMode:t})):dt.default.createElement(dt.default.Fragment,null,i==="time"?dt.default.createElement("div",{className:"flex justify-between text-xs mb-2",style:{color:l.textMuted}},dt.default.createElement("span",null,"0ms"),dt.default.createElement("span",null,Math.round((e.duration_ms||0)*.33),"ms"),dt.default.createElement("span",null,Math.round((e.duration_ms||0)*.66),"ms"),dt.default.createElement("span",null,Pn(e.duration_ms))):dt.default.createElement("div",{className:"text-xs mb-2",style:{color:l.textMuted}},"Bar length compares duration on a log scale"),dt.default.createElement(gP,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&dt.default.createElement("div",{className:"mt-3"},dt.default.createElement(mc,{...c,label:"Context pressure",darkMode:t})),dt.default.createElement(z0e,{trace:e,darkMode:t}),!r&&dt.default.createElement("div",{className:"mt-4 pt-4 border-t flex items-center flex-wrap gap-x-6 gap-y-1 text-sm",style:{borderColor:l.cardBorder,color:l.textSecondary}},dt.default.createElement("span",null,"Tokens:"),d.thinking>0&&dt.default.createElement("span",{className:"text-amber-500",style:{fontFamily:vt.mono}},"T:",d.thinking.toLocaleString()),dt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:vt.mono}},"in:",(d.input||0).toLocaleString()),dt.default.createElement("span",{className:"text-green-500",style:{fontFamily:vt.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&dt.default.createElement("span",{style:{fontFamily:vt.mono}},e.provider,e.model?` \xB7 ${e.model}`:"")),e.error&&dt.default.createElement("div",{className:"mt-4 p-3 rounded-lg border",style:{background:t?"rgba(239,68,68,0.1)":"#fef2f2",borderColor:t?"rgba(239,68,68,0.3)":"#fecaca"}},dt.default.createElement("span",{className:"text-sm",style:{color:t?"#fca5a5":"#b91c1c"}},e.error))):null}var F0e=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},U0e=e=>e==null?null:`$${e.toFixed(4)}`;function h_({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=On(t),a=pP(e),i=u_(e),s=e.status!=="ERROR",l=F0e(e.tokens);return bn.default.createElement(g_,{darkMode:t,id:`trace-row-${e.id}`},bn.default.createElement("div",{className:`p-4 flex items-center justify-between flex-wrap gap-y-2 cursor-pointer transition-colors ${t?"hover:bg-white/5":"hover:bg-gray-50"}`,onClick:n,style:r?{background:o.hoverBg}:void 0},bn.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},bn.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:vt.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),bn.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:vt.mono,color:o.textMuted}},e.short_id),bn.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),bn.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},bn.default.createElement(tg,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&bn.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:vt.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:ai.context,empty:"Context: no generation in this trace reported its token counts",content:i&&bn.default.createElement(mc,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:ai.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&bn.default.createElement(bn.default.Fragment,null,bn.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Pn(e.duration_ms))},{key:"tokens",width:ai.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:ai.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&bn.default.createElement(bn.default.Fragment,null,bn.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),U0e(e.estimated_cost))},{key:"status",width:ai.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:bn.default.createElement("span",{style:{color:s?o.good:o.bad}},bn.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),bn.default.createElement(Jd,{open:r,darkMode:t}))),!r&&bn.default.createElement(rg,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:xn("user",t).color},{label:"output",text:a.output,color:xn("assistant",t).color}]}),r&&bn.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},bn.default.createElement($v,{trace:e,darkMode:t})))}function gq(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function hq(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function ct(e=""){return gq(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function og(e="",t={}){window.history.pushState(t,"",ct(e))}function Xn(e=window.location.pathname){return hq(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function kt(e,t={}){if(!e)return;let r=Xn(e);og(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:ct(r)}}))}var yq=({minutes:e,agentId:t=null})=>{let r=new URLSearchParams({minutes:String(e)});return t!=null&&t!==""&&r.set("agent_id",String(t)),`/api/traces?${r.toString()}`};var vq=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],W0e=3e4,H0e=e=>{let t={};return e.forEach((r,n)=>{t[r]=vq[n%vq.length]}),t},K0e=e=>{let t={};return e.forEach(r=>{(r.spans||[]).forEach(n=>{if((n.nested||0)===0)return;let o=n.name||n.type||"unknown";t[o]||(t[o]={name:o,type:n.type,count:0,total:0,max:0,errors:0});let a=t[o];a.count+=1,a.total+=n.duration||0,a.max=Math.max(a.max,n.duration||0),n.error&&(a.errors+=1)})}),Object.values(t).map(r=>({...r,avg:r.total/r.count})).sort((r,n)=>n.total-r.total)},q0e=(e,t,r,n=60)=>{let o=Date.now(),a=[],i=n*1e3,s=Math.max(1,Math.round(r*60/n));for(let l=s-1;l>=0;l--){let u=o-(l+1)*i,c=o-l*i,d=e.filter(p=>p.timestamp_ms>=u&&p.timestamp_ms{f[p]=d.filter(m=>m.agent===p).length}),a.push({time:r>1440?new Date(c).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(c).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),timestamp:c,requests:d.length,errors:d.filter(p=>p.status==="ERROR").length,avgLatency:d.length>0?Math.round(d.reduce((p,m)=>p+(m.duration_ms||0),0)/d.length):0,traces:d,...f})}return a};function Qd({agentId:e=null,embedded:t=!1}){let{darkMode:r}=lt(),[n,o]=(0,W.useState)([]),[a,i]=(0,W.useState)([]),[s,l]=(0,W.useState)({}),[u,c]=(0,W.useState)(!0),[d,f]=(0,W.useState)(null),[p,m]=(0,W.useState)(null),y=(0,W.useRef)(new URLSearchParams(window.location.search).get("trace")),[b,h]=(0,W.useState)(null),[g,v]=(0,W.useState)({status:"all",agent:"all",action:"all"}),[x,S]=(0,W.useState)("time"),[w,A]=(0,W.useState)(null),[k,_]=(0,W.useState)("timeline"),[C,E]=(0,W.useState)("popular"),{timeWindow:j}=Fs(),F=(0,W.useCallback)(async()=>{try{let L=await fetch(yq({minutes:j.minutes,agentId:e}));if(!L.ok)throw new Error(`Request failed (${L.status})`);let B=await L.json();o(B.traces||[]),i(B.agents||[]),l(B.agent_ids||{}),f(null)}catch(L){f(L.message)}finally{c(!1)}},[j.minutes,e]);(0,W.useEffect)(()=>{F();let L=setInterval(F,W0e);return()=>clearInterval(L)},[F]);let D=(0,W.useMemo)(()=>H0e(a),[a]);(0,W.useEffect)(()=>{A(null)},[j.id]);let z=(0,W.useMemo)(()=>q0e(n,a,j.minutes,j.bucketSeconds),[n,a,j]),N=Math.max(0,Math.ceil(z.length/6)-1),O=(0,W.useMemo)(()=>{let L=n;if(w!==null){let B=z[w];B&&(L=B.traces||[])}if(g.status!=="all"&&(L=L.filter(B=>g.status==="success"?B.status!=="ERROR":B.status==="ERROR")),g.agent!=="all"&&(L=L.filter(B=>B.agent===g.agent)),g.action!=="all")if(g.action.includes("#")){let[B,q]=g.action.split("#");L=L.filter(M=>M.agent===B&&M.action===q)}else L=L.filter(B=>B.action===g.action);return x==="latency"&&(L=[...L].sort((B,q)=>(q.duration_ms||0)-(B.duration_ms||0))),b&&!L.some(B=>B.id===b.id)&&(L=[b,...L]),L},[n,w,z,g,x,b]);(0,W.useEffect)(()=>{let L=y.current;if(!L)return;let B=M=>{y.current=null,m(M.id),setTimeout(()=>{document.getElementById(`trace-row-${M.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},q=n.find(M=>M.id===L||M.trace_id===L||M.short_id&&String(L).startsWith(M.short_id));if(q){B(q);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent(L)}`).then(M=>M.ok?M.json():Promise.reject(new Error("not found"))).then(({trace:M})=>{h(M),B(M)}).catch(()=>{y.current=null})},[n]);let $=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};L.forEach(M=>{M.agent&&(B[M.agent]||(B[M.agent]={agent:M.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),B[M.agent].count++,B[M.agent].totalDuration+=M.duration_ms||0,B[M.agent].cost+=M.estimated_cost||0,M.status==="ERROR"&&B[M.agent].errors++,M.tokens&&(B[M.agent].tokens.thinking+=M.tokens.thinking||0,B[M.agent].tokens.input+=M.tokens.input||0,B[M.agent].tokens.output+=M.tokens.output||0),M.action&&(B[M.agent].actions[M.action]=(B[M.agent].actions[M.action]||0)+1))});let q={popular:M=>M.count,longest:M=>M.totalDuration/(M.count||1),cost:M=>M.cost,tokens:M=>(M.tokens.input||0)+(M.tokens.output||0)+(M.tokens.thinking||0),errors:M=>M.errors}[C]||(M=>M.count);return Object.values(B).sort((M,ne)=>q(ne)-q(M)||ne.count-M.count)},[n,z,w,C]),T=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};return L.forEach(q=>{if(!q.agent)return;let M=`${q.agent}#${q.action||"unknown"}`;B[M]||(B[M]={key:M,agent:q.agent,action:q.action||"unknown",count:0,totalDuration:0,errors:0,minDuration:1/0,maxDuration:0,tokens:{thinking:0,input:0,output:0}}),B[M].count++,B[M].totalDuration+=q.duration_ms||0,B[M].minDuration=Math.min(B[M].minDuration,q.duration_ms||0),B[M].maxDuration=Math.max(B[M].maxDuration,q.duration_ms||0),q.status==="ERROR"&&B[M].errors++,q.tokens&&(B[M].tokens.thinking+=q.tokens.thinking||0,B[M].tokens.input+=q.tokens.input||0,B[M].tokens.output+=q.tokens.output||0)}),Object.values(B).forEach(q=>{q.minDuration===1/0&&(q.minDuration=0)}),Object.values(B).sort((q,M)=>M.count-q.count)},[n,z,w]),I=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};return L.forEach(q=>{(q.spans||[]).forEach(M=>{if(M.type!=="tool")return;let ne=M.attributes?.["tool.name"]||M.name?.replace(/^tool\./,"")||"unknown";B[ne]||(B[ne]={name:ne,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),B[ne].count++,B[ne].totalDuration+=M.duration||0,B[ne].maxDuration=Math.max(B[ne].maxDuration,M.duration||0),M.error&&B[ne].errors++,q.agent&&B[ne].agents.add(`${q.agent}#${q.action||"unknown"}`)})}),Object.values(B).map(q=>({...q,agents:[...q.agents],avgDuration:q.count?q.totalDuration/q.count:0})).sort((q,M)=>M.totalDuration-q.totalDuration)},[n,z,w]),P=(0,W.useMemo)(()=>g.agent==="all"?T.map(L=>L.key):T.filter(L=>L.agent===g.agent).map(L=>L.key),[g.agent,T]),H=(0,W.useMemo)(()=>K0e(O),[O]),Q=L=>{if(L&&L.activeTooltipIndex!==void 0){let B=L.activeTooltipIndex;A(w===B?null:B),m(null)}},K=L=>(L?.input||0)+(L?.output||0)+(L?.thinking||0),ue=L=>{let B=L.count?L.errors/L.count:0;return[{label:`Calls ${j.label||""}`.trim(),value:L.count.toLocaleString()},{label:"Errors",value:`${(B*100).toFixed(1)}%`,tone:L.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round(L.totalDuration/(L.count||1))}ms`},{label:"Tokens",value:K(L.tokens).toLocaleString()},{label:"Cost",value:pe(L.cost),title:"Estimated from token counts at this model's published rates",tone:L.cost?void 0:"muted"},{label:"Actions",value:(L.agents?.length||0).toLocaleString()}]},pe=L=>L?L<.01?"<$0.01":`$${L.toFixed(2)}`:"\u2014",re=W.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},W.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),W.default.createElement("select",{value:C,onChange:L=>E(L.target.value),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:`1px solid ${r?"rgba(255,255,255,0.15)":"#e5e7eb"}`,background:r?"rgba(255,255,255,0.05)":"#ffffff",color:r?"#f9fafb":"#111827"}},W.default.createElement("option",{value:"popular"},"Most calls"),W.default.createElement("option",{value:"longest"},"Longest average"),W.default.createElement("option",{value:"cost"},"Highest cost"),W.default.createElement("option",{value:"tokens"},"Most tokens"),W.default.createElement("option",{value:"errors"},"Most errors"))),_e=L=>v(B=>({...B,agent:B.agent===L?"all":L})),de=L=>{let B=s[L];if(!B)return _e(L);let q=ct(`/agents/${B}`);window.history.pushState(window.history.state,"",q),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:q}}))},le=L=>{let B=H[0]?.total||1,q=L?"rgba(0,0,0,0.3)":"white",M=L?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",ne=L?"white":"#111827",U=L?"rgba(255,255,255,0.5)":"#6b7280",oe={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return W.default.createElement("div",{style:{padding:L?"0 24px 24px 24px":0}},W.default.createElement("div",{style:{background:q,border:M,borderRadius:"12px",padding:"16px"}},W.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:ne,marginBottom:"4px"}},"Slowest operations"),W.default.createElement("div",{style:{fontSize:"12px",color:U,marginBottom:"14px"}},"Span durations aggregated across ",O.length," trace",O.length===1?"":"s"," \u2014 ranked by total time"),H.length===0?W.default.createElement("div",{style:{fontSize:"13px",color:U,padding:"12px 0"}},"No spans in the current selection"):W.default.createElement("div",{style:{display:"grid",gap:"10px"}},H.map(ve=>W.default.createElement("div",{key:ve.name,style:{display:"flex",alignItems:"center",gap:"12px"}},W.default.createElement("div",{style:{width:"220px",flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},W.default.createElement("span",{style:{color:U}},fP(ve.type)),W.default.createElement("span",{style:{fontSize:"13px",color:ve.errors>0?"#ef4444":ne,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ve.name)),W.default.createElement("div",{style:{flex:1,height:"18px",background:L?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},W.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ve.total/B*100,.5)}%`,background:oe[ve.type]||"#6366f1"}})),W.default.createElement("div",{style:{width:"260px",flexShrink:0,fontSize:"12px",color:U,fontFamily:vt.mono,textAlign:"right"}},ve.count,"\xD7 \xB7 avg ",Pn(ve.avg)," \xB7 max ",Pn(ve.max)," \xB7 \u03A3 ",Pn(ve.total)))))))};if(u)return W.default.createElement("div",{className:"flex items-center justify-center h-64"},W.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let Z={requests:z.reduce((L,B)=>L+B.requests,0),errors:z.reduce((L,B)=>L+B.errors,0),avgLatency:(()=>{let L=z.filter(B=>B.requests>0);return L.length===0?0:Math.round(L.reduce((B,q)=>B+q.avgLatency,0)/L.length)})(),throughput:(z.reduce((L,B)=>L+B.requests,0)/j.minutes).toFixed(1)},ee=n.length===0;return r?W.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},W.default.createElement("div",{style:{padding:"24px 24px 0 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px",paddingBottom:"16px"}},W.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},W.default.createElement("div",null,!t&&W.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),W.default.createElement("p",{style:{fontSize:"14px",color:"rgba(255,255,255,0.6)",marginTop:"4px"}},w!==null?`Viewing ${z[w]?.time} \u2022 ${O.length} requests`:`Last ${j.label} \u2022 Click timeline to drill down`)),W.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},W.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px"}},["timeline","agents","actions","tools","spans"].map(L=>W.default.createElement("button",{key:L,onClick:()=>_(L),style:{padding:"6px 12px",background:k===L?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},L))),!e&&W.default.createElement("select",{value:g.agent,onChange:L=>v({...g,agent:L.target.value,action:"all"}),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"180px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Agents"),a.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.action,onChange:L=>v({...g,action:L.target.value}),style:{padding:"8px 12px",background:g.action!=="all"?"rgba(239, 68, 68, 0.3)":"rgba(255,255,255,0.1)",border:g.action!=="all"?"1px solid #ef4444":"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"220px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Actions"),P.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.status,onChange:L=>v({...g,status:L.target.value}),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px"}},W.default.createElement("option",{value:"all"},"All Status"),W.default.createElement("option",{value:"success"},"Success"),W.default.createElement("option",{value:"error"},"Error")),W.default.createElement("select",{value:x,onChange:L=>S(L.target.value),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px"}},W.default.createElement("option",{value:"time"},"Newest first"),W.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&W.default.createElement("button",{onClick:()=>A(null),style:{padding:"8px 16px",background:"rgba(255,255,255,0.2)",color:"white",borderRadius:"8px",border:"none",fontSize:"14px",fontWeight:"500",cursor:"pointer"}},"Clear Selection")))),d&&W.default.createElement("div",{style:{margin:"0 24px 16px 24px",padding:"12px 16px",background:"rgba(239, 68, 68, 0.1)",borderRadius:"8px",color:"#ef4444",fontSize:"13px"}},"Failed to load traces: ",d),W.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},W.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},W.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"}},W.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),W.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries(D).map(([L,B])=>W.default.createElement("div",{key:L,style:{display:"flex",alignItems:"center",gap:"6px"}},W.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:B}}),W.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},L.replace("Agent","")))))),W.default.createElement("div",{style:{height:"150px"}},W.default.createElement(ju,{width:"100%",height:"100%"},W.default.createElement(fc,{data:z,onClick:Q,style:{cursor:"pointer"}},W.default.createElement("defs",null,Object.entries(D).map(([L,B])=>W.default.createElement("linearGradient",{key:L,id:`gradient-${L}`,x1:"0",y1:"0",x2:"0",y2:"1"},W.default.createElement("stop",{offset:"5%",stopColor:B,stopOpacity:.8}),W.default.createElement("stop",{offset:"95%",stopColor:B,stopOpacity:.1})))),W.default.createElement(zl,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),W.default.createElement(Wl,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:N}),W.default.createElement(Kl,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),W.default.createElement(Qu,{contentStyle:{background:"rgba(0,0,0,0.9)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",padding:"12px"},labelStyle:{color:"white",fontWeight:"600",marginBottom:"8px"},itemStyle:{color:"rgba(255,255,255,0.8)",fontSize:"12px"},formatter:(L,B)=>[L,B.replace("Agent","")]}),Object.keys(D).map(L=>W.default.createElement(Fl,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:D[L],fill:`url(#gradient-${L})`}))))),W.default.createElement("div",{style:{display:"flex",gap:"24px",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"white"}},Z.requests),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},Z.errors),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},Z.avgLatency,"ms"),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},Z.throughput,"/min"),W.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),k==="agents"&&W.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},re,W.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"16px"}},$.map(L=>W.default.createElement(xp,{key:L.agent,name:L.agent,accentColor:D[L.agent],subtitle:L.agents?.length?L.agents.join(", "):void 0,badge:W.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:D[L.agent]+"30",color:D[L.agent],borderRadius:"4px",whiteSpace:"nowrap"}},L.count," calls"),onClick:()=>de(L.agent),stats:ue(L),footer:W.default.createElement(W.default.Fragment,null,W.default.createElement("span",null,s[L.agent]?"Open agent \u2192":"Not linked to an agent record"),W.default.createElement("button",{onClick:B=>{B.stopPropagation(),_e(L.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:g.agent===L.agent?"#ef4444":"inherit",font:"inherit"}},g.agent===L.agent?"Clear filter":"Filter traces"))})))),k==="actions"&&W.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},W.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:"12px"}},T.map(L=>{let B=g.action===L.key;return W.default.createElement("div",{key:L.key,onClick:()=>{v({...g,action:B?"all":L.key}),_("timeline")},style:{background:B?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:B?"1px solid #ef4444":`1px solid ${D[L.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},W.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},W.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},W.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:D[L.agent]}}),W.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},L.agent),W.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",L.action)),W.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:D[L.agent]+"30",color:D[L.agent],borderRadius:"4px"}},L.count," calls")),W.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),W.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(L.totalDuration/L.count),"ms")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),W.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(L.minDuration),"ms / ",Math.round(L.maxDuration),"ms")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),W.default.createElement("div",{style:{fontSize:"13px",color:L.errors>0?"#ef4444":"#10b981"}},L.errors," (",(L.errors/L.count*100).toFixed(0),"%)")),W.default.createElement("div",null,W.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),W.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},K(L.tokens).toLocaleString()))))}))),k==="spans"&&le(!0),k==="timeline"&&!ee&&W.default.createElement("div",{className:"space-y-4"},O.length===0?W.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):O.map(L=>W.default.createElement(h_,{key:L.id,trace:L,darkMode:!0,expanded:p===L.id,onToggle:()=>m(p===L.id?null:L.id)}))),ee&&k==="timeline"&&W.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},W.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),W.default.createElement("p",{style:{color:"rgba(255,255,255,0.4)",fontSize:"14px",marginTop:"8px"}},"Run an agent, or point your app's ActiveAgent telemetry at this workspace to see traces appear here"))):W.default.createElement("div",{className:"space-y-6"},W.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},W.default.createElement("div",null,W.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),W.default.createElement("p",{className:"text-sm text-gray-500"},w!==null?`Viewing ${z[w]?.time} \u2022 ${O.length} requests`:`Last ${j.label} \u2022 Click timeline to drill down`)),W.default.createElement("div",{className:"flex items-center space-x-3 flex-wrap gap-y-2 min-w-0"},W.default.createElement(Us,null),W.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},["timeline","agents","actions","tools","spans"].map(L=>W.default.createElement("button",{key:L,onClick:()=>_(L),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${k===L?"bg-white shadow text-gray-900":"text-gray-600"}`},L))),W.default.createElement("select",{value:g.agent,onChange:L=>v({...g,agent:L.target.value,action:"all"}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",style:{maxWidth:"180px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Agents"),a.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.action,onChange:L=>v({...g,action:L.target.value}),className:`px-3 py-2 border rounded-lg text-sm focus:ring-2 focus:ring-red-500 ${g.action!=="all"?"border-red-500 bg-red-50":"border-gray-300"}`,style:{maxWidth:"220px",textOverflow:"ellipsis"}},W.default.createElement("option",{value:"all"},"All Actions"),P.map(L=>W.default.createElement("option",{key:L,value:L},L))),W.default.createElement("select",{value:g.status,onChange:L=>v({...g,status:L.target.value}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},W.default.createElement("option",{value:"all"},"All Status"),W.default.createElement("option",{value:"success"},"Success"),W.default.createElement("option",{value:"error"},"Error")),W.default.createElement("select",{value:x,onChange:L=>S(L.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},W.default.createElement("option",{value:"time"},"Newest first"),W.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&W.default.createElement("button",{onClick:()=>A(null),className:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors text-sm font-medium"},"Clear Selection"))),d&&W.default.createElement("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700"},"Failed to load traces: ",d),W.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},W.default.createElement("div",{className:"flex justify-between items-center mb-3"},W.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),W.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries(D).map(([L,B])=>W.default.createElement("div",{key:L,className:"flex items-center gap-1.5"},W.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:B}}),W.default.createElement("span",{className:"text-xs text-gray-500"},L.replace("Agent","")))))),W.default.createElement("div",{className:"h-36"},W.default.createElement(ju,{width:"100%",height:"100%"},W.default.createElement(fc,{data:z,onClick:Q,style:{cursor:"pointer"}},W.default.createElement("defs",null,Object.entries(D).map(([L,B])=>W.default.createElement("linearGradient",{key:L,id:`gradient-light-${L}`,x1:"0",y1:"0",x2:"0",y2:"1"},W.default.createElement("stop",{offset:"5%",stopColor:B,stopOpacity:.6}),W.default.createElement("stop",{offset:"95%",stopColor:B,stopOpacity:.05})))),W.default.createElement(zl,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),W.default.createElement(Wl,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),W.default.createElement(Kl,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),W.default.createElement(Qu,{contentStyle:{background:"white",border:"1px solid #e5e7eb",borderRadius:"8px",boxShadow:"0 4px 6px -1px rgba(0,0,0,0.1)"},labelStyle:{color:"#111827",fontWeight:"600",marginBottom:"8px"},formatter:(L,B)=>[L,B.replace("Agent","")]}),Object.keys(D).map(L=>W.default.createElement(Fl,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:D[L],fill:`url(#gradient-light-${L})`}))))),W.default.createElement("div",{className:"flex gap-6 mt-3 pt-3 border-t border-gray-100"},W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-gray-900"},Z.requests),W.default.createElement("div",{className:"text-xs text-gray-500"},"Total Requests")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-red-500"},Z.errors),W.default.createElement("div",{className:"text-xs text-gray-500"},"Errors")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-green-600"},Z.avgLatency,"ms"),W.default.createElement("div",{className:"text-xs text-gray-500"},"Avg Latency")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-lg font-bold text-amber-500"},Z.throughput,"/min"),W.default.createElement("div",{className:"text-xs text-gray-500"},"Throughput")))),k==="agents"&&W.default.createElement("div",null,re,W.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},$.map(L=>W.default.createElement(xp,{key:L.agent,name:L.agent,accentColor:D[L.agent],subtitle:L.agents?.length?L.agents.join(", "):void 0,badge:W.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:D[L.agent]+"20",color:D[L.agent]}},L.count," calls"),onClick:()=>de(L.agent),stats:ue(L),footer:W.default.createElement(W.default.Fragment,null,W.default.createElement("span",null,s[L.agent]?"Open agent \u2192":"Not linked to an agent record"),W.default.createElement("button",{onClick:B=>{B.stopPropagation(),_e(L.agent)},className:g.agent===L.agent?"text-red-600":"hover:text-gray-700"},g.agent===L.agent?"Clear filter":"Filter traces"))})))),k==="actions"&&W.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},T.map(L=>{let B=g.action===L.key;return W.default.createElement("div",{key:L.key,onClick:()=>{v({...g,action:B?"all":L.key}),_("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${B?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:D[L.agent],borderLeftWidth:B?"2px":"4px"}},W.default.createElement("div",{className:"flex items-center justify-between mb-3"},W.default.createElement("div",{className:"flex items-center gap-2"},W.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:D[L.agent]}}),W.default.createElement("span",{className:"font-semibold text-gray-900"},L.agent),W.default.createElement("span",{className:"text-gray-500"},"#",L.action)),W.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:D[L.agent]+"20",color:D[L.agent]}},L.count," calls")),W.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),W.default.createElement("div",{className:"font-medium"},Math.round(L.totalDuration/L.count),"ms")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),W.default.createElement("div",{className:"text-gray-600"},Math.round(L.minDuration),"ms / ",Math.round(L.maxDuration),"ms")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Errors"),W.default.createElement("div",{className:L.errors>0?"text-red-600":"text-green-600"},L.errors," (",(L.errors/L.count*100).toFixed(0),"%)")),W.default.createElement("div",null,W.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),W.default.createElement("div",{className:"text-gray-600"},K(L.tokens).toLocaleString()))))})),k==="tools"&&(I.length===0?W.default.createElement("div",{className:"text-center py-8 text-gray-500 text-sm"},"No tool calls in this window"):W.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},W.default.createElement("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium text-gray-500 border-b border-gray-100"},W.default.createElement("div",{className:"flex-1"},"Tool"),W.default.createElement("div",{className:"w-20 text-right"},"Calls"),W.default.createElement("div",{className:"w-24 text-right"},"Total time"),W.default.createElement("div",{className:"w-20 text-right"},"Avg"),W.default.createElement("div",{className:"w-20 text-right"},"Slowest")),I.map(L=>{let B=I[0].totalDuration?L.totalDuration/I[0].totalDuration*100:0;return W.default.createElement("div",{key:L.name,className:"px-4 py-2 border-b border-gray-50 last:border-0"},W.default.createElement("div",{className:"flex items-center gap-4 text-sm"},W.default.createElement("div",{className:"flex-1 min-w-0"},W.default.createElement("div",{className:"font-medium text-gray-900 truncate",title:L.name},L.name),L.agents.length>0&&W.default.createElement("div",{className:"text-xs text-gray-400 truncate",title:L.agents.join(", ")},L.agents.join(", "))),W.default.createElement("div",{className:"w-20 text-right text-gray-700",style:{fontFamily:vt.mono}},L.count.toLocaleString(),L.errors>0&&W.default.createElement("span",{className:"text-red-600 ml-1",title:`${L.errors} failed`},"(",L.errors,")")),W.default.createElement("div",{className:"w-24 text-right text-gray-900 font-medium",style:{fontFamily:vt.mono}},Pn(L.totalDuration)),W.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:vt.mono}},Pn(L.avgDuration)),W.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:vt.mono}},Pn(L.maxDuration))),W.default.createElement("div",{className:"h-1 bg-gray-100 rounded mt-1.5"},W.default.createElement("div",{className:"h-1 bg-green-500 rounded",style:{width:`${Math.max(B,1)}%`}})))}))),k==="spans"&&le(!1),k==="timeline"&&!ee&&W.default.createElement("div",{className:"space-y-4"},O.length===0?W.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):O.map(L=>W.default.createElement(h_,{key:L.id,trace:L,darkMode:!1,expanded:p===L.id,onToggle:()=>m(p===L.id?null:L.id)}))),ee&&k==="timeline"&&W.default.createElement("div",{className:"text-center py-12"},W.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),W.default.createElement("p",{className:"text-gray-500 text-sm mt-2"},"Run an agent, or point your app's ActiveAgent telemetry at this workspace to see traces appear here")))}var be=V(Y());var y_=V(Y());function hP({trace:e,darkMode:t,height:r=8}){let n=On(t);if(!e)return y_.default.createElement("div",{className:"rounded",style:{height:`${r}px`,background:n.trackBg}});let o=e.spans||[],a=e.duration_ms||1,i=[...o].sort((s,l)=>(s.nested||0)-(l.nested||0));return y_.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>y_.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${Pn(s.duration)}`,style:{position:"absolute",top:0,bottom:0,left:`${Math.min(s.start/a*100,99)}%`,width:`${Math.max(s.duration/a*100,.8)}%`,background:s.error?"#ef4444":dP[s.type]||"#9ca3af"}})))}var ds=V(Y());var sr=V(Y());var qr=V(Y());var X="var(--font-mono)",Rd=e=>e>=1?"success":e>=.7?"warning":"error",la={success:{strong:"var(--color-success)",soft:"var(--color-success-soft)",text:"var(--color-success-text)"},warning:{strong:"var(--color-warning)",soft:"var(--color-warning-soft)",text:"var(--color-warning-text)"},error:{strong:"var(--color-error)",soft:"var(--color-error-soft)",text:"var(--color-error-text)"},info:{strong:"var(--color-info)",soft:"var(--color-info-soft)",text:"var(--color-info-text)"},muted:{strong:"var(--color-text-muted)",soft:"var(--color-muted)",text:"var(--color-text-secondary)"},accent:{strong:"var(--color-accent-ui)",soft:"var(--color-accent-ui-tint)",text:"var(--color-accent-ui)"}},yP={object:"=",sample:"~",pass:yo.success,fault:yo.error,info:yo.info,on:"[x]",off:"[ ]",link:yo.arrow,chevron:yo.chevronRight};function ii({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?qr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:X,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},yP.chevron):qr.default.createElement("span",{title:i,style:{fontFamily:X,fontSize:n,fontWeight:o,color:r||(e==="fault"?"var(--color-error)":e==="info"?"var(--color-info)":e==="pass"?"var(--color-success)":"var(--color-text-muted)"),flexShrink:0,...a}},yP[e]||e)}function Ee({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=la[e]||la.muted;return qr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:X,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function Ve({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return qr.default.createElement(a,{htmlFor:i,style:{fontFamily:X,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function io({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,title:a,style:i,testId:s}){return qr.default.createElement("button",{type:"button","data-testid":s,onClick:t,title:a,style:{padding:"4px 10px",borderRadius:n?6:999,cursor:t?"pointer":"default",fontFamily:o?X:"inherit",fontSize:o?11:12,fontWeight:o?400:500,background:e?"var(--color-accent-ui-tint)":"var(--color-card)",border:`1px solid ${e?"var(--color-accent-ui)":"var(--color-border)"}`,color:e?"var(--color-accent-ui)":o?"var(--color-text-muted)":"var(--color-text-cell)",...i}},r)}function Ui({options:e,value:t,onChange:r,style:n}){return qr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return qr.default.createElement("button",{key:o.value,type:"button",onClick:()=>r(o.value),"aria-pressed":a,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${a?"var(--color-accent-ui)":"var(--color-border)"}`,color:a?"var(--color-accent-ui)":"var(--color-text-cell)"}},o.label)}))}function se({variant:e="secondary",size:t="md",children:r,onClick:n,disabled:o=!1,title:a,type:i="button",style:s,testId:l}){let c={padding:t==="sm"?"6px 12px":"8px 14px",borderRadius:8,cursor:o?"not-allowed":"pointer",fontSize:13,fontWeight:500,opacity:o?.5:1,whiteSpace:"nowrap",fontFamily:"inherit"},d={primary:{background:"var(--color-accent-ui)",color:"var(--color-on-accent)",border:"1px solid transparent"},secondary:{background:"transparent",color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)"},danger:{background:"transparent",color:"var(--color-error)",border:"1px solid transparent"},ghost:{background:"transparent",color:"var(--color-text-secondary)",border:"1px solid transparent"}};return qr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function He({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return qr.default.createElement("div",{"data-testid":o,className:n,style:{background:"var(--color-card)",border:"1px solid var(--color-border)",borderRadius:12,padding:t,...r},...a},e)}function ag({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return qr.default.createElement(He,{testId:a},qr.default.createElement(Ve,{size:11,spacing:"0.05em"},e),qr.default.createElement("div",{style:{marginTop:8,fontFamily:X,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&qr.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},r))}function on({title:e,meta:t,children:r,style:n,testId:o,bodyStyle:a}){return qr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&qr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&qr.default.createElement(Ve,null,e),t&&qr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},t)),qr.default.createElement("div",{style:a},r))}function xq({passed:e,total:t,label:r,labelWidth:n=128,width:o,height:a=6,color:i,valueWidth:s=38,style:l}){let u=t?e/t:0,c=i||la[Rd(u)].strong;return qr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&qr.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),qr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},qr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),qr.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function Wi({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i}){return qr.default.createElement("a",{href:r,title:i,onClick:s=>{t&&(s.preventDefault(),t(s))},style:{fontFamily:X,fontSize:o,color:n,textDecoration:"none",...a}},e," ",yP.link)}function Zn({children:e,style:t}){return qr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:X,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Gl=V(Y());var V0e=/\/agents\/(\d+)/;function Ta(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function G0e(e){return t=>t===e?{}:null}function Lv(e){return t=>e.test(t)?{agentId:t.match(V0e)?.[1]}:null}function v_(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var Y0e=e=>e.assistantEnabled!==!1,X0e=Lv(/\/agents\/\d+\/(interactions|history)/),Z0e=["recording","context","run","scenario_result"],J0e=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function Q0e(e){let t=e.match(J0e);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var vP=[{view:"assistant",match:G0e("/assistant"),path:"/assistant",enabled:Y0e},{view:"traces",match:Ta("/traces"),path:"/traces"},{view:"metrics",match:Ta("/metrics"),path:"/metrics"},{view:"scenarios",match:Ta("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:Ta("/interactions"),path:"/interactions"},{view:"tools",match:Ta("/tools"),path:"/tools"},{view:"mcp",match:e=>{if(!e.startsWith("/mcp"))return null;let t=e.match(/^\/mcp\/([^/?#]+)/)?.[1];return t?{focusServer:decodeURIComponent(t)}:{}},path:"/mcp"},{view:"evaluations",match:Ta("/evaluations"),path:"/evaluations"},{view:"analytics",match:Ta("/analytics"),path:"/analytics"},{view:"projects",match:Ta("/projects"),path:"/projects"},{view:"exploration",match:Ta("/explorations"),path:"/explorations"},{view:"builder",match:Ta("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=X0e(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:v_("/interactions")},{view:"agent-analytics",match:Lv(/\/agents\/\d+\/analytics/),path:v_("/analytics")},{view:"editor",match:Lv(/\/agents\/\d+\/edit/),path:v_("/edit")},{view:"runner",match:Lv(/\/agents\/\d+\/run/),path:v_("/run")},{view:"history",match:Lv(/\/agents\/\d+\/?$/)},{view:"replay",match:Q0e},{view:"sessions",match:Ta("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:Ta("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:Ta("/organization"),path:"/organization"},{view:"settings",match:Ta("/settings"),path:"/settings"}],R0e="list",bq=[{id:"agents",label:null,items:[{view:"assistant",label:"Ask ActiveAgents",glyph:">"},{view:"list",label:"Agents",icon:"agents",badge:"agentCount"},{view:"builder",label:"New Agent",icon:"newAgent"},{view:"sandbox",label:"Run Agents",icon:"demo"},{view:"projects",label:"Projects",glyph:""}]},{id:"observability",label:"Observability",items:[{view:"traces",label:"Traces",icon:"traces"},{view:"interactions",label:"Interactions",icon:"interactions",badge:"pendingInputCount",badgeTone:"attention",badgeTitle:"requests waiting for an answer"},{view:"tools",label:"Tools",icon:"tools"},{view:"mcp",label:"MCP Services",icon:"mcp"},{view:"metrics",label:"Metrics",icon:"metrics"},{view:"evaluations",label:"Evaluations",icon:"evaluations"},{view:"scenarios",label:"Scenarios",icon:"evaluations"},{view:"sessions",label:"Sessions",icon:"replay",also:["replay"]}]},{id:"workspace",label:"Workspace",items:[{view:"organization",label:"Organization",glyph:"\u{1F3E2}"},{view:"settings",label:"Settings",glyph:"\u2699\uFE0F"}]}];function wq(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function zv(e,t={}){return vP.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function Sq(e,t={}){for(let r of vP){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:R0e}}function x_(e,{agent:t=null,features:r={}}={}){if(!zv(e,r))return null;let n=vP.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function kq(e){for(let t of bq){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function ig(e,t){return!Z0e.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function _q(e={}){return bq.map(t=>({...t,items:t.items.filter(r=>zv(r.view,e))}))}var exe=["agent_defined","dashboard","mcp"],bP={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},txe={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},w_=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],wP=e=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let t=Number(e);return t>=1e3?`${(t/1e3).toFixed(1)}s`:`${Math.round(t)}ms`},Bv=(e,t=Date.now())=>{if(!e)return"never";let r=new Date(e).getTime();if(Number.isNaN(r))return"never";let n=Math.floor((t-r)/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let o=Math.floor(n/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`},rxe="sandbox:",ef=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(rxe))),Fv=e=>ef(e)&&!e.known,S_=e=>!!e&&!e.known&&!ef(e);function Cq(e){return Fv(e)?"this sandbox is no longer running, so it offers no tools \u2014 switch it off, and start a new sandbox from Settings \u2192 Integrations to enable its runtime":ef(e)?"tools are listed by the running app each time the agent runs":"no tools recorded for this service yet"}var xP=e=>{if(typeof e=="string")return e.trim()||null;if(!e||typeof e!="object")return null;let t=e.key||e.name;return t&&String(t).trim()||null};function b_(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=xP(o);a&&r.set(a,o)});let n={};return(e.services||[]).forEach(o=>{let a=r.get(o.key),i=a&&typeof a=="object"&&Array.isArray(a.tools)?a.tools.map(s=>String(s&&s.name?s.name:s)):null;n[o.key]={on:r.has(o.key),tools:Object.fromEntries((o.tools||[]).map(s=>[s.name,i===null||i.includes(s.name)]))}}),n}var Aq=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function Eq(e,t,{query:r="",filter:n=null}={}){let o=Aq(r);return(e.services||[]).filter(a=>n?n==="enabled"?t[a.key]?.on:a.status===n:!0).filter(a=>o(a.name,a.description)||(a.tools||[]).some(i=>o(i.name))).map(a=>{let i=t[a.key]||{on:!1,tools:{}},s=a.tools||[],l=s.map(c=>({...c,on:!!i.tools[c.name]})),u=l.filter(c=>c.on);return{...a,on:i.on,tools:l,offeredCount:s.length,enabledCount:u.length,toolsLabel:`${u.length}/${s.length}`,partial:i.on&&u.length{let o=t[n.key];!o||!o.on||(n.tools||[]).forEach(a=>{o.tools[a.name]&&r.push({...a,key:`${n.key}:${a.name}`,source:"mcp",editable:!1,enabled:!0,server:n.name,serverKey:n.key})})}),r}function Nq(e,t,r=[]){let n=new Set((r||[]).map(String));return(e.tools||[]).map(o=>({...o,on:o.editable?n.has(o.key):o.enabled!==!1})).concat(nxe(e,t).map(o=>({...o,on:!0})))}function Tq(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=Aq(n),s=Nq(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return exe.map(u=>{let c=s.filter(p=>p.source===u),d=c.some(p=>p.editable),f=c.filter(p=>p.on).length;return{source:u,name:bP[u],meta:`${txe[u]} \xB7 ${c.length} ${c.length===1?"tool":"tools"}`,countLabel:d?`${f}/${c.length} on`:`${c.length} offered`,editable:d,total:c.length,enabledCount:f,keys:c.map(p=>p.key),rows:l.filter(p=>p.source===u)}}).filter(u=>u.total>0)}function Oq(e,t,r,{range:n="7d"}={}){let o=Nq(e,t,r),a=e.usage_available!==!1,i=e.services||[],s=i.filter(p=>t[p.key]?.on),l=o.filter(p=>p.source!=="mcp"&&p.on),u=o.filter(p=>p.source==="mcp"),c=o.reduce((p,m)=>p+(m.calls||0),0),d=o.reduce((p,m)=>p+(m.errors||0),0),f=o.filter(p=>p.on&&!p.calls).length;return[{key:"tools",label:"Tools enabled",value:String(l.length+u.length),sub:`${l.length} direct \xB7 ${u.length} offered through MCP`},{key:"services",label:"MCP services",value:`${s.length}/${i.length}`,sub:s.length?`on for this agent: ${s.map(p=>p.name).join(", ")}`:"none enabled for this agent"},{key:"calls",label:"Tool calls",value:a?String(c):"\u2014",sub:a?`${d} error${d===1?"":"s"} in the last ${n} \xB7 traced`:"no calls recorded in this window yet"},{key:"unused",label:"Never called",value:a?String(f):"\u2014",sub:"enabled but unused in this window",tone:a&&f>6?"warning":null}]}function Pq(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function SP(e,t=[]){let r=Pq(e);if(r.length===0)return null;let n=new Set((t||[]).map(String)),o=r.filter(a=>n.has(a)).length;return o===0?"off":o===r.length?"on":"partial"}function oxe(e=[],t=[],r=!0){let n=(e||[]).map(String);return r?n.concat(t.filter(o=>!n.includes(o))):n.filter(o=>!t.includes(o))}function Mq(e=[],t,r=[]){let n=(e||[]).map(String),o=SP(t,n);if(!o)return n;let a=new Set(oxe(n,Pq(t),o==="off")),i=(r||[]).map(String),s=new Set(i);return a.size===s.size&&[...a].every(u=>s.has(u))?i:[...a]}function Iq(e,t,r){let n=b_(e,t.mcpServers),o=b_(e,r.mcpServers),a=0;Object.keys(n).forEach(d=>{n[d].on!==o[d].on&&(a+=1),Object.keys(n[d].tools).forEach(f=>{n[d].tools[f]!==o[d].tools[f]&&(a+=1)})});let i=new Set((t.tools||[]).map(String)),s=new Set((r.tools||[]).map(String));(e.tools||[]).forEach(d=>{d.editable&&i.has(d.key)!==s.has(d.key)&&(a+=1)});let l=new Set((t.approvalRequiredTools||[]).map(String)),u=new Set((r.approvalRequiredTools||[]).map(String));return(e.tools||[]).concat((e.services||[]).flatMap(d=>d.tools||[])).forEach(d=>{(d.approval_names||[]).some(f=>l.has(f)!==u.has(f))&&(a+=1)}),a}function Dq(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=xP(i);s&&n.set(s,i)});let o=[];(e.services||[]).forEach(i=>{let s=t[i.key];if(!s||!s.on)return;let l=(i.tools||[]).map(p=>p.name),u=l.filter(p=>s.tools[p]),c=n.get(i.key),d=l.length>0&&u.lengthi.key));return(r||[]).forEach(i=>{let s=xP(i);s&&!a.has(s)&&o.push(i)}),o}function kP(e,t=[]){let r=new Set((e.tools||[]).filter(a=>a.editable).map(a=>a.key)),n=(t||[]).map(String).filter(a=>!r.has(a)),o=(e.tools||[]).filter(a=>a.editable&&t.includes(a.key)).map(a=>a.key);return n.concat(o)}var _P="/api/input_requests",k_="action-agent:input-requests-changed",$q=3e4,jq=100,axe=["text","choice","confirm","secret"];function Lq({agentId:e=null,runId:t=null}={}){let r=new URLSearchParams;e!=null&&r.set("agent_id",String(e)),t!=null&&r.set("run_id",String(t));let n=r.toString();return n?`${_P}?${n}`:_P}function sg(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function zq(e){let t=sg(e).length;if(t!==0)return t>=jq?`${jq-1}+`:t}function CP(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?sg(e.input_requests).length>0?"awaiting":"poll":"finished"}function AP(e){return axe.includes(e?.kind)?e.kind:null}function Bq(e){return(Array.isArray(e?.options)?e.options:[]).map(t=>{if(t&&typeof t=="object"){let r=String(t.value??t.label??"");return{value:r,label:String(t.label??r)}}return t==null?null:{value:String(t),label:String(t)}}).filter(t=>t&&t.value!=="")}function Fq(e){return e?.id==null?"answer":`answer-${e.id}`}function Uq(e){switch(AP(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:Fq(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:Bq(e).map(t=>t.label)}];default:return[]}}function Wq(e,t){if(t?.kind==="form"){let r=t.values?.[Fq(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return Bq(e).find(r=>r.label===t.text)?.value}var ixe={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function sxe(e,t={}){if(e>=200&&e<300)return{state:t?.input_request?.status==="declined"?"declined":"answered"};if(e===409){let r=t?.status||null;return{state:"closed",status:r,message:ixe[r]||"No longer waiting for an answer"}}return e===422?{state:"invalid",message:t?.error||"That answer does not fit this request"}:e===404?{state:"error",message:"This request is no longer available"}:{state:"error",message:t?.error||`Request failed (${e})`}}function EP(e){return["answered","declined","closed"].includes(e?.state)}async function Hq(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${_P}/${encodeURIComponent(e.id)}/${r?"decline":"answer"}`,a;try{a=await n(o,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(r?{}:{answer:t})})}catch{return{state:"error",message:"Could not reach the server. Try again."}}let i=await a.json().catch(()=>({}));return sxe(a.status,i)}function Kq(e,t){return t?.state==="closed"?t.message:t?.state==="declined"?e?.kind==="confirm"?"Declined: the tool does not run":"Declined":t?.state==="answered"?e?.kind==="confirm"?"Approved: the tool runs":"Answered: the run continues":null}function qq(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function Vq(e,t=Date.now()){if(!e)return null;let r=new Date(e).getTime();if(Number.isNaN(r))return null;let n=Math.floor((r-t)/6e4);if(n<0)return"expired";if(n<60)return`expires in ${Math.max(n,1)}m`;let o=Math.floor(n/60);return o<48?`expires in ${o}h`:`expires in ${Math.floor(o/24)}d`}function Gq(e,t=Date.now()){return e?`asked ${Bv(e,t)}`:null}function Yq(e){let t=e?.arguments;return t==null||typeof t=="object"&&Object.keys(t).length===0?null:typeof t=="string"?t:JSON.stringify(t,null,2)}function Xq(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=x_("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function Zq(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function __(){window.dispatchEvent(new CustomEvent(k_))}function C_({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=$q}={}){let[o,a]=(0,Gl.useState)(null),[i,s]=(0,Gl.useState)(null),l=(0,Gl.useRef)(0),u=(0,Gl.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(Lq({agentId:e}));if(!d.ok)throw new Error(`Request failed (${d.status})`);let f=await d.json();if(c!==l.current)return;a(Array.isArray(f.input_requests)?f.input_requests:[]),s(null)}catch(d){if(c!==l.current)return;s(d.message)}},[e]);return(0,Gl.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(k_,u),()=>{clearInterval(c),window.removeEventListener(k_,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var lxe={text:"question",choice:"choice",confirm:"approval",secret:"secret"},uxe={answered:"success",declined:"muted",closed:"warning"},NP={fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},cxe={flex:1,minWidth:0,padding:"7px 10px",borderRadius:8,border:"1px solid var(--color-border-strong)",background:"var(--color-surface)",color:"var(--color-text-primary)",fontFamily:X,fontSize:13};function dxe({request:e,busy:t,onSubmit:r}){let[n,o]=(0,sr.useState)("");return sr.default.createElement("form",{onSubmit:i=>{if(i.preventDefault(),!n||t)return;let s=n;o(""),r(s)},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},sr.default.createElement("input",{type:"password",autoComplete:"off",spellCheck:!1,"data-aa-secret":"","data-testid":"input-request-secret","aria-label":e.prompt,value:n,onChange:i=>o(i.target.value),disabled:t,style:cxe}),sr.default.createElement(se,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function fxe({request:e,busy:t,onApprove:r,onDecline:n}){let o=Yq(e);return sr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},o&&sr.default.createElement("pre",{"data-testid":"input-request-arguments",style:{margin:0,padding:"8px 10px",borderRadius:8,maxHeight:200,overflow:"auto",whiteSpace:"pre-wrap",background:"var(--color-muted)",color:"var(--color-text-cell)",fontFamily:X,fontSize:12}},o),sr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},sr.default.createElement(se,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),sr.default.createElement(se,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function tf({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=lt(),[a,i]=(0,sr.useState)(!1),[s,l]=(0,sr.useState)(r),u=AP(e),c=EP(s),d=async g=>{if(a||c)return;i(!0);let v=await Hq(e,g);i(!1),l(v),EP(v)&&(__(),t&&t(e,v))},f=g=>{g!==void 0&&d({answer:g})},p=()=>d({decline:!0}),m=n?Xq(e):null,y=qq(e.actor),b=Vq(e.expires_at),h=Gq(e.created_at);return sr.default.createElement("div",{"data-testid":"input-request-card","data-kind":e.kind,"data-state":s?.state||"pending",style:{border:"1px solid var(--color-border)",borderRadius:10,background:"var(--color-card)",padding:"12px 14px",display:"flex",flexDirection:"column",gap:8}},sr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},sr.default.createElement(Ee,{tone:e.kind==="confirm"?"warning":"info",size:10},lxe[e.kind]||e.kind),sr.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e.agent?.name||"An agent"," is asking"),m&&sr.default.createElement(Wi,{href:ct(m),onClick:()=>kt(m),title:"Open the run this request paused"},sr.default.createElement("span",{"data-testid":"input-request-run-link"},"run #",e.run_id)),b&&sr.default.createElement("span",{style:{...NP,marginLeft:"auto",color:b==="expired"?"var(--color-error-text)":NP.color}},b)),sr.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},e.prompt),sr.default.createElement("div",{style:{...NP,display:"flex",gap:10,flexWrap:"wrap"}},y&&sr.default.createElement("span",{"data-testid":"input-request-actor"},"for ",y),e.tool_name&&sr.default.createElement("span",{"data-testid":"input-request-tool"},"via ",e.tool_name),h&&sr.default.createElement("span",null,h)),c?sr.default.createElement("div",{"data-testid":"input-request-outcome"},sr.default.createElement(Ee,{tone:uxe[s.state]||"muted"},Kq(e,s))):sr.default.createElement(sr.default.Fragment,null,(u==="text"||u==="choice")&&sr.default.createElement(Ws,{blocks:Uq(e),darkMode:o,onAction:g=>f(Wq(e,g))}),u==="confirm"&&sr.default.createElement(fxe,{request:e,busy:a,onApprove:()=>f(!0),onDecline:p}),u==="secret"&&sr.default.createElement(dxe,{request:e,busy:a,onSubmit:f}),u!=="confirm"&&sr.default.createElement("div",null,sr.default.createElement(se,{variant:"ghost",size:"sm",onClick:p,disabled:a,testId:"input-request-decline",style:{padding:"2px 0"}},"Decline")),s?.message&&sr.default.createElement("div",{"data-testid":"input-request-error",role:"alert",style:{fontSize:12,color:"var(--color-error-text)"}},s.message)))}function pxe({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:ds.default.createElement("section",{"data-testid":"needs-input-lane","aria-label":"Needs input",style:{border:"1px solid var(--color-warning)",borderRadius:12,background:"var(--color-warning-soft)",padding:14,display:"flex",flexDirection:"column",gap:10}},ds.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},ds.default.createElement(Ve,{color:"var(--color-warning-text)"},"Needs input"),ds.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:X,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),ds.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Each run is paused until its request is answered. Answering continues the same run.")),e.map(n=>ds.default.createElement(tf,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>ds.default.createElement(tf,{key:n.id,request:n,initialOutcome:o})))}function TP({agentId:e=null}){let{requests:t}=C_({agentId:e}),[r,n]=(0,ds.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=sg(t).filter(s=>!o.has(s.id));return ds.default.createElement(pxe,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var Jq=V(Y());function gc({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=ig(e,t);return a?Jq.default.createElement("a",{href:ct(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),kt(a))},style:{fontFamily:X,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var mxe=e=>{let t=null;if((e?.generations||[]).forEach(a=>{let i=a.tokens||{},s=(i.input||0)+(i.output||0);s>0&&(!t||s>t.total)&&(t={input:i.input||0,output:i.output||0,cached:i.cached||0,thinking:i.thinking||0,model:a.model,total:s})}),!t)return null;let r=pc(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=pc(a.content)+pc(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:Ov(t.model),cached:t.cached,thinking:t.thinking,segments:[{key:"messages",label:"Messages",tokens:o},{key:"tool_results",label:"Tool results",tokens:n},{key:"instructions",label:"Instructions",tokens:r},{key:"output",label:"Generated output",tokens:t.output}]}},Qq=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],gxe=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],hxe=[{id:"conversation",label:"Conversation",hint:"Messages, tool calls and responses in order"},{id:"spans",label:"Spans",hint:"Each generation as a trace \u2014 waterfall, span details, timings"}],yxe=3e4,Yl=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),Rq=e=>{if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/1e3);return t<60?"just now":t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`};function vxe({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=On(t),[i,s]=(0,be.useState)(null),[l,u]=(0,be.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,be.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(y=>y.ok?y.json():Promise.reject(new Error("not found"))).then(({trace:y})=>m&&s(y)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let f=!!i,p=(i?.spans||[]).length;return be.default.createElement("div",{className:`rounded-lg px-2 py-1.5 -mx-2 transition-colors ${f?t?"hover:bg-white/5":"hover:bg-gray-100":""}`,style:n?{background:a.hoverBg}:void 0},be.default.createElement("div",{className:f?"cursor-pointer":void 0,onClick:f?o:void 0,title:f?`${p} spans \u2014 click for the trace`:void 0},be.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},be.default.createElement("span",{title:e.cache_hit?`${Yl(e.tokens.cached)} cached prompt tokens`:"No prompt cache hit",style:{color:e.cache_hit?a.good:a.textMuted}},e.cache_hit?"\u26A1 cache hit":"\u25CF generated"),e.thinking&&be.default.createElement("span",{className:"text-amber-500",title:`${Yl(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Yl(e.tokens.thinking)),be.default.createElement("span",null,e.model||"unknown-model"),e.provider&&be.default.createElement("span",null,e.provider),be.default.createElement("span",{className:"text-blue-500"},"in:",Yl(e.tokens.input)),be.default.createElement("span",{className:"text-green-500"},"out:",Yl(e.tokens.output)),e.finish_reason&&be.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&be.default.createElement("span",null,Pn(d)),c&&be.default.createElement("a",{href:ct(`/traces?trace=${c}`),title:`${c} \u2014 open in Traces`,style:{color:a.link},className:"hover:underline",onClick:m=>m.stopPropagation()},"trace:",c.slice(0,8)," \u2192"),l&&be.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),be.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?be.default.createElement(hP,{trace:i,darkMode:t}):d>0?be.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},be.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,f&&be.default.createElement(be.default.Fragment,null,be.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},p," ",p===1?"span":"spans"),be.default.createElement(Jd,{open:n,darkMode:t,size:12})))),n&&i&&be.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},be.default.createElement($v,{trace:i,darkMode:t,compact:!0})))}function Xl({agentId:e=null,embedded:t=!1}){let{darkMode:r}=lt(),[n,o]=(0,be.useState)([]),[a,i]=(0,be.useState)(!0),[s,l]=(0,be.useState)(null),[u,c]=(0,be.useState)(null),[d,f]=(0,be.useState)({}),{timeWindow:p}=Fs(),m=(0,be.useCallback)(async()=>{try{let F=await fetch(`/api/interactions?minutes=${p.minutes}${e?`&agent_id=${e}`:""}`);if(!F.ok)throw new Error(`Request failed (${F.status})`);let D=await F.json();o(D.interactions||[]),l(null)}catch(F){l(F.message)}finally{i(!1)}},[p.minutes,e]);(0,be.useEffect)(()=>{m();let F=setInterval(m,yxe);return()=>clearInterval(F)},[m]);let[y,b]=(0,be.useState)("recent"),h=(0,be.useMemo)(()=>{let F=[...new Set(n.map(D=>D.display_name).filter(Boolean))].sort();return Object.fromEntries(F.map((D,z)=>[D,Qq[z%Qq.length]]))},[n]),g=(0,be.useMemo)(()=>{let F=n.reduce((z,N)=>z+(N.tokens?.total||0),0),D=new Set(n.map(z=>z.display_name).filter(Boolean));return{interactions:n.length,tokens:F,agents:D.size,avgTokens:n.length?Math.round(F/n.length):0}},[n]),v=(0,be.useMemo)(()=>{if(n.length===0)return[];let F=Date.now(),D=p.bucketSeconds*1e3,z=Math.max(1,Math.round(p.minutes*60/p.bucketSeconds)),N=Object.keys(h);return Array.from({length:z},(O,$)=>{let T=F-(z-1-$)*D,I=T-D,P=n.filter(H=>{let Q=new Date(H.last_activity_at).getTime();return Q>=I&&Q1440?new Date(T).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(T).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),...Object.fromEntries(N.map(H=>[H,P.filter(Q=>Q.display_name===H).length]))}})},[n,h,p]),x=Math.max(0,Math.ceil(v.length/6)-1),S=(0,be.useCallback)(F=>{let D=[...F];switch(y){case"tokens":return D.sort((z,N)=>(N.tokens?.total||0)-(z.tokens?.total||0));case"messages":return D.sort((z,N)=>(N.message_count||0)-(z.message_count||0));default:return D.sort((z,N)=>String(N.last_activity_at).localeCompare(String(z.last_activity_at)))}},[y]),w=(0,be.useMemo)(()=>{let F=new Map;n.forEach(z=>{let N=z.agent_name||z.agent?.name||"Unattributed",O=z.action_name,$=`${N}#${O||""}`;F.has($)||F.set($,{key:$,title:O?`${N} ${O.charAt(0).toUpperCase()}${O.slice(1)} Agent Interactions`:`${N} Interactions`,sessions:[],tokens:0,lastActivity:z.last_activity_at});let T=F.get($);T.sessions.push(z),T.tokens+=z.tokens?.total||0,z.last_activity_at>T.lastActivity&&(T.lastActivity=z.last_activity_at)});let D=[...F.values()].map(z=>({...z,sessions:S(z.sessions)}));return y==="tokens"?D.sort((z,N)=>N.tokens-z.tokens):y==="messages"?D.sort((z,N)=>N.sessions.length-z.sessions.length):D.sort((z,N)=>String(N.lastActivity).localeCompare(String(z.lastActivity)))},[n,y,S]),A=async F=>{if(u===F){c(null);return}if(c(F),!d[F])try{let D=await fetch(`/api/interactions/${F}`);if(D.ok){let z=await D.json();f(N=>({...N,[F]:z.interaction}))}}catch{}},[k,_]=(0,be.useState)({}),[C,E]=ng(),j=On(r);return a?be.default.createElement("div",{className:"flex items-center justify-center h-64"},be.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):be.default.createElement("div",{className:"space-y-6"},be.default.createElement("div",{className:"flex items-start justify-between"},!t&&be.default.createElement("div",null,be.default.createElement("h1",{className:"text-2xl font-bold",style:{color:j.textPrimary}},"Interactions"),be.default.createElement("p",{className:"text-sm mt-1",style:{color:j.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),be.default.createElement("div",{className:"flex items-center gap-3"},be.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},be.default.createElement("span",{className:"text-xs px-1",style:{color:j.textMuted}},"Sort"),gxe.map(F=>be.default.createElement("button",{key:F.id,onClick:()=>b(F.id),className:"px-2 py-1 text-xs rounded transition-colors",style:y===F.id?{background:r?"#2a2a2a":"#ffffff",color:j.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:j.textSecondary}},F.label))),be.default.createElement(Us,null))),be.default.createElement(TP,{agentId:e}),s&&be.default.createElement("div",{className:"p-3 rounded-lg text-sm",style:{background:r?"rgba(239,68,68,0.1)":"#fef2f2",color:"#ef4444"}},"Failed to load interactions: ",s),n.length>0&&be.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:j.cardBg,borderColor:j.cardBorder}},be.default.createElement("div",{className:"flex items-center justify-between mb-3"},be.default.createElement("h3",{className:"text-sm font-semibold",style:{color:j.textPrimary}},"Interactions over time"),be.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(h).map(([F,D])=>be.default.createElement("span",{key:F,className:"flex items-center gap-1.5 text-xs",style:{color:j.textSecondary}},be.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:D}}),F)))),be.default.createElement("div",{className:"h-32"},be.default.createElement(ju,{width:"100%",height:"100%"},be.default.createElement(fc,{data:v},be.default.createElement("defs",null,Object.entries(h).map(([F,D])=>be.default.createElement("linearGradient",{key:F,id:`ix-gradient-${F.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},be.default.createElement("stop",{offset:"5%",stopColor:D,stopOpacity:.6}),be.default.createElement("stop",{offset:"95%",stopColor:D,stopOpacity:.05})))),be.default.createElement(zl,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),be.default.createElement(Wl,{dataKey:"time",stroke:r?"rgba(255,255,255,0.4)":"#9ca3af",tick:{fontSize:10,fill:r?"rgba(255,255,255,0.5)":"#6b7280"},tickLine:!1,interval:x}),be.default.createElement(Kl,{stroke:r?"rgba(255,255,255,0.4)":"#9ca3af",tick:{fontSize:10,fill:r?"rgba(255,255,255,0.5)":"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),be.default.createElement(Qu,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${j.cardBorder}`,borderRadius:"8px"},labelStyle:{color:j.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(h).map(([F,D])=>be.default.createElement(Fl,{key:F,type:"monotone",dataKey:F,stackId:"1",stroke:D,strokeWidth:2,fill:`url(#ix-gradient-${F.replace(/\W/g,"-")})`}))))),be.default.createElement("div",{className:"flex items-center gap-8 pt-3 mt-3 border-t",style:{borderColor:j.cardBorder}},[{label:"Interactions",value:g.interactions.toLocaleString()},{label:"Agents",value:g.agents.toLocaleString()},{label:"Total tokens",value:Yl(g.tokens)},{label:"Avg / interaction",value:Yl(g.avgTokens)}].map(F=>be.default.createElement("div",{key:F.label},be.default.createElement("div",{className:"text-lg font-bold",style:{color:j.textPrimary}},F.value),be.default.createElement("div",{className:"text-xs",style:{color:j.textSecondary}},F.label))))),n.length===0?be.default.createElement("div",{className:"text-center py-12"},be.default.createElement("div",{className:"text-lg",style:{color:j.textMuted}},"No interactions in the last ",p.label),be.default.createElement("p",{className:"text-sm mt-2",style:{color:j.textSecondary}},"Widen the time window, or run an agent to start recording its conversation stream")):be.default.createElement("div",{className:"space-y-8"},w.map(F=>be.default.createElement("div",{key:F.key,className:"space-y-4"},be.default.createElement("div",{className:"flex items-baseline justify-between"},be.default.createElement("h2",{className:"text-sm font-semibold",style:{color:j.textPrimary}},F.title),be.default.createElement("span",{className:"text-xs",style:{color:j.textMuted}},F.sessions.length," ",F.sessions.length===1?"interaction":"interactions",F.tokens>0&&` \xB7 ${Yl(F.tokens)} tokens`)),F.sessions.map(D=>{let z=d[D.id],N=u===D.id,O=k[D.id]||"conversation",$=D.tokens?.total||0,T=(D.tokens?.input||0)+(D.tokens?.output||0)||$;return be.default.createElement(g_,{key:D.id,darkMode:r,className:"shadow-sm"},be.default.createElement("div",{className:`flex items-center justify-between flex-wrap gap-y-2 p-4 cursor-pointer transition-colors ${r?"hover:bg-white/5":"hover:bg-gray-50"}`,onClick:()=>A(D.id),style:N?{background:j.hoverBg}:void 0},be.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},D.source==="telemetry"?be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium rounded flex-shrink-0",style:{background:r?"rgba(168,85,247,0.15)":"#faf5ff",color:r?"#d8b4fe":"#7e22ce"},title:"Reported by an app running this agent outside the platform"},"REPORTED"):be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),be.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:j.textPrimary}},D.display_name),D.agent&&be.default.createElement("span",{className:"text-sm truncate",style:{color:j.textSecondary}},D.agent.name),D.service_name&&be.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:j.textMuted}},D.service_name)),be.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},be.default.createElement(tg,{darkMode:r,cells:[{key:"activity",width:ai.count,content:D.message_count>0?`${D.message_count} messages`:`${D.tool_count||0} tool ${D.tool_count===1?"call":"calls"}`},{key:"tokens",width:ai.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:$>0&&`${Yl($)} tokens`},{key:"context",width:ai.context,empty:"Context: this interaction recorded no token counts",content:$>0&&be.default.createElement(mc,{compact:!0,darkMode:r,label:"Context",used:T,limit:Ov(D.model),segments:[{key:"messages",label:"Context",tokens:T}]})},{key:"age",width:ai.age,title:D.last_activity_at||void 0,empty:"No activity recorded",content:Rq(D.last_activity_at)&&be.default.createElement("span",{style:{color:j.textMuted}},Rq(D.last_activity_at))}]}),D.source!=="telemetry"&&be.default.createElement(gc,{kind:"context",id:D.id,title:"Replay this conversation"}),be.default.createElement(Jd,{open:N,darkMode:r}))),!N&&be.default.createElement(rg,{darkMode:r,onClick:()=>A(D.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:D.preview?.input,color:xn("user",r).color},{label:"output",text:D.preview?.output,color:xn("assistant",r).color}]}),N&&be.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:j.cardBorder,background:j.innerBg}},z?be.default.createElement(be.default.Fragment,null,be.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},be.default.createElement(jv,{options:hxe,value:O,onChange:I=>_(P=>({...P,[D.id]:I})),darkMode:r}),be.default.createElement("span",{className:"text-xs",style:{color:j.textSecondary}},z.messages.length," ",z.messages.length===1?"message":"messages",z.generations.length>0&&` \xB7 ${z.generations.length} ${z.generations.length===1?"generation":"generations"}`)),O==="conversation"&&be.default.createElement(be.default.Fragment,null,z.messages.length===0&&be.default.createElement("div",{className:"text-sm",style:{color:j.textMuted}},"No conversation content captured for this run. Enable content capture in the reporting app to record prompts, tool arguments, and responses."),be.default.createElement(Fi,{darkMode:r,messages:z.instructions?[{id:`ctx-${D.id}-system`,role:"system",content:z.instructions,created_at:D.created_at},...z.messages]:z.messages}),(()=>{let I=mxe(z);return I?be.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:j.cardBorder}},be.default.createElement(mc,{...I,label:"Context pressure",estimated:!0,darkMode:r})):null})()),O==="spans"&&(z.generations.length===0?be.default.createElement("div",{className:"text-sm",style:{color:j.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):be.default.createElement("div",{className:"space-y-2"},z.generations.map(I=>be.default.createElement(vxe,{key:I.id,generation:I,darkMode:r,maxMs:Math.max(...z.generations.map(P=>(P.duration_seconds||0)*1e3),1),expanded:C(`${D.id}:${I.id}`),onToggle:()=>E(`${D.id}:${I.id}`)}))))):be.default.createElement("div",{className:"flex justify-center py-6"},be.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var Le=V(Y());function tV(e,t){let r=i=>{let s=Object.values(t[i]||{})[0];if(!s)return null;let l=s.scenario||s;return{key:i,prompt:l.prompt,group:l.group??null,notes:l.notes??null,expectations:l.expectations||{},position:l.position}},n=new Set(e.map(i=>i.key)),o=e.map(i=>{let s=r(i.key);if(!s)return i;let l=["prompt","group","notes","expectations"].some(u=>JSON.stringify(i[u]??null)!==JSON.stringify(s[u]??null));return{...i,...s,catalogChanged:l}}),a=Object.keys(t).filter(i=>!n.has(i)).map(i=>({...r(i),id:null,enabled:!1,orphan:!0}));return[...o,...a]}var eV=e=>/^[1-9]\d*$/.test(e||"")?e:null;function OP(e){let t=new URLSearchParams(e),r=eV(t.get("evaluation"));return r?{evaluationId:r,runId:eV(t.get("run"))}:null}async function rV(e,t,r){if(!t||e.some(a=>String(a.id)===String(t)))return e;let n=await r(`/api/evaluations/${encodeURIComponent(t)}`);if(!n.ok)throw new Error(`Requested evaluation is unavailable (HTTP ${n.status})`);let o=await n.json();if(!o.evaluation)throw new Error("Requested evaluation is unavailable");return[o.evaluation,...e]}var Fe=V(Y());var gn=e=>{let t=Number(e)||0;return Math.abs(t)>=1e6?`${(t/1e6).toFixed(1)}M`:Math.abs(t)>=1e3?`${(t/1e3).toFixed(1)}K`:`${Math.round(t)}`},PP=e=>e==null?"\u2014":gn(e),so=e=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let t=Number(e);return t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},Uv=e=>{if(e==null)return"\u2014";let t=Number(e);return t===0?"$0.00":Math.abs(t)<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`},Wv=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var lg=(e,t="%",r=0)=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let n=Number(e);return`${n>0?"+":n<0?"-":""}${Math.abs(n).toFixed(r)}${t}`},_o=e=>{if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t} min ago`;if(t<1440){let n=Math.floor(t/60);return`${n} hour${n===1?"":"s"} ago`}let r=Math.floor(t/1440);return`${r} day${r===1?"":"s"} ago`},Io=(e,t=null)=>{let r=String(e||""),n=r.lastIndexOf("/");return n>0?{short:r.slice(n+1),provider:r.slice(0,n)}:{short:r,provider:t||""}};var xxe=["trace_error_rate","trace_latency"],IP=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],Ut=(e,t)=>`${e} ${t}${e===1?"":"s"}`,Hv=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},nV=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),MP=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,bxe=(e,t)=>t>0?`${e}/${t} \xB7 ${MP(e/t)}`:"\u2014",oV=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},Hs=e=>e?.type==="llm_judge"?"judge":xxe.includes(e?.type)?"telemetry":"rules",A_=e=>{let t=e?.config||{};switch(e?.type){case"response_present":return"Response present";case"min_length":return"Response length";case"max_latency_ms":return"Latency";case"token_budget":return"Output tokens";case"contains":return"Must contain";case"not_contains":return"Must not contain";case"trace_error_rate":return"Trace error rate";case"trace_latency":return"Trace latency";case"llm_judge":return t.description||nV(e.key);default:return nV(e?.key)}},cg=e=>{let t=e?.config||{};switch(e?.type){case"response_present":return"non-empty output";case"min_length":return`\u2265 ${t.chars??40} chars`;case"max_latency_ms":return`\u2264 ${oV(t.ms??5e3)}`;case"token_budget":return`\u2264 ${t.output_tokens??1e3} output tokens`;case"contains":return`matches /${t.pattern||""}/i`;case"not_contains":return`no /${t.pattern||""}/i`;case"trace_error_rate":return`error rate \u2264 ${t.max_error_rate??5}% \xB7 ${t.window_hours??168}h`;case"trace_latency":return`avg \u2264 ${oV(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${Hv(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},Kv=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},dg=(e,t=null)=>{let r=t?.scores||{};if(Object.prototype.hasOwnProperty.call(r,"_judge_label"))return r._judge_label||"rules";let n=r._verdict?.judge;return n&&n!=="pass rate"?n:e?.judge_kind==="judge_defined"?`judge-defined KPIs${e.judge_model?` \xB7 ${e.judge_model}`:""}`:e?.judge_kind==="llm"?e.judge_model||"LLM judge":"rules"},DP=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,rf=(e,t=null)=>{let r=DP(e,t);if(e?.scenario_suite){let a=t?.samples_evaluated&&r?Math.round(t.samples_evaluated/r):e.scenario_count||0;return`${Ut(a,"scenario")} \xD7 ${Ut(r,"model")}`}let n=(e?.criteria||[]).length,o=n===1?"criterion":"criteria";return r>1?`${n} ${o} \xD7 ${Ut(r,"model")}`:`${n} ${o} \xB7 ${Ut(e?.sample_size??0,"sample")}`},jP=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),fg=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var qv=e=>{let t=e?.scores?._cohorts||e?.scores?._models;if(t&&typeof t=="object"&&Object.keys(t).length)return Object.keys(t);if(Array.isArray(e?.models)&&e.models.length)return e.models;let r=[];return fg(e).forEach(([,n])=>{jP(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},nf=(e,t)=>!e||typeof e!="object"?null:jP(e)?t&&e[t]||null:e,iV=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null;var ug=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,of=(e,t)=>e!=null&&t?e/t:null,E_=(e,t)=>{if(!e||typeof e!="object")return!1;if(Number(e.estimated)>0||e.cost_basis==="estimated"||e.cost_basis==="mixed")return!0;let r=ug(e,t);return r!=null&&t!=null&&e.cost!=null&&r{if(!e)return[];let t=e.scores||{},r=t._models;if(r&&typeof r=="object"&&Object.keys(r).length)return Object.entries(r).map(([a,i])=>({label:a,model:i.model||a,provider:i.provider||null,samples:i.scenarios??null,passed:i.passed??null,errored:i.errored??0,avg_score:i.avg_score??null,avg_duration_ms:i.avg_duration_ms??null,input_tokens:i.input_tokens??null,output_tokens:i.output_tokens??null,cost:i.cost??null,priced:ug(i,i.scenarios),reported:i.reported??null,estimated:E_(i,i.scenarios),judge_cost:i.judge_cost??null,judge_calls:i.judge_calls??0,faults:i.faults||{},kind:"replay"}));let n=t._cohorts;if(n&&typeof n=="object"&&Object.keys(n).length)return Object.entries(n).map(([a,i])=>({label:a,model:a,provider:i.provider||null,samples:i.samples??null,passed:i.passed??null,errored:0,avg_score:null,avg_duration_ms:i.avg_duration_ms??null,input_tokens:i.input_tokens??null,output_tokens:i.output_tokens??null,cost:i.cost??null,priced:ug(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=qv(e);return o.length?o.map(a=>{let i=fg(e).map(([,s])=>nf(s,a)).filter(s=>s&&s.total!=null).map(s=>s.total);return{label:a,model:a,provider:null,samples:i.length?Math.max(...i):null,passed:null,errored:0,avg_score:null,avg_duration_ms:null,input_tokens:null,output_tokens:null,cost:null,priced:null,reported:null,estimated:!1,judge_cost:null,judge_calls:0,faults:{},kind:e.selection||t._selection?"replay":"sample"}}):[{label:null,model:null,provider:null,samples:e.samples_evaluated??null,passed:e.samples_passed??null,errored:0,avg_score:null,avg_duration_ms:null,input_tokens:null,output_tokens:null,cost:null,priced:null,reported:null,estimated:!1,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}]},sV=(e,t)=>{let r=fg(e).map(([,o])=>nf(o,t)).filter(Boolean),n=r.filter(o=>o.score!=null);return{avg:n.length?n.reduce((o,a)=>o+a.score,0)/n.length:null,scored:n.length,cleared:n.filter(o=>o.score>=.7).length,below:n.filter(o=>o.score<.7).length,skipped:r.filter(o=>o.skipped).length}},lV=20,Vv=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,$P=(e=[],t=null)=>{let r=Vv(e,t),n=e.length=lV;return`${Ut(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},mg=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:Vv(r,n)-t,Gv=(e,t,{olderNumber:r=t?.number,comparable:n=!0}={})=>{if(!e||e.status!=="complete")return null;if(!t)return{text:"first run",tone:"muted"};let o=Number.isFinite(r)?`#${r}`:"previous";if(t.status!=="complete")return{text:`${o} ${t.status}`,tone:"muted"};if(!n)return{text:"partial run",tone:"muted"};let a=(e.samples_passed||0)-(t.samples_passed||0);return a===0?{text:`same as ${o}`,tone:"muted"}:{text:`${a>0?"+":""}${a} passed vs ${o}`,tone:a>0?"success":"error"}},uV=(e,t)=>{if(!e||!t)return null;let r=e.agent_version?.id??null,n=t.agent_version?.id??null;return r==null||n==null?{kind:"unrecorded",text:"release not recorded"}:r===n?{kind:"same",text:"same version"}:{kind:"new",text:`new version${e.agent_version?.number!=null?` v${e.agent_version.number}`:""}`}},cV=e=>{if(!e||!("version_state"in e)&&!e.agent_version)return null;let t=e.agent_version;if(!t)return{text:"release not recorded",tone:"warning",title:"This run named no release, so nothing says which version of the agent it scored"};let r=t.release_digest?` \xB7 ${String(t.release_digest).slice(0,7)}`:"",n=`v${t.number}${r}`,o=e.version_state||"current";return o==="earlier"?{text:n,tone:"muted",title:`An earlier version of the agent${t.revision?` \xB7 ${t.revision}`:""}`}:o==="unrecorded"?{text:n,tone:"warning",title:"The version this run scored was not recorded"}:{text:n,tone:"success",title:`The agent's current version${t.revision?` \xB7 ${t.revision}`:""}`}},Hi=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=ug(t,r||0),a=r!=null||n!=null?{cost:n,count:r||0,priced:o,reported:t.reported??null,estimatedCount:t.estimated??null,basis:t.cost_basis??null,estimated:E_(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??of(n,o),inputTokens:t.input_tokens??null,outputTokens:t.output_tokens??null,modelTimeMs:t.model_time_ms??null}:null,i=t.judge,s=i&&typeof i=="object"?{cost:i.cost??null,calls:i.calls||0,byKind:i.by_kind||{},model:i.model||null,inputTokens:i.input_tokens??null,outputTokens:i.output_tokens??null,source:i.source||null,estimated:i.estimated??(i.source==null||i.source!=="reported"),run:i.run&&typeof i.run=="object"?i.run:null}:null;if(!a&&!s)return null;let l=t.total??(a?.cost!=null||s?.cost!=null?(a?.cost||0)+(s?.cost||0):null),u=!!(a?.cost!=null&&a.estimated||s?.cost!=null&&s.estimated);return{agent:a,judge:s,total:l,totalEstimated:u,runtimeMs:t.runtime_ms??null}},dV=e=>{let t=e?.agent||null,r=e?.judge||null;return t&&t.count>0&&t.cost==null?r?"judge only \xB7 agent unpriced":"agent unpriced":t&&r?"agent + judge":t?"agent only":"judge only"},Yv=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},Xv=e=>{if(!e)return"";let t=["define","score","recommend","verdict"];return Object.entries(e.byKind||{}).sort(([n],[o])=>t.indexOf(n)-t.indexOf(o)).map(([n,o])=>`${n} ${o}`).join(" \xB7 ")},wxe=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Hi(l);u&&(a+=1,u.agent&&(r+=u.agent.count,n+=u.agent.priced),u.agent?.cost!=null&&(t=(t||0)+u.agent.cost,u.agent.estimated&&(i=!0)),u.judge?.cost!=null&&(o=(o||0)+u.judge.cost,u.judge.estimated&&(s=!0)))}),{agentCost:t,interactions:r,pricedInteractions:n,perInteraction:of(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},gg=e=>{if(!e)return null;if(e.headline_run&&typeof e.headline_run=="object")return e.headline_run;let t=e.latest_run||null;return e.headline_run_id!=null?t&&t.id===e.headline_run_id?t:null:t&&t.status==="complete"?t:null},LP=e=>e?e.standing?e.standing:e.archived_at?"archived":gg(e)?"current":"none":"none",Sxe=["current","unrecorded"],fV=(e=[],{focusId:t=null}={})=>{let r=t!=null?e.filter(c=>String(c.id)===String(t)):[],n=r.length>0,o=n?r:e,a={total:0,stale:0,archived:0,none:0},i=[],s={},l=0,u=0;return o.forEach(c=>{let d=gg(c),f=LP(c);if(!(n?!!d:!!d&&Sxe.includes(f))){a.total+=1,f==="archived"?a.archived+=1:f==="stale"?a.stale+=1:a.none+=1;return}i.push(d),l+=d.samples_evaluated||0,u+=d.samples_passed||0,(c.per_model&&typeof c.per_model=="object"&&Object.keys(c.per_model).length?Object.entries(c.per_model).map(([y,b])=>({label:y,passed:b?.passed||0,total:b?.total||0})):pg(d).filter(y=>y.label&&y.samples>0).map(y=>({label:y.label,passed:y.passed||0,total:y.samples||0}))).forEach(({label:y,passed:b,total:h})=>{let g=s[y]||={label:y,passed:0,total:0};g.passed+=b,g.total+=h})}),{evaluations:o.length,counted:i.length,notCounted:a,runs:i,samplesScored:l,samplesPassed:u,passRatio:l?u/l:null,perModel:Object.values(s),spend:wxe(i),focused:n}},pV=e=>{let t=e?.notCounted;if(!t||!t.total)return null;let r=[];return t.stale&&r.push(`${t.stale} stale`),t.archived&&r.push(`${t.archived} archived`),t.none&&r.push(`${t.none} ${t.none===1?"has":"have"} no complete run`),[`${t.total} not counted`,...r].join(" \xB7 ")},N_=(e,t)=>{if(!t)return[];let r=[],n=`/agents/${e?.agent?.id}/run`;t.status==="failed"&&r.push({kind:"failed",label:"run failed",scope:Number.isFinite(t.number)?`run #${t.number}`:"latest run",text:t.error_message||"The run ended before any criterion was scored.",action:{label:"Run agent",path:n,hint:"Run Agent ->"}});let o=Array.isArray(t.scores?._missing_models)?t.scores._missing_models:[];o.length&&r.push({kind:"missing",label:`no generations \xD7${o.length}`,scope:"comparison cohorts",text:"The comparison asked for these models, but the agent has no recorded generations under them. Run the agent under each model, then run the evaluation again.",chipsLabel:"missing models",chips:o,action:{label:"Run agent",path:n,hint:"Run Agent ->"}});let a={judge:[],telemetry:[],rules:[]},i=[];fg(t).forEach(([u,c])=>{let d=Kv(e,u);(jP(c)?Object.entries(c):[[null,c]]).forEach(([p,m])=>{!m||typeof m!="object"||(m.skipped?a[Hs(d)].push({key:u,model:p,reason:m.reason}):m.score!=null&&m.score<.7&&i.push({key:u,model:p,stats:m,criterion:d}))})});let s=u=>[...new Set(u.map(c=>c.key))],l=u=>`${s(u).length} ${s(u).length===1?"criterion":"criteria"}`;if(a.judge.length&&r.push({kind:"judge",label:`judge skipped \xD7${a.judge.length}`,scope:l(a.judge),text:a.judge[0].reason||"The LLM judge could not score these criteria.",chipsLabel:"unscored criteria",chips:s(a.judge),action:{label:"Add provider key",path:"/settings",hint:"Settings ->"}}),a.telemetry.length&&r.push({kind:"telemetry",label:`no telemetry \xD7${a.telemetry.length}`,scope:l(a.telemetry),text:a.telemetry[0].reason||"No traces were recorded for this agent in the criterion window.",chipsLabel:"unscored criteria",chips:s(a.telemetry),action:{label:"Open traces",path:"/traces",hint:"Traces ->"}}),a.rules.length&&r.push({kind:"samples",label:`no samples \xD7${a.rules.length}`,scope:l(a.rules),text:a.rules[0].reason||"No generation could be scored against these criteria.",chipsLabel:"unscored criteria",chips:s(a.rules),action:{label:"Run agent",path:n,hint:"Run Agent ->"}}),i.length){let u=[...new Set(i.map(c=>c.model).filter(Boolean))];r.push({kind:"below",label:`below pass mark \xD7${i.length}`,scope:`${l(i)}${u.length?` \xB7 ${Ut(u.length,"model")}`:""}`,text:`Scored under the pass mark (pass \u2265 ${MP(.7)}). Each line is what the criterion expects against how the samples did; tighten the agent's instructions or revisit the budget before running again.`,details:i.map(c=>`${c.key}${c.model?` \xB7 ${c.model}`:""} ${MP(c.stats.score)} \xB7 expects ${cg(c.criterion)} \xB7 ${bxe(c.stats.passed,c.stats.total)} passed`)})}return r},aV=e=>String(e||"").replace(/_/g," "),T_=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=pg(e),i=new Map(a.map(c=>[c.label,c])),s=o&&o.length?o:a.map(c=>c.label),l=e?.scores?._verdict?.winner||null;return s.map(c=>{let d=i.get(c)||{},f=t.filter(C=>n(C)===c),p=f.filter(C=>C?.status&&C.status!=="pending"),m=d.samples??(r||f.length||null),y=d.passed??p.filter(C=>C.status==="passed").length,b=Object.keys(d.faults||{}).length?d.faults:p.reduce((C,E)=>E.fault?{...C,[E.fault]:(C[E.fault]||0)+1}:C,{}),h=C=>f.find(E=>E.fault===C)||null,g=C=>C==="low_quality"?1:0,v=Object.entries(b).sort((C,E)=>E[1]-C[1]||(h(E[0])?1:0)-(h(C[0])?1:0)||g(C[0])-g(E[0])||C[0].localeCompare(E[0])),[x,S]=v[0]||[],w=x?h(x):null,A=m||null,k=C=>C==null||!A?null:C/A,_=d.avg_score??(p.length&&p.some(C=>C.score!=null)?p.filter(C=>C.score!=null).reduce((C,E)=>C+Number(E.score),0)/p.filter(C=>C.score!=null).length:null);return{label:c,model:d.model||c,provider:d.provider||null,winner:l===c,passed:y,total:m,scored:d.samples??p.length,passRate:m?y/m:null,avgScore:_==null?null:Number(_),avgDurationMs:d.avg_duration_ms??null,inputTokens:d.input_tokens??null,outputTokens:d.output_tokens??null,avgInputTokens:k(d.input_tokens),avgOutputTokens:k(d.output_tokens),avgTokens:d.input_tokens==null&&d.output_tokens==null?null:k((d.input_tokens||0)+(d.output_tokens||0)),cost:d.cost??null,priced:d.priced??null,reported:d.reported??null,estimated:d.estimated??!1,judgeCost:d.judge_cost??null,judgeCalls:d.judge_calls??0,costPerInteraction:of(d.cost,d.priced),faults:v.map(([C,E])=>({fault:C,name:aV(C),count:E})),typicalFault:x?{fault:x,name:aV(x),count:S,scenarioKey:w?.scenario_key||null,summary:(w?.diagnosis?.summary||w?.recommendation||"").toString().trim()||null}:null}}).sort((c,d)=>(d.passRate??-1)-(c.passRate??-1)||(d.avgScore??-1)-(c.avgScore??-1)||s.indexOf(c.label)-s.indexOf(d.label))},mV=(e,{max:t=120}={})=>{if(!e)return"\u2014";if(!e.typicalFault)return e.scored?"no faults":"\u2014";let{name:r,count:n,scenarioKey:o,summary:a}=e.typicalFault,i=`${r} \xD7${n}`;if(!a)return i;let s=o?`${o}: ${a}`:a;return`${i} \xB7 ${Hv(s,t)}`},gV=(e=[],t=[],r=n=>n?.model)=>e.map(n=>{let o=n.kind==="instruction"?t.filter(s=>(n.scenario_keys||[]).includes(s?.scenario_key)&&s?.fault):t.filter(s=>s?.fault===n.fault);if(!o.length)return n;let a={},i={};return o.forEach(s=>{let l=r(s);l&&(a[l]=(a[l]||0)+1,i[l]=[...new Set([...i[l]||[],s.scenario_key].filter(Boolean))])}),{...n,count_by_model:a,scenario_keys_by_model:i}}),zP=(e=[],t=null)=>!t||t==="all"?e:e.filter(r=>!Array.isArray(r.models)||r.models.length===0||r.models.includes(t)).map(r=>{if(!Array.isArray(r.models)||!r.models.length)return r;let n={...r,models:[t]};return r.count_by_model?.[t]!=null&&(n.count=r.count_by_model[t]),r.scenario_keys_by_model?.[t]&&(n.scenario_keys=r.scenario_keys_by_model[t]),n}),hV=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,zP(e,r).length])),yV=e=>(Array.isArray(e)?e:[]).filter(t=>t&&t.session_id&&t.status==="ready"&&(t.sandbox_type==null||t.sandbox_type==="app_runtime")&&!("runtime_server_key"in t&&!t.runtime_server_key)).map(t=>({value:t.session_id,label:vV(t)})),vV=e=>{if(!e||!e.session_id)return null;let t=[e.repository,e.repository_ref].filter(Boolean).join("@"),r=String(e.session_id).slice(0,8);return t?`${t} \xB7 ${r}`:`sandbox ${r}`},hg=e=>vV(e?.sandbox),xV=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},bV=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"";var kxe=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],wV=["openai","anthropic","ollama","openrouter","mock"];function _xe(e,t=wV){let r=String(e??"").trim(),n=r.indexOf("/"),o=n>=0?r.slice(0,n):r,a=n>=0?r.slice(n+1):"";if(a.trim()){if(t.includes(o))return{provider:o,model:a};if(t.includes("openrouter"))return{provider:"openrouter",model:r}}let i=kxe.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function Cxe(e,t,r=wV){let n=_xe(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function SV(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:Cxe(r,o)}]:[]}))}function Zv(e,{providers:t,qualify:r=!0}){let n=SV(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function kV(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=SV(t,r),i=new Set(a.map(c=>n?c.qualified:c.id)),s=new Map;a.forEach(c=>{let d=n?c.id:c.qualified;s.has(d)||s.set(d,n?c.qualified:c.id)});let l=c=>i.has(c)?c:s.get(c)??c;if(n){let c=e.flatMap(d=>o.get(d)??[l(d)]);return{models:[...new Set(c)],restore:new Map}}let u=new Map;return e.forEach(c=>{let d=l(c);u.set(d,[...u.get(d)||[],c])}),{models:[...u.keys()],restore:u}}function hc(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function Jv(e){return e.join(", ")}function _V(e,t){return[...new Set([...e,...hc(t)])]}function CV(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function AV(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function EV({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var Do=V(Y());function Qv({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,Do.useState)(""),[f,p]=(0,Do.useState)(""),m=(0,Do.useRef)(null),y=(0,Do.useId)(),b=hc(e),h=(0,Do.useRef)(b);h.current=b;let g=k=>{let _=_V(h.current,k);_.length!==h.current.length&&(t(Jv(_)),p(`Added ${_.slice(h.current.length).join(", ")}`)),d("")},v=k=>{t(Jv(h.current.filter(_=>_!==k))),p(`Removed ${k}`),m.current?.focus()},x=(k,_)=>{if(k.includes(",")){let{complete:C,rest:E}=CV(k);g(C),d(E)}else AV(_.nativeEvent?.inputType,k,r)?g(k):d(k.trimStart())},S=k=>{let _=EV(k,c,h.current.length);_==="commit"?(k.preventDefault(),setTimeout(()=>g(m.current?.value||""),0)):_==="removeLast"&&(k.preventDefault(),v(h.current[h.current.length-1]))},w=r.filter(k=>!b.includes(k)),A=[i,a&&`${y}-title`,`${y}-selected`].filter(Boolean).join(" ");return Do.default.createElement("div",{"data-testid":u,onClick:k=>{k.target===k.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},b.map(k=>Do.default.createElement("span",{key:k,style:Axe},Do.default.createElement("span",{style:{overflowWrap:"anywhere"}},k),Do.default.createElement("button",{type:"button",onClick:()=>v(k),"aria-label":`Remove ${k}`,title:`Remove ${k}`,style:Exe},"\xD7"))),Do.default.createElement(gl,{inputRef:m,id:s,"aria-label":l,"aria-describedby":A,title:a,value:c,models:w,onChange:x,onKeyDown:S,onBlur:()=>{c.trim()&&g(c)},placeholder:b.length?"Add a model":n,style:{flex:"1 1 80px",minWidth:80,padding:0,border:"none",background:"transparent",font:"inherit",color:"inherit"}}),a&&Do.default.createElement("span",{id:`${y}-title`,style:BP},a),Do.default.createElement("span",{id:`${y}-selected`,style:BP},b.length?`Chosen: ${b.join(", ")}`:"No models chosen"),Do.default.createElement("span",{role:"status","aria-live":"polite",style:BP},f))}var Axe={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:X,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},Exe={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},BP={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Vt=V(Y());var fs=V(Y());var Nxe="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",Txe="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",O_=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Zl=(e,t=!1)=>Rr(e,{estimated:t}),NV=e=>{if(!e)return null;let t=[];if(e.agent){let r=[`agent ${Rr(e.agent.cost,{estimated:e.agent.estimated})}`,Ut(e.agent.count,O_(e))];e.agent.perInteraction!=null&&r.push(`${Zl(e.agent.perInteraction,e.agent.estimated)} each`),t.push(r.join(" \xB7 "))}return e.judge&&t.push(`judge ${Rr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${Ut(e.judge.calls,"call")}`),t.join(" \xB7 ")};function FP({label:e,value:t,sub:r,title:n,valueColor:o,testId:a,first:i=!1}){return fs.default.createElement("div",{"data-testid":a,title:n,style:{padding:"10px 16px",minWidth:0,borderLeft:i?"none":"1px solid var(--color-border-light)"}},fs.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},e),fs.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),fs.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}function Rv({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{agent:n,judge:o,total:a,totalEstimated:i}=e,s=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${gn(n.inputTokens)} \xB7 out ${gn(n.outputTokens)}`:"",u=o?[Ut(o.calls,"call"),Xv(o),o.model,Yv(o),"offline"].filter(Boolean).join(" \xB7 "):t&&t!=="rules"?`judge ${t} \xB7 spend not recorded`:"no judge asked \xB7 rules only";return fs.default.createElement(He,{padding:0,testId:r,style:{overflow:"hidden"}},fs.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},fs.default.createElement(FP,{first:!0,label:"Agent cost",title:Nxe,value:n?Rr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:"var(--color-text-muted)",sub:n?`${Ut(n.count,O_(e))}${n.perInteraction!=null?` \xB7 ${Zl(n.perInteraction,n.estimated)} per interaction`:""}${s}`:"nothing replayed or sampled",testId:"run-spend-agent"}),fs.default.createElement(FP,{label:"Judge cost",title:Txe,value:o?Rr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:"var(--color-text-muted)",sub:u,testId:"run-spend-judge"}),fs.default.createElement(FP,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:a!=null?Rr(a,{estimated:i}):"\u2014",sub:dV(e),testId:"run-spend-total"})),i&&fs.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},Es))}function P_({run:e,testId:t}){if(!e)return Vt.default.createElement(Ee,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Vt.default.createElement(Ee,{tone:"error",testId:t},"failed");if(e.status==="pending")return Vt.default.createElement(Ee,{tone:"warning",testId:t},"queued");if(e.status==="running")return Vt.default.createElement(Ee,{tone:"warning",testId:t},"running");if(e.samples_evaluated)return Vt.default.createElement(Ee,{tone:Rd(iV(e)),testId:t},`${Vn(e.samples_passed||0,e.samples_evaluated)} passed`);if(e.average_score!=null){let r=Number(e.average_score);return Vt.default.createElement(Ee,{tone:r>=.85?"success":r>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${ta(r)}`)}return Vt.default.createElement(Ee,{tone:"muted",testId:t},"no samples")}function Oxe({run:e,testId:t="run-version"}){let r=cV(e);return r?Vt.default.createElement(Ee,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var TV={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},OV={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},PV=ai.cost+32,Pxe=e=>pg(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:Io(t.label||"").short||"all samples",passed:t.passed,total:t.samples}));function e0({runs:e=[],runCount:t=null,evaluation:r,agentName:n,selectedId:o=null,onOpen:a,previousRun:i=null,barsFor:s=null,deltaFor:l=null,title:u="Runs",testId:c="suite-runs-panel"}){let{darkMode:d}=lt(),f=e.map((p,m)=>{let y=mg(p,m,e,t),b=e[m+1]||(m===0&&e.length===1?i:null),h=b?Number.isFinite(b.number)?b.number:y-1:null,g=l?l(p,b,h):Gv(p,b,{olderNumber:h}),v=g&&b?uV(p,b):null,x=Hi(p);return{run:p,number:y,latest:m===0,when:_o(p.completed_at||p.created_at),meta:[`@${n||r?.agent?.name||"agent"}`,rf(r,p),dg(r,p),hg(p)&&`against ${hg(p)}`].filter(Boolean).join(" \xB7 "),bars:s?s(p):Pxe(p),delta:g,version:v,spend:x,selected:p.id===o}});return Vt.default.createElement(on,{title:u,meta:$P(e,t),testId:c,bodyStyle:{overflowX:"auto"}},f.length===0&&Vt.default.createElement(Zn,null,"[ ] no runs yet"),Vt.default.createElement("div",{style:{minWidth:920}},f.map(p=>Vt.default.createElement("div",{key:p.run.id,role:"button",tabIndex:0,"data-testid":"evaluation-run","data-run-id":p.run.id,"data-selected":p.selected?"true":"false",onClick:()=>a?.(p.run),onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),a?.(p.run))},className:p.selected?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:"minmax(220px, 1.4fr) minmax(180px, 1fr) auto",gap:16,alignItems:"center",padding:"10px 14px 10px 12px",borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:p.selected?"var(--color-muted)":void 0,borderLeft:`2px solid ${p.selected?"var(--color-accent-ui)":"transparent"}`}},Vt.default.createElement("div",{style:{minWidth:0}},Vt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Vt.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${p.number}`),Vt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},p.when),p.latest&&Vt.default.createElement(Ee,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),p.run.status==="failed"&&Vt.default.createElement(Ee,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(p.run.status==="running"||p.run.status==="pending")&&Vt.default.createElement(Ee,{tone:"warning",size:10,style:{padding:"1px 6px"}},p.run.status==="pending"?"queued":"running"),Vt.default.createElement(Oxe,{run:p.run})),Vt.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},p.meta),p.run.status==="failed"&&p.run.error_message&&Vt.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${p.run.error_message}`)),Vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},p.bars.map(m=>m.passed==null||m.total==null?Vt.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Vt.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Vt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Vt.default.createElement(xq,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Vt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Vt.default.createElement(tg,{darkMode:d,cells:[{key:"agent",width:PV,title:p.spend?.agent?`Agent: ${Ut(p.spend.agent.count,O_(p.spend))}${p.spend.agent.perInteraction!=null?` \xB7 ${Zl(p.spend.agent.perInteraction,p.spend.agent.estimated)} per interaction`:""}${p.spend.agent.estimated?" \xB7 ~ estimated from tokens \xD7 model rates":""}`:void 0,empty:"Agent cost: nothing replayed or sampled in this run",content:p.spend?.agent?.cost!=null&&Vt.default.createElement("span",{style:{fontFamily:X,fontSize:11}},Vt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Rr(p.spend.agent.cost,{estimated:p.spend.agent.estimated}))},{key:"judge",width:PV,title:p.spend?.judge?`Judge: ${Ut(p.spend.judge.calls,"call")}${Xv(p.spend.judge)?` \xB7 ${Xv(p.spend.judge)}`:""}${Yv(p.spend.judge)?` \xB7 ${Yv(p.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:p.spend?.judge?.cost!=null&&Vt.default.createElement("span",{style:{fontFamily:X,fontSize:11}},Vt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),Rr(p.spend.judge.cost,{estimated:p.spend.judge.estimated}))},{key:"delta",width:136,title:p.delta?`Samples passed, against the run before${p.version?` \xB7 ${p.version.text}`:""}`:void 0,empty:"Movement is read once the run completes",content:p.delta&&Vt.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Vt.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,color:TV[p.delta.tone]||TV.muted}},p.delta.text),p.version&&Vt.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:X,fontSize:10,color:OV[p.version.kind]||OV.same}},p.version.text))},{key:"badge",width:132,content:Vt.default.createElement(P_,{run:p.run,testId:p.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Vt.default.createElement(ii,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var MV=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[Ut(n,"run"),r?`latest #${mg(r,0,e,t)} ${_o(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${Vn(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var lo=V(Y());function sf({evaluation:e,run:t=null,keys:r=null,spend:n=null,reportPath:o=null,onDelete:a,deleting:i=!1,deleteLabel:s="Delete evaluation"}){let l=(r||(e.criteria||[]).map(p=>p.key)).map(p=>Kv(e,p)),u={fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},c={fontFamily:X,fontSize:11,color:"var(--color-text-cell)"},d=(p,m,y)=>lo.default.createElement("span",{"data-testid":m,title:y,style:{...u,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},p),f=NV(n);return lo.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},lo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},lo.default.createElement("span",{style:u},"judge"),lo.default.createElement("span",{style:{...c,fontWeight:600}},dg(e,t)),lo.default.createElement("span",{style:{...u,marginLeft:8}},"criteria"),l.length===0&&lo.default.createElement("span",{style:u},e.judge_kind==="judge_defined"?"defined by the judge on the first run":e.scenario_suite?"each scenario's own expectations":"\u2014"),l.map((p,m)=>lo.default.createElement(lo.default.Fragment,{key:p.key||m},m>0&&lo.default.createElement("span",{style:u},"\xB7"),lo.default.createElement("span",{style:c,title:cg(p)||void 0},A_(p)),Hs(p)==="telemetry"&&d("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),Hs(p)==="judge"&&d("judge",void 0,"Scored by the judge model; needs provider credentials"))),lo.default.createElement("span",{style:{...u,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},Ab(.7))),lo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},lo.default.createElement("span",{style:{...u,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&lo.default.createElement("span",{style:{...u,minWidth:0,textWrap:"pretty"},title:"What this run spent: the agent's replays or sampled interactions, and the judge's own calls"},f),f&&n?.totalEstimated&&lo.default.createElement("span",{style:{...u,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},Es),o&&lo.default.createElement(Wi,{href:ct(o),onClick:()=>kt(o),title:"The run rendered as a report page"},"run report"),a&&lo.default.createElement("button",{type:"button",onClick:p=>{p.stopPropagation(),a()},disabled:i,title:"Delete this evaluation and its runs",style:{marginLeft:"auto",background:"transparent",border:"none",padding:0,cursor:i?"not-allowed":"pointer",fontFamily:X,fontSize:11,color:"var(--color-error)",opacity:i?.5:1}},i?"Deleting\u2026":s)))}var Mxe=["tools","contains","not_contains"];function Ixe(e){let t=e.expectations||{},r=[];return Mxe.forEach(n=>{t[n]?.length&&r.push(`${n}: ${t[n].join(", ")}`)}),e.notes&&r.push(`notes: ${e.notes}`),r.push(`key: ${e.key}`),`${e.prompt} | ${r.join(" | ")}`}function IV(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(Ixe(n))}),t.join(` +`)}var ye=V(Y());var Tr=V(Y());var Dxe=e=>e>=.85?"success":e>=.7?"warning":"error";function t0({label:e,children:t,title:r,nowrap:n=!0}){return Tr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",Tr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function r0({label:e,short:t,provider:r,winner:n=!1,passed:o,total:a,avgScore:i,criteria:s,latencyMs:l,inputTokens:u,outputTokens:c,cost:d,perInteraction:f,estimated:p=!1,judgeCost:m=null,judgeCalls:y=0,judgeEstimated:b=!1,unit:h="interaction",badges:g=[],note:v,testId:x="model-scorecard"}){let S=o!=null&&a>0,w=S?o/a:null,A=S?Rd(w):i!=null?Dxe(i):"muted",k=la[A].strong,_=m!=null||y>0;return Tr.default.createElement(He,{padding:"14px 16px",testId:x,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},Tr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Tr.default.createElement("span",{style:{fontFamily:X,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&Tr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},r),n&&Tr.default.createElement(Ee,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),Tr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},Tr.default.createElement("span",{style:{fontFamily:X,fontSize:26,fontWeight:700,lineHeight:1,color:k},"data-testid":"model-scorecard-headline"},S?Vn(o,a):i!=null?ta(i):"\u2014"),Tr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},S?`${h==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),Tr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Tr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:k,width:`${Math.round((w??i??0)*100)}%`}})),Tr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:X,fontSize:11,color:"var(--color-text-secondary)"}},Tr.default.createElement(t0,{label:"score"},ta(i)),s&&Tr.default.createElement(t0,{label:"criteria"},Vn(s.cleared,s.scored)),l!=null&&Tr.default.createElement(t0,{label:"latency"},so(l)),(u!=null||c!=null)&&Tr.default.createElement("span",{style:{whiteSpace:"nowrap"}},Tr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",Tr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},PP(u))," \xB7 ",Tr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",Tr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},PP(c))),d!=null&&Tr.default.createElement(t0,{label:"cost",title:`What the agent spent under this model${f!=null?` \u2014 ${Zl(f,p)} per ${h}`:""}${p?` \xB7 ${wp()}`:""}`},Rr(d,{estimated:p}),f!=null&&Tr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Zl(f,p)} / ${h}`)),_&&Tr.default.createElement(t0,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},Rr(m,{estimated:b}),Tr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Ut(y,"call")}`))),(g.length>0||v)&&Tr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},g.map(C=>Tr.default.createElement(Ee,{key:C.text,tone:C.tone,testId:C.testId},C.text)),v&&Tr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:v.color||"var(--color-text-muted)"}},v.text)))}var mr=V(Y());var UP={fontFamily:X,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},WP={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},yg={...WP,fontFamily:X,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},vg={...UP,textAlign:"right"},jxe=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function n0({rows:e=[],unit:t="scenario",judgedBy:r=null,judgeEstimated:n=!1,title:o="Model comparison",testId:a="model-comparison-table"}){if(!e.length)return null;let i=e.some(d=>d.cost!=null),s=e.some(d=>d.judgeCost!=null||d.judgeCalls>0),l=e.some(d=>d.avgTokens!=null),u=e.some(d=>d.avgDurationMs!=null),c=e.some(d=>d.cost!=null&&d.estimated||d.judgeCost!=null&&n);return mr.default.createElement(He,{padding:0,style:{overflow:"hidden"},testId:a},mr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},mr.default.createElement(Ve,null,o),mr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),c&&mr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},Es)),mr.default.createElement("div",{style:{overflowX:"auto"}},mr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},mr.default.createElement("thead",null,mr.default.createElement("tr",{style:{background:"var(--color-muted)"}},mr.default.createElement("th",{style:UP},"Model"),mr.default.createElement("th",{style:vg},"Passed"),mr.default.createElement("th",{style:vg},"Mean score"),u&&mr.default.createElement("th",{style:vg},"Avg latency"),l&&mr.default.createElement("th",{style:vg,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&mr.default.createElement("th",{style:vg,title:`Cohort spend, and per ${t}`},"Cost"),s&&mr.default.createElement("th",{style:vg,title:"What the judge spent scoring this model's answers"},"Judge"),mr.default.createElement("th",{style:{...UP,width:"34%"}},"Typical fault"))),mr.default.createElement("tbody",null,e.map(d=>{let{short:f,provider:p}=Io(d.label,d.provider||"");return mr.default.createElement("tr",{key:d.label,"data-testid":"model-comparison-row","data-model":d.label},mr.default.createElement("td",{style:{...WP,whiteSpace:"nowrap"}},mr.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:d.label},f),d.winner&&mr.default.createElement("span",{style:{marginLeft:6,fontFamily:X,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick"),p&&mr.default.createElement("span",{style:{display:"block",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},p)),mr.default.createElement("td",{style:{...yg,color:jxe(d.passRate),fontWeight:600}},Vn(d.passed,d.total)),mr.default.createElement("td",{style:yg},ta(d.avgScore)),u&&mr.default.createElement("td",{style:yg},d.avgDurationMs==null?"\u2014":so(d.avgDurationMs)),l&&mr.default.createElement("td",{style:yg,title:d.avgInputTokens==null?void 0:`${Math.round(d.avgInputTokens)} in \xB7 ${Math.round(d.avgOutputTokens||0)} out per ${t}`},d.avgTokens==null?"\u2014":gn(Math.round(d.avgTokens))),i&&mr.default.createElement("td",{style:yg,title:d.cost!=null&&d.estimated?wp():void 0,"data-testid":"model-comparison-cost"},Rr(d.cost,{estimated:d.estimated}),d.costPerInteraction!=null&&mr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},`${Rr(d.costPerInteraction,{estimated:d.estimated})}/${t}`)),s&&mr.default.createElement("td",{style:yg,"data-testid":"model-comparison-judge"},d.judgeCost==null&&!d.judgeCalls?"\u2014":Rr(d.judgeCost,{estimated:n}),d.judgeCalls>0&&mr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},Ut(d.judgeCalls,"call"))),mr.default.createElement("td",{style:{...WP,color:d.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},mV(d)))})))))}var yc=V(Y());async function M_(e,{navigator:t=globalThis.navigator,document:r=globalThis.document}={}){let n=String(e??"");if(t?.clipboard?.writeText)try{return await t.clipboard.writeText(n),!0}catch{}if(!r?.body||typeof r.execCommand!="function")return!1;let o=r.createElement("textarea");o.value=n,o.setAttribute("readonly",""),o.style.position="fixed",o.style.top="0",o.style.left="0",o.style.opacity="0",r.body.appendChild(o);try{return o.select(),typeof o.setSelectionRange=="function"&&o.setSelectionRange(0,n.length),r.execCommand("copy")===!0}catch{return!1}finally{r.body.removeChild(o)}}function o0({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,yc.useState)("idle"),a=(0,yc.useRef)(null);(0,yc.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await M_(l):!1;o(u?"copied":"failed"),clearTimeout(a.current),a.current=setTimeout(()=>o("idle"),2e3)},s=n==="copied"?"Copied":n==="failed"?"Copy failed":"Copy fix prompt";return yc.default.createElement(se,{size:"sm",variant:"ghost",onClick:i,testId:t,title:"Copy a Markdown brief of this fix \u2014 the scenarios, what they expect, what the agent did, and how to verify \u2014 for your coding harness",style:{padding:"4px 8px",fontSize:12,color:n==="failed"?"var(--color-error)":n==="copied"?"var(--color-success-text)":"var(--color-text-secondary)",...r}},s)}var I_=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var pt=V(Y());var At=V(Y());var i0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},HP={width:"100%",boxSizing:"border-box",padding:"12px 14px",borderRadius:8,border:"1px solid var(--color-border)",background:"var(--color-background)",color:"var(--color-text-primary)",fontFamily:"var(--font-mono)",fontSize:13};function KP({title:e,onClose:t,children:r}){let n=(0,At.useRef)(null);return(0,At.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),At.default.createElement("dialog",{ref:n,className:"aa-fix-dialog","aria-label":e,onCancel:o=>{o.preventDefault(),t()},style:{width:"min(760px, calc(100vw - 32px))",maxHeight:"calc(100dvh - 40px)",boxSizing:"border-box",padding:0,borderRadius:16,border:"1px solid var(--color-border)",background:"var(--color-card, var(--color-background))",color:"var(--color-text-primary)"}},At.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},At.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),At.default.createElement("button",{type:"button","aria-label":"Close dialog",onClick:t,style:{background:"none",border:0,color:"var(--color-text-secondary)",cursor:"pointer",fontSize:24}},"\xD7")),At.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function a0(e,t="GET",r){let n=await fetch(e,{method:t,headers:r?{"Content-Type":"application/json"}:void 0,body:r?JSON.stringify(r):void 0,cache:"no-store"}),o=await n.json().catch(()=>({}));if(!n.ok)throw new Error(o.error||"Could not connect Claude Code. Please try again.");return o.login}var $xe=e=>e==="expired"?"This sign-in expired. Start again to get a fresh authorization page.":e==="completed"?"Claude Code signed in, but not with a Claude subscription. Start again and choose your Claude.ai account.":"Sign-in did not finish. Start again to retry.";function lf({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,At.useState)(null),[i,s]=(0,At.useState)(!1),[l,u]=(0,At.useState)(""),[c,d]=(0,At.useState)(!1),[f,p]=(0,At.useState)(null),m=(0,At.useRef)(null),y=(0,At.useRef)(t);y.current=t,(0,At.useEffect)(()=>{let v=!1;return a0(n).then(x=>{v||a(x)}).catch(x=>{v||p(x.message)}),()=>{v=!0}},[n]),(0,At.useEffect)(()=>{if(!i)return;let v=!1,x,S=async()=>{try{let w=await a0(n);if(v)return;if(a(w),w.authorize_url&&m.current&&(m.current.location=w.authorize_url,m.current=null),w.logged_in){s(!1),u(""),d(!1),r?.(),y.current?.();return}if(!["starting","awaiting_code","submitted"].includes(w.status)){p($xe(w.status)),d(!1);return}x=setTimeout(S,1200)}catch(w){v||(p(w.message),d(!1))}};return x=setTimeout(S,300),()=>{v=!0,clearTimeout(x)}},[n,i]);let b=async()=>{p(null),u(""),d(!0),m.current=window.open("about:blank","_blank"),m.current&&(m.current.opener=null);try{a(await a0(n,"POST")),s(!0)}catch(v){m.current?.close(),m.current=null,p(v.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await a0(n,"DELETE")),r?.()}catch(v){p(v.message)}finally{d(!1)}},g=async v=>{if(v.preventDefault(),!l.trim()||c)return;let x=l.trim();u(""),d(!0),p(null);try{a(await a0(`${n}/code`,"POST",{claude_login_code:x}))}catch(S){p(S.message),d(!1)}};return At.default.createElement("section",{style:i0,"data-testid":"sandbox-claude-login"},At.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},At.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},At.default.createElement("strong",null,"Claude Code"),At.default.createElement(Ee,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&At.default.createElement(se,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),At.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",color:"var(--color-text-secondary)",margin:"10px 0"}},"Usage counts against your own Claude Pro, Max, or Team plan. Your login stays inside this sandbox and ends when the sandbox stops."),!o?.logged_in&&At.default.createElement(se,{variant:"primary",onClick:b,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),f&&!i&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},f),i&&At.default.createElement(KP,{title:"Connect your Claude subscription",onClose:h},At.default.createElement("p",{style:{margin:0,fontSize:14,lineHeight:"22px",color:"var(--color-text-secondary)"}},"Authorize Claude Code on Claude\u2019s website. Then paste the one-time code below to finish signing in to this sandbox."),At.default.createElement("div",{style:{...i0,fontSize:12}},At.default.createElement("strong",null,e.repository||"Checkout sandbox"),At.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?At.default.createElement("a",{href:o.authorize_url,target:"_blank",rel:"noreferrer",style:{color:"var(--color-text-link, var(--color-accent-ui))",fontSize:13}},"Reopen Claude authorization page \u2197"):At.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),At.default.createElement("form",{onSubmit:g,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},At.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),At.default.createElement("input",{id:`claude-login-code-${e.session_id}`,type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,maxLength:2048,value:l,onChange:v=>u(v.target.value),placeholder:"Paste the code from Claude",style:HP,disabled:c||o?.status!=="awaiting_code"}),At.default.createElement(se,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),f&&At.default.createElement(At.default.Fragment,null,At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},f),At.default.createElement(se,{onClick:b,disabled:c},"Start sign-in again")),At.default.createElement("p",{style:{margin:0,fontSize:12,lineHeight:"18px",color:"var(--color-text-muted)"}},"The code is sent once to Claude Code running in your sandbox. ActiveAgent does not store your Claude subscription token.")))}var Te=V(Y());var j_=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var uf=(e,t)=>`${e} ${t}${e===1?"":"s"}`,s0=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},$_=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),DV=e=>String(e??"").replace(/\s+/g," ").trim(),bg=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),xg=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},Lxe=e=>{if(e==null||e===""||Number.isNaN(Number(e)))return null;let t=Number(e);return t===0?"$0.00":Math.abs(t)<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`},zxe=e=>{if(e==null||e===""||Number.isNaN(Number(e)))return null;let t=Math.max(0,Number(e));if(t<1e3)return`${Math.round(t)}ms`;if(t<6e4)return`${(t/1e3).toFixed(1).replace(/\.0$/,"")}s`;let r=Math.round(t/1e3);return r<3600?`${Math.floor(r/60)}m ${r%60}s`:`${Math.floor(r/3600)}h ${Math.floor(r%3600/60)}m`},LV=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:uf(Number(t),"turn"),Lxe(r),zxe(n)].filter(Boolean).join(" \xB7 "),zV=(e,t=Date.now())=>{if(!e)return null;let r=new Date(e).getTime();if(Number.isNaN(r))return null;let n=Math.ceil((r-t)/6e4);return n<=0?"past its expiry":n<60?`expires in ${n}m`:`expires in ${Math.floor(n/60)}h${n%60?` ${n%60}m`:""}`},Je=(e,t)=>{let r=i=>Array.isArray(i)?i.filter(Boolean).join(", "):typeof i=="string"?i:"",n=bg(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},Bxe={pending:{label:"Queued",tone:"progress"},provisioning:{label:"Booting",tone:"progress"},ready:{label:"Ready",tone:"success"},running:{label:"Running",tone:"success"},completed:{label:"Completed",tone:"neutral"},expired:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}},BV=e=>Bxe[e]||{label:$_(e)||"Unknown",tone:"neutral"},L_=e=>["pending","provisioning"].includes(e?.status),FV=e=>e?.status==="ready",Fxe={queued:{label:"Queued",tone:"progress"},running:{label:"Running",tone:"progress"},succeeded:{label:"Succeeded",tone:"success"},failed:{label:"Failed",tone:"error"},cancelled:{label:"Cancelled",tone:"neutral"}},cf=e=>Fxe[e]||{label:$_(e)||"Unknown",tone:"neutral"},z_=e=>["queued","running"].includes(e?.status),u0=e=>["succeeded","failed","cancelled"].includes(e?.status),VP=e=>u0(e)&&e?.diff_pending===!0,GP=e=>u0(e)&&!VP(e),UV=e=>e?.status==="cancelled"&&GP(e)&&e?.diff==null&&!(Number(e?.event_count)>0),YP=e=>{if(!u0(e)){let t=Number(e?.event_count)||0;return t>0?uf(t,"event"):""}return LV(null,e)},WV=e=>[cf(e?.status).label,YP(e)].filter(Boolean).join(" \xB7 "),HV=(e,t=80)=>{let r=String(e||"").split(` +`).map(n=>n.trim()).find(Boolean)||"";return s0(r,t)||"(empty prompt)"},vc=(e,t,r)=>{if(!t||t[r]==null)return e;let n=e.findIndex(a=>a[r]===t[r]);if(n===-1)return[t,...e];let o=e.slice();return o[n]={...e[n],...t},o},KV=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?vc(e,t,r):e,qV=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},VV=(e,t)=>{let r=new Set(t||[]),n={},o=[];return(e||[]).forEach(a=>{!a||a.status==="expired"||a.sandbox_type&&a.sandbox_type!=="app_runtime"||(r.has(a.repository)?(n[a.repository]||=[]).push(a):o.push(a))}),{byRepository:n,others:o}},GV=(e,t)=>{let r=Array.isArray(e)?e:[],n=Array.isArray(t?.events)?t.events:[],o=Math.max(0,Math.min(Number(t?.events_offset)||0,r.length));return[...r.slice(0,o),...n]},Ks=(e,t)=>{let r=String(e??"");if(!t)return r;let n=String(t).replace(/\/+$/,"");return r===n?".":r.startsWith(`${n}/`)?r.slice(n.length+1):r},Uxe={Bash:e=>e.command,Read:(e,t)=>Ks(e.file_path,t),Write:(e,t)=>Ks(e.file_path,t),Edit:(e,t)=>Ks(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${uf(e.edits.length,"edit")})`:"";return`${Ks(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>Ks(e.notebook_path,t),NotebookRead:(e,t)=>Ks(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${Ks(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${Ks(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>Ks(e.path,t),WebFetch:e=>e.url,WebSearch:e=>e.query,Task:e=>e.description||e.prompt,Agent:e=>e.description||e.prompt,TodoWrite:e=>Array.isArray(e.todos)?uf(e.todos.length,"todo"):"",BashOutput:e=>e.bash_id,KillShell:e=>e.shell_id,KillBash:e=>e.shell_id,Skill:e=>e.skill||e.command,SlashCommand:e=>e.command},Wxe=["command","file_path","path","url","query","pattern","description","name","prompt"],Hxe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!bg(t))return s0(DV(typeof t=="string"?t:xg(t)),120);let n=Uxe[e],o=n?n(t,r):null;if(o==null||o===""){let a=Wxe.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?Ks(t[a],r):t[a]:o=Object.keys(t).length?xg(t):""}return s0(DV(o),120)},Kxe=e=>e==null?"":typeof e=="string"?e:Array.isArray(e)?e.map(t=>typeof t=="string"?t:t?.type==="text"?t.text??"":t?.type==="image"?"[image]":xg(t)).join(` +`):xg(e),qxe=(e,{chars:t=600,lines:r=12}={})=>{let n=String(e??"").replace(/\s+$/,""),o=n.split(` `).slice(0,r).join(` -`);o.length>t&&(o=o.slice(0,t));let a=o.lengthe?.is_error===!0||e?.subtype!=null&&e.subtype!=="success",hxe=e=>{if(!DV(e))return"Done";if(bV[e.subtype])return bV[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},yxe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?ef(e.tools.length,"tool"):null;return{kind:"system",text:["Session started",...[e.model&&`model ${e.model}`,e.permissionMode&&`${e.permissionMode} mode`,t].filter(Boolean)].join(" \xB7 ")}}if(e.subtype==="compact_boundary")return{kind:"system",text:"Conversation compacted"};if(e.subtype==="api_retry"){let t=e.attempt??"?",r=e.max_retries!=null?`${t}/${e.max_retries}`:String(t),n=[e.error_status,e.error].filter(o=>o!=null&&o!=="").join(" ");return{kind:"system",text:[`API retry ${r}`,n].filter(Boolean).join(" \xB7 ")}}return{kind:"system",text:e.subtype?`System: ${A2(e.subtype).toLowerCase()}`:"System event"}},vxe=/^(hook_|thinking_tokens$)/,xxe=e=>vxe.test(String(e?.subtype||"")),bxe=e=>{let t=e?.rate_limit_info||{},r=String(t.status||"");if(r===""||r==="allowed")return[];let n=Number(t.resetsAt),o=Number.isFinite(n)&&n>0?`resets ${new Date(n*1e3).toLocaleTimeString()}`:null;return[{kind:"system",text:[`Rate limit: ${A2(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},k2=(e,t)=>({kind:"unknown",label:String(e||"event"),text:Zv(lg(t),300)}),wV=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!ug(e))return[];switch(e.type){case"text":return String(e.text??"").trim()?[{kind:t==="assistant"?"text":"user_text",text:e.text}]:[];case"thinking":return String(e.thinking??"").trim()?[{kind:"thinking",text:e.thinking}]:[];case"redacted_thinking":return[{kind:"thinking",text:"(redacted)"}];case"tool_use":case"server_tool_use":{let n=String(e.name||"tool");return e.id&&(r.toolNames[e.id]=n),[{kind:"tool_use",name:n,summary:pxe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=gxe(mxe(e.content));return[{kind:"tool_result",name:r.toolNames[e.tool_use_id]||null,text:n,truncated:o,isError:e.is_error===!0}]}default:return[k2(`${t} ${e.type||"block"}`,e)]}},wxe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?wV(r,e.type,t):Array.isArray(r)?r.flatMap(n=>wV(n,e.type,t)):[k2(e.type,e)]},Sxe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!ug(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:lg(e)}];let r=!!e.parent_tool_use_id,n=o=>r?o.map(a=>({...a,nested:!0})):o;switch(e.type){case"thread.started":return[{kind:"system",text:"Codex session started"}];case"turn.started":case"turn.completed":return[];case"item.started":case"item.updated":case"item.completed":{let o=e.item||{};return e.type!=="item.completed"?[]:o.type==="agent_message"?[{kind:"text",text:String(o.text||"")}]:o.type==="reasoning"?[{kind:"thinking",text:String(o.text||"")}]:o.type==="command_execution"?[{kind:"tool_use",name:"Command",summary:String(o.command||"")},{kind:"tool_result",text:String(o.aggregated_output||""),isError:o.status==="failed"||o.exit_code!=null&&o.exit_code!==0}]:[k2(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),xxe(e)?[]:[yxe(e)];case"rate_limit_event":return bxe(e);case"assistant":case"user":return n(wxe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=SV(hxe(e),e);return[{kind:"result",tone:DV(e)?"error":"success",text:o?`${a} \xB7 ${ef(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[k2(e.type,e)]}},IV=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>Sxe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},jV=/^diff (--git|--cc|--combined) /,kxe="\u2026 diff truncated",Rv=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` -`).map(n=>{if(jV.test(n))return t=!0,{text:n,kind:"meta"};if(n===kxe)return{text:n,kind:"meta"};if(n.startsWith("@@"))return t=!1,r=Math.max(1,n.match(/^@+/)[0].length-1),{text:n,kind:"hunk"};if(t)return{text:n,kind:"meta"};let o=n.slice(0,r);return o.includes("+")?{text:n,kind:"add"}:o.includes("-")?{text:n,kind:"del"}:{text:n,kind:"context"}})},$V=e=>{let t=Rv(e),r=t.filter(a=>a.kind==="meta"&&jV.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${ef(r,"file")} changed \xB7 +${n} \u2212${o}`},e0="default",t0="other",LV=["sonnet","opus","haiku"],_xe=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,LP="actionagent.claudeCode.modelChoice",zV=(e="claude_code")=>[{value:e0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:LV.map(t=>({value:t,label:t})),{value:t0,label:"Other\u2026"}],zP=e=>e===e0||e===t0||LV.includes(e),BP=(e,t="")=>{if(!zP(e)||e===e0)return{model:null};if(e!==t0)return{model:e};let r=String(t??"").trim();return r?_xe.test(r)?{model:r}:{error:`"${Zv(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},BV=(e,t,r,n="claude_code")=>{let{model:o}=BP(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},N2=e=>{let t={choice:e0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!ug(r)||!zP(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},FV=(e,t="")=>JSON.stringify({choice:zP(e)?e:e0,custom:String(t??"").slice(0,100)}),FP=e=>e?.model||"default model",DP="api_key",Jv="local_login",UV="claude /login",WV="sk-ant-api03-\u2026",HV="https://platform.claude.com",KV="https://code.claude.com/docs/en/legal-and-compliance.md",T2=e=>{let t=ug(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===Jv;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?Jv:DP,connected:e?.claude_code_connected===!0,loggedIn:r&&t.logged_in===!0,authMethod:r&&typeof t.auth_method=="string"&&t.auth_method?t.auth_method:null}},qV=(e,t)=>{if(!e)return{view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,needsReplacing:!1,loginHint:null};if(e.mode==="sandbox_login")return{view:"sandbox_login",status:"Your subscription, inside each sandbox",tone:"neutral",keyForm:!0,needsReplacing:t?.needs_replacing===!0,loginHint:null};if(e.mode===Jv){let r=e.authMethod?` (${e.authMethod})`:"";return{view:Jv,status:e.loggedIn?`Using this machine's Claude Code login \xB7 logged in${r}`:"Using this machine's Claude Code login \xB7 not logged in",tone:e.loggedIn?"success":"error",keyForm:!1,needsReplacing:!1,loginHint:e.loggedIn?null:UV}}return t?t.configured&&t.needs_replacing===!0?{view:DP,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:DP,status:t.configured?`Connected (${t.hint})`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,needsReplacing:!1,loginHint:null}:{view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,needsReplacing:!1,loginHint:null}},VV=e=>e?.connected===!0?null:e?.mode==="sandbox_login"?{text:"Sign in with your Claude subscription in this sandbox, or connect an Anthropic API key.",loginHint:null,after:null}:e?.mode===Jv?{text:"Claude Code is not logged in on this machine. Run",loginHint:UV,after:"as the user the dashboard runs as."}:{text:"Connect an Anthropic API key under Claude Code below to run sessions in this checkout.",loginHint:null,after:null};var O2="Update from the sandbox",Axe=new Set(["queued","publishing"]);function r0(e){return!!(e&&Axe.has(e.status))}function YV(e){if(!e)return{label:"None",tone:"neutral"};switch(e.status){case"queued":return{label:"Queued",tone:"progress"};case"publishing":return{label:"Publishing",tone:"progress"};case"draft_refused":return{label:"Branch published",tone:"neutral"};case"failed":return e.number?{label:`${GV(e)} \xB7 update failed`,tone:"error"}:e.head_commit?{label:"Branch published \xB7 pull request not opened",tone:"error"}:{label:"Failed",tone:"error"};default:return{label:GV(e),tone:Cxe(e)}}}function GV(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function Cxe(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function XV(e){return!e?.head_commit||!e.number||r0(e)?!1:!["closed","merged"].includes(e.state)}function ZV(e){return!!(e?.head_commit&&!e.number&&!r0(e))}function JV(e,t,r){let n=new Set(cg(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function QV(e){return(e||[]).some(t=>t.refusal==="not_read")}function RV(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function P2(e){return e==="changed_since_preview"}function M2(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function D2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function cg(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function eG(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=cg(r,t).length,i=n.length===1?"file":"files",s=[`${a} of ${n.length} ${i} selected`];return o>0&&s.push(`${o} cannot be published`),s.join(" \xB7 ")}function tG(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var Exe=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function Nxe(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||Exe.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function rG({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return cg(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?Nxe(n):"Add a title."}function I2({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=cg(e,t).map(c=>({path:c.path,digest:c.digest})),u=s?{files:l,message:(a||"").trim(),update:!0}:{files:l,title:(r||"").trim(),body:n||"",branch:(o||"").trim()};return i?{...u,allowlist:i}:u}function nG(e,t,r){let n=new URLSearchParams;(t||[]).forEach(a=>n.append("paths[]",a)),r&&r.trim()&&n.set("title",r.trim());let o=n.toString();return`/api/sandboxes/${encodeURIComponent(e)}/pull_request/patch${o?`?${o}`:""}`}function UP(e){let t=Number(e);return!Number.isFinite(t)||t<0?"":t<1024?`${t} ${t===1?"byte":"bytes"}`:t<1024*1024?`${Math.round(t/1024)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}function oG(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var Ce=G(Y());var wr=G(Y());function n0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,wr.useState)(null),[i,s]=(0,wr.useState)(!1),l=e?.verification;if(!e?.evaluation_run_id)return null;let u=l?.rows||[],c=l?.status==="complete",d=async()=>{s(!0),a(null);try{let p=await fetch(`/api/evaluations/${t}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_id:r,models:e.fix_item?.models})}),m=await p.json();if(!p.ok)throw new Error(m.error||"Could not run the full suite.");a({run:m.run.id})}catch(p){a({error:p.message})}finally{s(!1)}},f=p=>p==null?"\u2014":Number(p).toFixed(2);return wr.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},wr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},wr.default.createElement("strong",{style:{fontSize:13}},"Before & after"),wr.default.createElement(Te,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&wr.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),wr.default.createElement("div",{style:{overflowX:"auto"}},wr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},wr.default.createElement("thead",null,wr.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(p=>wr.default.createElement("th",{key:p,style:{textAlign:"left",padding:"8px 10px",borderBottom:"1px solid var(--color-border)",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},p)))),wr.default.createElement("tbody",null,u.map(p=>wr.default.createElement("tr",{key:`${p.scenario_key}/${p.model}`},wr.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},p.scenario_key,wr.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},p.model)),wr.default.createElement("td",{style:{padding:10}},p.before," \xB7 ",f(p.before_score)),wr.default.createElement("td",{style:{padding:10,color:p.change==="fixed"?"var(--color-success-text)":["regressed","still_failing"].includes(p.change)?"var(--color-error-text)":"var(--color-text-secondary)"}},p.after||"pending",p.after_score!=null&&` \xB7 ${f(p.after_score)}`,wr.default.createElement("div",{style:{fontSize:10,marginTop:4}},p.change.replaceAll("_"," "))),wr.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},p.score_change==null?"\u2014":`${p.score_change>0?"+":""}${f(p.score_change)}`),wr.default.createElement("td",{style:{padding:10}},p.fault||(p.after?"none":p.before_fault)||"\u2014")))))),wr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},wr.default.createElement("a",{href:ct(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&wr.default.createElement("a",{href:ct(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&wr.default.createElement(de,{size:"sm",onClick:d,disabled:i},i?"Starting\u2026":"Re-run the full suite"),n&&["succeeded","failed","cancelled"].includes(e.status)&&(c||l?.error||e.status!=="succeeded"||!e.diff)&&wr.default.createElement(de,{size:"sm",onClick:n},"Try again")),o?.run&&wr.default.createElement("a",{style:{fontSize:12},href:ct(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&wr.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var Txe=2e4,iG=()=>{try{return N2(window.localStorage.getItem(LP))}catch{return N2(null)}},Oxe=(e,t)=>{try{window.localStorage.setItem(LP,FV(e,t))}catch{}},uG=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),sG={success:{dark:"bg-green-900/30 text-green-300",light:"bg-green-50 text-green-700"},error:{dark:"bg-red-900/30 text-red-300",light:"bg-red-50 text-red-700"},progress:{dark:"bg-amber-900/30 text-amber-300",light:"bg-amber-50 text-amber-700"},neutral:{dark:"bg-gray-700 text-gray-300",light:"bg-gray-100 text-gray-600"}};function fc({tone:e="neutral",children:t}){let{darkMode:r}=st(),n=sG[e]||sG.neutral;return Ce.default.createElement("span",{className:`inline-flex items-center px-2 py-0.5 rounded text-xs font-medium ${r?n.dark:n.light}`},e==="progress"&&Ce.default.createElement("span",{className:"mr-1 h-1.5 w-1.5 rounded-full bg-current animate-pulse"}),t)}function o0({sandbox:e,claudeCode:t,codex:r,onRecheckConnection:n,readOnly:o=!1,focusSessionId:a=null,title:i="Code sessions"}){let{darkMode:s}=st(),l=`/api/sandboxes/${encodeURIComponent(e.session_id)}/code_sessions`,[u,c]=(0,Ce.useState)(null),[d,f]=(0,Ce.useState)(null),[p,m]=(0,Ce.useState)(null),[y,x]=(0,Ce.useState)(null),[h,g]=(0,Ce.useState)(0),[v,b]=(0,Ce.useState)(0),[_,w]=(0,Ce.useState)(""),[C,S]=(0,Ce.useState)("claude_code"),k=C==="codex"?"Codex":"Claude Code",[A,O]=(0,Ce.useState)(iG),[$,F]=(0,Ce.useState)(!1),[P,z]=(0,Ce.useState)(!1),[N,D]=(0,Ce.useState)(null),T=(0,Ce.useRef)(null),E=(0,Ce.useRef)(!0),I=(0,Ce.useCallback)(async()=>{let U=await fetch(l),oe=await U.json().catch(()=>({}));if(!U.ok)throw new Error(Xe(oe,`Could not load code sessions (HTTP ${U.status}).`));return oe.code_sessions||[]},[l]);(0,Ce.useEffect)(()=>{let U=!1;return c(null),f(null),I().then(oe=>{if(U)return;c(oe);let ye=oe.find(Je=>Je.id===a)||oe.find(E2)||oe[0];f(Je=>Je??ye?.id??null)}).catch(oe=>{U||(c([]),D(oe.message))}),()=>{U=!0}},[I]),(0,Ce.useEffect)(()=>{a!=null&&f(a)},[a]),(0,Ce.useEffect)(()=>{if(d==null)return;let U=!1,oe=null,ye=[],Je=0;m(null),x(null),E.current=!0;let Ft=async()=>{let Nt=!0,ce=null;try{let Ze=await fetch(`${l}/${d}?after=${ye.length}`);ce=Ze.status;let fr=await Ze.json().catch(()=>({}));if(U)return;if(!Ze.ok)throw new Error(Xe(fr,`Could not load the session (HTTP ${Ze.status}).`));let Rt=fr.code_session;ye=MV(ye,Rt),Je=0,x(null),m({...Rt,events:ye}),c(Ke=>dc(Ke||[],OV(Rt),"id"));let er=Rt.evaluation_run_id&&Rt.status==="succeeded"&&Rt.diff&&!Rt.verification?.error&&!["complete","failed"].includes(Rt.verification?.status);jP(Rt)&&!er&&(Nt=!1)}catch(Ze){if(U)return;Je+=1,x(Ze.message),_2(ce,Je)&&(Nt=!1)}Nt&&!U&&(oe=setTimeout(Ft,1500))};return Ft(),()=>{U=!0,clearTimeout(oe)}},[l,d,h]);let j=(u||[]).find(E2)||null,q=j&&j.id!==d?j.id:null,te=C==="codex"?r?.supported?r?.connected?null:{text:"Connect an OpenAI API key in the Codex integration below."}:{text:"This sandbox backend does not support Codex."}:VV(t),K=te?"not_connected":j?"busy":null;(0,Ce.useEffect)(()=>{if(q==null)return;let U=!1,oe=setTimeout(async()=>{try{let ye=await I();U||c(ye)}catch{}U||b(ye=>ye+1)},1500*2);return()=>{U=!0,clearTimeout(oe)}},[q,v,I]);let le=(0,Ce.useMemo)(()=>IV(p?.events),[p?.events]);(0,Ce.useLayoutEffect)(()=>{let U=T.current;U&&E.current&&(U.scrollTop=U.scrollHeight)},[le.length]);let pe=U=>{let oe=U.currentTarget;E.current=oe.scrollHeight-oe.scrollTop-oe.clientHeight<40},re=BP(A.choice,A.custom).error||null,_e=U=>{O(oe=>{let ye={...oe,...U};return C==="claude_code"&&Oxe(ye.choice,ye.custom),ye})},ue=async()=>{let U=_.trim();if(!(!U||K||$||re)){F(!0),D(null);try{let oe=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(BV(U,A.choice,A.custom,C))}),ye=await oe.json().catch(()=>({}));if(!oe.ok)throw ye.code_session&&(c(Je=>dc(Je||[],ye.code_session,"id")),f(ye.code_session.id)),new Error(Xe(ye,`Could not start ${k} (HTTP ${oe.status}).`));c(Je=>dc(Je||[],ye.code_session,"id")),f(ye.code_session.id),w("")}catch(oe){D(oe.message)}finally{F(!1)}}},se=async U=>{z(!0),D(null);try{let oe=await fetch(`${l}/${U.id}/cancel`,{method:"POST"}),ye=await oe.json().catch(()=>({}));if(!oe.ok)throw new Error(Xe(ye,`Could not cancel the session (HTTP ${oe.status}).`));c(Je=>dc(Je||[],ye.code_session,"id")),m(Je=>Je&&Je.id===ye.code_session.id?{...Je,...ye.code_session}:Je)}catch(oe){D(oe.message)}finally{z(!1)}},Z=s?"text-gray-400":"text-gray-500",R=s?"text-white":"text-gray-900",L=s?"border-gray-700":"border-gray-200",B=`px-3 py-1 text-sm rounded ${s?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,H=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,M=`p-2 rounded text-xs border ${s?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`,ne=p&&p.id===d?p:(u||[]).find(U=>U.id===d)||null;return Ce.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${L}`},!o&&t?.mode==="sandbox_login"&&Ce.default.createElement(Rd,{sandbox:e,onChange:n}),Ce.default.createElement("div",{className:"flex items-center justify-between"},Ce.default.createElement("p",{className:`text-sm font-medium ${R}`},i),Ce.default.createElement("p",{className:`text-xs ${Z}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Ce.default.createElement("div",{className:M},N),!o&&Ce.default.createElement("div",{className:"space-y-2"},Ce.default.createElement("label",{className:`flex items-center gap-2 text-xs ${Z}`},"Agent",Ce.default.createElement("select",{"aria-label":"Coding agent",value:C,onChange:U=>{S(U.target.value),O(U.target.value==="claude_code"?iG():N2(null))},disabled:$,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},Ce.default.createElement("option",{value:"claude_code"},"Claude Code"),Ce.default.createElement("option",{value:"codex",disabled:!r?.supported},"Codex",r?.supported?"":" (backend unavailable)"))),Ce.default.createElement("textarea",{value:_,onChange:U=>w(U.target.value),onKeyDown:U=>{U.key==="Enter"&&(U.metaKey||U.ctrlKey)&&ue()},rows:3,maxLength:Txe,disabled:K==="not_connected"||$,placeholder:`What should ${k} do in this checkout?`,className:`w-full px-3 py-2 border rounded-lg text-sm disabled:opacity-60 ${s?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),Ce.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ce.default.createElement("label",{htmlFor:`code-session-model-${e.session_id}`,className:`text-xs ${Z}`},"Model"),Ce.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:A.choice,onChange:U=>_e({choice:U.target.value}),disabled:$,className:`px-2 py-1 border rounded text-xs ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},zV(C).map(U=>Ce.default.createElement("option",{key:U.value,value:U.value},U.label))),A.choice===t0&&Ce.default.createElement("input",{type:"text",value:A.custom,onChange:U=>_e({custom:U.target.value}),disabled:$,maxLength:100,placeholder:C==="codex"?"Model id":"claude-sonnet-4-5","aria-label":"Model id","aria-invalid":!!re,className:`flex-1 min-w-[10rem] px-2 py-1 border rounded text-xs font-mono ${s?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`})),re&&A.custom.trim()&&Ce.default.createElement("p",{className:`text-xs ${s?"text-red-300":"text-red-700"}`},re),Ce.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ce.default.createElement("p",{className:`text-xs ${Z}`},K==="not_connected"&&Ce.default.createElement(Ce.default.Fragment,null,te.text,te.loginHint&&Ce.default.createElement(Ce.default.Fragment,null," ",Ce.default.createElement("code",{className:"font-mono"},te.loginHint)," ",te.after)," ",n&&Ce.default.createElement("button",{type:"button",onClick:n,className:H},"Check again")),K==="busy"&&Ce.default.createElement(Ce.default.Fragment,null,"A session is ",j.status," in this checkout; wait for it to finish or cancel it."," ",j.id!==d&&Ce.default.createElement("button",{type:"button",onClick:()=>f(j.id),className:H},"Show it"))),Ce.default.createElement("button",{type:"button",onClick:ue,disabled:!!K||$||!_.trim()||!!re,className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},$?"Starting\u2026":`Run ${k}`)),N&&Ce.default.createElement("div",{className:M},N)),u&&u.length>0&&Ce.default.createElement("div",{className:"space-y-1"},Ce.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${Z}`},"Sessions"),Ce.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(U=>{let{label:oe,tone:ye}=tf(U.status),Je=U.id===d;return Ce.default.createElement("button",{key:U.id,type:"button",title:EV(U),onClick:()=>Je?g(Ft=>Ft+1):f(U.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${Je?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Ce.default.createElement(fc,{tone:ye},oe),Ce.default.createElement("span",{className:`text-xs ${Z}`},U.runner==="codex"?"Codex":"Claude Code"),Ce.default.createElement("span",{className:`flex-1 truncate ${R}`},NV(U.prompt)),Ce.default.createElement("span",{className:`shrink-0 text-xs font-mono ${Z}`},FP(U)),Ce.default.createElement("span",{className:`shrink-0 text-xs ${Z}`},vo(U.created_at)))}))),u===null&&Ce.default.createElement("p",{className:`text-xs ${Z}`},"Loading sessions\u2026"),ne&&Ce.default.createElement(Pxe,{session:ne,rows:le,loaded:!!(p&&p.id===ne.id),detailError:y,cancelling:P,onCancel:()=>se(ne),onReload:()=>g(U=>U+1),transcriptRef:T,onTranscriptScroll:pe,classes:{muted:Z,strong:R,border:L,secondaryButton:B,linkButton:H,errorBox:M}}))}function Pxe({session:e,rows:t,loaded:r,detailError:n,cancelling:o,onCancel:a,onReload:i,transcriptRef:s,onTranscriptScroll:l,classes:u}){let{darkMode:c}=st(),{muted:d,strong:f,border:p,secondaryButton:m,linkButton:y,errorBox:x}=u,{label:h,tone:g}=tf(e.status),v=E2(e),b=Qv(e),_=CV(e),w=Number(e.dropped_events_count)||0;return Ce.default.createElement("div",{className:`pt-3 border-t space-y-2 ${p}`},Ce.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ce.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Ce.default.createElement(fc,{tone:g},h),Ce.default.createElement("span",{className:`text-xs truncate ${d}`},[$P(e),FP(e)].filter(Boolean).join(" \xB7 "))),v&&Ce.default.createElement("button",{type:"button",onClick:a,disabled:o,className:`${m} shrink-0 disabled:opacity-50`},o?"Cancelling\u2026":"Cancel")),Ce.default.createElement("p",{className:`text-xs whitespace-pre-wrap break-words max-h-24 overflow-y-auto ${d}`},e.prompt),n&&Ce.default.createElement("div",{className:x},n),Ce.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:uG(c)},!r&&Ce.default.createElement("p",{className:`text-xs ${d}`},"Loading transcript\u2026"),r&&t.length===0&&Ce.default.createElement("p",{className:`text-xs ${d}`},e.status==="queued"?"Waiting for the sandbox to start the agent\u2026":v?"The agent is starting\u2026":_?"Cancelled before the agent started.":"No transcript was recorded."),t.map(C=>Ce.default.createElement(Mxe,{key:C.key,row:C,darkMode:c,muted:d,strong:f})),w>0&&Ce.default.createElement("p",{className:`text-xs italic ${d}`},w," later event",w===1?" was":"s were"," not kept: a transcript keeps its first 1,000.")),e.error_message&&Ce.default.createElement("pre",{className:`${x} whitespace-pre-wrap break-words font-mono max-h-48 overflow-y-auto`},e.error_message),e.evaluation_run_id&&Ce.default.createElement(n0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),b&&r&&Ce.default.createElement(Dxe,{diff:e.diff,pending:IP(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function Mxe({row:e,darkMode:t,muted:r,strong:n}){let o=e.nested?`ml-4 pl-2 border-l ${t?"border-gray-700":"border-gray-200"}`:"";switch(e.kind){case"text":return Ce.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${n} ${o}`},e.text);case"user_text":return Ce.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${r} ${o}`},e.text);case"thinking":return Ce.default.createElement("p",{className:`text-xs italic whitespace-pre-wrap break-words line-clamp-3 ${r} ${o}`},e.text);case"tool_use":return Ce.default.createElement("p",{className:`text-xs font-mono break-words ${o}`},Ce.default.createElement("span",{className:`font-semibold ${t?"text-blue-300":"text-blue-700"}`},e.name),e.summary&&Ce.default.createElement("span",{className:r}," ",e.summary));case"tool_result":return Ce.default.createElement("pre",{className:`ml-4 text-xs font-mono whitespace-pre-wrap break-words ${e.isError?t?"text-red-400":"text-red-600":r} ${o}`,title:e.name?`${e.name} result`:void 0},e.text||"(no output)");case"result":return Ce.default.createElement("p",{className:`text-sm font-medium ${e.tone==="error"?t?"text-red-400":"text-red-600":t?"text-green-400":"text-green-600"}`},e.text);case"system":return Ce.default.createElement("p",{className:`text-xs ${r}`},e.text);case"raw":return Ce.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},e.text);default:return Ce.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},"[",e.label,"] ",e.text)}}var lG={add:{dark:"text-green-400",light:"text-green-700"},del:{dark:"text-red-400",light:"text-red-700"},hunk:{dark:"text-blue-300",light:"text-blue-700"},meta:{dark:"text-gray-400 font-semibold",light:"text-gray-500 font-semibold"},context:{dark:"text-gray-300",light:"text-gray-700"}};function Dxe({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ce.useMemo)(()=>Rv(e),[e]);return e==null?t?Ce.default.createElement("p",{className:`text-xs ${n}`},"The diff is recorded once the agent has stopped."," ",Ce.default.createElement("button",{type:"button",onClick:r,className:o},"Refresh")):Ce.default.createElement("p",{className:`text-xs ${n}`},"No diff was recorded."):i.length===0?Ce.default.createElement("p",{className:`text-xs ${n}`},"No changes in the checkout."):Ce.default.createElement("div",{className:"space-y-1"},Ce.default.createElement("p",{className:`text-xs ${n}`},"Diff \xB7 ",$V(e)),Ce.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:uG(a)},i.map((s,l)=>{let u=lG[s.kind]||lG.context;return Ce.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var cG={add:{dark:"text-green-400",light:"text-green-700"},del:{dark:"text-red-400",light:"text-red-700"},hunk:{dark:"text-blue-300",light:"text-blue-700"},meta:{dark:"text-gray-400 font-semibold",light:"text-gray-500 font-semibold"},context:{dark:"text-gray-300",light:"text-gray-700"}};function dG(e){return/[.!?]$/.test(e)?e:`${e}.`}function fG(){let{darkMode:e}=st();return{darkMode:e,muted:e?"text-gray-400":"text-gray-500",strong:e?"text-white":"text-gray-900",border:e?"border-gray-700":"border-gray-200",link:`underline ${e?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,secondaryButton:`px-3 py-1 text-sm rounded ${e?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,primaryButton:"px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50",input:`w-full px-3 py-2 border rounded-lg text-sm ${e?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`,errorBox:`p-2 rounded text-xs border ${e?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`,surface:{backgroundColor:e?"#1a1a1a":"#ffffff"}}}function a0({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Ne.useState)(null),[a,i]=(0,Ne.useState)(null),[s,l]=(0,Ne.useState)(null),[u,c]=(0,Ne.useState)(0),[d,f]=(0,Ne.useState)(!1),p=(0,Ne.useCallback)(async()=>{let h=await fetch(r),g=await h.json().catch(()=>({}));if(!h.ok)throw new Error(Xe(g,`Could not load the pull request (HTTP ${h.status}).`));return g},[r]);(0,Ne.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await p();if(h)return;o(b),i(null),r0(b.pull_request)&&(g=setTimeout(v,2e3))}catch(b){h||i(b.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[p,u]);let m=async h=>{f(!0),i(null);try{let g=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(Xe(v,`Could not open the pull request (HTTP ${g.status}).`));c(b=>b+1)}catch(g){i(g.message)}finally{f(!1)}},y=n?.pull_request||null,x=n?.publishing||null;return x&&!x.supported?null:Ne.default.createElement(Ne.default.Fragment,null,Ne.default.createElement(jxe,{pullRequest:y,publishing:x,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Ne.default.createElement($xe,{codeSession:t,sandbox:e,pullRequest:y,publishing:x,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function jxe({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=fG(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:f,errorBox:p}=i,{label:m,tone:y}=YV(e),x=r0(e),h=!!t?.available,g=XV(e),v=ZV(e);return Ne.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Ne.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ne.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Ne.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Ne.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&g&&Ne.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:x,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Ne.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:x,className:f},"Open draft PR"))),t&&!h&&Ne.default.createElement("p",{className:`text-xs ${s}`},dG(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Ne.default.createElement("div",{className:"space-y-1"},Ne.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Ne.default.createElement(fc,{tone:y},m),e.url?Ne.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Ne.default.createElement("span",{className:`truncate ${l}`},e.title)),Ne.default.createElement("p",{className:`text-xs font-mono truncate ${s}`},e.branch,e.base_branch?` \u2192 ${e.base_branch}`:"",e.files?.length?` \xB7 ${e.files.length} file${e.files.length===1?"":"s"}`:""),e.status==="draft_refused"&&Ne.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Ne.default.createElement("p",{className:p},e.error_message),v&&Ne.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Ne.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Ne.default.createElement("button",{type:"button",onClick:()=>a(e.status==="draft_refused"),disabled:n,className:`${d} disabled:opacity-50`},n&&"Opening\u2026",!n&&(e.status==="draft_refused"?"Open as a regular pull request":"Open the draft PR again")))),r&&Ne.default.createElement("div",{className:p},r))}function $xe({sandbox:e,pullRequest:t,publishing:r,mode:n,onClose:o,onPublished:a,codeSession:i}){let s=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,l=n==="update",[u,c]=(0,Ne.useState)(null),[d,f]=(0,Ne.useState)(!0),[p,m]=(0,Ne.useState)(null),[y,x]=(0,Ne.useState)(new Set),[h,g]=(0,Ne.useState)(l?t?.title||"":oG(e)),[v,b]=(0,Ne.useState)(""),[_,w]=(0,Ne.useState)(l&&t?.branch||""),[C,S]=(0,Ne.useState)(O2),[k,A]=(0,Ne.useState)(""),[O,$]=(0,Ne.useState)(null),[F,P]=(0,Ne.useState)(!1),[z,N]=(0,Ne.useState)(0);return(0,Ne.useEffect)(()=>{let T=!1;return f(!0),(async()=>{try{let E=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(O?{allowlist:O}:{})}),I=await E.json().catch(()=>({}));if(T)return;if(!E.ok)throw new Error(Xe(I,`Could not read the sandbox's changes (HTTP ${E.status}).`));c(I.preview),x(M2(I.preview.files)),w(j=>j||I.preview.suggested_branch||"")}catch(E){T||m(E.message)}finally{T||f(!1)}})(),()=>{T=!0}},[s,z,O]),Ne.default.createElement(WP,{sandbox:e,preview:u,loading:d,error:p,publishing:r,pullRequest:t,selection:y,onToggle:T=>x(E=>D2(E,T)),fields:{title:h,body:v,branch:_,message:C,allowlist:k},onField:(T,E)=>({title:g,body:b,branch:w,message:S,allowlist:A})[T](E),allowlistApplied:!!O,onApplyAllowlist:()=>{m(null),$(RV(k))},mode:n,submitting:F,onSubmit:async()=>{P(!0),m(null);try{let T=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...I2({files:u?.files,selection:y,title:h,body:v,branch:_,message:C,allowlist:O,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),E=await T.json().catch(()=>({}));if(!T.ok)throw P2(E.code)&&N(I=>I+1),new Error(Xe(E,`Could not publish (HTTP ${T.status}).`));a(E.pull_request)}catch(T){m(T.message)}finally{P(!1)}},onCancel:o})}function WP({sandbox:e,preview:t,loading:r,error:n,publishing:o,pullRequest:a,selection:i,onToggle:s,fields:l,onField:u,allowlistApplied:c,onApplyAllowlist:d,mode:f,submitting:p,onSubmit:m,onCancel:y,patchHref:x}){let h=fG(),{muted:g,strong:v,border:b,link:_,secondaryButton:w,primaryButton:C,input:S,errorBox:k,darkMode:A}=h,O=t?.files||[],$=(0,Ne.useMemo)(()=>cg(O,i),[O,i]),F=!!o?.available,P=f==="patch"||!F,z=f==="update"&&!P,N=t&&!P?rG({files:O,selection:i,title:l.title,branch:l.branch,message:l.message,update:z}):null,D=z?JV(a,O,i):[],T="Open draft PR";P?T="Download patch":z&&(T="Update draft PR");let E=`Publishes the files you tick from ${e.repository}@${e.repository_ref} through the GitHub API, as one commit on a new branch.`;return P?E=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:z&&(E="Publishes the files you tick as one commit on the pull request's branch, which then holds the checkout commit with exactly these files changed."),Ne.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4",role:"dialog","aria-modal":"true","aria-label":T},Ne.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${b} ${A?"bg-gray-900":"bg-white"}`},Ne.default.createElement("div",{className:"flex items-start justify-between gap-3"},Ne.default.createElement("div",null,Ne.default.createElement("p",{className:`text-lg font-medium ${v}`},T),Ne.default.createElement("p",{className:`text-xs ${g}`},E," Nothing under .github/ is ever published.")),Ne.default.createElement("button",{type:"button",onClick:y,className:w},"Close")),r&&Ne.default.createElement("p",{className:`text-sm ${g}`},"Reading the sandbox's changes\u2026"),n&&Ne.default.createElement("div",{className:k},n),t&&Ne.default.createElement(Ne.default.Fragment,null,d&&(QV(O)||c)&&Ne.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Ne.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${g}`},Ne.default.createElement("span",null,"Only read paths matching"),Ne.default.createElement("input",{type:"text",value:l.allowlist,onChange:I=>u("allowlist",I.target.value),disabled:p||r,placeholder:"app/**, lib/*.rb",className:`${S} font-mono`})),Ne.default.createElement("button",{type:"button",onClick:d,disabled:p||r,className:`${w} disabled:opacity-50`},"Read again")),Ne.default.createElement("div",{className:"space-y-1"},Ne.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"Files \xB7 ",eG(O,i)),O.length===0&&Ne.default.createElement("p",{className:`text-sm ${g}`},"The sandbox has no changes."),Ne.default.createElement("ul",{className:"space-y-1"},O.map(I=>Ne.default.createElement("li",{key:I.path,className:"flex items-center gap-2 text-sm"},Ne.default.createElement("input",{type:"checkbox","aria-label":`Publish ${I.path}`,checked:!I.refusal&&i.has(I.path),disabled:!!I.refusal||p,onChange:()=>s(I.path)}),Ne.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},tG(I)),Ne.default.createElement("span",{className:`font-mono truncate ${I.refusal?g:v}`},I.path),I.size!=null&&I.status!=="deleted"&&Ne.default.createElement("span",{className:`shrink-0 text-xs ${g}`},UP(I.size)),I.refusal&&Ne.default.createElement("span",{className:`shrink-0 text-xs ${A?"text-amber-300":"text-amber-700"}`},I.refusal_message))))),D.length>0&&Ne.default.createElement("p",{className:`text-xs ${A?"text-amber-300":"text-amber-700"}`},"Not ticked, so returned to how they are in the checkout commit: ",Ne.default.createElement("span",{className:"font-mono"},D.join(", "))),$.length>0&&Ne.default.createElement("div",{className:"space-y-2"},Ne.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"What will be published"),$.map(I=>Ne.default.createElement(Lxe,{key:I.path,file:I,classes:h}))),!P&&Ne.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Ne.default.createElement("span",null,"Branch"),Ne.default.createElement("input",{type:"text",value:l.branch,onChange:I=>u("branch",I.target.value),disabled:z||p,maxLength:200,className:`${S} font-mono`})),z?Ne.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Ne.default.createElement("span",null,"Commit message"),Ne.default.createElement("input",{type:"text",value:l.message,onChange:I=>u("message",I.target.value),disabled:p,className:S})):Ne.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Ne.default.createElement("span",null,"Title"),Ne.default.createElement("input",{type:"text",value:l.title,onChange:I=>u("title",I.target.value),disabled:p,maxLength:256,className:S})),!P&&!z&&Ne.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Ne.default.createElement("span",null,"Description"),Ne.default.createElement("textarea",{value:l.body,onChange:I=>u("body",I.target.value),disabled:p,rows:4,className:S})),Ne.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Ne.default.createElement("p",{className:`text-xs ${g}`},!F&&dG(o?.refusal||"Publishing is not available for this sandbox"),F&&N),Ne.default.createElement("div",{className:"flex items-center gap-3"},$.length>0&&Ne.default.createElement("a",{href:ct((x||((I,j)=>nG(e.session_id,I,j)))($.map(I=>I.path),z?l.message:l.title)),className:`text-sm ${_}`},"Download patch"),Ne.default.createElement("button",{type:"button",onClick:y,className:w},"Cancel"),!P&&Ne.default.createElement("button",{type:"button",onClick:m,disabled:!!N||p,className:C},p?"Publishing\u2026":T))))))}function Lxe({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Ne.useMemo)(()=>Rv(e.diff),[e.diff]);return Ne.default.createElement("div",{className:`rounded border ${n}`},Ne.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Ne.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",UP(e.size),": published as it is in the sandbox."):Ne.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=cG[s.kind]||cG.context;return Ne.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var zxe=(e,t)=>e?.kind===t?.kind&&(t?.kind==="instruction"?e?.quote===t?.quote:e?.fault===t?.fault)&&[...e?.scenario_keys||[]].sort().join("\0")===[...t?.scenario_keys||[]].sort().join("\0")&&(!(t?.models||[]).length||[...e?.models||[]].sort().join("\0")===[...t.models].sort().join("\0")),j2=new Map,Bxe=e=>(j2.has(e)||j2.set(e,(async()=>{let t=await fetch(e),r=await t.json().catch(()=>({}));if(!t.ok)throw new Error(r.error||"Could not load the fix workspace.");return r})().finally(()=>j2.delete(e))),j2.get(e));function HP({item:e,evaluation:t,run:r}){let[n,o]=(0,dt.useState)(!1),[a,i]=(0,dt.useState)(null),[s,l]=(0,dt.useState)(""),[u,c]=(0,dt.useState)(null),[d,f]=(0,dt.useState)(!1),[p,m]=(0,dt.useState)(null),y=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,x=(0,dt.useCallback)(async()=>{let S=await Bxe(y);return i(S),l(k=>k||S.sandboxes?.find(A=>A.status==="ready")?.session_id||""),S},[y]);if((0,dt.useEffect)(()=>{if(!t?.id||!r?.id)return;let S=!1,k,A=async()=>{try{await x()}catch(O){S||c(O.message)}!S&&n&&(k=setTimeout(A,2500))};return A(),()=>{S=!0,clearTimeout(k)}},[x,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(S=>zxe(S.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let g=h.find(S=>S.id===p)||h[0],v=a?.sandboxes?.find(S=>S.session_id===(g?.sandbox_session_id||s)),b=g&&(["queued","running"].includes(g.status)||g.status==="succeeded"&&g.diff&&!g.verification?.error&&!["complete","failed"].includes(g.verification?.status)),_=a?.auth_mode!=="sandbox_login"||v?.claude_login?.credential_mode,w=async(S=null)=>{if(!(!v||d||b)){f(!0),c(null);try{let k=await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation_run_id:r.id,fix_item:{kind:e.kind,fault:e.fault,quote:e.quote,scenario_keys:e.scenario_keys,models:e.models},previous_code_session_id:S?.id})}),A=await k.json();if(!k.ok)throw new Error(A.error||"Could not start this fix.");m(A.code_session.id),await x()}catch(k){c(k.message)}finally{f(!1)}}},C=g?g.verification?.status==="complete"?3:g.status==="succeeded"?2:1:0;return dt.default.createElement(dt.default.Fragment,null,dt.default.createElement(de,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},g?"Review implementation":"Implement with Claude Code"),g?.verification?.status==="complete"&&dt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},g.verification.counts.fixed||0," fixed \xB7 ",g.verification.counts.regressed||0," regressed"),n&&dt.default.createElement(MP,{title:"Implement evaluation fix",onClose:()=>o(!1)},dt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((S,k)=>dt.default.createElement(Te,{key:S,tone:k===C?"accent":kS.status==="ready")&&dt.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",dt.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...PP,marginTop:8},value:s,onChange:S=>l(S.target.value)},dt.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(S=>S.status==="ready").map(S=>dt.default.createElement("option",{key:S.session_id,value:S.session_id},S.repository," \xB7 ",S.repository_ref," \xB7 ",S.session_id.slice(0,8))))),a&&!v&&dt.default.createElement("div",{style:Xv},dt.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),dt.default.createElement("a",{href:ct(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),dt.default.createElement(de,{size:"sm",onClick:()=>x().catch(S=>c(S.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!b&&dt.default.createElement(Rd,{sandbox:v,onConnected:x,onChange:x}),v&&dt.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",dt.default.createElement("strong",null,v.claude_login?.credential_mode==="sandbox_login"?"your Claude subscription":a?.auth_mode==="local_login"?"this machine\u2019s Claude login":_?"the account\u2019s Anthropic API key":"your sandbox login after you connect"),". Verification uses the agent\u2019s own provider credentials."),!g&&dt.default.createElement(de,{variant:"primary",disabled:!v||!_||d||!!a?.refusal||!a?.supported,onClick:()=>w()},d?"Starting\u2026":"Implement this fix"),g&&dt.default.createElement(dt.default.Fragment,null,dt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},dt.default.createElement(Te,{tone:g.status==="failed"?"error":"info"},"Claude Code \xB7 ",g.status),dt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",g.id)),["queued","running"].includes(g.status)&&dt.default.createElement(de,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions/${g.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await x()}catch(S){c(S.message)}}},"Cancel session"),g.result&&dt.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},g.result),g.error_message&&dt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},g.error_message),g.diff&&dt.default.createElement("details",null,dt.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),dt.default.createElement("pre",{style:{...Xv,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),dt.default.createElement(n0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>w(g)}),g.verification?.status==="complete"&&v&&dt.default.createElement(a0,{sandbox:v,codeSession:g})),u&&dt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var KP=6,Fxe=600,dg=12,fg=e=>String(e||"").replace(/_/g," "),$i=e=>String(e??"").trim(),i0=e=>[...new Set(e.filter(Boolean))],qP=e=>$i(e).split(` +`);o.length>t&&(o=o.slice(0,t));let a=o.lengthe?.is_error===!0||e?.subtype!=null&&e.subtype!=="success",Vxe=e=>{if(!YV(e))return"Done";if(jV[e.subtype])return jV[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},Gxe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?uf(e.tools.length,"tool"):null;return{kind:"system",text:["Session started",...[e.model&&`model ${e.model}`,e.permissionMode&&`${e.permissionMode} mode`,t].filter(Boolean)].join(" \xB7 ")}}if(e.subtype==="compact_boundary")return{kind:"system",text:"Conversation compacted"};if(e.subtype==="api_retry"){let t=e.attempt??"?",r=e.max_retries!=null?`${t}/${e.max_retries}`:String(t),n=[e.error_status,e.error].filter(o=>o!=null&&o!=="").join(" ");return{kind:"system",text:[`API retry ${r}`,n].filter(Boolean).join(" \xB7 ")}}return{kind:"system",text:e.subtype?`System: ${$_(e.subtype).toLowerCase()}`:"System event"}},Yxe=/^(hook_|thinking_tokens$)/,Xxe=e=>Yxe.test(String(e?.subtype||"")),Zxe=e=>{let t=e?.rate_limit_info||{},r=String(t.status||"");if(r===""||r==="allowed")return[];let n=Number(t.resetsAt),o=Number.isFinite(n)&&n>0?`resets ${new Date(n*1e3).toLocaleTimeString()}`:null;return[{kind:"system",text:[`Rate limit: ${$_(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},D_=(e,t)=>({kind:"unknown",label:String(e||"event"),text:s0(xg(t),300)}),$V=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!bg(e))return[];switch(e.type){case"text":return String(e.text??"").trim()?[{kind:t==="assistant"?"text":"user_text",text:e.text}]:[];case"thinking":return String(e.thinking??"").trim()?[{kind:"thinking",text:e.thinking}]:[];case"redacted_thinking":return[{kind:"thinking",text:"(redacted)"}];case"tool_use":case"server_tool_use":{let n=String(e.name||"tool");return e.id&&(r.toolNames[e.id]=n),[{kind:"tool_use",name:n,summary:Hxe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=qxe(Kxe(e.content));return[{kind:"tool_result",name:r.toolNames[e.tool_use_id]||null,text:n,truncated:o,isError:e.is_error===!0}]}default:return[D_(`${t} ${e.type||"block"}`,e)]}},Jxe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?$V(r,e.type,t):Array.isArray(r)?r.flatMap(n=>$V(n,e.type,t)):[D_(e.type,e)]},Qxe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!bg(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:xg(e)}];let r=!!e.parent_tool_use_id,n=o=>r?o.map(a=>({...a,nested:!0})):o;switch(e.type){case"thread.started":return[{kind:"system",text:"Codex session started"}];case"turn.started":case"turn.completed":return[];case"item.started":case"item.updated":case"item.completed":{let o=e.item||{};return e.type!=="item.completed"?[]:o.type==="agent_message"?[{kind:"text",text:String(o.text||"")}]:o.type==="reasoning"?[{kind:"thinking",text:String(o.text||"")}]:o.type==="command_execution"?[{kind:"tool_use",name:"Command",summary:String(o.command||"")},{kind:"tool_result",text:String(o.aggregated_output||""),isError:o.status==="failed"||o.exit_code!=null&&o.exit_code!==0}]:[D_(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),Xxe(e)?[]:[Gxe(e)];case"rate_limit_event":return Zxe(e);case"assistant":case"user":return n(Jxe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=LV(Vxe(e),e);return[{kind:"result",tone:YV(e)?"error":"success",text:o?`${a} \xB7 ${uf(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[D_(e.type,e)]}},XV=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>Qxe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},ZV=/^diff (--git|--cc|--combined) /,Rxe="\u2026 diff truncated",c0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` +`).map(n=>{if(ZV.test(n))return t=!0,{text:n,kind:"meta"};if(n===Rxe)return{text:n,kind:"meta"};if(n.startsWith("@@"))return t=!1,r=Math.max(1,n.match(/^@+/)[0].length-1),{text:n,kind:"hunk"};if(t)return{text:n,kind:"meta"};let o=n.slice(0,r);return o.includes("+")?{text:n,kind:"add"}:o.includes("-")?{text:n,kind:"del"}:{text:n,kind:"context"}})},JV=e=>{let t=c0(e),r=t.filter(a=>a.kind==="meta"&&ZV.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${uf(r,"file")} changed \xB7 +${n} \u2212${o}`},d0="default",f0="other",QV=["sonnet","opus","haiku"],ebe=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,XP="actionagent.claudeCode.modelChoice",RV=(e="claude_code")=>[{value:d0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:QV.map(t=>({value:t,label:t})),{value:f0,label:"Other\u2026"}],ZP=e=>e===d0||e===f0||QV.includes(e),JP=(e,t="")=>{if(!ZP(e)||e===d0)return{model:null};if(e!==f0)return{model:e};let r=String(t??"").trim();return r?ebe.test(r)?{model:r}:{error:`"${s0(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},eG=(e,t,r,n="claude_code")=>{let{model:o}=JP(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},B_=e=>{let t={choice:d0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!bg(r)||!ZP(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},tG=(e,t="")=>JSON.stringify({choice:ZP(e)?e:d0,custom:String(t??"").slice(0,100)}),QP=e=>e?.model||"default model",qP="api_key",l0="local_login",rG="claude /login",nG="sk-ant-api03-\u2026",oG="https://platform.claude.com",aG="https://code.claude.com/docs/en/legal-and-compliance.md",F_=e=>{let t=bg(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===l0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?l0:qP,connected:e?.claude_code_connected===!0,loggedIn:r&&t.logged_in===!0,authMethod:r&&typeof t.auth_method=="string"&&t.auth_method?t.auth_method:null}},iG=(e,t)=>{if(!e)return{view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,needsReplacing:!1,loginHint:null};if(e.mode==="sandbox_login")return{view:"sandbox_login",status:"Your subscription, inside each sandbox",tone:"neutral",keyForm:!0,needsReplacing:t?.needs_replacing===!0,loginHint:null};if(e.mode===l0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:l0,status:e.loggedIn?`Using this machine's Claude Code login \xB7 logged in${r}`:"Using this machine's Claude Code login \xB7 not logged in",tone:e.loggedIn?"success":"error",keyForm:!1,needsReplacing:!1,loginHint:e.loggedIn?null:rG}}return t?t.configured&&t.needs_replacing===!0?{view:qP,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:qP,status:t.configured?`Connected (${t.hint})`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,needsReplacing:!1,loginHint:null}:{view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,needsReplacing:!1,loginHint:null}},sG=e=>e?.connected===!0?null:e?.mode==="sandbox_login"?{text:"Sign in with your Claude subscription in this sandbox, or connect an Anthropic API key.",loginHint:null,after:null}:e?.mode===l0?{text:"Claude Code is not logged in on this machine. Run",loginHint:rG,after:"as the user the dashboard runs as."}:{text:"Connect an Anthropic API key under Claude Code below to run sessions in this checkout.",loginHint:null,after:null};var U_="Update from the sandbox",tbe=new Set(["queued","publishing"]);function p0(e){return!!(e&&tbe.has(e.status))}function uG(e){if(!e)return{label:"None",tone:"neutral"};switch(e.status){case"queued":return{label:"Queued",tone:"progress"};case"publishing":return{label:"Publishing",tone:"progress"};case"draft_refused":return{label:"Branch published",tone:"neutral"};case"failed":return e.number?{label:`${lG(e)} \xB7 update failed`,tone:"error"}:e.head_commit?{label:"Branch published \xB7 pull request not opened",tone:"error"}:{label:"Failed",tone:"error"};default:return{label:lG(e),tone:rbe(e)}}}function lG(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function rbe(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function cG(e){return!e?.head_commit||!e.number||p0(e)?!1:!["closed","merged"].includes(e.state)}function dG(e){return!!(e?.head_commit&&!e.number&&!p0(e))}function fG(e,t,r){let n=new Set(wg(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function pG(e){return(e||[]).some(t=>t.refusal==="not_read")}function mG(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function W_(e){return e==="changed_since_preview"}function H_(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function K_(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function wg(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function gG(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=wg(r,t).length,i=n.length===1?"file":"files",s=[`${a} of ${n.length} ${i} selected`];return o>0&&s.push(`${o} cannot be published`),s.join(" \xB7 ")}function hG(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var nbe=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function obe(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||nbe.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function yG({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return wg(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?obe(n):"Add a title."}function q_({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=wg(e,t).map(c=>({path:c.path,digest:c.digest})),u=s?{files:l,message:(a||"").trim(),update:!0}:{files:l,title:(r||"").trim(),body:n||"",branch:(o||"").trim()};return i?{...u,allowlist:i}:u}function vG(e,t,r){let n=new URLSearchParams;(t||[]).forEach(a=>n.append("paths[]",a)),r&&r.trim()&&n.set("title",r.trim());let o=n.toString();return`/api/sandboxes/${encodeURIComponent(e)}/pull_request/patch${o?`?${o}`:""}`}function RP(e){let t=Number(e);return!Number.isFinite(t)||t<0?"":t<1024?`${t} ${t===1?"byte":"bytes"}`:t<1024*1024?`${Math.round(t/1024)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}function xG(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var Ae=V(Y());var _r=V(Y());function m0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,_r.useState)(null),[i,s]=(0,_r.useState)(!1),l=e?.verification;if(!e?.evaluation_run_id)return null;let u=l?.rows||[],c=l?.status==="complete",d=async()=>{s(!0),a(null);try{let p=await fetch(`/api/evaluations/${t}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_id:r,models:e.fix_item?.models})}),m=await p.json();if(!p.ok)throw new Error(m.error||"Could not run the full suite.");a({run:m.run.id})}catch(p){a({error:p.message})}finally{s(!1)}},f=p=>p==null?"\u2014":Number(p).toFixed(2);return _r.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},_r.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},_r.default.createElement("strong",{style:{fontSize:13}},"Before & after"),_r.default.createElement(Ee,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&_r.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),_r.default.createElement("div",{style:{overflowX:"auto"}},_r.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},_r.default.createElement("thead",null,_r.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(p=>_r.default.createElement("th",{key:p,style:{textAlign:"left",padding:"8px 10px",borderBottom:"1px solid var(--color-border)",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},p)))),_r.default.createElement("tbody",null,u.map(p=>_r.default.createElement("tr",{key:`${p.scenario_key}/${p.model}`},_r.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},p.scenario_key,_r.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},p.model)),_r.default.createElement("td",{style:{padding:10}},p.before," \xB7 ",f(p.before_score)),_r.default.createElement("td",{style:{padding:10,color:p.change==="fixed"?"var(--color-success-text)":["regressed","still_failing"].includes(p.change)?"var(--color-error-text)":"var(--color-text-secondary)"}},p.after||"pending",p.after_score!=null&&` \xB7 ${f(p.after_score)}`,_r.default.createElement("div",{style:{fontSize:10,marginTop:4}},p.change.replaceAll("_"," "))),_r.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},p.score_change==null?"\u2014":`${p.score_change>0?"+":""}${f(p.score_change)}`),_r.default.createElement("td",{style:{padding:10}},p.fault||(p.after?"none":p.before_fault)||"\u2014")))))),_r.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},_r.default.createElement("a",{href:ct(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&_r.default.createElement("a",{href:ct(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&_r.default.createElement(se,{size:"sm",onClick:d,disabled:i},i?"Starting\u2026":"Re-run the full suite"),n&&["succeeded","failed","cancelled"].includes(e.status)&&(c||l?.error||e.status!=="succeeded"||!e.diff)&&_r.default.createElement(se,{size:"sm",onClick:n},"Try again")),o?.run&&_r.default.createElement("a",{style:{fontSize:12},href:ct(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&_r.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var abe=2e4,wG=()=>{try{return B_(window.localStorage.getItem(XP))}catch{return B_(null)}},ibe=(e,t)=>{try{window.localStorage.setItem(XP,tG(e,t))}catch{}},_G=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),SG={success:{dark:"bg-green-900/30 text-green-300",light:"bg-green-50 text-green-700"},error:{dark:"bg-red-900/30 text-red-300",light:"bg-red-50 text-red-700"},progress:{dark:"bg-amber-900/30 text-amber-300",light:"bg-amber-50 text-amber-700"},neutral:{dark:"bg-gray-700 text-gray-300",light:"bg-gray-100 text-gray-600"}};function xc({tone:e="neutral",children:t}){let{darkMode:r}=lt(),n=SG[e]||SG.neutral;return Ae.default.createElement("span",{className:`inline-flex items-center px-2 py-0.5 rounded text-xs font-medium ${r?n.dark:n.light}`},e==="progress"&&Ae.default.createElement("span",{className:"mr-1 h-1.5 w-1.5 rounded-full bg-current animate-pulse"}),t)}function g0({sandbox:e,claudeCode:t,codex:r,onRecheckConnection:n,readOnly:o=!1,focusSessionId:a=null,title:i="Code sessions"}){let{darkMode:s}=lt(),l=`/api/sandboxes/${encodeURIComponent(e.session_id)}/code_sessions`,[u,c]=(0,Ae.useState)(null),[d,f]=(0,Ae.useState)(null),[p,m]=(0,Ae.useState)(null),[y,b]=(0,Ae.useState)(null),[h,g]=(0,Ae.useState)(0),[v,x]=(0,Ae.useState)(0),[S,w]=(0,Ae.useState)(""),[A,k]=(0,Ae.useState)("claude_code"),_=A==="codex"?"Codex":"Claude Code",[C,E]=(0,Ae.useState)(wG),[j,F]=(0,Ae.useState)(!1),[D,z]=(0,Ae.useState)(!1),[N,O]=(0,Ae.useState)(null),$=(0,Ae.useRef)(null),T=(0,Ae.useRef)(!0),I=(0,Ae.useCallback)(async()=>{let U=await fetch(l),oe=await U.json().catch(()=>({}));if(!U.ok)throw new Error(Je(oe,`Could not load code sessions (HTTP ${U.status}).`));return oe.code_sessions||[]},[l]);(0,Ae.useEffect)(()=>{let U=!1;return c(null),f(null),I().then(oe=>{if(U)return;c(oe);let ve=oe.find(Ze=>Ze.id===a)||oe.find(z_)||oe[0];f(Ze=>Ze??ve?.id??null)}).catch(oe=>{U||(c([]),O(oe.message))}),()=>{U=!0}},[I]),(0,Ae.useEffect)(()=>{a!=null&&f(a)},[a]),(0,Ae.useEffect)(()=>{if(d==null)return;let U=!1,oe=null,ve=[],Ze=0;m(null),b(null),T.current=!0;let Ht=async()=>{let Mt=!0,fe=null;try{let Xe=await fetch(`${l}/${d}?after=${ve.length}`);fe=Xe.status;let gr=await Xe.json().catch(()=>({}));if(U)return;if(!Xe.ok)throw new Error(Je(gr,`Could not load the session (HTTP ${Xe.status}).`));let rr=gr.code_session;ve=GV(ve,rr),Ze=0,b(null),m({...rr,events:ve}),c(qe=>vc(qe||[],qV(rr),"id"));let nr=rr.evaluation_run_id&&rr.status==="succeeded"&&rr.diff&&!rr.verification?.error&&!["complete","failed"].includes(rr.verification?.status);GP(rr)&&!nr&&(Mt=!1)}catch(Xe){if(U)return;Ze+=1,b(Xe.message),j_(fe,Ze)&&(Mt=!1)}Mt&&!U&&(oe=setTimeout(Ht,1500))};return Ht(),()=>{U=!0,clearTimeout(oe)}},[l,d,h]);let P=(u||[]).find(z_)||null,H=P&&P.id!==d?P.id:null,Q=A==="codex"?r?.supported?r?.connected?null:{text:"Connect an OpenAI API key in the Codex integration below."}:{text:"This sandbox backend does not support Codex."}:sG(t),K=Q?"not_connected":P?"busy":null;(0,Ae.useEffect)(()=>{if(H==null)return;let U=!1,oe=setTimeout(async()=>{try{let ve=await I();U||c(ve)}catch{}U||x(ve=>ve+1)},1500*2);return()=>{U=!0,clearTimeout(oe)}},[H,v,I]);let ue=(0,Ae.useMemo)(()=>XV(p?.events),[p?.events]);(0,Ae.useLayoutEffect)(()=>{let U=$.current;U&&T.current&&(U.scrollTop=U.scrollHeight)},[ue.length]);let pe=U=>{let oe=U.currentTarget;T.current=oe.scrollHeight-oe.scrollTop-oe.clientHeight<40},re=JP(C.choice,C.custom).error||null,_e=U=>{E(oe=>{let ve={...oe,...U};return A==="claude_code"&&ibe(ve.choice,ve.custom),ve})},de=async()=>{let U=S.trim();if(!(!U||K||j||re)){F(!0),O(null);try{let oe=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(eG(U,C.choice,C.custom,A))}),ve=await oe.json().catch(()=>({}));if(!oe.ok)throw ve.code_session&&(c(Ze=>vc(Ze||[],ve.code_session,"id")),f(ve.code_session.id)),new Error(Je(ve,`Could not start ${_} (HTTP ${oe.status}).`));c(Ze=>vc(Ze||[],ve.code_session,"id")),f(ve.code_session.id),w("")}catch(oe){O(oe.message)}finally{F(!1)}}},le=async U=>{z(!0),O(null);try{let oe=await fetch(`${l}/${U.id}/cancel`,{method:"POST"}),ve=await oe.json().catch(()=>({}));if(!oe.ok)throw new Error(Je(ve,`Could not cancel the session (HTTP ${oe.status}).`));c(Ze=>vc(Ze||[],ve.code_session,"id")),m(Ze=>Ze&&Ze.id===ve.code_session.id?{...Ze,...ve.code_session}:Ze)}catch(oe){O(oe.message)}finally{z(!1)}},Z=s?"text-gray-400":"text-gray-500",ee=s?"text-white":"text-gray-900",L=s?"border-gray-700":"border-gray-200",B=`px-3 py-1 text-sm rounded ${s?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,q=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,M=`p-2 rounded text-xs border ${s?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`,ne=p&&p.id===d?p:(u||[]).find(U=>U.id===d)||null;return Ae.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${L}`},!o&&t?.mode==="sandbox_login"&&Ae.default.createElement(lf,{sandbox:e,onChange:n}),Ae.default.createElement("div",{className:"flex items-center justify-between"},Ae.default.createElement("p",{className:`text-sm font-medium ${ee}`},i),Ae.default.createElement("p",{className:`text-xs ${Z}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Ae.default.createElement("div",{className:M},N),!o&&Ae.default.createElement("div",{className:"space-y-2"},Ae.default.createElement("label",{className:`flex items-center gap-2 text-xs ${Z}`},"Agent",Ae.default.createElement("select",{"aria-label":"Coding agent",value:A,onChange:U=>{k(U.target.value),E(U.target.value==="claude_code"?wG():B_(null))},disabled:j,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},Ae.default.createElement("option",{value:"claude_code"},"Claude Code"),Ae.default.createElement("option",{value:"codex",disabled:!r?.supported},"Codex",r?.supported?"":" (backend unavailable)"))),Ae.default.createElement("textarea",{value:S,onChange:U=>w(U.target.value),onKeyDown:U=>{U.key==="Enter"&&(U.metaKey||U.ctrlKey)&&de()},rows:3,maxLength:abe,disabled:K==="not_connected"||j,placeholder:`What should ${_} do in this checkout?`,className:`w-full px-3 py-2 border rounded-lg text-sm disabled:opacity-60 ${s?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),Ae.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ae.default.createElement("label",{htmlFor:`code-session-model-${e.session_id}`,className:`text-xs ${Z}`},"Model"),Ae.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:C.choice,onChange:U=>_e({choice:U.target.value}),disabled:j,className:`px-2 py-1 border rounded text-xs ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},RV(A).map(U=>Ae.default.createElement("option",{key:U.value,value:U.value},U.label))),C.choice===f0&&Ae.default.createElement("input",{type:"text",value:C.custom,onChange:U=>_e({custom:U.target.value}),disabled:j,maxLength:100,placeholder:A==="codex"?"Model id":"claude-sonnet-4-5","aria-label":"Model id","aria-invalid":!!re,className:`flex-1 min-w-[10rem] px-2 py-1 border rounded text-xs font-mono ${s?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`})),re&&C.custom.trim()&&Ae.default.createElement("p",{className:`text-xs ${s?"text-red-300":"text-red-700"}`},re),Ae.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ae.default.createElement("p",{className:`text-xs ${Z}`},K==="not_connected"&&Ae.default.createElement(Ae.default.Fragment,null,Q.text,Q.loginHint&&Ae.default.createElement(Ae.default.Fragment,null," ",Ae.default.createElement("code",{className:"font-mono"},Q.loginHint)," ",Q.after)," ",n&&Ae.default.createElement("button",{type:"button",onClick:n,className:q},"Check again")),K==="busy"&&Ae.default.createElement(Ae.default.Fragment,null,"A session is ",P.status," in this checkout; wait for it to finish or cancel it."," ",P.id!==d&&Ae.default.createElement("button",{type:"button",onClick:()=>f(P.id),className:q},"Show it"))),Ae.default.createElement("button",{type:"button",onClick:de,disabled:!!K||j||!S.trim()||!!re,className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},j?"Starting\u2026":`Run ${_}`)),N&&Ae.default.createElement("div",{className:M},N)),u&&u.length>0&&Ae.default.createElement("div",{className:"space-y-1"},Ae.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${Z}`},"Sessions"),Ae.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(U=>{let{label:oe,tone:ve}=cf(U.status),Ze=U.id===d;return Ae.default.createElement("button",{key:U.id,type:"button",title:WV(U),onClick:()=>Ze?g(Ht=>Ht+1):f(U.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${Ze?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Ae.default.createElement(xc,{tone:ve},oe),Ae.default.createElement("span",{className:`text-xs ${Z}`},U.runner==="codex"?"Codex":"Claude Code"),Ae.default.createElement("span",{className:`flex-1 truncate ${ee}`},HV(U.prompt)),Ae.default.createElement("span",{className:`shrink-0 text-xs font-mono ${Z}`},QP(U)),Ae.default.createElement("span",{className:`shrink-0 text-xs ${Z}`},_o(U.created_at)))}))),u===null&&Ae.default.createElement("p",{className:`text-xs ${Z}`},"Loading sessions\u2026"),ne&&Ae.default.createElement(sbe,{session:ne,rows:ue,loaded:!!(p&&p.id===ne.id),detailError:y,cancelling:D,onCancel:()=>le(ne),onReload:()=>g(U=>U+1),transcriptRef:$,onTranscriptScroll:pe,classes:{muted:Z,strong:ee,border:L,secondaryButton:B,linkButton:q,errorBox:M}}))}function sbe({session:e,rows:t,loaded:r,detailError:n,cancelling:o,onCancel:a,onReload:i,transcriptRef:s,onTranscriptScroll:l,classes:u}){let{darkMode:c}=lt(),{muted:d,strong:f,border:p,secondaryButton:m,linkButton:y,errorBox:b}=u,{label:h,tone:g}=cf(e.status),v=z_(e),x=u0(e),S=UV(e),w=Number(e.dropped_events_count)||0;return Ae.default.createElement("div",{className:`pt-3 border-t space-y-2 ${p}`},Ae.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ae.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Ae.default.createElement(xc,{tone:g},h),Ae.default.createElement("span",{className:`text-xs truncate ${d}`},[YP(e),QP(e)].filter(Boolean).join(" \xB7 "))),v&&Ae.default.createElement("button",{type:"button",onClick:a,disabled:o,className:`${m} shrink-0 disabled:opacity-50`},o?"Cancelling\u2026":"Cancel")),Ae.default.createElement("p",{className:`text-xs whitespace-pre-wrap break-words max-h-24 overflow-y-auto ${d}`},e.prompt),n&&Ae.default.createElement("div",{className:b},n),Ae.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:_G(c)},!r&&Ae.default.createElement("p",{className:`text-xs ${d}`},"Loading transcript\u2026"),r&&t.length===0&&Ae.default.createElement("p",{className:`text-xs ${d}`},e.status==="queued"?"Waiting for the sandbox to start the agent\u2026":v?"The agent is starting\u2026":S?"Cancelled before the agent started.":"No transcript was recorded."),t.map(A=>Ae.default.createElement(lbe,{key:A.key,row:A,darkMode:c,muted:d,strong:f})),w>0&&Ae.default.createElement("p",{className:`text-xs italic ${d}`},w," later event",w===1?" was":"s were"," not kept: a transcript keeps its first 1,000.")),e.error_message&&Ae.default.createElement("pre",{className:`${b} whitespace-pre-wrap break-words font-mono max-h-48 overflow-y-auto`},e.error_message),e.evaluation_run_id&&Ae.default.createElement(m0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),x&&r&&Ae.default.createElement(ube,{diff:e.diff,pending:VP(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function lbe({row:e,darkMode:t,muted:r,strong:n}){let o=e.nested?`ml-4 pl-2 border-l ${t?"border-gray-700":"border-gray-200"}`:"";switch(e.kind){case"text":return Ae.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${n} ${o}`},e.text);case"user_text":return Ae.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${r} ${o}`},e.text);case"thinking":return Ae.default.createElement("p",{className:`text-xs italic whitespace-pre-wrap break-words line-clamp-3 ${r} ${o}`},e.text);case"tool_use":return Ae.default.createElement("p",{className:`text-xs font-mono break-words ${o}`},Ae.default.createElement("span",{className:`font-semibold ${t?"text-blue-300":"text-blue-700"}`},e.name),e.summary&&Ae.default.createElement("span",{className:r}," ",e.summary));case"tool_result":return Ae.default.createElement("pre",{className:`ml-4 text-xs font-mono whitespace-pre-wrap break-words ${e.isError?t?"text-red-400":"text-red-600":r} ${o}`,title:e.name?`${e.name} result`:void 0},e.text||"(no output)");case"result":return Ae.default.createElement("p",{className:`text-sm font-medium ${e.tone==="error"?t?"text-red-400":"text-red-600":t?"text-green-400":"text-green-600"}`},e.text);case"system":return Ae.default.createElement("p",{className:`text-xs ${r}`},e.text);case"raw":return Ae.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},e.text);default:return Ae.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},"[",e.label,"] ",e.text)}}var kG={add:{dark:"text-green-400",light:"text-green-700"},del:{dark:"text-red-400",light:"text-red-700"},hunk:{dark:"text-blue-300",light:"text-blue-700"},meta:{dark:"text-gray-400 font-semibold",light:"text-gray-500 font-semibold"},context:{dark:"text-gray-300",light:"text-gray-700"}};function ube({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ae.useMemo)(()=>c0(e),[e]);return e==null?t?Ae.default.createElement("p",{className:`text-xs ${n}`},"The diff is recorded once the agent has stopped."," ",Ae.default.createElement("button",{type:"button",onClick:r,className:o},"Refresh")):Ae.default.createElement("p",{className:`text-xs ${n}`},"No diff was recorded."):i.length===0?Ae.default.createElement("p",{className:`text-xs ${n}`},"No changes in the checkout."):Ae.default.createElement("div",{className:"space-y-1"},Ae.default.createElement("p",{className:`text-xs ${n}`},"Diff \xB7 ",JV(e)),Ae.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:_G(a)},i.map((s,l)=>{let u=kG[s.kind]||kG.context;return Ae.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var CG={add:{dark:"text-green-400",light:"text-green-700"},del:{dark:"text-red-400",light:"text-red-700"},hunk:{dark:"text-blue-300",light:"text-blue-700"},meta:{dark:"text-gray-400 font-semibold",light:"text-gray-500 font-semibold"},context:{dark:"text-gray-300",light:"text-gray-700"}};function AG(e){return/[.!?]$/.test(e)?e:`${e}.`}function EG(){let{darkMode:e}=lt();return{darkMode:e,muted:e?"text-gray-400":"text-gray-500",strong:e?"text-white":"text-gray-900",border:e?"border-gray-700":"border-gray-200",link:`underline ${e?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,secondaryButton:`px-3 py-1 text-sm rounded ${e?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,primaryButton:"px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50",input:`w-full px-3 py-2 border rounded-lg text-sm ${e?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`,errorBox:`p-2 rounded text-xs border ${e?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`,surface:{backgroundColor:e?"#1a1a1a":"#ffffff"}}}function h0({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Te.useState)(null),[a,i]=(0,Te.useState)(null),[s,l]=(0,Te.useState)(null),[u,c]=(0,Te.useState)(0),[d,f]=(0,Te.useState)(!1),p=(0,Te.useCallback)(async()=>{let h=await fetch(r),g=await h.json().catch(()=>({}));if(!h.ok)throw new Error(Je(g,`Could not load the pull request (HTTP ${h.status}).`));return g},[r]);(0,Te.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let x=await p();if(h)return;o(x),i(null),p0(x.pull_request)&&(g=setTimeout(v,2e3))}catch(x){h||i(x.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[p,u]);let m=async h=>{f(!0),i(null);try{let g=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(Je(v,`Could not open the pull request (HTTP ${g.status}).`));c(x=>x+1)}catch(g){i(g.message)}finally{f(!1)}},y=n?.pull_request||null,b=n?.publishing||null;return b&&!b.supported?null:Te.default.createElement(Te.default.Fragment,null,Te.default.createElement(dbe,{pullRequest:y,publishing:b,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Te.default.createElement(fbe,{codeSession:t,sandbox:e,pullRequest:y,publishing:b,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function dbe({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=EG(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:f,errorBox:p}=i,{label:m,tone:y}=uG(e),b=p0(e),h=!!t?.available,g=cG(e),v=dG(e);return Te.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Te.default.createElement("div",{className:"flex items-center justify-between gap-3"},Te.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Te.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Te.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&g&&Te.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:b,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Te.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:b,className:f},"Open draft PR"))),t&&!h&&Te.default.createElement("p",{className:`text-xs ${s}`},AG(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Te.default.createElement("div",{className:"space-y-1"},Te.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Te.default.createElement(xc,{tone:y},m),e.url?Te.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Te.default.createElement("span",{className:`truncate ${l}`},e.title)),Te.default.createElement("p",{className:`text-xs font-mono truncate ${s}`},e.branch,e.base_branch?` \u2192 ${e.base_branch}`:"",e.files?.length?` \xB7 ${e.files.length} file${e.files.length===1?"":"s"}`:""),e.status==="draft_refused"&&Te.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Te.default.createElement("p",{className:p},e.error_message),v&&Te.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Te.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Te.default.createElement("button",{type:"button",onClick:()=>a(e.status==="draft_refused"),disabled:n,className:`${d} disabled:opacity-50`},n&&"Opening\u2026",!n&&(e.status==="draft_refused"?"Open as a regular pull request":"Open the draft PR again")))),r&&Te.default.createElement("div",{className:p},r))}function fbe({sandbox:e,pullRequest:t,publishing:r,mode:n,onClose:o,onPublished:a,codeSession:i}){let s=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,l=n==="update",[u,c]=(0,Te.useState)(null),[d,f]=(0,Te.useState)(!0),[p,m]=(0,Te.useState)(null),[y,b]=(0,Te.useState)(new Set),[h,g]=(0,Te.useState)(l?t?.title||"":xG(e)),[v,x]=(0,Te.useState)(""),[S,w]=(0,Te.useState)(l&&t?.branch||""),[A,k]=(0,Te.useState)(U_),[_,C]=(0,Te.useState)(""),[E,j]=(0,Te.useState)(null),[F,D]=(0,Te.useState)(!1),[z,N]=(0,Te.useState)(0);return(0,Te.useEffect)(()=>{let $=!1;return f(!0),(async()=>{try{let T=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(E?{allowlist:E}:{})}),I=await T.json().catch(()=>({}));if($)return;if(!T.ok)throw new Error(Je(I,`Could not read the sandbox's changes (HTTP ${T.status}).`));c(I.preview),b(H_(I.preview.files)),w(P=>P||I.preview.suggested_branch||"")}catch(T){$||m(T.message)}finally{$||f(!1)}})(),()=>{$=!0}},[s,z,E]),Te.default.createElement(eM,{sandbox:e,preview:u,loading:d,error:p,publishing:r,pullRequest:t,selection:y,onToggle:$=>b(T=>K_(T,$)),fields:{title:h,body:v,branch:S,message:A,allowlist:_},onField:($,T)=>({title:g,body:x,branch:w,message:k,allowlist:C})[$](T),allowlistApplied:!!E,onApplyAllowlist:()=>{m(null),j(mG(_))},mode:n,submitting:F,onSubmit:async()=>{D(!0),m(null);try{let $=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...q_({files:u?.files,selection:y,title:h,body:v,branch:S,message:A,allowlist:E,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),T=await $.json().catch(()=>({}));if(!$.ok)throw W_(T.code)&&N(I=>I+1),new Error(Je(T,`Could not publish (HTTP ${$.status}).`));a(T.pull_request)}catch($){m($.message)}finally{D(!1)}},onCancel:o})}function eM({sandbox:e,preview:t,loading:r,error:n,publishing:o,pullRequest:a,selection:i,onToggle:s,fields:l,onField:u,allowlistApplied:c,onApplyAllowlist:d,mode:f,submitting:p,onSubmit:m,onCancel:y,patchHref:b}){let h=EG(),{muted:g,strong:v,border:x,link:S,secondaryButton:w,primaryButton:A,input:k,errorBox:_,darkMode:C}=h,E=t?.files||[],j=(0,Te.useMemo)(()=>wg(E,i),[E,i]),F=!!o?.available,D=f==="patch"||!F,z=f==="update"&&!D,N=t&&!D?yG({files:E,selection:i,title:l.title,branch:l.branch,message:l.message,update:z}):null,O=z?fG(a,E,i):[],$="Open draft PR";D?$="Download patch":z&&($="Update draft PR");let T=`Publishes the files you tick from ${e.repository}@${e.repository_ref} through the GitHub API, as one commit on a new branch.`;return D?T=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:z&&(T="Publishes the files you tick as one commit on the pull request's branch, which then holds the checkout commit with exactly these files changed."),Te.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4",role:"dialog","aria-modal":"true","aria-label":$},Te.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${x} ${C?"bg-gray-900":"bg-white"}`},Te.default.createElement("div",{className:"flex items-start justify-between gap-3"},Te.default.createElement("div",null,Te.default.createElement("p",{className:`text-lg font-medium ${v}`},$),Te.default.createElement("p",{className:`text-xs ${g}`},T," Nothing under .github/ is ever published.")),Te.default.createElement("button",{type:"button",onClick:y,className:w},"Close")),r&&Te.default.createElement("p",{className:`text-sm ${g}`},"Reading the sandbox's changes\u2026"),n&&Te.default.createElement("div",{className:_},n),t&&Te.default.createElement(Te.default.Fragment,null,d&&(pG(E)||c)&&Te.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Te.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${g}`},Te.default.createElement("span",null,"Only read paths matching"),Te.default.createElement("input",{type:"text",value:l.allowlist,onChange:I=>u("allowlist",I.target.value),disabled:p||r,placeholder:"app/**, lib/*.rb",className:`${k} font-mono`})),Te.default.createElement("button",{type:"button",onClick:d,disabled:p||r,className:`${w} disabled:opacity-50`},"Read again")),Te.default.createElement("div",{className:"space-y-1"},Te.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"Files \xB7 ",gG(E,i)),E.length===0&&Te.default.createElement("p",{className:`text-sm ${g}`},"The sandbox has no changes."),Te.default.createElement("ul",{className:"space-y-1"},E.map(I=>Te.default.createElement("li",{key:I.path,className:"flex items-center gap-2 text-sm"},Te.default.createElement("input",{type:"checkbox","aria-label":`Publish ${I.path}`,checked:!I.refusal&&i.has(I.path),disabled:!!I.refusal||p,onChange:()=>s(I.path)}),Te.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},hG(I)),Te.default.createElement("span",{className:`font-mono truncate ${I.refusal?g:v}`},I.path),I.size!=null&&I.status!=="deleted"&&Te.default.createElement("span",{className:`shrink-0 text-xs ${g}`},RP(I.size)),I.refusal&&Te.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},I.refusal_message))))),O.length>0&&Te.default.createElement("p",{className:`text-xs ${C?"text-amber-300":"text-amber-700"}`},"Not ticked, so returned to how they are in the checkout commit: ",Te.default.createElement("span",{className:"font-mono"},O.join(", "))),j.length>0&&Te.default.createElement("div",{className:"space-y-2"},Te.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"What will be published"),j.map(I=>Te.default.createElement(pbe,{key:I.path,file:I,classes:h}))),!D&&Te.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Te.default.createElement("span",null,"Branch"),Te.default.createElement("input",{type:"text",value:l.branch,onChange:I=>u("branch",I.target.value),disabled:z||p,maxLength:200,className:`${k} font-mono`})),z?Te.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Te.default.createElement("span",null,"Commit message"),Te.default.createElement("input",{type:"text",value:l.message,onChange:I=>u("message",I.target.value),disabled:p,className:k})):Te.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Te.default.createElement("span",null,"Title"),Te.default.createElement("input",{type:"text",value:l.title,onChange:I=>u("title",I.target.value),disabled:p,maxLength:256,className:k})),!D&&!z&&Te.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Te.default.createElement("span",null,"Description"),Te.default.createElement("textarea",{value:l.body,onChange:I=>u("body",I.target.value),disabled:p,rows:4,className:k})),Te.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Te.default.createElement("p",{className:`text-xs ${g}`},!F&&AG(o?.refusal||"Publishing is not available for this sandbox"),F&&N),Te.default.createElement("div",{className:"flex items-center gap-3"},j.length>0&&Te.default.createElement("a",{href:ct((b||((I,P)=>vG(e.session_id,I,P)))(j.map(I=>I.path),z?l.message:l.title)),className:`text-sm ${S}`},"Download patch"),Te.default.createElement("button",{type:"button",onClick:y,className:w},"Cancel"),!D&&Te.default.createElement("button",{type:"button",onClick:m,disabled:!!N||p,className:A},p?"Publishing\u2026":$))))))}function pbe({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Te.useMemo)(()=>c0(e.diff),[e.diff]);return Te.default.createElement("div",{className:`rounded border ${n}`},Te.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Te.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",RP(e.size),": published as it is in the sandbox."):Te.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=CG[s.kind]||CG.context;return Te.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var mbe=(e,t)=>e?.kind===t?.kind&&(t?.kind==="instruction"?e?.quote===t?.quote:e?.fault===t?.fault)&&[...e?.scenario_keys||[]].sort().join("\0")===[...t?.scenario_keys||[]].sort().join("\0")&&(!(t?.models||[]).length||[...e?.models||[]].sort().join("\0")===[...t.models].sort().join("\0")),V_=new Map,gbe=e=>(V_.has(e)||V_.set(e,(async()=>{let t=await fetch(e),r=await t.json().catch(()=>({}));if(!t.ok)throw new Error(r.error||"Could not load the fix workspace.");return r})().finally(()=>V_.delete(e))),V_.get(e));function tM({item:e,evaluation:t,run:r}){let[n,o]=(0,pt.useState)(!1),[a,i]=(0,pt.useState)(null),[s,l]=(0,pt.useState)(""),[u,c]=(0,pt.useState)(null),[d,f]=(0,pt.useState)(!1),[p,m]=(0,pt.useState)(null),y=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,b=(0,pt.useCallback)(async()=>{let k=await gbe(y);return i(k),l(_=>_||k.sandboxes?.find(C=>C.status==="ready")?.session_id||""),k},[y]);if((0,pt.useEffect)(()=>{if(!t?.id||!r?.id)return;let k=!1,_,C=async()=>{try{await b()}catch(E){k||c(E.message)}!k&&n&&(_=setTimeout(C,2500))};return C(),()=>{k=!0,clearTimeout(_)}},[b,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(k=>mbe(k.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let g=h.find(k=>k.id===p)||h[0],v=a?.sandboxes?.find(k=>k.session_id===(g?.sandbox_session_id||s)),x=g&&(["queued","running"].includes(g.status)||g.status==="succeeded"&&g.diff&&!g.verification?.error&&!["complete","failed"].includes(g.verification?.status)),S=a?.auth_mode!=="sandbox_login"||v?.claude_login?.credential_mode,w=async(k=null)=>{if(!(!v||d||x)){f(!0),c(null);try{let _=await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation_run_id:r.id,fix_item:{kind:e.kind,fault:e.fault,quote:e.quote,scenario_keys:e.scenario_keys,models:e.models},previous_code_session_id:k?.id})}),C=await _.json();if(!_.ok)throw new Error(C.error||"Could not start this fix.");m(C.code_session.id),await b()}catch(_){c(_.message)}finally{f(!1)}}},A=g?g.verification?.status==="complete"?3:g.status==="succeeded"?2:1:0;return pt.default.createElement(pt.default.Fragment,null,pt.default.createElement(se,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},g?"Review implementation":"Implement with Claude Code"),g?.verification?.status==="complete"&&pt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},g.verification.counts.fixed||0," fixed \xB7 ",g.verification.counts.regressed||0," regressed"),n&&pt.default.createElement(KP,{title:"Implement evaluation fix",onClose:()=>o(!1)},pt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((k,_)=>pt.default.createElement(Ee,{key:k,tone:_===A?"accent":_k.status==="ready")&&pt.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",pt.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...HP,marginTop:8},value:s,onChange:k=>l(k.target.value)},pt.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(k=>k.status==="ready").map(k=>pt.default.createElement("option",{key:k.session_id,value:k.session_id},k.repository," \xB7 ",k.repository_ref," \xB7 ",k.session_id.slice(0,8))))),a&&!v&&pt.default.createElement("div",{style:i0},pt.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),pt.default.createElement("a",{href:ct(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),pt.default.createElement(se,{size:"sm",onClick:()=>b().catch(k=>c(k.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!x&&pt.default.createElement(lf,{sandbox:v,onConnected:b,onChange:b}),v&&pt.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",pt.default.createElement("strong",null,v.claude_login?.credential_mode==="sandbox_login"?"your Claude subscription":a?.auth_mode==="local_login"?"this machine\u2019s Claude login":S?"the account\u2019s Anthropic API key":"your sandbox login after you connect"),". Verification uses the agent\u2019s own provider credentials."),!g&&pt.default.createElement(se,{variant:"primary",disabled:!v||!S||d||!!a?.refusal||!a?.supported,onClick:()=>w()},d?"Starting\u2026":"Implement this fix"),g&&pt.default.createElement(pt.default.Fragment,null,pt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},pt.default.createElement(Ee,{tone:g.status==="failed"?"error":"info"},"Claude Code \xB7 ",g.status),pt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",g.id)),["queued","running"].includes(g.status)&&pt.default.createElement(se,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions/${g.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await b()}catch(k){c(k.message)}}},"Cancel session"),g.result&&pt.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},g.result),g.error_message&&pt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},g.error_message),g.diff&&pt.default.createElement("details",null,pt.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),pt.default.createElement("pre",{style:{...i0,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),pt.default.createElement(m0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>w(g)}),g.verification?.status==="complete"&&v&&pt.default.createElement(h0,{sandbox:v,codeSession:g})),u&&pt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var rM=6,hbe=600,Sg=12,kg=e=>String(e||"").replace(/_/g," "),Ki=e=>String(e??"").trim(),y0=e=>[...new Set(e.filter(Boolean))],nM=e=>Ki(e).split(` `).map(t=>`> ${t}`).join(` -`),VP=(e,t=Fxe)=>{let r=$i(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},as=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,$2=e=>String(e||"").replace(/\/+$/,""),pG=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${fg(e.fault)}`:`Fix: ${fg(e.label||e.kind)}`:"Fix",mG=(e,t)=>{let r=i0(e?.models||[]);return r.length?r:i0(Iv(t).map(n=>typeof n=="string"?n:n?.label))},Uxe=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${fg(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),Wxe=e=>!Array.isArray(e)||!e.length?"none":e.map(t=>{if(typeof t=="string")return t;let r=t?.name||t?.tool||"tool",n=t?.error?` (error: ${VP(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),Hxe=(e,t=[],{labelFor:r=n=>n?.model}={})=>{let n=new Set(e?.scenario_keys||[]),o=new Set(e?.models||[]),a=t.filter(l=>l&&l.status&&l.status!=="pending"&&n.has(l.scenario_key)),i=o.size?a.filter(l=>o.has(r(l))):a,s=i.filter(l=>e?.kind==="instruction"?$i(l.diagnosis?.judge?.instruction_change)===$i(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},Kxe=(e,t,r)=>{let n=(t||[]).find(a=>a?.key===e);if(n)return n;let o=r.find(a=>a?.scenario_key===e&&(a.prompt||a.scenario));return o?{...o.scenario||{},prompt:o.scenario?.prompt||o.prompt}:null},qxe=(e,t,r)=>{let n=t[0],o=n?.prompt||n?.scenario?.prompt||r?.prompt,a=n?.scenario?.expectations||r?.expectations,i=n?.scenario?.notes||r?.notes,s=[`### ${as(e)}`];o&&s.push("","Prompt:",qP(o));let l=Uxe(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${$i(i)}`),t.forEach(u=>{let c=[u.provider,u.model].filter(Boolean).join("/")||"model",d=u.score==null?"":` \xB7 score ${Number(u.score).toFixed(2)}`,f=u.fault||(u.status==="errored"?"run_error":null);s.push("",`**${c}** \xB7 ${u.status}${d}${f?` \xB7 ${fg(f)}`:""}`),s.push(`- Tools called: ${Wxe(u.tool_calls)}`);let p=u.diagnosis||{},m=[p.summary,p.recommendation||u.recommendation].map($i).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),p.judge?.suggested_tool?.name){let y=p.judge.suggested_tool;s.push(`- Suggested tool: ${as(y.name)}${y.description?` (${$i(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${VP(u.error_message,200)}`),u.id!=null&&s.push(`- Result id: ${u.id}${u.agent_run_id?` \xB7 agent run ${u.agent_run_id}`:""}`),u.output?s.push("","Answer:",qP(VP(u.output))):s.push("- Answer: not retained for this run")}),s},gG=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=$2(o),l=[],u=t?.id!=null?`run ${r!=null?`#${r} `:""}(id ${t.id})`:null;return l.push(`Agent **${i}**${a.id!=null?` (id ${a.id}${a.slug?`, slug ${as(a.slug)}`:""})`:""}.`),e?.name&&l.push(`Evaluation **${e.name}**${e.id!=null?` (id ${e.id})`:""}${u?`, ${u}`:""}.`),s&&e?.id!=null&&l.push(`Dashboard: ${s}/evaluations/${e.id}${t?.id!=null?`/runs/${t.id}`:""}`),l},hG=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=$2(a),s=e?.id,l=[`evaluation_id: ${s??""}`];n.length&&l.push(`keys: [${n.map(c=>`"${c}"`).join(", ")}]`),o.length&&l.push(`models: [${o.map(c=>`"${c}"`).join(", ")}]`);let u=["## Verify","","1. Make the change in the agent, not in the scenarios or their expectations.",`2. Re-run with the dashboard's MCP tool ${as("evaluations_run")} (${l.join(", ")})${i?`, served at ${i}/mcp`:""}${s!=null?`, or POST ${i||""}/api/evaluations/${s}/run with the same ${n.length?"keys[] and ":""}models[]`:""}.`,`3. Poll ${as("evaluation_runs_get")} until the run is complete${n.length?": every scenario above should pass with no fault":" and nothing is skipped or below the pass mark"}.`];return t?.id!=null&&u.push(`4. ${as("evaluation_runs_compare")} against run ${r!=null?`#${r} `:""}(id ${t.id}) should list them as fixed and nothing as regressed.`),u.push("","When done, say what you changed and which run proved it."),u},yG=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,results:o=[],scenarios:a=[],agentName:i=null,dashboardUrl:s="",labelFor:l,target:u="dashboard"}={})=>{if(!e)return"";u==="sandbox"&&(s="");let c=$2(s),d=i0(e.scenario_keys||[]),f=mG(e,r),p=Hxe(e,o,{labelFor:l}),m=new Map;p.forEach(b=>m.set(b.scenario_key,[...m.get(b.scenario_key)||[],b]));let y=[`# ${pG(e)}`,"",...gG({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let x=e.count||d.length,h=`${fg(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${f.length&&(e.models||[]).length?` under ${f.join(", ")}`:""}`;if(y.push(`${x>1?`${x} results: `:""}${h}.`),e.recommendation&&y.push("",$i(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",qP(e.quote)),e.note&&y.push("",$i(e.note)),i0((e.tools||[]).map(b=>typeof b=="string"?b:b?.name)).length&&(y.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(b=>{let _=typeof b=="string"?b:b?.name;if(!_)return;let w=typeof b=="object"?b.note:null,C=typeof b=="object"?b.server:null,S=C?` \xB7 served by ${C.name||C.key}${C.status?` (${C.status})`:""}`:"";y.push(`- ${as(_)}${w&&w!==C?.name?` \u2014 ${$i(w)}`:""}${S}`)}),e.server)){let b=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${as(e.server.key)}) is ${b?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}y.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,KP).forEach(b=>{y.push("",...qxe(b,m.get(b)||[],Kxe(b,a,o)))}),d.length>KP&&y.push("",`Also failing: ${d.slice(KP).map(as).join(", ")}.`),y.push("","## Where to look","");let v=t?.agent?.id;return y.push(`- The agent's instructions and action prompts${c&&v!=null?`: ${c}/agents/${v}/edit`:""}.`),y.push(`- Its tools and MCP servers${c?`: ${c}/tools`:""}.`),e.action?.label&&y.push(`- On the dashboard: **${e.action.label}**${e.action.hint?` (${e.action.hint})`:""}${c&&e.action.path?` ${c}${e.action.path.startsWith("/")?"":"/"}${e.action.path}`:""}.`),u==="sandbox"?y.push("","- Find the agent in app/agents/ and its prompt views in app/views/agents/.","","## Verify","","1. Change the agent, not the scenarios or their expectations.","2. Run the relevant tests in this checkout. Do not commit or push.",`3. The dashboard will re-run these scenarios when you finish: ${d.join(", ")}; models: ${f.join(", ")}.`,"","Summarize your changes. Do not read or copy the sandbox\u2019s Claude credentials."):y.push("",...hG({evaluation:t,run:r,runNumber:n,keys:d,models:f,dashboardUrl:s})),`${y.join(` +`),oM=(e,t=hbe)=>{let r=Ki(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},ps=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,G_=e=>String(e||"").replace(/\/+$/,""),NG=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${kg(e.fault)}`:`Fix: ${kg(e.label||e.kind)}`:"Fix",TG=(e,t)=>{let r=y0(e?.models||[]);return r.length?r:y0(qv(t).map(n=>typeof n=="string"?n:n?.label))},ybe=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${kg(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),vbe=e=>!Array.isArray(e)||!e.length?"none":e.map(t=>{if(typeof t=="string")return t;let r=t?.name||t?.tool||"tool",n=t?.error?` (error: ${oM(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),xbe=(e,t=[],{labelFor:r=n=>n?.model}={})=>{let n=new Set(e?.scenario_keys||[]),o=new Set(e?.models||[]),a=t.filter(l=>l&&l.status&&l.status!=="pending"&&n.has(l.scenario_key)),i=o.size?a.filter(l=>o.has(r(l))):a,s=i.filter(l=>e?.kind==="instruction"?Ki(l.diagnosis?.judge?.instruction_change)===Ki(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},bbe=(e,t,r)=>{let n=(t||[]).find(a=>a?.key===e);if(n)return n;let o=r.find(a=>a?.scenario_key===e&&(a.prompt||a.scenario));return o?{...o.scenario||{},prompt:o.scenario?.prompt||o.prompt}:null},wbe=(e,t,r)=>{let n=t[0],o=n?.prompt||n?.scenario?.prompt||r?.prompt,a=n?.scenario?.expectations||r?.expectations,i=n?.scenario?.notes||r?.notes,s=[`### ${ps(e)}`];o&&s.push("","Prompt:",nM(o));let l=ybe(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${Ki(i)}`),t.forEach(u=>{let c=[u.provider,u.model].filter(Boolean).join("/")||"model",d=u.score==null?"":` \xB7 score ${Number(u.score).toFixed(2)}`,f=u.fault||(u.status==="errored"?"run_error":null);s.push("",`**${c}** \xB7 ${u.status}${d}${f?` \xB7 ${kg(f)}`:""}`),s.push(`- Tools called: ${vbe(u.tool_calls)}`);let p=u.diagnosis||{},m=[p.summary,p.recommendation||u.recommendation].map(Ki).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),p.judge?.suggested_tool?.name){let y=p.judge.suggested_tool;s.push(`- Suggested tool: ${ps(y.name)}${y.description?` (${Ki(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${oM(u.error_message,200)}`),u.id!=null&&s.push(`- Result id: ${u.id}${u.agent_run_id?` \xB7 agent run ${u.agent_run_id}`:""}`),u.output?s.push("","Answer:",nM(oM(u.output))):s.push("- Answer: not retained for this run")}),s},OG=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=G_(o),l=[],u=t?.id!=null?`run ${r!=null?`#${r} `:""}(id ${t.id})`:null;return l.push(`Agent **${i}**${a.id!=null?` (id ${a.id}${a.slug?`, slug ${ps(a.slug)}`:""})`:""}.`),e?.name&&l.push(`Evaluation **${e.name}**${e.id!=null?` (id ${e.id})`:""}${u?`, ${u}`:""}.`),s&&e?.id!=null&&l.push(`Dashboard: ${s}/evaluations/${e.id}${t?.id!=null?`/runs/${t.id}`:""}`),l},PG=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=G_(a),s=e?.id,l=[`evaluation_id: ${s??""}`];n.length&&l.push(`keys: [${n.map(c=>`"${c}"`).join(", ")}]`),o.length&&l.push(`models: [${o.map(c=>`"${c}"`).join(", ")}]`);let u=["## Verify","","1. Make the change in the agent, not in the scenarios or their expectations.",`2. Re-run with the dashboard's MCP tool ${ps("evaluations_run")} (${l.join(", ")})${i?`, served at ${i}/mcp`:""}${s!=null?`, or POST ${i||""}/api/evaluations/${s}/run with the same ${n.length?"keys[] and ":""}models[]`:""}.`,`3. Poll ${ps("evaluation_runs_get")} until the run is complete${n.length?": every scenario above should pass with no fault":" and nothing is skipped or below the pass mark"}.`];return t?.id!=null&&u.push(`4. ${ps("evaluation_runs_compare")} against run ${r!=null?`#${r} `:""}(id ${t.id}) should list them as fixed and nothing as regressed.`),u.push("","When done, say what you changed and which run proved it."),u},MG=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,results:o=[],scenarios:a=[],agentName:i=null,dashboardUrl:s="",labelFor:l,target:u="dashboard"}={})=>{if(!e)return"";u==="sandbox"&&(s="");let c=G_(s),d=y0(e.scenario_keys||[]),f=TG(e,r),p=xbe(e,o,{labelFor:l}),m=new Map;p.forEach(x=>m.set(x.scenario_key,[...m.get(x.scenario_key)||[],x]));let y=[`# ${NG(e)}`,"",...OG({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let b=e.count||d.length,h=`${kg(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${f.length&&(e.models||[]).length?` under ${f.join(", ")}`:""}`;if(y.push(`${b>1?`${b} results: `:""}${h}.`),e.recommendation&&y.push("",Ki(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",nM(e.quote)),e.note&&y.push("",Ki(e.note)),y0((e.tools||[]).map(x=>typeof x=="string"?x:x?.name)).length&&(y.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(x=>{let S=typeof x=="string"?x:x?.name;if(!S)return;let w=typeof x=="object"?x.note:null,A=typeof x=="object"?x.server:null,k=A?` \xB7 served by ${A.name||A.key}${A.status?` (${A.status})`:""}`:"";y.push(`- ${ps(S)}${w&&w!==A?.name?` \u2014 ${Ki(w)}`:""}${k}`)}),e.server)){let x=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${ps(e.server.key)}) is ${x?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}y.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,rM).forEach(x=>{y.push("",...wbe(x,m.get(x)||[],bbe(x,a,o)))}),d.length>rM&&y.push("",`Also failing: ${d.slice(rM).map(ps).join(", ")}.`),y.push("","## Where to look","");let v=t?.agent?.id;return y.push(`- The agent's instructions and action prompts${c&&v!=null?`: ${c}/agents/${v}/edit`:""}.`),y.push(`- Its tools and MCP servers${c?`: ${c}/tools`:""}.`),e.action?.label&&y.push(`- On the dashboard: **${e.action.label}**${e.action.hint?` (${e.action.hint})`:""}${c&&e.action.path?` ${c}${e.action.path.startsWith("/")?"":"/"}${e.action.path}`:""}.`),u==="sandbox"?y.push("","- Find the agent in app/agents/ and its prompt views in app/views/agents/.","","## Verify","","1. Change the agent, not the scenarios or their expectations.","2. Run the relevant tests in this checkout. Do not commit or push.",`3. The dashboard will re-run these scenarios when you finish: ${d.join(", ")}; models: ${f.join(", ")}.`,"","Summarize your changes. Do not read or copy the sandbox\u2019s Claude credentials."):y.push("",...PG({evaluation:t,run:r,runNumber:n,keys:d,models:f,dashboardUrl:s})),`${y.join(` `)} -`},vG=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${pG(e)}`,"",...gG({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||fg(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",$i(e.text)),Array.isArray(e.chips)&&e.chips.length&&i.push("",`${e.chipsLabel?e.chipsLabel[0].toUpperCase()+e.chipsLabel.slice(1):"Items"}: ${e.chips.slice(0,dg).map(as).join(", ")}${e.chips.length>dg?` and ${e.chips.length-dg} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,dg).forEach(d=>i.push(`- ${$i(d)}`)),e.details.length>dg&&i.push(`- and ${e.details.length-dg} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${as(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=$2(a);i.push("","## Where to look","");let u=t?.agent?.id;i.push(`- The agent's instructions, model config and tools${l&&u!=null?`: ${l}/agents/${u}/edit`:""}.`),e.action?.label&&i.push(`- On the dashboard: **${e.action.label}**${e.action.hint?` (${e.action.hint})`:""}${l&&e.action.path?` ${l}${e.action.path.startsWith("/")?"":"/"}${e.action.path}`:""}.`);let c=i0(e.kind==="missing"?e.chips||[]:mG({},r));return i.push("",...hG({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` +`},IG=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${NG(e)}`,"",...OG({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||kg(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",Ki(e.text)),Array.isArray(e.chips)&&e.chips.length&&i.push("",`${e.chipsLabel?e.chipsLabel[0].toUpperCase()+e.chipsLabel.slice(1):"Items"}: ${e.chips.slice(0,Sg).map(ps).join(", ")}${e.chips.length>Sg?` and ${e.chips.length-Sg} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,Sg).forEach(d=>i.push(`- ${Ki(d)}`)),e.details.length>Sg&&i.push(`- and ${e.details.length-Sg} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${ps(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=G_(a);i.push("","## Where to look","");let u=t?.agent?.id;i.push(`- The agent's instructions, model config and tools${l&&u!=null?`: ${l}/agents/${u}/edit`:""}.`),e.action?.label&&i.push(`- On the dashboard: **${e.action.label}**${e.action.hint?` (${e.action.hint})`:""}${l&&e.action.path?` ${l}${e.action.path.startsWith("/")?"":"/"}${e.action.path}`:""}.`);let c=y0(e.kind==="missing"?e.chips||[]:TG({},r));return i.push("",...PG({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` `)} -`};var pc=e=>[...new Set(e)],YP=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},s0=e=>String(e||"").replace(/_/g," "),gc=e=>e?.status==="passed",hc=e=>!!e&&e.status!=="pending",rf=e=>!!e&&["pending","running"].includes(e.status),L2=e=>e?.selection||e?.scores?._selection||{},Vxe=e=>(L2(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function l0(e,t=[],r=null){if(Array.isArray(e?.models)&&e.models.length)return e.models;let n=Object.keys(e?.scores?._models||{});if(n.length)return n;let o=Vxe(e);if(o.length)return o;let a=pc(t.map(s=>mc(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function mc(e,t){let n=(L2(e).models||[]).filter(i=>i&&typeof i=="object").find(i=>i.model===t.model&&(i.provider||"")===(t.provider||""));if(n?.label)return n.label;let o=e?.scores?._models||{};if(o[t.model])return t.model;let a=[t.provider,t.model].filter(Boolean).join("/");return o[a]?a:t.model}function ZP(e,t){let r=e?.scores?._models?.[t],n=(L2(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return No(t,r?.provider||n?.provider||"")}function JP(e,t=[]){let r=L2(e);if(Array.isArray(r.scenario_keys)&&r.scenario_keys.length)return r.scenario_keys;if(!e)return[];if(Array.isArray(r.keys)&&r.keys.length)return r.keys;if(Array.isArray(r.scenario_ids)&&r.scenario_ids.length){let o=r.scenario_ids.map(String);return t.filter(a=>o.includes(String(a.id))).map(a=>a.key)}let n=t.filter(o=>o.enabled!==!1);return r.group?n.filter(o=>o.group===r.group).map(o=>o.key):rf(e)?n.map(o=>o.key):[]}function pg(e,t=[],r=[]){let n=JP(e,r);if(n.length)return n.length;let o=Object.values(e?.scores?._models||{});return o.length?Math.max(...o.map(a=>a.scenarios||0)):e?.samples_evaluated&&t.length?Math.round(e.samples_evaluated/t.length):0}function QP(e,t,r=[],n=0){let o=e?.scores?._models?.[t];if(o&&o.scenarios!=null)return{passed:o.passed||0,total:o.scenarios||0};let a=r.filter(i=>mc(e,i)===t);return{passed:a.filter(gc).length,total:n||a.length}}function bG(e,t=[],r=[],n=[]){if(e?.status==="complete"&&e.samples_evaluated!=null)return{passed:e.samples_passed||0,total:e.samples_evaluated||0};let o=pg(e,r,n)*Math.max(r.length,1);return{passed:t.filter(gc).length,total:o}}function wG(e,t=[]){let r=[],n={};return(Array.isArray(e)?e:[]).forEach(o=>{let a=typeof o=="string"?o:String(o?.name||"");a&&(n[a]||(n[a]={name:a,count:0,errored:!1},r.push(a)),n[a].count+=1,o&&typeof o=="object"&&o.error&&(n[a].errored=!0))}),r.map(o=>{let a=n[o],i=t.includes(o);return{...a,hit:i,label:`${o}${a.errored?" \u2717":""}${a.count>1?` \xD7${a.count}`:""}`,color:a.errored?"var(--color-error)":i?"var(--color-success-text)":"var(--color-text-muted)",weight:a.errored||i?600:400}})}var Gxe=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},GP=e=>e?.diagnosis?.judge?.instruction_change;function SG(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(GP);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>Yxe(a,t)),o=new Set;return t.forEach(a=>{let i=GP(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>GP(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:pc(s.map(l=>l.scenario_key)),models:pc(s.map(l=>mc(e,l))),recommendation:a.diagnosis.judge.recommendation||a.recommendation||"",quote:i,tools_label:null,tools:[],server:null,note:null,action:{label:"Add to instructions",hint:"Agent -> Instructions",path:null}})}),n}function Yxe(e,t){let r=e.fault,n=t.filter(u=>u.fault===r),o=(e.suggested_tools||[]).map(u=>typeof u=="string"?u:u?.name).filter(Boolean),a=null,i=[],s=null,l=null;if(r==="expected_tool_not_called"){a="missing tools";let u=pc(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=pc(n.flatMap(d=>{let f=d.diagnosis?.evidence||{};return(f.expected||[]).filter(p=>!(f.called||[]).includes(p))}))),i=u.map(d=>({name:d,note:null,server:null}));let c=n.filter(d=>d.diagnosis?.summary&&(d.diagnosis?.evidence?.unavailable||[]).length===0);c.length&&c.length`${d.scenario_key} is the exception: ${d.diagnosis.summary} ${d.diagnosis.recommendation||""}`.trim()).join(" "))}else if(r==="tool_error"){a="failing tools";let u={};n.forEach(c=>(c.tool_calls||[]).forEach(d=>{!d||typeof d!="object"||!d.error||!d.name||u[d.name]||(u[d.name]={name:d.name,note:Gxe(d.detail,60)||null,server:null})})),i=Object.values(u),l={label:"Open failing tools",hint:"Tools ->",path:"/tools"}}else a=o.length?"suggested tools":null,i=pc(o).map(u=>({name:u,note:null,server:null}));return!l&&a==="suggested tools"&&i.length&&(l={label:"Open suggested tools",hint:"Tools ->",path:"/tools"}),{kind:"fault",fault:r,count:e.count||n.length,scenario_keys:e.scenario_keys||pc(n.map(u=>u.scenario_key)),models:e.models||[],recommendation:e.recommendation||"",quote:null,tools_label:a,tools:i,server:null,note:s,action:l}}var RP=e=>e?.cost_source==="estimated",kG=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},XP=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[Xr(e.cost,{estimated:RP(e)})];return t!=null&&r.push(`judge ${Xr(t,{estimated:kG(e)})}`),r.join(" \xB7 ")},_G=e=>{if(!RP(e))return;let t=e.cost_rate||null;return cp({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},Xxe=(e,t,r={})=>{let n=e?.costs?.scenarios?.[t];if(n&&typeof n=="object")return n.cost==null&&n.judge_cost==null?null:{cost:n.cost??null,judgeCost:n.judge_cost??null,total:n.total??null,estimated:!!n.estimated};let o=Object.values(r||{}).filter(hc),a=o.map(u=>u.cost).filter(u=>u!=null),i=o.map(u=>u.judge_usage?.cost).filter(u=>u!=null);if(!a.length&&!i.length)return null;let s=a.length?a.reduce((u,c)=>u+Number(c),0):null,l=i.length?i.reduce((u,c)=>u+Number(c),0):null;return{cost:s,judgeCost:l,total:(s||0)+(l||0),estimated:o.some(u=>RP(u)||kG(u))||a.length>0&&a.length{let t=e.filter(Boolean);if(!t.length)return null;let r=t.filter(i=>i.cost!=null),n=t.filter(i=>i.judgeCost!=null),o=r.length?r.reduce((i,s)=>i+s.cost,0):null,a=n.length?n.reduce((i,s)=>i+s.judgeCost,0):null;return{cost:o,judgeCost:a,total:(o||0)+(a||0),estimated:t.some(i=>i.estimated)}};function xG({entry:e,testId:t}){return e?he.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1,minWidth:0,textAlign:"right",fontFamily:X,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":t},he.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Xr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&he.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap"}},`judge ${Xr(e.judgeCost,{estimated:e.estimated})}`)):he.default.createElement("span",{style:{...jn(12),textAlign:"right"},"data-testid":t},"\u2014")}var jn=(e,t="var(--color-text-muted)",r={})=>({fontFamily:X,fontSize:e,color:t,...r});function AG({calls:e,empty:t,style:r}){return he.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:X,fontSize:11,...r}},e.map(n=>he.default.createElement("span",{key:n.name,style:{color:n.color,fontWeight:n.weight}},n.label)),e.length===0&&he.default.createElement("span",{style:{color:"var(--color-text-muted)"}},t))}function CG({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a}){let i=e?.scores?._models||{},s=ji(e)?.judge?.estimated??!0;return he.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"suite-models-panel"},he.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},he.default.createElement(qe,null,"Models"),o&&he.default.createElement("span",{style:jn(11)},`judged by ${o}`)),t.length===0&&he.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&he.default.createElement(Vv,{rows:x2(e,{results:r,scenarioCount:n,columns:t,labelFor:l=>mc(e,l)}),unit:"scenario",judgedBy:o,judgeEstimated:s}),t.length>0&&he.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},t.map(l=>{let{short:u,provider:c}=ZP(e,l),d=i[l],{passed:f,total:p}=QP(e,l,r,n),m=Object.entries(d?.faults||{}),y=Qm(d,d?.scenarios),x=d&&m.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!d&&rf(e)?{text:"scoring\u2026"}:null;return he.default.createElement(qv,{key:l,label:l,short:u,provider:c,winner:a?.winner===l,passed:f,total:p,avgScore:d?.avg_score,latencyMs:d?.avg_duration_ms,inputTokens:d?.input_tokens,outputTokens:d?.output_tokens,cost:d?.cost,perInteraction:Zd(d?.cost,y),estimated:y2(d,d?.scenarios),judgeCost:d?.judge_cost,judgeCalls:d?.judge_calls||0,judgeEstimated:s,unit:"scenario",badges:m.map(([h,g])=>({tone:"error",text:`${s0(h)} \xD7${g}`})),note:x})})),a?.rationale&&he.default.createElement(Ve,{padding:"12px 16px",testId:"suite-verdict",style:{display:"flex",flexDirection:"column",gap:6}},he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},he.default.createElement(qe,null,"Verdict"),a.judge&&he.default.createElement("span",{style:jn(11)},`judged by ${a.judge}`)),he.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},he.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:X,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var Jxe=e=>`minmax(240px, 1.6fr) 150px ${e.map(()=>"minmax(170px, 1fr)").join(" ")} 120px`;function Qxe({result:e,expects:t,pending:r}){if(!e)return he.default.createElement("span",{style:{...jn(12),fontWeight:600}},r?"\u2026":"\u2014");if(!hc(e))return he.default.createElement("span",{style:{...jn(12),fontWeight:600}},"\u2026");let n=gc(e),o=n?"var(--color-success)":"var(--color-error)",a=wG(e.tool_calls,t);return he.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},he.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,flexWrap:"wrap",fontFamily:X,fontSize:12}},he.default.createElement("span",{style:{fontWeight:700,color:o}},n?"[+]":"[!]"),he.default.createElement("span",{style:{fontWeight:600,color:o}},Xo(e.score)),e.fault&&he.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},s0(e.fault))),he.default.createElement(AG,{calls:a,empty:"no tools called"}),XP(e)&&he.default.createElement("span",{style:{...jn(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:_G(e),"data-testid":"scenario-cell-cost"},XP(e)))}function EG({rows:e,columns:t,run:r,resultsByKey:n,runKeys:o,running:a,openKey:i,onToggleRow:s,emptyLabel:l,renderDetail:u}){let c=Jxe(t),d=e.some(y=>y.group),f=y=>Xxe(r,y.key,n[y.key]),p=e.some(y=>f(y)?.estimated),m=[];return e.forEach(y=>{let x=y.group||"",h=m.find(g=>g.name===x);h||(h={name:x,rows:[]},m.push(h)),h.rows.push(y)}),he.default.createElement("div",{style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflowX:"auto"}},he.default.createElement("div",{style:{minWidth:Math.max(880,520+180*t.length)}},he.default.createElement("div",{style:{display:"grid",gridTemplateColumns:c,gap:12,padding:"8px 12px",background:"var(--color-muted)",alignItems:"end"}},he.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"Scenario"),he.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(y=>{let{short:x,provider:h}=ZP(r,y);return he.default.createElement("span",{key:y,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:y},he.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},x),he.default.createElement("span",{style:jn(10)},h||"\xA0"))}),he.default.createElement("span",{style:{textAlign:"right"},title:"What the scenario cost across every model, and what judging it cost"},he.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"Cost"))),m.map(y=>{let x=y.rows.filter(v=>o.has(v.key)||n[v.key]),h=t.map(v=>{let _=x.filter(S=>hc(n[S.key]?.[v])).filter(S=>gc(n[S.key][v])).length,w=x.length,C=w&&_===w?"var(--color-success-text)":_===0?"var(--color-error-text)":"var(--color-text-cell)";return{label:v,text:w?`${Un(_,w)} passed`:"\u2014",color:C}}),g=Zxe(y.rows.map(f));return he.default.createElement("div",{key:y.name||"__ungrouped"},(y.name||d)&&he.default.createElement("div",{style:{display:"grid",gridTemplateColumns:c,gap:12,padding:"7px 12px",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",alignItems:"center"}},he.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},y.name||"ungrouped"),he.default.createElement("span",{style:jn(11)},zt(y.rows.length,"scenario")),h.map(v=>he.default.createElement("span",{key:v.label,style:{fontFamily:X,fontSize:11,fontWeight:600,color:v.color}},v.text)),he.default.createElement(xG,{entry:g,testId:"scenario-group-cost"})),y.rows.map(v=>{let b=i===v.key,_=YP(v,"tools"),w=o.has(v.key)||!!n[v.key],C=v.enabled===!1;return he.default.createElement("div",{key:v.key},he.default.createElement("div",{"data-testid":"scenario-row","data-scenario-key":v.key,onClick:()=>s(v.key),className:b?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:c,gap:12,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:b?"var(--color-muted)":void 0,opacity:C?.5:1}},he.default.createElement("div",{style:{minWidth:0}},he.default.createElement("div",{style:{...jn(11),marginBottom:2}},`${v.key}${C?" \xB7 disabled":""}`),he.default.createElement("div",{style:{fontSize:13,lineHeight:"18px",color:"var(--color-text-primary)",textWrap:"pretty"}},v.prompt)),he.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignContent:"flex-start",minWidth:0}},_.map(S=>he.default.createElement("span",{key:S,style:{fontFamily:X,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"}},S)),_.length===0&&YP(v,"contains").map(S=>he.default.createElement("span",{key:`contains-${S}`,style:{fontFamily:X,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:"the answer must contain this"},`contains: ${S}`))),t.map(S=>he.default.createElement(Qxe,{key:S,result:n[v.key]?.[S],expects:_,pending:a&&w})),he.default.createElement(xG,{entry:f(v),testId:"scenario-row-cost"})),b&&u(v))}))}),e.length===0&&he.default.createElement(Kn,{style:{borderTop:"1px solid var(--color-border-light)"}},l||"[+] nothing failed in this group"),p&&he.default.createElement("div",{style:{...jn(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},xs)))}function Rxe(e){let t=[];e.duration_ms!=null&&t.push(to(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${un((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=XP(e);return r&&t.push(r),t.join(" \xB7 ")}function ebe({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=ZP(t,e),i=he.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:e},a),s=(h,g)=>he.default.createElement("div",{"data-testid":"scenario-result-detail",style:{background:"var(--color-card)",border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0}},he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},i,g),he.default.createElement("div",{style:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:10}},h));if(!r||!hc(r))return s(he.default.createElement("span",{style:jn(11)},o?"waiting for this replay\u2026":"not part of this run"),he.default.createElement(Te,{tone:"muted"},o?"pending":"no result"));let u=gc(r)?"success":"error",c=wG(r.tool_calls,n),d=r.diagnosis||{},f=d.judge||{},p=r.fault||(r.status==="errored"?"run_error":null),m=[d.summary,d.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",y=Object.entries(r.scores||{}),x=Rxe(r);return s(he.default.createElement(he.default.Fragment,null,he.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:X,fontSize:11}},he.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"tools"),he.default.createElement(AG,{calls:c,empty:"none called",style:{display:"contents"}})),p&&he.default.createElement("div",{style:{background:"var(--color-error-soft)",borderRadius:8,padding:"8px 10px",fontSize:12,lineHeight:"18px",color:"var(--color-error-text)",textWrap:"pretty"}},he.default.createElement("span",{style:{fontFamily:X,fontWeight:700}},`[!] ${s0(p)}`),m?` \u2014 ${m}`:"",f.suggested_tool?.name&&he.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11}},`suggested tool: ${f.suggested_tool.name}${f.suggested_tool.description?` \u2014 ${f.suggested_tool.description}`:""}`),f.instruction_change&&he.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${f.instruction_change}\u201D`)),r.output?he.default.createElement("div",{style:{fontFamily:"var(--font-text)",fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",maxHeight:190,overflow:"auto",whiteSpace:"pre-wrap",textWrap:"pretty"}},r.output):he.default.createElement("div",{style:jn(11)},"answer not retained for this run"),y.length>0&&he.default.createElement("div",{style:{...jn(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},y.map(([h,g])=>he.default.createElement("span",{key:h},s0(h)," ",he.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},g==null?"skipped":Xo(g)))))),he.default.createElement(he.default.Fragment,null,he.default.createElement(Te,{tone:u},r.score==null?r.status:`${r.status} \xB7 ${Xo(r.score)}`),x&&he.default.createElement("span",{style:{marginLeft:"auto",...jn(11)},title:_G(r)},x),r.agent_run_id&&he.default.createElement(lc,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:x?void 0:{marginLeft:"auto"}})))}function NG({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0}){let u=YP(e,"tools"),c=n[e.key]||{},d=r.some(p=>c[p]),f=a||d;return he.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"12px 12px 14px"},"data-testid":"scenario-drilldown"},he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10,flexWrap:"wrap"}},he.default.createElement("span",{style:jn(11)},e.key),he.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),he.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},u.join(" or ")||"\u2014"),l&&he.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:14}},he.default.createElement("button",{type:"button",onClick:p=>{p.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:X,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),he.default.createElement(Ii,{onClick:()=>i?.(e),title:"Run only this scenario under the selected models"},"re-run scenario"))),e.notes&&he.default.createElement("div",{style:{fontSize:12,fontStyle:"italic",color:"var(--color-text-secondary)",marginBottom:10}},e.notes),e.catalogChanged&&he.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginBottom:10}},"This run used an earlier version of this question. Re-running uses the current catalog."),t?f?he.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12}},r.map(p=>he.default.createElement(ebe,{key:p,label:p,run:t,result:c[p],expects:u,running:o}))):he.default.createElement("div",{style:jn(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):he.default.createElement("div",{style:jn(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function TG({items:e,columns:t=[],agentName:r,onNavigate:n,onOpenScenario:o,run:a=null,results:i=[],evaluation:s=null,runNumber:l=null,scenarios:u=[]}){let[c,d]=(0,he.useState)("all"),f=t.length>1,p=f?c:"all",m=f?Rq(e,i,v=>mc(a,v)):e,y=CP(m,p),x=f?eV(m,t):{},h=v=>yG({item:v,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:S2(),labelFor:b=>mc(a,b)}),g=v=>{let b=zt((v.scenario_keys||[]).length,"scenario");if(v.kind==="instruction")return`${(v.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let _=pc(v.models||[]);if(t.length<=1||_.length===0)return b;let C=_.length>=t.length?t.length===2?"both models":"all models":_.map(S=>No(S).short).join(", ");return`${b} \xB7 ${C}`};return he.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},f&&he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},he.default.createElement("span",{style:jn(11)},"for"),he.default.createElement(eo,{square:!0,mono:!0,selected:p==="all",onClick:()=>d("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(v=>he.default.createElement(eo,{key:v,square:!0,mono:!0,selected:p===v,onClick:()=>d(v),title:`Only what ${v} needs fixed`,testId:"fix-filter-model"},`${No(v).short} ${x[v]??0}`))),y.length===0&&he.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${No(p).short}`),he.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},y.map((v,b)=>{let _=v.kind==="instruction",w=_?"info":"error",C=[],S=new Set;(v.tools||[]).forEach($=>{let F=typeof $=="string"?$:$?.name;!F||S.has(F)||(S.add(F),C.push({name:F,note:typeof $=="object"&&($.note||$.server?.name)||null}))});let k=v.server,A=k?.status==="enabled",O=r||"the agent";return he.default.createElement("div",{key:`${v.fault}-${b}`,"data-testid":"scenario-recommendation",style:{border:"1px solid var(--color-border)",borderRadius:10,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10,minWidth:0}},he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},he.default.createElement(Ra,{kind:_?"info":"fault"}),he.default.createElement(Te,{tone:w},`${s0(v.fault)}${v.count>1?` \xD7${v.count}`:""}`),o&&(v.scenario_keys||[]).length>0?he.default.createElement("button",{type:"button",onClick:()=>o(v.scenario_keys),title:`Show ${(v.scenario_keys||[]).join(", ")} \u2014 the question, the answer and the tools it called`,style:{...jn(11),background:"none",border:0,padding:0,cursor:"pointer",color:"var(--color-text-link, var(--color-text-primary))",textDecoration:"underline",textUnderlineOffset:2}},g(v)):he.default.createElement("span",{style:jn(11)},g(v))),v.recommendation&&he.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},v.recommendation),v.quote&&he.default.createElement("div",{style:{background:"var(--color-muted)",borderRadius:8,padding:"8px 10px",fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",fontStyle:"italic"}},"\u201C",v.quote,"\u201D"),C.length>0&&he.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},he.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},v.tools_label||"tools"),he.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},C.map($=>he.default.createElement("span",{key:$.name,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",fontFamily:X,fontSize:11,maxWidth:"100%"}},he.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},$.name),$.note&&he.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:$.note},$.note))))),k&&he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:12,color:"var(--color-text-cell)"}},he.default.createElement("span",null,"served by"),he.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},k.name||k.key),he.default.createElement(Te,{tone:A?"success":"warning",size:10,style:{padding:"1px 6px"}},A?`enabled for ${O}`:`${k.status||"unknown"} \xB7 not enabled for ${O}`)),v.note&&he.default.createElement("div",{style:{fontSize:12,lineHeight:"18px",color:"var(--color-text-secondary)",textWrap:"pretty"}},v.note),he.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",paddingTop:2,flexWrap:"wrap"}},v.action?.path&&he.default.createElement(de,{size:"sm",onClick:()=>n?.(v.action.path)},v.action.label),v.action?.hint&&he.default.createElement("span",{style:{...jn(11),whiteSpace:"nowrap"}},v.action.hint),he.default.createElement(Gv,{build:()=>h(v),style:{marginLeft:"auto"}}),he.default.createElement(HP,{item:v,evaluation:s,run:a})))})))}var tbe=e=>{let{results:t,fix_items:r,...n}=e;return n},eM={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:X,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};function tM({evaluation:e,modelProviders:t,onChanged:r,onDelete:n,deleting:o=!1,initialRunId:a=null,onRunSelected:i}){let s=e.id,l=e.agent?.name||"Agent",[u,c]=(0,Fe.useState)(!1),[d,f]=(0,Fe.useState)(null),[p,m]=(0,Fe.useState)([]),[y,x]=(0,Fe.useState)(e.scenario_groups||[]),[h,g]=(0,Fe.useState)(e.latest_run?[e.latest_run]:[]),[v,b]=(0,Fe.useState)(null),[_,w]=(0,Fe.useState)(e.latest_run?.id??null),[C,S]=(0,Fe.useState)({}),[k,A]=(0,Fe.useState)((e.compare_models||[]).join(", ")),O=(0,Fe.useMemo)(()=>t===void 0?[]:t??yb,[t]),$=Su(O),F=(0,Fe.useMemo)(()=>Bv($,{providers:O}),[$,O]),[P,z]=(0,Fe.useState)(null),[N,D]=(0,Fe.useState)(!1),[T,E]=(0,Fe.useState)([]),[I,j]=(0,Fe.useState)(""),[q,te]=(0,Fe.useState)(!1),[K,le]=(0,Fe.useState)(""),[pe,re]=(0,Fe.useState)(null),[_e,ue]=(0,Fe.useState)(null),[se,Z]=(0,Fe.useState)(!1),[R,L]=(0,Fe.useState)(null),[B,H]=(0,Fe.useState)(0),M=(0,Fe.useCallback)(async()=>{let we=await fetch(`/api/evaluations/${s}/scenarios`);if(!we.ok)return;let gt=await we.json();m(gt.scenarios||[]),x(gt.groups||[])},[s]),ne=(0,Fe.useCallback)(async()=>{try{let we=await fetch(`/api/evaluations/${s}`);if(!we.ok)return f(`Could not load this suite (HTTP ${we.status})`),null;let tr=(await we.json()).evaluation||{};return m(tr.scenarios||[]),x(tr.scenario_groups||[]),g(tr.runs||[]),b(Number.isFinite(tr.run_count)?tr.run_count:null),f(null),tr}catch(we){return f(`Could not load this suite: ${we.message}`),null}finally{c(!0)}},[s]),U=(0,Fe.useCallback)(async we=>{if(!we)return null;let gt=await fetch(`/api/evaluations/${s}/runs/${we}`);if(!gt.ok)return null;let Sr=(await gt.json()).run;return Sr?(S(Kr=>({...Kr,[Sr.id]:Sr})),g(Kr=>Kr.map(Ea=>Ea.id===Sr.id?{...Ea,...tbe(Sr)}:Ea)),Sr):null},[s]);(0,Fe.useEffect)(()=>{let we=!1;return(async()=>{let gt=await ne();if(we)return;let tr=gt?.runs?.[0]?.id??null,Sr=a&>?.runs?.some(Kr=>Kr.id===a)?a:null;w(Kr=>Sr||(Kr&>?.runs?.some(Ea=>Ea.id===Kr)?Kr:tr)),(Sr||tr)&&U(Sr||tr)})(),()=>{we=!0}},[ne,U]);let oe=e.latest_run?.id??null;(0,Fe.useEffect)(()=>{!oe||h.some(we=>we.id===oe)||ne()},[oe,h,ne]);let ye=C[_]||h.find(we=>we.id===_)||null,Je=h[0]||null,Ft=rf(ye)?ye.id:rf(Je)?Je.id:null;(0,Fe.useEffect)(()=>{if(!Ft)return;let we=!1,gt=setTimeout(async()=>{let tr=null;try{tr=await U(Ft)}catch{tr=null}if(!we){if(tr&&!rf(tr)){await ne(),r?.();return}H(Sr=>Sr+1)}},3e3);return()=>{we=!0,clearTimeout(gt)}},[Ft,B,U,ne,r]);let Nt=(0,Fe.useCallback)(async()=>{try{let we=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!we.ok)return;let gt=await we.json(),tr=tV(gt.sandboxes);E(tr),j(Sr=>oV(Sr,tr))}catch{}},[]);(0,Fe.useEffect)(()=>{Nt()},[Nt]);let ce=uc(k),Ze=async we=>{D(!0),z(null);try{let gt=await fetch(`/api/evaluations/${s}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(nV(we,ce,I))}),tr=await gt.json().catch(()=>({}));if(!gt.ok)throw tr.code==="sandbox_refused"&&Nt(),new Error((tr.errors||[tr.error]).filter(Boolean).join(", ")||"Run failed to start");let Sr=tr.run;g(Kr=>[Sr,...Kr.filter(Ea=>Ea.id!==Sr.id)]),b(Kr=>Kr==null?null:Kr+1),S(Kr=>({...Kr,[Sr.id]:{...Sr,results:[]}})),w(Sr.id),L(null),r?.()}catch(gt){z(gt.message)}finally{D(!1)}},fr=we=>{w(we),L(null),C[we]||U(we)};(0,Fe.useEffect)(()=>{!a||a===_||!h.some(we=>we.id===a)||fr(a)},[a]);let Rt=async we=>{we.id&&(await fetch(`/api/evaluations/${s}/scenarios/${we.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:we.enabled===!1}})}),await M())},er=async()=>{re(null);let we=await fetch(`/api/evaluations/${s}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:K})}),gt=await we.json().catch(()=>({}));if(!we.ok){re((gt.errors||[gt.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}m(gt.scenarios||[]),x(gt.groups||[]),te(!1),r?.()},Ke=ye,Kt=(0,Fe.useMemo)(()=>(Ke?.results||[]).filter(we=>we&&we.scenario_key),[Ke]),Or=(0,Fe.useMemo)(()=>l0(Ke,Kt,e),[Ke,Kt,e]),oo=(0,Fe.useMemo)(()=>Kt.reduce((we,gt)=>((we[gt.scenario_key]||={})[mc(Ke,gt)]=gt,we),{}),[Kt,Ke]),us=(0,Fe.useMemo)(()=>new Set(JP(Ke,p)),[Ke,p]),oa=rf(Ke),Vl=pg(Ke,Or,p),fe=bG(Ke,Kt,Or,p),Ge=(0,Fe.useCallback)(we=>us.has(we.key)||!!oo[we.key],[us,oo]),rt=(0,Fe.useMemo)(()=>Bq(p,oo),[p,oo]),ir=we=>Or.some(gt=>{let tr=oo[we.key]?.[gt];return hc(tr)&&!gc(tr)}),Ho=rt.filter(we=>!_e||(we.group||"")===_e).filter(we=>!se||ir(we)),ao=h.findIndex(we=>we.id===Ke?.id),aa=jv(h,v),Ko=ao>=0?aa-ao:null,Ca=new Set(rt.filter(Ge).map(we=>we.group).filter(Boolean)).size,Fs=Kt.filter(hc).length,Bi=Vl*Math.max(Or.length,1),df=new Set(Kt.filter(we=>hc(we)&&!gc(we)).map(we=>we.scenario_key)).size,cs=Ke?.scores?._verdict||null,Gl=Object.prototype.hasOwnProperty.call(Ke?.scores||{},"_judge_label")?Ke.scores._judge_label||"rules":cs?.judge&&cs.judge!=="pass rate"?cs.judge:e.judge_model||"rules",Vn=(0,Fe.useMemo)(()=>Ke?SG(Ke,Kt):[],[Ke,Kt]),M0=(0,Fe.useCallback)(we=>{let gt=Array.isArray(we)?we[0]:we;gt&&(ue(null),Z(!1),L(gt),requestAnimationFrame(()=>{document.querySelector(`[data-scenario-key="${CSS.escape(gt)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"})}))},[]),ff=Object.keys(Ke?.scores||{}).filter(we=>!we.startsWith("_")),D0=(0,Fe.useCallback)(we=>{let gt=we.id===Ke?.id?Kt:[],tr=l0(we,gt,e),Sr=pg(we,tr,p);return tr.map(Kr=>({label:Kr,short:No(Kr).short,...QP(we,Kr,gt,Sr)}))},[Ke,Kt,e,p]),I0=(0,Fe.useCallback)((we,gt,tr)=>{if(!gt||gt.status!=="complete"||we.status!=="complete")return $v(we,gt,{olderNumber:tr});let Sr=l0(we,we.id===Ke?.id?Kt:[],e),Kr=l0(gt,[],e),Ea=pg(gt,Kr,p)===pg(we,Sr,p)&&Kr.length===Sr.length;return $v(we,gt,{olderNumber:tr,comparable:Ea})},[Ke,Kt,e,p]),Eg=u?p.length:e.scenario_count??0,Ng=u?p.filter(we=>we.enabled!==!1&&(!_e||(we.group||"")===_e)).length:Eg,j0=`Run ${zt(Ng,"scenario")}${ce.length?` \xD7 ${zt(ce.length,"model")}`:""}`,w_=Ke?[ao>0?`Viewing run #${Ko} (latest is #${aa})`:`Run #${Ko??"?"} \xB7 ${vo(Ke.completed_at||Ke.created_at)}`,l,`${zt(Vl,"scenario")}${Ca?` in ${zt(Ca,"group")}`:""} \xD7 ${zt(Or.length,"model")}`,Ke.status==="failed"?"failed":`${Un(fe.passed,fe.total)} passed`,ag(Ke)&&`against ${ag(Ke)}`].filter(Boolean).join(" \xB7 "):`${l} \xB7 ${zt(Eg,"scenario")}${y.length?` in ${zt(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?"no runs yet":"loading\u2026"}`,$0=Ke&&Ke.status==="complete"?`/evaluations/${s}/runs/${Ke.id}/report`:null,S_=[...new Set([...y,...rt.map(we=>we.group).filter(Boolean)])],k_=[{label:`All ${rt.length||Eg}`,value:null}].concat(S_.map(we=>({label:u?`${we} ${rt.filter(gt=>gt.group===we).length}`:we,value:we}))),Tg=rt.length===0,__=se?"[+] nothing failed in this group":"[ ] no scenarios";return Fe.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel"},Fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Fe.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},w_),oa&&Fe.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"suite-run-progress"},`running \xB7 ${Fs} of ${Bi} results in`),Fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Fe.default.createElement(de,{size:"sm",onClick:()=>{le(yV(p)),re(null),te(!q)}},q?"Cancel":"Edit scenarios"),Fe.default.createElement(Uv,{value:k,onChange:A,models:F,inputLabel:"Models to run",placeholder:"models, e.g. gpt-5-mini, ollama/qwen3:8b",title:"Blank runs the suite's saved models, or the agent's own model when it has none. Prefix a typed name with its provider (ollama/llama3.2) when the name alone is ambiguous.",style:{...eM,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),T.length>0&&Fe.default.createElement("select",{value:I,onChange:we=>j(we.target.value),style:{...eM,maxWidth:260},"aria-label":"Run against sandbox",title:"Replays also reach this checkout sandbox's app runtime, as if the agent listed it in its MCP servers. The agent is not changed.","data-testid":"suite-run-sandbox"},Fe.default.createElement("option",{value:""},"Run against: agent's own tools"),T.map(we=>Fe.default.createElement("option",{key:we.value,value:we.value},`Run against sandbox ${we.label}`))),Fe.default.createElement(de,{variant:"primary",size:"sm",disabled:N||!u||Ng===0,onClick:()=>Ze(_e?{group:_e}:{}),testId:"suite-run-button"},N?"Starting\u2026":j0))),(d||P||Ke?.status==="failed")&&Fe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},d||P||`Run failed: ${Ke.error_message||"unknown error"}`),q&&Fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},Fe.default.createElement("textarea",{value:K,onChange:we=>le(we.target.value),rows:Math.min(Math.max(p.length+4,6),24),style:{...eM,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),Fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},Fe.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",Fe.default.createElement("code",{style:{fontFamily:X}},"# Heading")," starts a group; ",Fe.default.createElement("code",{style:{fontFamily:X}},"| tools: a, b"),", ",Fe.default.createElement("code",{style:{fontFamily:X}},"| contains: x"),", ",Fe.default.createElement("code",{style:{fontFamily:X}},"| not_contains: y")," set expectations. Keep a scenario's ",Fe.default.createElement("code",{style:{fontFamily:X}},"key")," to keep its history."),Fe.default.createElement(de,{variant:"primary",size:"sm",onClick:er},"Save scenarios")),pe&&Fe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},pe)),Fe.default.createElement(Hv,{runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Ke?.id??null,onOpen:we=>{fr(we.id),i?.(we.id)},barsFor:D0,deltaFor:I0}),Ke&&Ke.status!=="failed"&&Fe.default.createElement(Wv,{spend:ji(Ke),judgedBy:Gl,testId:"suite-run-spend"}),Fe.default.createElement(CG,{run:Ke,columns:Ke?Or:[],results:Kt,scenarioCount:Vl,judgedBy:Gl,verdict:cs}),Fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Fe.default.createElement(qe,{style:{marginRight:4}},"Scenarios"),k_.map(we=>Fe.default.createElement(eo,{key:we.label,selected:_e===we.value,onClick:()=>ue(we.value)},we.label)),Fe.default.createElement(eo,{square:!0,mono:!0,selected:se,onClick:()=>Z(!se),style:{marginLeft:"auto",background:"transparent"},title:"Hide scenarios that passed on every model"},se?"[x] failed only":"[ ] failed only")),Tg&&d?Fe.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[!] suite not loaded"):Tg&&!u?Fe.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"loading\u2026"):Tg?Fe.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):Fe.default.createElement(EG,{rows:Ho,columns:Ke?Or:[],run:Ke,resultsByKey:oo,runKeys:us,running:oa,openKey:R,onToggleRow:we=>L(R===we?null:we),emptyLabel:__,renderDetail:we=>Fe.default.createElement(NG,{scenario:we,run:Ke,columns:Ke?Or:[],resultsByKey:oo,running:oa,inRun:Ge(we),canMutate:!we.orphan,onRerun:gt=>Ze({keys:[gt.key]}),onToggleEnabled:Rt})})),Ke&&Ke.status!=="failed"&&Fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Fe.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Fe.default.createElement(qe,null,"What to fix"),Fe.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},`${zt(Vn.length,"item")} \xB7 ${zt(Math.max(fe.total-fe.passed,0),"fault")} across ${zt(df,"scenario")}`)),Vn.length>0?Fe.default.createElement(TG,{items:Vn,columns:Or,agentName:l,onNavigate:It,onOpenScenario:M0,run:Ke,results:Kt,evaluation:e,runNumber:Ko,scenarios:p}):Fe.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},oa?"[ ] scoring\u2026":"[+] nothing to fix")),Fe.default.createElement(Qd,{evaluation:e,run:Ke,keys:ff.length?ff:null,spend:ji(Ke),reportPath:$0,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var Ye=G(Y());var rM=[{type:"response_present",key:"response_present",label:"Response present",config:{}},{type:"min_length",key:"response_length",label:"Response length \u2265 40 chars",config:{chars:40}},{type:"max_latency_ms",key:"latency",label:"Latency \u2264 5s",config:{ms:5e3}},{type:"token_budget",key:"token_budget",label:"Output \u2264 1000 tokens",config:{output_tokens:1e3}}],OG=[{type:"trace_error_rate",key:"trace_error_rate",label:"Trace error rate \u2264 5% (telemetry, 7d)",config:{max_error_rate:5,window_hours:168}},{type:"trace_latency",key:"trace_latency",label:"Avg trace latency \u2264 5s (telemetry, 7d)",config:{max_avg_ms:5e3,window_hours:168}}],Hl={padding:"8px 12px",borderRadius:8,fontSize:13,fontFamily:"inherit",boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},PG={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},rbe={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function nM({agents:e,agentId:t,judgeProvider:r,judgeProviderError:n=!1,modelProviders:o,onCreated:a,onCancel:i}){let[s,l]=(0,Ye.useState)({agent_id:t?String(t):"",name:"",sample_size:20,criteria:rM.map(A=>A.key),containsPattern:"",llmJudgePrompt:"",judgeKind:"manual",judgeModel:"",compareModels:"",scenariosText:"",compareRestore:new Map}),[u,c]=(0,Ye.useState)(null),[d,f]=(0,Ye.useState)(!1),p=(0,Ye.useId)(),m=(0,Ye.useMemo)(()=>o===void 0?[]:o??yb,[o]),y=Su(r&&!m.includes(r)?[...m,r]:m),x=obe(s.agent_id),h=(0,Ye.useMemo)(()=>r?Bv(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,Ye.useMemo)(()=>g?Bv(y,{providers:m}):x,[y,m,g,x]),b=A=>l(O=>({...O,...A})),_=A=>l(O=>{let $=!!A.trim();if($===!!O.scenariosText.trim())return{...O,scenariosText:A};let{models:F,restore:P}=sV(uc(O.compareModels),y,{providers:m,qualify:$,restore:O.compareRestore});return{...O,scenariosText:A,compareModels:Fv(F),compareRestore:P}}),w=(A,O)=>b({criteria:O?[...s.criteria,A]:s.criteria.filter($=>$!==A)}),C=()=>{let A=[...rM,...OG].filter(O=>s.criteria.includes(O.key)).map(({key:O,type:$,config:F})=>({key:O,type:$,config:F}));return s.containsPattern.trim()&&A.push({key:"contains",type:"contains",config:{pattern:s.containsPattern.trim()}}),s.llmJudgePrompt.trim()&&A.push({key:"quality",type:"llm_judge",config:{prompt:s.llmJudgePrompt.trim()}}),A},S=async A=>{A.preventDefault(),f(!0),c(null);try{let O=await fetch("/api/evaluations",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{agent_id:s.agent_id,name:s.name,sample_size:s.sample_size,judge_kind:s.judgeKind==="judge_defined"?"judge_defined":s.llmJudgePrompt.trim()?"llm":"rules",judge_model:s.judgeModel.trim()||void 0,compare_models:uc(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:C(),scenarios_text:s.scenariosText.trim()||void 0}})}),$=await O.json().catch(()=>({}));if(!O.ok)throw new Error(($.errors||[$.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${O.status})`);a?.($.evaluation)}catch(O){c(O.message)}finally{f(!1)}},k=A=>Ye.default.createElement("label",{key:A.key,style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--color-text-primary)"}},Ye.default.createElement("input",{type:"checkbox",checked:s.criteria.includes(A.key),onChange:O=>w(A.key,O.target.checked),style:{accentColor:"var(--color-accent-ui)"}}),A.label);return Ye.default.createElement(Ve,{testId:"new-evaluation-form"},Ye.default.createElement("form",{onSubmit:S,style:{display:"flex",flexDirection:"column",gap:16}},Ye.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),Ye.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:A=>b({agent_id:A.target.value}),style:{...Hl,width:"100%",opacity:t?.7:1}},!t&&Ye.default.createElement("option",{value:""},"Select agent\u2026"),e.map(A=>Ye.default.createElement("option",{key:A.id,value:A.id},A.name)))),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"Name"),Ye.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:A=>b({name:A.target.value}),placeholder:"Response Quality",style:{...Hl,width:"100%"}})),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"Sample size"),Ye.default.createElement("input",{type:"number",min:"1",max:"100",value:s.sample_size,onChange:A=>b({sample_size:A.target.value}),style:{...Hl,width:"100%",fontFamily:X}}))),Ye.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),Ye.default.createElement("select",{value:s.judgeKind,onChange:A=>b({judgeKind:A.target.value}),style:{...Hl,width:"100%"}},Ye.default.createElement("option",{value:"manual"},"Manual criteria"),Ye.default.createElement("option",{value:"judge_defined"},"Judge defines KPIs from agent goals"))),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",htmlFor:`${p}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),Ye.default.createElement(sl,{id:`${p}-judge`,"aria-describedby":r===void 0?void 0:`${p}-judge-provider`,value:s.judgeModel,models:h,onChange:A=>b({judgeModel:A}),style:{...Hl,width:"100%",fontFamily:X,fontSize:12}}),r!==void 0&&Ye.default.createElement("p",{id:`${p}-judge-provider`,style:PG},nbe(r,n))),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",htmlFor:`${p}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),Ye.default.createElement(Uv,{inputId:`${p}-compare`,describedBy:`${p}-compare-hint`,value:s.compareModels,onChange:A=>b({compareModels:A}),models:v,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Hl,width:"100%",fontFamily:X,fontSize:12}}),Ye.default.createElement("p",{id:`${p}-compare-hint`,style:PG},g?"Each model replays the scenarios. Any model name can be typed.":"Compares the agent's generations recorded under each model name. Add scenarios to try any model."))),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"Scenarios (optional) \u2014 paste user messages to replay, one per line"),Ye.default.createElement("textarea",{value:s.scenariosText,onChange:A=>_(A.target.value),rows:s.scenariosText?8:3,placeholder:`# Open tickets +`};var bc=e=>[...new Set(e)],iM=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},v0=e=>String(e||"").replace(/_/g," "),Sc=e=>e?.status==="passed",kc=e=>!!e&&e.status!=="pending",df=e=>!!e&&["pending","running"].includes(e.status),Y_=e=>e?.selection||e?.scores?._selection||{},Sbe=e=>(Y_(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function x0(e,t=[],r=null){if(Array.isArray(e?.models)&&e.models.length)return e.models;let n=Object.keys(e?.scores?._models||{});if(n.length)return n;let o=Sbe(e);if(o.length)return o;let a=bc(t.map(s=>wc(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function wc(e,t){let n=(Y_(e).models||[]).filter(i=>i&&typeof i=="object").find(i=>i.model===t.model&&(i.provider||"")===(t.provider||""));if(n?.label)return n.label;let o=e?.scores?._models||{};if(o[t.model])return t.model;let a=[t.provider,t.model].filter(Boolean).join("/");return o[a]?a:t.model}function lM(e,t){let r=e?.scores?._models?.[t],n=(Y_(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return Io(t,r?.provider||n?.provider||"")}function uM(e,t=[]){let r=Y_(e);if(Array.isArray(r.scenario_keys)&&r.scenario_keys.length)return r.scenario_keys;if(!e)return[];if(Array.isArray(r.keys)&&r.keys.length)return r.keys;if(Array.isArray(r.scenario_ids)&&r.scenario_ids.length){let o=r.scenario_ids.map(String);return t.filter(a=>o.includes(String(a.id))).map(a=>a.key)}let n=t.filter(o=>o.enabled!==!1);return r.group?n.filter(o=>o.group===r.group).map(o=>o.key):df(e)?n.map(o=>o.key):[]}function _g(e,t=[],r=[]){let n=uM(e,r);if(n.length)return n.length;let o=Object.values(e?.scores?._models||{});return o.length?Math.max(...o.map(a=>a.scenarios||0)):e?.samples_evaluated&&t.length?Math.round(e.samples_evaluated/t.length):0}function cM(e,t,r=[],n=0){let o=e?.scores?._models?.[t];if(o&&o.scenarios!=null)return{passed:o.passed||0,total:o.scenarios||0};let a=r.filter(i=>wc(e,i)===t);return{passed:a.filter(Sc).length,total:n||a.length}}function jG(e,t=[],r=[],n=[]){if(e?.status==="complete"&&e.samples_evaluated!=null)return{passed:e.samples_passed||0,total:e.samples_evaluated||0};let o=_g(e,r,n)*Math.max(r.length,1);return{passed:t.filter(Sc).length,total:o}}function $G(e,t=[]){let r=[],n={};return(Array.isArray(e)?e:[]).forEach(o=>{let a=typeof o=="string"?o:String(o?.name||"");a&&(n[a]||(n[a]={name:a,count:0,errored:!1},r.push(a)),n[a].count+=1,o&&typeof o=="object"&&o.error&&(n[a].errored=!0))}),r.map(o=>{let a=n[o],i=t.includes(o);return{...a,hit:i,label:`${o}${a.errored?" \u2717":""}${a.count>1?` \xD7${a.count}`:""}`,color:a.errored?"var(--color-error)":i?"var(--color-success-text)":"var(--color-text-muted)",weight:a.errored||i?600:400}})}var kbe=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},aM=e=>e?.diagnosis?.judge?.instruction_change;function LG(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(aM);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>_be(a,t)),o=new Set;return t.forEach(a=>{let i=aM(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>aM(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:bc(s.map(l=>l.scenario_key)),models:bc(s.map(l=>wc(e,l))),recommendation:a.diagnosis.judge.recommendation||a.recommendation||"",quote:i,tools_label:null,tools:[],server:null,note:null,action:{label:"Add to instructions",hint:"Agent -> Instructions",path:null}})}),n}function _be(e,t){let r=e.fault,n=t.filter(u=>u.fault===r),o=(e.suggested_tools||[]).map(u=>typeof u=="string"?u:u?.name).filter(Boolean),a=null,i=[],s=null,l=null;if(r==="expected_tool_not_called"){a="missing tools";let u=bc(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=bc(n.flatMap(d=>{let f=d.diagnosis?.evidence||{};return(f.expected||[]).filter(p=>!(f.called||[]).includes(p))}))),i=u.map(d=>({name:d,note:null,server:null}));let c=n.filter(d=>d.diagnosis?.summary&&(d.diagnosis?.evidence?.unavailable||[]).length===0);c.length&&c.length`${d.scenario_key} is the exception: ${d.diagnosis.summary} ${d.diagnosis.recommendation||""}`.trim()).join(" "))}else if(r==="tool_error"){a="failing tools";let u={};n.forEach(c=>(c.tool_calls||[]).forEach(d=>{!d||typeof d!="object"||!d.error||!d.name||u[d.name]||(u[d.name]={name:d.name,note:kbe(d.detail,60)||null,server:null})})),i=Object.values(u),l={label:"Open failing tools",hint:"Tools ->",path:"/tools"}}else a=o.length?"suggested tools":null,i=bc(o).map(u=>({name:u,note:null,server:null}));return!l&&a==="suggested tools"&&i.length&&(l={label:"Open suggested tools",hint:"Tools ->",path:"/tools"}),{kind:"fault",fault:r,count:e.count||n.length,scenario_keys:e.scenario_keys||bc(n.map(u=>u.scenario_key)),models:e.models||[],recommendation:e.recommendation||"",quote:null,tools_label:a,tools:i,server:null,note:s,action:l}}var dM=e=>e?.cost_source==="estimated",zG=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},sM=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[Rr(e.cost,{estimated:dM(e)})];return t!=null&&r.push(`judge ${Rr(t,{estimated:zG(e)})}`),r.join(" \xB7 ")},BG=e=>{if(!dM(e))return;let t=e.cost_rate||null;return wp({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},Cbe=(e,t,r={})=>{let n=e?.costs?.scenarios?.[t];if(n&&typeof n=="object")return n.cost==null&&n.judge_cost==null?null:{cost:n.cost??null,judgeCost:n.judge_cost??null,total:n.total??null,estimated:!!n.estimated};let o=Object.values(r||{}).filter(kc),a=o.map(u=>u.cost).filter(u=>u!=null),i=o.map(u=>u.judge_usage?.cost).filter(u=>u!=null);if(!a.length&&!i.length)return null;let s=a.length?a.reduce((u,c)=>u+Number(c),0):null,l=i.length?i.reduce((u,c)=>u+Number(c),0):null;return{cost:s,judgeCost:l,total:(s||0)+(l||0),estimated:o.some(u=>dM(u)||zG(u))||a.length>0&&a.length{let t=e.filter(Boolean);if(!t.length)return null;let r=t.filter(i=>i.cost!=null),n=t.filter(i=>i.judgeCost!=null),o=r.length?r.reduce((i,s)=>i+s.cost,0):null,a=n.length?n.reduce((i,s)=>i+s.judgeCost,0):null;return{cost:o,judgeCost:a,total:(o||0)+(a||0),estimated:t.some(i=>i.estimated)}};function DG({entry:e,testId:t}){return e?ye.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1,minWidth:0,textAlign:"right",fontFamily:X,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":t},ye.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Rr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&ye.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap"}},`judge ${Rr(e.judgeCost,{estimated:e.estimated})}`)):ye.default.createElement("span",{style:{...Fn(12),textAlign:"right"},"data-testid":t},"\u2014")}var Fn=(e,t="var(--color-text-muted)",r={})=>({fontFamily:X,fontSize:e,color:t,...r});function FG({calls:e,empty:t,style:r}){return ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:X,fontSize:11,...r}},e.map(n=>ye.default.createElement("span",{key:n.name,style:{color:n.color,fontWeight:n.weight}},n.label)),e.length===0&&ye.default.createElement("span",{style:{color:"var(--color-text-muted)"}},t))}function UG({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a}){let i=e?.scores?._models||{},s=Hi(e)?.judge?.estimated??!0;return ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"suite-models-panel"},ye.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},ye.default.createElement(Ve,null,"Models"),o&&ye.default.createElement("span",{style:Fn(11)},`judged by ${o}`)),t.length===0&&ye.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&ye.default.createElement(n0,{rows:T_(e,{results:r,scenarioCount:n,columns:t,labelFor:l=>wc(e,l)}),unit:"scenario",judgedBy:o,judgeEstimated:s}),t.length>0&&ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},t.map(l=>{let{short:u,provider:c}=lM(e,l),d=i[l],{passed:f,total:p}=cM(e,l,r,n),m=Object.entries(d?.faults||{}),y=ug(d,d?.scenarios),b=d&&m.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!d&&df(e)?{text:"scoring\u2026"}:null;return ye.default.createElement(r0,{key:l,label:l,short:u,provider:c,winner:a?.winner===l,passed:f,total:p,avgScore:d?.avg_score,latencyMs:d?.avg_duration_ms,inputTokens:d?.input_tokens,outputTokens:d?.output_tokens,cost:d?.cost,perInteraction:of(d?.cost,y),estimated:E_(d,d?.scenarios),judgeCost:d?.judge_cost,judgeCalls:d?.judge_calls||0,judgeEstimated:s,unit:"scenario",badges:m.map(([h,g])=>({tone:"error",text:`${v0(h)} \xD7${g}`})),note:b})})),a?.rationale&&ye.default.createElement(He,{padding:"12px 16px",testId:"suite-verdict",style:{display:"flex",flexDirection:"column",gap:6}},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ye.default.createElement(Ve,null,"Verdict"),a.judge&&ye.default.createElement("span",{style:Fn(11)},`judged by ${a.judge}`)),ye.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},ye.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:X,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var Ebe=e=>`minmax(240px, 1.6fr) 150px ${e.map(()=>"minmax(170px, 1fr)").join(" ")} 120px`;function Nbe({result:e,expects:t,pending:r}){if(!e)return ye.default.createElement("span",{style:{...Fn(12),fontWeight:600}},r?"\u2026":"\u2014");if(!kc(e))return ye.default.createElement("span",{style:{...Fn(12),fontWeight:600}},"\u2026");let n=Sc(e),o=n?"var(--color-success)":"var(--color-error)",a=$G(e.tool_calls,t);return ye.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},ye.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,flexWrap:"wrap",fontFamily:X,fontSize:12}},ye.default.createElement("span",{style:{fontWeight:700,color:o}},n?"[+]":"[!]"),ye.default.createElement("span",{style:{fontWeight:600,color:o}},ta(e.score)),e.fault&&ye.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},v0(e.fault))),ye.default.createElement(FG,{calls:a,empty:"no tools called"}),sM(e)&&ye.default.createElement("span",{style:{...Fn(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:BG(e),"data-testid":"scenario-cell-cost"},sM(e)))}function WG({rows:e,columns:t,run:r,resultsByKey:n,runKeys:o,running:a,openKey:i,onToggleRow:s,emptyLabel:l,renderDetail:u}){let c=Ebe(t),d=e.some(y=>y.group),f=y=>Cbe(r,y.key,n[y.key]),p=e.some(y=>f(y)?.estimated),m=[];return e.forEach(y=>{let b=y.group||"",h=m.find(g=>g.name===b);h||(h={name:b,rows:[]},m.push(h)),h.rows.push(y)}),ye.default.createElement("div",{style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflowX:"auto"}},ye.default.createElement("div",{style:{minWidth:Math.max(880,520+180*t.length)}},ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:c,gap:12,padding:"8px 12px",background:"var(--color-muted)",alignItems:"end"}},ye.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Scenario"),ye.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(y=>{let{short:b,provider:h}=lM(r,y);return ye.default.createElement("span",{key:y,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:y},ye.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},b),ye.default.createElement("span",{style:Fn(10)},h||"\xA0"))}),ye.default.createElement("span",{style:{textAlign:"right"},title:"What the scenario cost across every model, and what judging it cost"},ye.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Cost"))),m.map(y=>{let b=y.rows.filter(v=>o.has(v.key)||n[v.key]),h=t.map(v=>{let S=b.filter(k=>kc(n[k.key]?.[v])).filter(k=>Sc(n[k.key][v])).length,w=b.length,A=w&&S===w?"var(--color-success-text)":S===0?"var(--color-error-text)":"var(--color-text-cell)";return{label:v,text:w?`${Vn(S,w)} passed`:"\u2014",color:A}}),g=Abe(y.rows.map(f));return ye.default.createElement("div",{key:y.name||"__ungrouped"},(y.name||d)&&ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:c,gap:12,padding:"7px 12px",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",alignItems:"center"}},ye.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},y.name||"ungrouped"),ye.default.createElement("span",{style:Fn(11)},Ut(y.rows.length,"scenario")),h.map(v=>ye.default.createElement("span",{key:v.label,style:{fontFamily:X,fontSize:11,fontWeight:600,color:v.color}},v.text)),ye.default.createElement(DG,{entry:g,testId:"scenario-group-cost"})),y.rows.map(v=>{let x=i===v.key,S=iM(v,"tools"),w=o.has(v.key)||!!n[v.key],A=v.enabled===!1;return ye.default.createElement("div",{key:v.key},ye.default.createElement("div",{"data-testid":"scenario-row","data-scenario-key":v.key,onClick:()=>s(v.key),className:x?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:c,gap:12,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:x?"var(--color-muted)":void 0,opacity:A?.5:1}},ye.default.createElement("div",{style:{minWidth:0}},ye.default.createElement("div",{style:{...Fn(11),marginBottom:2}},`${v.key}${A?" \xB7 disabled":""}`),ye.default.createElement("div",{style:{fontSize:13,lineHeight:"18px",color:"var(--color-text-primary)",textWrap:"pretty"}},v.prompt)),ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignContent:"flex-start",minWidth:0}},S.map(k=>ye.default.createElement("span",{key:k,style:{fontFamily:X,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"}},k)),S.length===0&&iM(v,"contains").map(k=>ye.default.createElement("span",{key:`contains-${k}`,style:{fontFamily:X,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:"the answer must contain this"},`contains: ${k}`))),t.map(k=>ye.default.createElement(Nbe,{key:k,result:n[v.key]?.[k],expects:S,pending:a&&w})),ye.default.createElement(DG,{entry:f(v),testId:"scenario-row-cost"})),x&&u(v))}))}),e.length===0&&ye.default.createElement(Zn,{style:{borderTop:"1px solid var(--color-border-light)"}},l||"[+] nothing failed in this group"),p&&ye.default.createElement("div",{style:{...Fn(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},Es)))}function Tbe(e){let t=[];e.duration_ms!=null&&t.push(so(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${gn((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=sM(e);return r&&t.push(r),t.join(" \xB7 ")}function Obe({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=lM(t,e),i=ye.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:e},a),s=(h,g)=>ye.default.createElement("div",{"data-testid":"scenario-result-detail",style:{background:"var(--color-card)",border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0}},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},i,g),ye.default.createElement("div",{style:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:10}},h));if(!r||!kc(r))return s(ye.default.createElement("span",{style:Fn(11)},o?"waiting for this replay\u2026":"not part of this run"),ye.default.createElement(Ee,{tone:"muted"},o?"pending":"no result"));let u=Sc(r)?"success":"error",c=$G(r.tool_calls,n),d=r.diagnosis||{},f=d.judge||{},p=r.fault||(r.status==="errored"?"run_error":null),m=[d.summary,d.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",y=Object.entries(r.scores||{}),b=Tbe(r);return s(ye.default.createElement(ye.default.Fragment,null,ye.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:X,fontSize:11}},ye.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"tools"),ye.default.createElement(FG,{calls:c,empty:"none called",style:{display:"contents"}})),p&&ye.default.createElement("div",{style:{background:"var(--color-error-soft)",borderRadius:8,padding:"8px 10px",fontSize:12,lineHeight:"18px",color:"var(--color-error-text)",textWrap:"pretty"}},ye.default.createElement("span",{style:{fontFamily:X,fontWeight:700}},`[!] ${v0(p)}`),m?` \u2014 ${m}`:"",f.suggested_tool?.name&&ye.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11}},`suggested tool: ${f.suggested_tool.name}${f.suggested_tool.description?` \u2014 ${f.suggested_tool.description}`:""}`),f.instruction_change&&ye.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${f.instruction_change}\u201D`)),r.output?ye.default.createElement("div",{style:{fontFamily:"var(--font-text)",fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",maxHeight:190,overflow:"auto",whiteSpace:"pre-wrap",textWrap:"pretty"}},r.output):ye.default.createElement("div",{style:Fn(11)},"answer not retained for this run"),y.length>0&&ye.default.createElement("div",{style:{...Fn(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},y.map(([h,g])=>ye.default.createElement("span",{key:h},v0(h)," ",ye.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},g==null?"skipped":ta(g)))))),ye.default.createElement(ye.default.Fragment,null,ye.default.createElement(Ee,{tone:u},r.score==null?r.status:`${r.status} \xB7 ${ta(r.score)}`),b&&ye.default.createElement("span",{style:{marginLeft:"auto",...Fn(11)},title:BG(r)},b),r.agent_run_id&&ye.default.createElement(gc,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:b?void 0:{marginLeft:"auto"}})))}function HG({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0}){let u=iM(e,"tools"),c=n[e.key]||{},d=r.some(p=>c[p]),f=a||d;return ye.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"12px 12px 14px"},"data-testid":"scenario-drilldown"},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10,flexWrap:"wrap"}},ye.default.createElement("span",{style:Fn(11)},e.key),ye.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),ye.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},u.join(" or ")||"\u2014"),l&&ye.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:14}},ye.default.createElement("button",{type:"button",onClick:p=>{p.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:X,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),ye.default.createElement(Wi,{onClick:()=>i?.(e),title:"Run only this scenario under the selected models"},"re-run scenario"))),e.notes&&ye.default.createElement("div",{style:{fontSize:12,fontStyle:"italic",color:"var(--color-text-secondary)",marginBottom:10}},e.notes),e.catalogChanged&&ye.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginBottom:10}},"This run used an earlier version of this question. Re-running uses the current version."),t?f?ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12}},r.map(p=>ye.default.createElement(Obe,{key:p,label:p,run:t,result:c[p],expects:u,running:o}))):ye.default.createElement("div",{style:Fn(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):ye.default.createElement("div",{style:Fn(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function KG({items:e,columns:t=[],agentName:r,onNavigate:n,onOpenScenario:o,run:a=null,results:i=[],evaluation:s=null,runNumber:l=null,scenarios:u=[]}){let[c,d]=(0,ye.useState)("all"),f=t.length>1,p=f?c:"all",m=f?gV(e,i,v=>wc(a,v)):e,y=zP(m,p),b=f?hV(m,t):{},h=v=>MG({item:v,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:I_(),labelFor:x=>wc(a,x)}),g=v=>{let x=Ut((v.scenario_keys||[]).length,"scenario");if(v.kind==="instruction")return`${(v.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let S=bc(v.models||[]);if(t.length<=1||S.length===0)return x;let A=S.length>=t.length?t.length===2?"both models":"all models":S.map(k=>Io(k).short).join(", ");return`${x} \xB7 ${A}`};return ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},f&&ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},ye.default.createElement("span",{style:Fn(11)},"for"),ye.default.createElement(io,{square:!0,mono:!0,selected:p==="all",onClick:()=>d("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(v=>ye.default.createElement(io,{key:v,square:!0,mono:!0,selected:p===v,onClick:()=>d(v),title:`Only what ${v} needs fixed`,testId:"fix-filter-model"},`${Io(v).short} ${b[v]??0}`))),y.length===0&&ye.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${Io(p).short}`),ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},y.map((v,x)=>{let S=v.kind==="instruction",w=S?"info":"error",A=[],k=new Set;(v.tools||[]).forEach(j=>{let F=typeof j=="string"?j:j?.name;!F||k.has(F)||(k.add(F),A.push({name:F,note:typeof j=="object"&&(j.note||j.server?.name)||null}))});let _=v.server,C=_?.status==="enabled",E=r||"the agent";return ye.default.createElement("div",{key:`${v.fault}-${x}`,"data-testid":"scenario-recommendation",style:{border:"1px solid var(--color-border)",borderRadius:10,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10,minWidth:0}},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ye.default.createElement(ii,{kind:S?"info":"fault"}),ye.default.createElement(Ee,{tone:w},`${v0(v.fault)}${v.count>1?` \xD7${v.count}`:""}`),o&&(v.scenario_keys||[]).length>0?ye.default.createElement("button",{type:"button",onClick:()=>o(v.scenario_keys),title:`Show ${(v.scenario_keys||[]).join(", ")} \u2014 the question, the answer and the tools it called`,style:{...Fn(11),background:"none",border:0,padding:0,cursor:"pointer",color:"var(--color-text-link, var(--color-text-primary))",textDecoration:"underline",textUnderlineOffset:2}},g(v)):ye.default.createElement("span",{style:Fn(11)},g(v))),v.recommendation&&ye.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},v.recommendation),v.quote&&ye.default.createElement("div",{style:{background:"var(--color-muted)",borderRadius:8,padding:"8px 10px",fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",fontStyle:"italic"}},"\u201C",v.quote,"\u201D"),A.length>0&&ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},ye.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},v.tools_label||"tools"),ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},A.map(j=>ye.default.createElement("span",{key:j.name,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",fontFamily:X,fontSize:11,maxWidth:"100%"}},ye.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},j.name),j.note&&ye.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:j.note},j.note))))),_&&ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:12,color:"var(--color-text-cell)"}},ye.default.createElement("span",null,"served by"),ye.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},_.name||_.key),ye.default.createElement(Ee,{tone:C?"success":"warning",size:10,style:{padding:"1px 6px"}},C?`enabled for ${E}`:`${_.status||"unknown"} \xB7 not enabled for ${E}`)),v.note&&ye.default.createElement("div",{style:{fontSize:12,lineHeight:"18px",color:"var(--color-text-secondary)",textWrap:"pretty"}},v.note),ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",paddingTop:2,flexWrap:"wrap"}},v.action?.path&&ye.default.createElement(se,{size:"sm",onClick:()=>n?.(v.action.path)},v.action.label),v.action?.hint&&ye.default.createElement("span",{style:{...Fn(11),whiteSpace:"nowrap"}},v.action.hint),ye.default.createElement(o0,{build:()=>h(v),style:{marginLeft:"auto"}}),ye.default.createElement(tM,{item:v,evaluation:s,run:a})))})))}var Pbe=e=>{let{results:t,fix_items:r,...n}=e;return n},fM={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:X,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};function pM({evaluation:e,modelProviders:t,onChanged:r,onDelete:n,deleting:o=!1,initialRunId:a=null,onRunSelected:i}){let s=e.id,l=e.agent?.name||"Agent",[u,c]=(0,Fe.useState)(!1),[d,f]=(0,Fe.useState)(null),[p,m]=(0,Fe.useState)([]),[y,b]=(0,Fe.useState)(e.scenario_groups||[]),[h,g]=(0,Fe.useState)(e.latest_run?[e.latest_run]:[]),[v,x]=(0,Fe.useState)(null),[S,w]=(0,Fe.useState)(e.latest_run?.id??null),[A,k]=(0,Fe.useState)({}),[_,C]=(0,Fe.useState)((e.compare_models||[]).join(", ")),E=(0,Fe.useMemo)(()=>t===void 0?[]:t??Eb,[t]),j=Ou(E),F=(0,Fe.useMemo)(()=>Zv(j,{providers:E}),[j,E]),[D,z]=(0,Fe.useState)(null),[N,O]=(0,Fe.useState)(!1),[$,T]=(0,Fe.useState)([]),[I,P]=(0,Fe.useState)(""),[H,Q]=(0,Fe.useState)(!1),[K,ue]=(0,Fe.useState)(""),[pe,re]=(0,Fe.useState)(null),[_e,de]=(0,Fe.useState)(null),[le,Z]=(0,Fe.useState)(!1),[ee,L]=(0,Fe.useState)(null),[B,q]=(0,Fe.useState)(0),M=(0,Fe.useCallback)(async()=>{let we=await fetch(`/api/evaluations/${s}/scenarios`);if(!we.ok)return;let yt=await we.json();m(yt.scenarios||[]),b(yt.groups||[])},[s]),ne=(0,Fe.useCallback)(async()=>{try{let we=await fetch(`/api/evaluations/${s}`);if(!we.ok)return f(`Could not load this suite (HTTP ${we.status})`),null;let or=(await we.json()).evaluation||{};return m(or.scenarios||[]),b(or.scenario_groups||[]),g(or.runs||[]),x(Number.isFinite(or.run_count)?or.run_count:null),f(null),or}catch(we){return f(`Could not load this suite: ${we.message}`),null}finally{c(!0)}},[s]),U=(0,Fe.useCallback)(async we=>{if(!we)return null;let yt=await fetch(`/api/evaluations/${s}/runs/${we}`);if(!yt.ok)return null;let Cr=(await yt.json()).run;return Cr?(k(Yr=>({...Yr,[Cr.id]:Cr})),g(Yr=>Yr.map(Da=>Da.id===Cr.id?{...Da,...Pbe(Cr)}:Da)),Cr):null},[s]);(0,Fe.useEffect)(()=>{let we=!1;return(async()=>{let yt=await ne();if(we)return;let or=yt?.runs?.[0]?.id??null,Cr=a&&yt?.runs?.some(Yr=>Yr.id===a)?a:null;w(Yr=>Cr||(Yr&&yt?.runs?.some(Da=>Da.id===Yr)?Yr:or)),(Cr||or)&&U(Cr||or)})(),()=>{we=!0}},[ne,U]);let oe=e.latest_run?.id??null;(0,Fe.useEffect)(()=>{!oe||h.some(we=>we.id===oe)||ne()},[oe,h,ne]);let ve=A[S]||h.find(we=>we.id===S)||null,Ze=h[0]||null,Ht=df(ve)?ve.id:df(Ze)?Ze.id:null;(0,Fe.useEffect)(()=>{if(!Ht)return;let we=!1,yt=setTimeout(async()=>{let or=null;try{or=await U(Ht)}catch{or=null}if(!we){if(or&&!df(or)){await ne(),r?.();return}q(Cr=>Cr+1)}},3e3);return()=>{we=!0,clearTimeout(yt)}},[Ht,B,U,ne,r]);let Mt=(0,Fe.useCallback)(async()=>{try{let we=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!we.ok)return;let yt=await we.json(),or=yV(yt.sandboxes);T(or),P(Cr=>bV(Cr,or))}catch{}},[]);(0,Fe.useEffect)(()=>{Mt()},[Mt]);let fe=hc(_),Xe=async we=>{O(!0),z(null);try{let yt=await fetch(`/api/evaluations/${s}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(xV(we,fe,I))}),or=await yt.json().catch(()=>({}));if(!yt.ok)throw or.code==="sandbox_refused"&&Mt(),new Error((or.errors||[or.error]).filter(Boolean).join(", ")||"Run failed to start");let Cr=or.run;g(Yr=>[Cr,...Yr.filter(Da=>Da.id!==Cr.id)]),x(Yr=>Yr==null?null:Yr+1),k(Yr=>({...Yr,[Cr.id]:{...Cr,results:[]}})),w(Cr.id),L(null),r?.()}catch(yt){z(yt.message)}finally{O(!1)}},gr=we=>{w(we),L(null),A[we]||U(we)};(0,Fe.useEffect)(()=>{!a||a===S||!h.some(we=>we.id===a)||gr(a)},[a]);let rr=async we=>{we.id&&(await fetch(`/api/evaluations/${s}/scenarios/${we.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:we.enabled===!1}})}),await M())},nr=async()=>{re(null);let we=await fetch(`/api/evaluations/${s}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:K})}),yt=await we.json().catch(()=>({}));if(!we.ok){re((yt.errors||[yt.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}m(yt.scenarios||[]),b(yt.groups||[]),Q(!1),r?.()},qe=ve,Gt=(0,Fe.useMemo)(()=>(qe?.results||[]).filter(we=>we&&we.scenario_key),[qe]),Ir=(0,Fe.useMemo)(()=>x0(qe,Gt,e),[qe,Gt,e]),co=(0,Fe.useMemo)(()=>Gt.reduce((we,yt)=>((we[yt.scenario_key]||={})[wc(qe,yt)]=yt,we),{}),[Gt,qe]),ys=(0,Fe.useMemo)(()=>new Set(uM(qe,p)),[qe,p]),ca=df(qe),eu=_g(qe,Ir,p),me=jG(qe,Gt,Ir,p),Ge=(0,Fe.useCallback)(we=>ys.has(we.key)||!!co[we.key],[ys,co]),rt=(0,Fe.useMemo)(()=>tV(p,co),[p,co]),ur=we=>Ir.some(yt=>{let or=co[we.key]?.[yt];return kc(or)&&!Sc(or)}),Xo=rt.filter(we=>!_e||(we.group||"")===_e).filter(we=>!le||ur(we)),fo=h.findIndex(we=>we.id===qe?.id),da=Vv(h,v),Zo=fo>=0?da-fo:null,Ia=new Set(rt.filter(Ge).map(we=>we.group).filter(Boolean)).size,Ys=Gt.filter(kc).length,Gi=eu*Math.max(Ir.length,1),Sf=new Set(Gt.filter(we=>kc(we)&&!Sc(we)).map(we=>we.scenario_key)).size,vs=qe?.scores?._verdict||null,tu=Object.prototype.hasOwnProperty.call(qe?.scores||{},"_judge_label")?qe.scores._judge_label||"rules":vs?.judge&&vs.judge!=="pass rate"?vs.judge:e.judge_model||"rules",Qn=(0,Fe.useMemo)(()=>qe?LG(qe,Gt):[],[qe,Gt]),W0=(0,Fe.useCallback)(we=>{let yt=Array.isArray(we)?we[0]:we;yt&&(de(null),Z(!1),L(yt),requestAnimationFrame(()=>{document.querySelector(`[data-scenario-key="${CSS.escape(yt)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"})}))},[]),kf=Object.keys(qe?.scores||{}).filter(we=>!we.startsWith("_")),H0=(0,Fe.useCallback)(we=>{let yt=we.id===qe?.id?Gt:[],or=x0(we,yt,e),Cr=_g(we,or,p);return or.map(Yr=>({label:Yr,short:Io(Yr).short,...cM(we,Yr,yt,Cr)}))},[qe,Gt,e,p]),K0=(0,Fe.useCallback)((we,yt,or)=>{if(!yt||yt.status!=="complete"||we.status!=="complete")return Gv(we,yt,{olderNumber:or});let Cr=x0(we,we.id===qe?.id?Gt:[],e),Yr=x0(yt,[],e),Da=_g(yt,Yr,p)===_g(we,Cr,p)&&Yr.length===Cr.length;return Gv(we,yt,{olderNumber:or,comparable:Da})},[qe,Gt,e,p]),zg=u?p.length:e.scenario_count??0,Bg=u?p.filter(we=>we.enabled!==!1&&(!_e||(we.group||"")===_e)).length:zg,q0=`Run ${Ut(Bg,"scenario")}${fe.length?` \xD7 ${Ut(fe.length,"model")}`:""}`,I2=qe?[fo>0?`Viewing run #${Zo} (latest is #${da})`:`Run #${Zo??"?"} \xB7 ${_o(qe.completed_at||qe.created_at)}`,l,`${Ut(eu,"scenario")}${Ia?` in ${Ut(Ia,"group")}`:""} \xD7 ${Ut(Ir.length,"model")}`,qe.status==="failed"?"failed":`${Vn(me.passed,me.total)} passed`,hg(qe)&&`against ${hg(qe)}`].filter(Boolean).join(" \xB7 "):`${l} \xB7 ${Ut(zg,"scenario")}${y.length?` in ${Ut(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?"no runs yet":"loading\u2026"}`,V0=qe&&qe.status==="complete"?`/evaluations/${s}/runs/${qe.id}/report`:null,D2=[...new Set([...y,...rt.map(we=>we.group).filter(Boolean)])],j2=[{label:`All ${rt.length||zg}`,value:null}].concat(D2.map(we=>({label:u?`${we} ${rt.filter(yt=>yt.group===we).length}`:we,value:we}))),Fg=rt.length===0,$2=le?"[+] nothing failed in this group":"[ ] no scenarios";return Fe.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel"},Fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Fe.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},I2),ca&&Fe.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"suite-run-progress"},`running \xB7 ${Ys} of ${Gi} results in`),Fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Fe.default.createElement(se,{size:"sm",onClick:()=>{ue(IV(p)),re(null),Q(!H)}},H?"Cancel":"Edit scenarios"),Fe.default.createElement(Qv,{value:_,onChange:C,models:F,inputLabel:"Models to run",placeholder:"models, e.g. gpt-5-mini, ollama/qwen3:8b",title:"Blank runs the suite's saved models, or the agent's own model when it has none. Prefix a typed name with its provider (ollama/llama3.2) when the name alone is ambiguous.",style:{...fM,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),$.length>0&&Fe.default.createElement("select",{value:I,onChange:we=>P(we.target.value),style:{...fM,maxWidth:260},"aria-label":"Run against sandbox",title:"Replays also reach this checkout sandbox's app runtime, as if the agent listed it in its MCP servers. The agent is not changed.","data-testid":"suite-run-sandbox"},Fe.default.createElement("option",{value:""},"Run against: agent's own tools"),$.map(we=>Fe.default.createElement("option",{key:we.value,value:we.value},`Run against sandbox ${we.label}`))),Fe.default.createElement(se,{variant:"primary",size:"sm",disabled:N||!u||Bg===0,onClick:()=>Xe(_e?{group:_e}:{}),testId:"suite-run-button"},N?"Starting\u2026":q0))),(d||D||qe?.status==="failed")&&Fe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},d||D||`Run failed: ${qe.error_message||"unknown error"}`),H&&Fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},Fe.default.createElement("textarea",{value:K,onChange:we=>ue(we.target.value),rows:Math.min(Math.max(p.length+4,6),24),style:{...fM,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),Fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},Fe.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",Fe.default.createElement("code",{style:{fontFamily:X}},"# Heading")," starts a group; ",Fe.default.createElement("code",{style:{fontFamily:X}},"| tools: a, b"),", ",Fe.default.createElement("code",{style:{fontFamily:X}},"| contains: x"),", ",Fe.default.createElement("code",{style:{fontFamily:X}},"| not_contains: y")," set expectations. Keep a scenario's ",Fe.default.createElement("code",{style:{fontFamily:X}},"key")," to keep its history."),Fe.default.createElement(se,{variant:"primary",size:"sm",onClick:nr},"Save scenarios")),pe&&Fe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},pe)),Fe.default.createElement(e0,{runs:h,runCount:v,evaluation:e,agentName:l,selectedId:qe?.id??null,onOpen:we=>{gr(we.id),i?.(we.id)},barsFor:H0,deltaFor:K0}),qe&&qe.status!=="failed"&&Fe.default.createElement(Rv,{spend:Hi(qe),judgedBy:tu,testId:"suite-run-spend"}),Fe.default.createElement(UG,{run:qe,columns:qe?Ir:[],results:Gt,scenarioCount:eu,judgedBy:tu,verdict:vs}),Fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Fe.default.createElement(Ve,{style:{marginRight:4}},"Scenarios"),j2.map(we=>Fe.default.createElement(io,{key:we.label,selected:_e===we.value,onClick:()=>de(we.value)},we.label)),Fe.default.createElement(io,{square:!0,mono:!0,selected:le,onClick:()=>Z(!le),style:{marginLeft:"auto",background:"transparent"},title:"Hide scenarios that passed on every model"},le?"[x] failed only":"[ ] failed only")),Fg&&d?Fe.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[!] suite not loaded"):Fg&&!u?Fe.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"loading\u2026"):Fg?Fe.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):Fe.default.createElement(WG,{rows:Xo,columns:qe?Ir:[],run:qe,resultsByKey:co,runKeys:ys,running:ca,openKey:ee,onToggleRow:we=>L(ee===we?null:we),emptyLabel:$2,renderDetail:we=>Fe.default.createElement(HG,{scenario:we,run:qe,columns:qe?Ir:[],resultsByKey:co,running:ca,inRun:Ge(we),canMutate:!we.orphan,onRerun:yt=>Xe({keys:[yt.key]}),onToggleEnabled:rr})})),qe&&qe.status!=="failed"&&Fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Fe.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Fe.default.createElement(Ve,null,"What to fix"),Fe.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},`${Ut(Qn.length,"item")} \xB7 ${Ut(Math.max(me.total-me.passed,0),"fault")} across ${Ut(Sf,"scenario")}`)),Qn.length>0?Fe.default.createElement(KG,{items:Qn,columns:Ir,agentName:l,onNavigate:kt,onOpenScenario:W0,run:qe,results:Gt,evaluation:e,runNumber:Zo,scenarios:p}):Fe.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},ca?"[ ] scoring\u2026":"[+] nothing to fix")),Fe.default.createElement(sf,{evaluation:e,run:qe,keys:kf.length?kf:null,spend:Hi(qe),reportPath:V0,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var Ye=V(Y());var mM=[{type:"response_present",key:"response_present",label:"Response present",config:{}},{type:"min_length",key:"response_length",label:"Response length \u2265 40 chars",config:{chars:40}},{type:"max_latency_ms",key:"latency",label:"Latency \u2264 5s",config:{ms:5e3}},{type:"token_budget",key:"token_budget",label:"Output \u2264 1000 tokens",config:{output_tokens:1e3}}],qG=[{type:"trace_error_rate",key:"trace_error_rate",label:"Trace error rate \u2264 5% (telemetry, 7d)",config:{max_error_rate:5,window_hours:168}},{type:"trace_latency",key:"trace_latency",label:"Avg trace latency \u2264 5s (telemetry, 7d)",config:{max_avg_ms:5e3,window_hours:168}}],Jl={padding:"8px 12px",borderRadius:8,fontSize:13,fontFamily:"inherit",boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},VG={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},Mbe={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function gM({agents:e,agentId:t,judgeProvider:r,judgeProviderError:n=!1,modelProviders:o,onCreated:a,onCancel:i}){let[s,l]=(0,Ye.useState)({agent_id:t?String(t):"",name:"",sample_size:20,criteria:mM.map(C=>C.key),containsPattern:"",llmJudgePrompt:"",judgeKind:"manual",judgeModel:"",compareModels:"",scenariosText:"",compareRestore:new Map}),[u,c]=(0,Ye.useState)(null),[d,f]=(0,Ye.useState)(!1),p=(0,Ye.useId)(),m=(0,Ye.useMemo)(()=>o===void 0?[]:o??Eb,[o]),y=Ou(r&&!m.includes(r)?[...m,r]:m),b=Dbe(s.agent_id),h=(0,Ye.useMemo)(()=>r?Zv(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,Ye.useMemo)(()=>g?Zv(y,{providers:m}):b,[y,m,g,b]),x=C=>l(E=>({...E,...C})),S=C=>l(E=>{let j=!!C.trim();if(j===!!E.scenariosText.trim())return{...E,scenariosText:C};let{models:F,restore:D}=kV(hc(E.compareModels),y,{providers:m,qualify:j,restore:E.compareRestore});return{...E,scenariosText:C,compareModels:Jv(F),compareRestore:D}}),w=(C,E)=>x({criteria:E?[...s.criteria,C]:s.criteria.filter(j=>j!==C)}),A=()=>{let C=[...mM,...qG].filter(E=>s.criteria.includes(E.key)).map(({key:E,type:j,config:F})=>({key:E,type:j,config:F}));return s.containsPattern.trim()&&C.push({key:"contains",type:"contains",config:{pattern:s.containsPattern.trim()}}),s.llmJudgePrompt.trim()&&C.push({key:"quality",type:"llm_judge",config:{prompt:s.llmJudgePrompt.trim()}}),C},k=async C=>{C.preventDefault(),f(!0),c(null);try{let E=await fetch("/api/evaluations",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{agent_id:s.agent_id,name:s.name,sample_size:s.sample_size,judge_kind:s.judgeKind==="judge_defined"?"judge_defined":s.llmJudgePrompt.trim()?"llm":"rules",judge_model:s.judgeModel.trim()||void 0,compare_models:hc(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:A(),scenarios_text:s.scenariosText.trim()||void 0}})}),j=await E.json().catch(()=>({}));if(!E.ok)throw new Error((j.errors||[j.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${E.status})`);a?.(j.evaluation)}catch(E){c(E.message)}finally{f(!1)}},_=C=>Ye.default.createElement("label",{key:C.key,style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--color-text-primary)"}},Ye.default.createElement("input",{type:"checkbox",checked:s.criteria.includes(C.key),onChange:E=>w(C.key,E.target.checked),style:{accentColor:"var(--color-accent-ui)"}}),C.label);return Ye.default.createElement(He,{testId:"new-evaluation-form"},Ye.default.createElement("form",{onSubmit:k,style:{display:"flex",flexDirection:"column",gap:16}},Ye.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),Ye.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>x({agent_id:C.target.value}),style:{...Jl,width:"100%",opacity:t?.7:1}},!t&&Ye.default.createElement("option",{value:""},"Select agent\u2026"),e.map(C=>Ye.default.createElement("option",{key:C.id,value:C.id},C.name)))),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Name"),Ye.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>x({name:C.target.value}),placeholder:"Response Quality",style:{...Jl,width:"100%"}})),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Sample size"),Ye.default.createElement("input",{type:"number",min:"1",max:"100",value:s.sample_size,onChange:C=>x({sample_size:C.target.value}),style:{...Jl,width:"100%",fontFamily:X}}))),Ye.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),Ye.default.createElement("select",{value:s.judgeKind,onChange:C=>x({judgeKind:C.target.value}),style:{...Jl,width:"100%"}},Ye.default.createElement("option",{value:"manual"},"Manual criteria"),Ye.default.createElement("option",{value:"judge_defined"},"Judge defines KPIs from agent goals"))),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",htmlFor:`${p}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),Ye.default.createElement(gl,{id:`${p}-judge`,"aria-describedby":r===void 0?void 0:`${p}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>x({judgeModel:C}),style:{...Jl,width:"100%",fontFamily:X,fontSize:12}}),r!==void 0&&Ye.default.createElement("p",{id:`${p}-judge-provider`,style:VG},Ibe(r,n))),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",htmlFor:`${p}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),Ye.default.createElement(Qv,{inputId:`${p}-compare`,describedBy:`${p}-compare-hint`,value:s.compareModels,onChange:C=>x({compareModels:C}),models:v,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Jl,width:"100%",fontFamily:X,fontSize:12}}),Ye.default.createElement("p",{id:`${p}-compare-hint`,style:VG},g?"Each model replays the scenarios. Any model name can be typed.":"Compares the agent's generations recorded under each model name. Add scenarios to try any model."))),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Scenarios (optional) \u2014 paste user messages to replay, one per line"),Ye.default.createElement("textarea",{value:s.scenariosText,onChange:C=>S(C.target.value),rows:s.scenariosText?8:3,placeholder:`# Open tickets Which open tickets mention a refund? | tools: find_tickets # Change history -Who changed the shipping policy last week?`,style:{...Hl,width:"100%",fontFamily:X,fontSize:12,lineHeight:"18px"}}),Ye.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)",textWrap:"pretty"}},"With scenarios, each run replays every message through the agent \u2014 once per model in \u201CCompare models\u201D \u2014 and reports which tasks it completes, what faults it hits, and how to fix them. ",Ye.default.createElement("code",{style:{fontFamily:X}},"# Heading")," lines group related tasks so they can be run together; ",Ye.default.createElement("code",{style:{fontFamily:X}},"| tools: a, b")," names the tool a task should call.")),s.judgeKind==="judge_defined"?Ye.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"On the first run the judge reads the agent's instructions and recent interactions, defines 3\u20136 KPIs, then scores samples against them. KPIs persist so later runs (and model cohorts) stay comparable."):Ye.default.createElement(Ye.default.Fragment,null,Ye.default.createElement("div",null,Ye.default.createElement(qe,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),Ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},rM.map(k))),Ye.default.createElement("div",null,Ye.default.createElement(qe,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),Ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},OG.map(k))),Ye.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),Ye.default.createElement("input",{type:"text",value:s.containsPattern,onChange:A=>b({containsPattern:A.target.value}),placeholder:"e.g. password reset",style:{...Hl,width:"100%"}})),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",style:{display:"block",marginBottom:6}},"LLM judge criterion (optional, needs provider credentials)"),Ye.default.createElement("input",{type:"text",value:s.llmJudgePrompt,onChange:A=>b({llmJudgePrompt:A.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Hl,width:"100%"}})))),u&&Ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},u),Ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ye.default.createElement(de,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&Ye.default.createElement(de,{onClick:i},"Cancel"))))}function nbe(e,t){return e?`The judge runs on ${rbe[e]||e}.`:t?"Provider credentials could not be read, so the judge's provider is unknown. Check the provider API keys in Settings.":"No provider has credentials for a judge. Add a provider API key in Settings."}function obe(e){let[t,r]=(0,Ye.useState)([]);return(0,Ye.useEffect)(()=>{if(r([]),!e)return;let n=!1;return fetch(`/api/agents/${encodeURIComponent(e)}/recorded_models`).then(o=>o.ok?o.json():{}).then(o=>{!n&&Array.isArray(o.models)&&r(o.models)}).catch(()=>{}),()=>{n=!0}},[e]),t}var Se=G(Y());var abe={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:X,fontSize:12,color:"var(--color-info)"},qn=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:X,fontSize:e,color:t,...r});function ibe({stats:e}){if(!e)return Se.default.createElement("span",{style:qn()},"\u2014");if(e.skipped)return Se.default.createElement("div",null,Se.default.createElement("span",{style:qn(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Se.default.createElement("div",{style:{...qn(),marginTop:2,textWrap:"pretty"},title:e.reason},Mv(e.reason,90)));let t=Number(e.score),r=ra[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${Un(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${Xo(e.min)} \xB7 max ${Xo(e.max)}`),e.source==="telemetry"){n.push(`${e.traces} traces \xB7 ${e.window_hours}h`);let o=e.observed||{};o.error_rate!=null&&n.push(`observed ${o.error_rate}% errors (${o.errors})`),o.avg_duration_ms!=null&&n.push(`observed avg ${to(o.avg_duration_ms)}`)}return Se.default.createElement("div",null,Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6}},Se.default.createElement("span",{style:qn(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",Xo(t)),e.source==="telemetry"&&Se.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:qn(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Se.default.createElement("div",{style:{...qn(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function sbe({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>vG({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:S2()});return Se.default.createElement("div",{"data-testid":"fix-item",style:{border:"1px solid var(--color-border)",borderRadius:10,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10,minWidth:0}},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(Ra,{kind:"fault"}),Se.default.createElement(Te,{tone:"error"},e.label),Se.default.createElement("span",{style:qn()},e.scope)),Se.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},e.text),e.chips?.length>0&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},Se.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},e.chipsLabel),Se.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},e.chips.map(a=>Se.default.createElement("span",{key:a,style:{fontFamily:X,fontSize:11,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",color:"var(--color-text-primary)",fontWeight:600}},a)))),e.details?.length>0&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:3}},e.details.map(a=>Se.default.createElement("span",{key:a,style:qn(11,"var(--color-text-cell)",{textWrap:"pretty"})},a))),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",flexWrap:"wrap"}},e.action?.path&&Se.default.createElement(de,{size:"sm",onClick:()=>It(e.action.path)},e.action.label),e.action?.hint&&Se.default.createElement("span",{style:{...qn(),whiteSpace:"nowrap"}},e.action.hint),Se.default.createElement(Gv,{build:o,style:{marginLeft:"auto"}})))}function oM({evaluation:e,runs:t=[],runCount:r=null,runId:n,loading:o=!1,running:a=!1,onSelectRun:i,onRun:s,onBack:l,onOpenEvaluation:u,onDelete:c,deleting:d=!1}){let[f,p]=(0,Se.useState)("all"),[m,y]=(0,Se.useState)(!1),x=(K,le)=>Se.default.createElement("button",{type:"button",onClick:le,style:abe},K),h=t.findIndex(K=>K.id===n),g=h>=0?t[h]:t[0],v=g?ng(g,Math.max(h,0),t,r):null,b=Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},x("Evaluations",l),Se.default.createElement("span",{style:qn(12)},"/"),x(e?.name||"Evaluation",u),Se.default.createElement("span",{style:qn(12)},"/"),Se.default.createElement("span",{style:qn(12,"var(--color-text-primary)",{fontWeight:700})},g?`Run #${v}`:"Runs"));if(!e)return Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Se.default.createElement("div",null,x("Evaluations",l)),Se.default.createElement(Ve,null,Se.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!g)return Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},b,o?Se.default.createElement("div",{className:"flex items-center justify-center h-64"},Se.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):Se.default.createElement(Ve,null,Se.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let _=Iv(g),w=_.length?_:[null],C=rg(g),S=K=>C.find(le=>le.label===K)||(K==null?C[0]:null),k=g.scores?._verdict,A=Array.isArray(g.scores?._missing_models)?g.scores._missing_models:[],O=tg(g).map(([K,le])=>({key:K,value:le,criterion:Dv(e,K)})),$=K=>O.filter(le=>js(le.criterion)===K).length,F=wP.filter(K=>$(K.id)>0),P=K=>w.some(le=>{let pe=Xd(K.value,le);return pe&&(pe.skipped||pe.score!=null&&pe.score<.7)}),z=O.filter(K=>(f==="all"||js(K.criterion)===f)&&(!m||P(K))),N=wP.map(K=>({...K,rows:z.filter(le=>js(le.criterion)===K.id)})).filter(K=>K.rows.length),D=v2(e,{...g,number:v}),T=ji(g),E=vo(g.completed_at||g.created_at),I=g.status==="complete"&&g.samples_evaluated?` \xB7 ${Un(g.samples_passed||0,g.samples_evaluated)} passed`:"",j={fontFamily:X,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"top",whiteSpace:"nowrap"},q={padding:"10px 12px",verticalAlign:"top"},te={padding:"7px 12px",verticalAlign:"middle"};return Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},b,Se.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Se.default.createElement("div",{style:{minWidth:0}},Se.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},`Run #${v}`),Se.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},`${e.name} \xB7 ${E} \xB7 @${e.agent?.name||"agent"} \xB7 ${Yd(e,g)}${I}`)),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((K,le)=>Se.default.createElement(eo,{key:K.id,square:!0,mono:!0,selected:K.id===g.id,onClick:()=>i?.(K),title:`${K.status} \xB7 ${vo(K.completed_at||K.created_at)}`},`#${ng(K,le,t,r)}`)),Se.default.createElement(de,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Se.default.createElement(Wv,{spend:T,judgedBy:eg(e,g)}),g.status==="failed"?Se.default.createElement(Ve,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Se.default.createElement("span",{style:qn(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},g.error_message)):g.status!=="complete"?Se.default.createElement(Ve,{"data-testid":"run-pending",padding:"14px 16px"},Se.default.createElement("span",{style:qn(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${g.status}`),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6}},"Scores appear once the run completes.")):Se.default.createElement(Se.default.Fragment,null,_.length>1&&Se.default.createElement(Vv,{rows:x2(g,{columns:_}),unit:"interaction",judgedBy:k?.judge||null,judgeEstimated:T?.judge?.estimated??!0}),Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},w.map(K=>{let le=qq(g,K),pe=S(K),re=pe?.samples??(K==null?g.samples_evaluated:null),_e=pe?.passed??(K==null?g.samples_passed:null),ue=[];return le.below>0&&ue.push({tone:"error",text:`below pass mark \xD7${le.below}`}),le.skipped>0&&ue.push({tone:"warning",text:`skipped \xD7${le.skipped}`}),Se.default.createElement(qv,{key:K||"all",label:K,short:K?No(K).short:"all samples",provider:pe?.provider||(K?No(K).provider:null)||null,winner:!!k?.winner&&k.winner===K,passed:_e,total:re,avgScore:le.avg,criteria:{cleared:le.cleared,scored:le.scored},latencyMs:pe?.avg_duration_ms,inputTokens:pe?.input_tokens,outputTokens:pe?.output_tokens,cost:pe?.cost,perInteraction:Zd(pe?.cost,pe?.priced),estimated:pe?.estimated??!1,unit:"interaction",badges:ue})}))),(k||A.length>0)&&Se.default.createElement(Ve,{padding:"12px 16px",style:{display:"flex",flexDirection:"column",gap:6},"data-testid":"run-verdict"},k&&Se.default.createElement(Se.default.Fragment,null,Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Se.default.createElement(qe,null,"Verdict"),k.judge&&Se.default.createElement("span",{style:qn()},`judged by ${k.judge}`)),Se.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},Se.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:X,fontSize:12}},k.winner),k.rationale?` \xB7 ${k.rationale}`:"")),A.length>0&&Se.default.createElement("span",{style:qn(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${A.join(", ")}`)),Se.default.createElement(Ve,{padding:0,style:{overflow:"hidden"},testId:"criteria-matrix"},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",flexWrap:"wrap"}},Se.default.createElement(qe,{style:{marginRight:4}},"Criteria"),Se.default.createElement(eo,{selected:f==="all",onClick:()=>p("all")},`All ${O.length}`),F.map(K=>Se.default.createElement(eo,{key:K.id,selected:f===K.id,onClick:()=>p(K.id)},`${K.label} ${$(K.id)}`)),Se.default.createElement(eo,{square:!0,mono:!0,selected:m,onClick:()=>y(K=>!K),style:{marginLeft:"auto",background:"transparent"},title:"Hide criteria every model cleared"},m?"[x] failed only":"[ ] failed only")),Se.default.createElement("div",{style:{overflowX:"auto"}},Se.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Se.default.createElement("thead",null,Se.default.createElement("tr",{style:{background:"var(--color-muted)"}},Se.default.createElement("th",{style:{...j,width:"34%"}},"Criterion"),Se.default.createElement("th",{style:j},"Expects"),w.map(K=>Se.default.createElement("th",{key:K||"score",style:j},K?Se.default.createElement(Se.default.Fragment,null,Se.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},No(K).short),(S(K)?.provider||No(K).provider)&&Se.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},S(K)?.provider||No(K).provider)):"Score")))),Se.default.createElement("tbody",null,N.map(K=>Se.default.createElement(Se.default.Fragment,{key:K.id},Se.default.createElement("tr",{style:{background:"var(--color-background)",borderTop:"1px solid var(--color-border-light)"}},Se.default.createElement("td",{style:te},Se.default.createElement("span",{style:{fontWeight:600,fontSize:13,color:"var(--color-text-primary)"}},K.label)),Se.default.createElement("td",{style:te},Se.default.createElement("span",{style:qn()},`${K.rows.length} ${K.rows.length===1?"criterion":"criteria"}`)),w.map(le=>{let pe=K.rows.filter(ue=>{let se=Xd(ue.value,le);return se&&se.score!=null}),re=pe.filter(ue=>Xd(ue.value,le).score>=.7).length,_e=pe.length&&re===pe.length?"var(--color-success-text)":re===0&&pe.length?"var(--color-error-text)":"var(--color-text-cell)";return Se.default.createElement("td",{key:le||"score",style:te},Se.default.createElement("span",{style:qn(11,_e,{fontWeight:600})},pe.length?`${Un(re,pe.length)} passed`:"\u2014"))})),K.rows.map(le=>Se.default.createElement("tr",{key:le.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Se.default.createElement("td",{style:q},Se.default.createElement("div",{style:qn()},le.key),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},h2(le.criterion))),Se.default.createElement("td",{style:q},Se.default.createElement("span",{style:{fontFamily:X,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:Rm(le.criterion)},Mv(Rm(le.criterion),40))),w.map(pe=>Se.default.createElement("td",{key:pe||"score",style:q},Se.default.createElement(ibe,{stats:Xd(le.value,pe)}))))))),N.length===0&&Se.default.createElement("tr",{style:{borderTop:"1px solid var(--color-border-light)"}},Se.default.createElement("td",{colSpan:2+w.length,style:{padding:"16px 14px",fontSize:13,color:"var(--color-text-muted)"}},O.length?"Nothing failed under this filter.":"This run recorded no criterion scores.")))))),Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Se.default.createElement(qe,null,"What to fix"),Se.default.createElement("span",{style:qn()},D.length?zt(D.length,"item"):"nothing")),D.length?Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},D.map(K=>Se.default.createElement(sbe,{key:K.kind,item:K,evaluation:e,run:g,number:v}))):Se.default.createElement(Kn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${hb(.7)}) and nothing was skipped.`)),Se.default.createElement(Qd,{evaluation:e,run:g,spend:T,onDelete:c,deleting:d}))}var yc=null,aM=new Set,MG=()=>aM.forEach(e=>e(yc));function lbe(e={}){let t=e.requireText==null?null:String(e.requireText);return{title:e.title||"Are you sure?",message:e.message||"",confirmLabel:e.confirmLabel||"Confirm",cancelLabel:e.cancelLabel||"Cancel",danger:!!e.danger,requireText:t===""?null:t}}function cn(e){return yc&&yc.resolve(!1),new Promise(t=>{yc={...lbe(e),resolve:t},MG()})}function DG(e){if(!yc)return;let{resolve:t}=yc;yc=null,MG(),t(!!e)}function IG(){return yc}function jG(e){return aM.add(e),()=>aM.delete(e)}function $G(e,t){return e?.requireText?t===e.requireText:!0}var LG=()=>{let e=Eo().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=vP(window.location.search);return t?.runId?t:null},B2=()=>{let e=Eo().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},zG=()=>vP(window.location.search)?.evaluationId||(B2()?String(B2().evaluationId):null),z2=(e=11,t="var(--color-text-muted)")=>({fontFamily:X,fontSize:e,color:t}),ube=e=>{let t=og(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:v2(e,t).length+r:r},cbe={stale:{tone:"warning",text:"stale",title:"Its headline run scored an earlier version of the agent, so the tiles leave it out"},unrecorded:{tone:"muted",text:"version not recorded",title:"Nothing says which version of the agent its headline run scored; it still counts"},archived:{tone:"muted",text:"archived",title:"Archived: kept with its runs, left out of the tiles"}};function u0({embedded:e=!1,agentId:t=null}){let{darkMode:r}=st(),[n,o]=(0,Le.useState)(()=>e?null:LG()),a=(0,Le.useRef)(null),[i,s]=(0,Le.useState)(0),[l,u]=(0,Le.useState)(null);(0,Le.useEffect)(()=>{let fe=a.current?.contentDocument?.body;if(!fe)return;let Ge=()=>u(fe.scrollHeight);if(Ge(),typeof ResizeObserver>"u")return window.addEventListener("resize",Ge),()=>window.removeEventListener("resize",Ge);let rt=new ResizeObserver(Ge);return rt.observe(fe),()=>rt.disconnect()},[i,n]),(0,Le.useEffect)(()=>u(null),[n]);let[c,d]=(0,Le.useState)([]),[f,p]=(0,Le.useState)([]),[m,y]=(0,Le.useState)(void 0),[x,h]=(0,Le.useState)(!1),[g,v]=(0,Le.useState)(void 0),[b,_]=(0,Le.useState)(!0),[w,C]=(0,Le.useState)(null),[S,k]=(0,Le.useState)(null),[A,O]=(0,Le.useState)(()=>{if(e)return null;let fe=B2();return fe?.runId?fe:null}),[$,F]=(0,Le.useState)(()=>e?null:zG()),[P,z]=(0,Le.useState)({}),[N,D]=(0,Le.useState)(!1),[T,E]=(0,Le.useState)(null),[I,j]=(0,Le.useState)(null),[q,te]=(0,Le.useState)(null),[K,le]=(0,Le.useState)(!1),[pe,re]=(0,Le.useState)(0);(0,Le.useEffect)(()=>{if(e)return;let fe=()=>{o(LG());let Ge=B2();O(Ge?.runId?Ge:null);let rt=zG();F(rt),rt&&k(ir=>new Set([...ir||[],Number(rt)]))};return window.addEventListener("popstate",fe),window.addEventListener("dashboard:navigate",fe),()=>{window.removeEventListener("popstate",fe),window.removeEventListener("dashboard:navigate",fe)}},[e]);let _e=(0,Le.useCallback)(async()=>{try{let fe=new URLSearchParams;t&&fe.set("agent_id",t),K&&fe.set("archived","1");let Ge=fe.toString(),rt=await fetch(`/api/evaluations${Ge?`?${Ge}`:""}`);if(!rt.ok)throw new Error(`Request failed (${rt.status})`);let ir=await rt.json();re(Number(ir.archived_count)||0),y(ir.judge_provider??null),h(ir.judge_provider_error===!0),v(Array.isArray(ir.model_providers)?ir.model_providers:null);let Ho=ir.evaluations||[],ao=null;try{Ho=await Fq(Ho,$,fetch)}catch(aa){ao=aa.message}d(Ho),k(aa=>{if(aa)return aa;let Ko=$?Ho.find(Ca=>String(Ca.id)===$):Ho.find(Ca=>Ca.scenario_suite)||Ho[0];return new Set(Ko?[Ko.id]:[])}),C(ao)}catch(fe){C(fe.message),v(Ge=>Ge===void 0?null:Ge)}finally{_(!1)}},[t,$,K]),ue=(0,Le.useCallback)(async fe=>{try{let Ge=await fetch(`/api/evaluations/${fe}`);if(!Ge.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${Ge.status})`);let rt=await Ge.json();z(ir=>({...ir,[fe]:{runs:rt.evaluation?.runs||[],runCount:rt.evaluation?.run_count??null}}))}catch(Ge){z(rt=>({...rt,[fe]:{runs:null,runCount:null,error:Ge.message}})),C(Ge.message)}},[]);(0,Le.useEffect)(()=>{_e(),fetch("/api/agents").then(fe=>fe.ok?fe.json():{agents:[]}).then(fe=>p(fe.agents||[])).catch(()=>p([]))},[_e]),(0,Le.useEffect)(()=>{new Set([...S||[],...A?[A.evaluationId]:[]]).forEach(Ge=>{let rt=c.find(ir=>ir.id===Ge);rt&&!rt.scenario_suite&&!P[Ge]&&ue(Ge)})},[S,A,c,P,ue]);let se=fe=>{!e&&Eo()!==fe&&Gm(fe)},Z=fe=>!!S?.has(fe),R=fe=>{let Ge=!Z(fe.id);k(rt=>{let ir=new Set(rt||[]);return Ge?ir.add(fe.id):ir.delete(fe.id),ir}),se(Ge?`/evaluations/${fe.id}`:"/evaluations")},L=(fe,Ge)=>{k(rt=>new Set([...rt||[],fe.id])),O({evaluationId:fe.id,runId:Ge.id}),se(`/evaluations/${fe.id}/runs/${Ge.id}`)},B=fe=>{O(null),se(fe?`/evaluations/${fe}`:"/evaluations")},H=async fe=>{E(fe.id),C(null);try{let Ge=await fetch(`/api/evaluations/${fe.id}/run`,{method:"POST"}),rt=await Ge.json().catch(()=>({}));if(!Ge.ok){C((rt.errors||[rt.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${Ge.status})`);return}await Promise.all([_e(),ue(fe.id)]),rt.run&&A?.evaluationId===fe.id&&L(fe,rt.run)}finally{E(null)}},M=async(fe,Ge)=>{te(fe.id),C(null);try{let rt=await fetch(`/api/evaluations/${fe.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:Ge}})}),ir=await rt.json().catch(()=>({}));if(!rt.ok){C((ir.errors||[ir.error]).filter(Boolean).join(", ")||`${Ge?"Archive":"Unarchive"} failed (HTTP ${rt.status})`);return}await _e()}finally{te(null)}},ne=async fe=>{if(await cn({title:`Delete ${fe.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:fe.name})){j(fe.id),C(null);try{let Ge=await fetch(`/api/evaluations/${fe.id}`,{method:"DELETE"});Ge.ok||Ge.status===404?(d(rt=>rt.filter(ir=>ir.id!==fe.id)),k(rt=>{let ir=new Set(rt||[]);return ir.delete(fe.id),ir}),A?.evaluationId===fe.id&&B(null)):C(`Delete failed (HTTP ${Ge.status})`)}finally{j(null)}}};if(b)return Le.default.createElement("div",{className:"flex items-center justify-center h-64"},Le.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let U=t?c.filter(fe=>String(fe.agent?.id)===String(t)):c,oe=fe=>{let Ge=P[fe.id];return Ge?.runs?{runs:Ge.runs,runCount:fe.run_count??Ge.runCount??null,loaded:!0}:{runs:fe.latest_run?[fe.latest_run]:[],runCount:fe.run_count??null,loaded:!1}};if(n){let fe=ct(`/api/evaluations/${n.evaluationId}/runs/${n.runId}/report`),Ge=`${fe}?theme=${r?"dark":"light"}`;return Le.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Le.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Le.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Le.default.createElement(de,{size:"sm",onClick:()=>{Gm("/evaluations"),o(null)}},Le.default.createElement("span",{style:{fontFamily:X}},"<-")," Evaluations"),Le.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),Le.default.createElement("span",{style:z2(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),Le.default.createElement("a",{href:fe,target:"_blank",rel:"noopener noreferrer",title:"The report is one self-contained page \u2014 save it to export",style:{padding:"6px 12px",borderRadius:8,fontSize:13,fontWeight:500,color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)",textDecoration:"none"}},"Open standalone ",Le.default.createElement("span",{style:{fontFamily:X}},"->"))),Le.default.createElement("iframe",{ref:a,src:Ge,title:"Evaluation run report",onLoad:()=>s(rt=>rt+1),scrolling:"no",style:{width:"100%",borderRadius:12,border:"1px solid var(--color-border)",background:"var(--color-background)",display:"block",height:l?`${l}px`:"calc(100vh - 180px)"}}))}if(A){let fe=U.find(Ge=>Ge.id===A.evaluationId);if(!fe||!fe.scenario_suite){let{runs:Ge,runCount:rt,loaded:ir}=fe?oe(fe):{runs:[],runCount:null,loaded:!0};return Le.default.createElement(oM,{evaluation:fe,runs:Ge,runCount:rt,runId:A.runId,loading:!ir,running:T===A.evaluationId,onSelectRun:Ho=>L(fe,Ho),onRun:()=>H(fe),onBack:()=>B(null),onOpenEvaluation:()=>B(A.evaluationId),onDelete:fe?()=>ne(fe):void 0,deleting:I===A.evaluationId})}}let ye=Zq(U,{focusId:$}),{samplesScored:Je,samplesPassed:Ft,passRatio:Nt,spend:ce}=ye,Ze=Jq(ye),fr=[...new Set(U.map(fe=>fe.agent?.name).filter(Boolean))],Rt=U.reduce((fe,Ge)=>Math.max(fe,SP(Ge,og(Ge)||Ge.latest_run)),0),er=U.map(ube),Ke=er.reduce((fe,Ge)=>fe+Ge,0),Kt=er.filter(Boolean).length,Or=U.length?[`${zt(fr.length,"agent")} \xB7 ${Rt>1?`${Rt} models compared`:"no model comparisons"}`,Ze].filter(Boolean).join(" \xB7 "):"none defined yet",oo=ye.focused?"headline run of this evaluation":`headline run of ${zt(ye.counted,"current evaluation")}${Ze?` \xB7 ${Ze}`:""}`,us=ye.perModel.length>1?ye.perModel.map(fe=>`${fe.label} ${Un(fe.passed,fe.total)}`):[],oa=ce.agentCost!=null?[`agent ${Xr(ce.agentCost,{estimated:ce.estimated})} over ${zt(ce.interactions,"interaction")}`,ce.judgeCost!=null?`judge ${Xr(ce.judgeCost,{estimated:ce.judgeEstimated})} offline`:"no judge spend"].join(" \xB7 "):"no priced runs yet",Vl=ce.agentCost!=null&&ce.estimated||ce.judgeCost!=null&&ce.judgeEstimated;return Le.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},Le.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&Le.default.createElement("div",{style:{flex:1,minWidth:260}},Le.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),Le.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Score recorded outputs, or paste a list of user messages to replay through the agent under one or more models. Every run is kept.")),Le.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(pe>0||K)&&Le.default.createElement(de,{size:"sm",onClick:()=>le(fe=>!fe),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},K?"Hide archived":`Show archived (${pe})`),Le.default.createElement(de,{variant:"primary",onClick:()=>D(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),w&&Le.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},"Failed to load evaluations: ",w),N&&Le.default.createElement(nM,{agents:f,agentId:t,judgeProvider:m,judgeProviderError:x,modelProviders:g,onCancel:()=>D(!1),onCreated:async fe=>{D(!1),await _e(),fe?.id!=null&&(k(Ge=>new Set([...Ge||[],fe.id])),se(`/evaluations/${fe.id}`))}}),Le.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},Le.default.createElement(Ym,{label:"Evaluations",value:U.length,sub:Or,testId:"stat-evaluations"}),Le.default.createElement(Ym,{label:"Samples scored",value:Je,sub:oo,testId:"stat-samples-scored"}),Le.default.createElement(Ym,{label:"Pass rate",value:up(Nt),valueColor:Nt==null?"var(--color-text-muted)":ra[qd(Nt)].strong,sub:Nt==null?Ze||"no completed runs yet":Le.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},Le.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${Ft}/${Je} passed`),us.map(fe=>Le.default.createElement("span",{key:fe,style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"stat-pass-rate-model"},fe))),testId:"stat-pass-rate"}),Le.default.createElement(Ym,{label:"To fix",value:Ke,valueColor:Ke?"var(--color-error)":void 0,sub:Ke?`across ${zt(Kt,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Le.default.createElement(Ym,{label:"Cost / interaction",value:Wl(ce.perInteraction,ce.estimated),valueColor:ce.perInteraction==null?"var(--color-text-muted)":void 0,sub:Vl?`${oa} \xB7 ${xs}`:oa,testId:"stat-agent-cost"})),Le.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},U.map((fe,Ge)=>{let rt=fe.latest_run,ir=og(fe),Ho=rt&&ir&&rt.id!==ir.id?rt:null,ao=AP(fe),aa=cbe[ao],Ko=ao==="archived",Ca=Z(fe.id),Fs=!!fe.scenario_suite,Bi=er[Ge],df=(fe.criteria||[]).some(Vn=>js(Vn)==="telemetry"),{runs:cs,runCount:Gl}=oe(fe);return Le.default.createElement(Ve,{key:fe.id,padding:0,testId:"evaluation-card","data-telemetry":df?"true":"false","data-kind":Fs?"suite":"sampling","data-open":Ca?"true":"false","data-standing":ao,style:{overflow:"hidden",opacity:Ko?.75:1}},Le.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":Ca,onClick:()=>R(fe),onKeyDown:Vn=>{(Vn.key==="Enter"||Vn.key===" ")&&(Vn.preventDefault(),R(fe))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},Le.default.createElement(Ra,{kind:"chevron",open:Ca}),Le.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:X,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:Fs?"scenario suite":"sampling evaluation"},Fs?"=":"~"),Le.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},fe.name),Le.default.createElement("span",{style:z2(11)},`@${fe.agent?.name||"agent"} \xB7 ${Yd(fe)}`),Le.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},Le.default.createElement("span",{style:z2(11)},vo(rt?.completed_at||rt?.created_at||fe.created_at)),Bi>0&&Le.default.createElement("span",{style:z2(11,"var(--color-error)")},`${Bi} to fix`),aa&&Le.default.createElement(Te,{tone:aa.tone,size:10,style:{padding:"1px 6px"},title:aa.title,testId:"evaluation-standing"},aa.text),Ho&&Le.default.createElement(w2,{run:Ho,testId:"evaluation-newer-run-badge"}),Le.default.createElement(w2,{run:ir||rt,testId:Fs?"suite-pass-badge":"evaluation-pass-badge"}),Le.default.createElement("button",{type:"button",onClick:Vn=>{Vn.stopPropagation(),M(fe,!Ko)},disabled:q===fe.id,title:Ko?"Bring this evaluation back into the list and the tiles":"Archive: keep its runs, leave it out of the list and the tiles","data-testid":"evaluation-archive-toggle",style:{background:"transparent",border:"none",padding:0,cursor:q===fe.id?"not-allowed":"pointer",fontFamily:X,fontSize:11,color:"var(--color-text-muted)",opacity:q===fe.id?.5:1}},q===fe.id?"\u2026":Ko?"unarchive":"archive"))),Ca&&Le.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Fs?Le.default.createElement(tM,{evaluation:fe,modelProviders:g,onChanged:_e,onDelete:()=>ne(fe),deleting:I===fe.id,initialRunId:A?.evaluationId===fe.id?A.runId:null,onRunSelected:Vn=>se(`/evaluations/${fe.id}/runs/${Vn}`)}):Le.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},Le.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Le.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},cs.length?hV(cs,Gl):`@${fe.agent?.name||"agent"} \xB7 no runs yet`),Le.default.createElement(de,{variant:"primary",size:"sm",disabled:T===fe.id,onClick:Vn=>{Vn.stopPropagation(),H(fe)},testId:"evaluation-run-button"},T===fe.id?"Running\u2026":`Run ${Yd(fe)}`)),Le.default.createElement(Hv,{runs:cs,runCount:Gl,evaluation:fe,agentName:fe.agent?.name,previousRun:fe.previous_run,onOpen:Vn=>L(fe,Vn),testId:"evaluation-runs-panel"}),Le.default.createElement(Qd,{evaluation:fe,run:rt,spend:ji(rt),onDelete:()=>ne(fe),deleting:I===fe.id}))))})),U.length===0&&!N&&Le.default.createElement(Ve,{style:{textAlign:"center",padding:"48px 20px"}},Le.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),Le.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Create an evaluation to score recorded outputs, or paste scenarios to test new tasks across models. Every run is kept, so scores stay comparable over time.")))}var $e=G(Y());var dbe=e=>new Date(`${e}T00:00:00`),fbe=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function iM({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=st(),o=fi(n),[a,i]=(0,$e.useState)(null),[s,l]=(0,$e.useState)(!0),{timeWindow:u,days:c}=Ms(),[d,f]=(0,$e.useState)("overview");(0,$e.useEffect)(()=>{p()},[e?.id,c]);let p=async()=>{if(e?.id){l(!0);try{let b=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(b)}catch(v){console.error("Failed to load analytics:",v)}finally{l(!1)}}},m=v=>v?v<1e3?`${v}ms`:`${(v/1e3).toFixed(2)}s`:"-",y=v=>v?v>=1e6?`${(v/1e6).toFixed(1)}M`:v>=1e3?`${(v/1e3).toFixed(1)}K`:v.toString():"0",x=v=>{switch(v){case"complete":return"bg-green-500";case"failed":return"bg-red-500";case"running":return"bg-blue-500";case"pending":return"bg-yellow-500";case"cancelled":return"bg-gray-500";default:return"bg-gray-400"}};if(s&&!a)return $e.default.createElement("div",{className:"flex items-center justify-center h-64"},$e.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let h=a?.runs_by_day?.length>0?Math.max(...a.runs_by_day.map(v=>v.count)):1,g=r?"overview":d;return $e.default.createElement("div",{className:"space-y-6"},r?$e.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&$e.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),$e.default.createElement(Ds,null)):$e.default.createElement("div",{className:"flex items-center justify-between"},$e.default.createElement("div",{className:"flex items-center space-x-4"},$e.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},$e.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),$e.default.createElement("div",null,$e.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),$e.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&$e.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),$e.default.createElement(Ds,null))),!r&&$e.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},fbe.map(v=>$e.default.createElement("button",{key:v.id,onClick:()=>f(v.id),className:`px-4 py-1.5 text-sm rounded-md transition-colors ${d===v.id?"shadow":""}`,style:d===v.id?{background:o.cardBg,color:o.textPrimary}:{color:o.textSecondary}},v.label))),g==="traces"&&$e.default.createElement(Kd,{agentId:e.id,embedded:!0}),g==="interactions"&&$e.default.createElement(Ul,{agentId:e.id,embedded:!0}),g==="overview"&&$e.default.createElement($e.default.Fragment,null,$e.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},$e.default.createElement(F2,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),$e.default.createElement(F2,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})),color:"green",colors:o,darkMode:n}),$e.default.createElement(F2,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})),color:"blue",colors:o,darkMode:n}),$e.default.createElement(F2,{title:"Total Tokens",value:y(a?.summary?.total_tokens),icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"})),color:"purple",colors:o,darkMode:n})),$e.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},$e.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?$e.default.createElement("div",{className:"h-48"},$e.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((v,b)=>$e.default.createElement("div",{key:v.date,className:"flex-1 flex flex-col items-center group"},$e.default.createElement("div",{className:"relative w-full"},$e.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${v.count/h*150}px`,minHeight:v.count>0?"4px":"0"}}),$e.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap"},v.count," runs")),(b===0||b===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&$e.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},dbe(v.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):$e.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),$e.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?$e.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([v,b])=>{let _=a?.summary?.total_runs||1,w=(b/_*100).toFixed(1);return $e.default.createElement("div",{key:v},$e.default.createElement("div",{className:"flex justify-between text-sm mb-1"},$e.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},v),$e.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},b," (",w,"%)")),$e.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},$e.default.createElement("div",{className:`h-full ${x(v)} rounded-full transition-all`,style:{width:`${w}%`}})))})):$e.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&$e.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),$e.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(v=>$e.default.createElement("div",{key:v.id,className:"flex items-start space-x-3 p-3 rounded-lg",style:{background:n?"rgba(220,38,38,0.12)":"#fef2f2"}},$e.default.createElement("svg",{className:"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})),$e.default.createElement("div",{className:"flex-1 min-w-0"},$e.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},v.error||"Unknown error"),$e.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(v.created_at).toLocaleString())))))),$e.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},y(a?.summary?.avg_tokens_per_run))),$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var BG={rose:["#dc2626","rgba(220,38,38,0.18)","#fee2e2"],green:["#16a34a","rgba(22,163,74,0.18)","#dcfce7"],blue:["#2563eb","rgba(37,99,235,0.18)","#dbeafe"],purple:["#7c3aed","rgba(124,58,237,0.18)","#ede9fe"]};function F2({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=BG[n]||BG.rose;return $e.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("div",{className:"flex items-center justify-between"},$e.default.createElement("div",null,$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),$e.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),$e.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var ie=G(Y());var pbe={active:"success",configured:"info",available:"warning",idle:"muted"},mbe={agent_defined:"success",dashboard:"success",mcp:"info"},FG="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",UG="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",gbe=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],WG={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:X,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},Ls={fontFamily:X,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},U2={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function qG({on:e,onClick:t,title:r}){return ie.default.createElement("span",{role:"switch","aria-checked":e,tabIndex:0,title:r,onClick:t,onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),t(n))},style:{width:34,height:18,borderRadius:999,flexShrink:0,position:"relative",cursor:"pointer",background:e?"var(--color-accent-ui)":"var(--color-muted)",border:`1px solid ${e?"var(--color-accent-ui)":"var(--color-border-strong)"}`,transition:"background 0.12s ease"}},ie.default.createElement("span",{style:{position:"absolute",top:1,left:e?17:1,width:14,height:14,borderRadius:"50%",background:e?"#ffffff":"var(--color-text-muted)",transition:"left 0.12s ease"}}))}function HG({on:e,dim:t=!1}){return ie.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:X,fontSize:10,fontWeight:700,flexShrink:0,border:`1px solid ${e?"var(--color-accent-ui)":"var(--color-border-strong)"}`,background:e?"var(--color-accent-ui)":"transparent",color:e?"var(--color-on-accent)":"transparent",opacity:t?.8:1}},e?"x":"")}function hbe({tool:e,state:t,onToggle:r}){if(!t)return ie.default.createElement("span",null);let n=t!=="off",o=`Click to make each ${e.name} call wait for a person to approve it`;return t==="on"&&(o=`Each ${e.name} call waits for approval. Click to let it run without asking.`),t==="partial"&&(o=`Some ${e.name} functions wait for approval. Click to let every ${e.name} call run without asking.`),ie.default.createElement("span",{"data-testid":`tool-approval-${e.key}`,"data-approval":t,onClick:a=>a.stopPropagation(),onKeyDown:a=>a.stopPropagation(),style:{display:"flex",justifyContent:"center"}},ie.default.createElement(qG,{on:n,title:o,onClick:()=>r(e)}))}function W2({children:e,onClick:t,disabled:r,title:n}){return ie.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:X,fontSize:11,border:"1px solid var(--color-border-strong)",color:"var(--color-text-cell)",cursor:r?"not-allowed":"pointer",opacity:r?.5:1}},e)}function KG({children:e}){return ie.default.createElement("div",{style:{overflowX:"auto"}},ie.default.createElement("div",{style:{minWidth:800}},e))}function sM({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,ie.useState)(null),[l,u]=(0,ie.useState)(null),[c,d]=(0,ie.useState)("7d"),[f,p]=(0,ie.useState)(""),[m,y]=(0,ie.useState)(null),[x,h]=(0,ie.useState)(null),[g,v]=(0,ie.useState)(!1),[b,_]=(0,ie.useState)(null),[w,C]=(0,ie.useState)({}),S=(d2.find(B=>B.value===c)||d2[1]).hours;(0,ie.useEffect)(()=>{let B=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${S}`).then(H=>{if(!H.ok)throw new Error(`Request failed (${H.status})`);return H.json()}).then(H=>{B||s(H)}).catch(H=>{B||u(H.message)}),()=>{B=!0}},[e.id,S]);let k=(0,ie.useMemo)(()=>({services:[],tools:[]}),[]),A=i||k,O=(0,ie.useMemo)(()=>t.tools||[],[t.tools]),$=(0,ie.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),F=(0,ie.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),P=(0,ie.useMemo)(()=>c2(A,$),[A,$]),z=(0,ie.useMemo)(()=>dq(A,P,{query:f,filter:m}),[A,P,f,m]),N=(0,ie.useMemo)(()=>pq(A,P,O,{query:f,source:x,enabledOnly:g}),[A,P,O,f,x,g]),D=(0,ie.useMemo)(()=>mq(A,P,O,{range:c}),[A,P,O,c]),T=(0,ie.useMemo)(()=>yq(A,{tools:O,mcpServers:$,approvalRequiredTools:F},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[A,O,$,F,e]),E=A.usage_available!==!1,I=B=>E?B:"\u2014",j=(0,ie.useCallback)(B=>{r("mcp_servers",vq(A,B,$))},[A,$,r]),q=(0,ie.useCallback)(B=>{let H=P[B.key];j({...P,[B.key]:{...H,on:!H.on}})},[P,j]),te=(0,ie.useCallback)((B,H)=>{let M=P[B.key];M.on&&j({...P,[B.key]:{...M,tools:{...M.tools,[H.name]:!M.tools[H.name]}}})},[P,j]),K=(0,ie.useCallback)((B,H)=>{let M=P[B.key],ne=Object.fromEntries((B.tools||[]).map(U=>[U.name,H]));j({...P,[B.key]:{on:H||M.on,tools:ne}})},[P,j]),le=(0,ie.useCallback)(B=>{if(!B.editable)return;let H=B.on?O.filter(M=>M!==B.key):[...O,B.key];r("tools",dP(A,H))},[A,O,r]),pe=(0,ie.useCallback)((B,H)=>{if(!B.editable)return;let M=H?[...O,...B.keys.filter(ne=>!O.includes(ne))]:O.filter(ne=>!B.keys.includes(ne));r("tools",dP(A,M))},[A,O,r]),re=(0,ie.useCallback)(B=>{r("approval_required_tools",hq(F,B,e.approval_required_tools||[]))},[F,e,r]),_e=(0,ie.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),ue=(A.services||[]).filter(B=>P[B.key]?.on),se=N.find(B=>B.source==="mcp"),R=N.filter(B=>B.source!=="mcp").reduce((B,H)=>B+H.enabledCount,0)+(se?se.total:0),L=N.reduce((B,H)=>B+H.total,0);return l?ie.default.createElement(Ve,null,ie.default.createElement(qe,null,"Tools & MCP services"),ie.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?ie.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},ie.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},ie.default.createElement("div",{style:{flex:1,minWidth:260}},ie.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),ie.default.createElement("p",{style:{margin:"3px 0 0",fontSize:13,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turn a service on to offer its tools, then narrow the roster tool by tool. Call counts come from the traces recorded on every tool call.")),ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ie.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border-strong)",background:"var(--color-card)"}},ie.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},"?"),ie.default.createElement("input",{value:f,onChange:B=>p(B.target.value),placeholder:"Filter tools and services\u2026","aria-label":"Filter tools and services",style:{border:"none",outline:"none",background:"transparent",color:"var(--color-text-primary)",fontSize:13,width:180}})),ie.default.createElement(sc,{options:d2,value:c,onChange:d}))),ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},D.map(B=>ie.default.createElement(Ve,{key:B.key,padding:"14px 16px",testId:`roster-stat-${B.key}`},ie.default.createElement(qe,{size:11,spacing:"0.05em"},B.label),ie.default.createElement("div",{style:{marginTop:6,fontFamily:X,fontSize:26,fontWeight:700,lineHeight:1.1,color:B.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},B.value),ie.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},B.sub)))),ie.default.createElement(Ve,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ie.default.createElement(qe,null,"MCP services"),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},ue.length," of ",(A.services||[]).length," enabled \xB7 ",se?se.total:0," tools offered"),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},ie.default.createElement(eo,{selected:!m,onClick:()=>y(null)},"All ",(A.services||[]).length),gbe.map(B=>ie.default.createElement(eo,{key:B.value,selected:m===B.value,onClick:()=>y(m===B.value?null:B.value)},B.label,B.value==="enabled"?` ${ue.length}`:"")),ie.default.createElement(Ii,{href:ct("/mcp"),onClick:()=>It("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),ie.default.createElement(KG,null,ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:FG,...WG}},ie.default.createElement("span",null,"On"),ie.default.createElement("span",null,"Service"),ie.default.createElement("span",null,"Status"),ie.default.createElement("span",{style:{textAlign:"right"}},"Tools"),ie.default.createElement("span",{style:{textAlign:"right"}},"Calls"),ie.default.createElement("span",{style:{textAlign:"right"}},"Errors"),ie.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),ie.default.createElement("span",null)),z.map(B=>{let H=b===B.key;return ie.default.createElement("div",{key:B.key},ie.default.createElement("div",{className:"aa-roster-row","data-on":B.on?"true":"false","data-testid":`service-row-${B.key}`,style:{display:"grid",gridTemplateColumns:FG,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},ie.default.createElement(qG,{on:B.on,onClick:()=>q(B),title:`${B.on?"Disable":"Enable"} ${B.name} for this agent`}),ie.default.createElement("div",{onClick:()=>_(H?null:B.key),style:{minWidth:0,cursor:"pointer"}},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ie.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},B.name),B.first_party&&ie.default.createElement(Te,{tone:"accent",size:10},"first-party"),Vd(B)&&ie.default.createElement(Te,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Tv(B)&&ie.default.createElement(Te,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),f2(B)&&ie.default.createElement(Te,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),B.partial&&ie.default.createElement(Te,{tone:"warning",size:10},B.partialLabel)),ie.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...U2}},B.description)),ie.default.createElement("span",null,ie.default.createElement(Te,{tone:pbe[B.status]||"muted"},B.status)),ie.default.createElement("span",{style:{...Ls,color:B.on?"var(--color-text-primary)":"var(--color-text-muted)"}},B.toolsLabel),ie.default.createElement("span",{style:Ls},I(B.calls)),ie.default.createElement("span",{style:{...Ls,color:B.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(B.errors)),ie.default.createElement("span",{style:{...Ls,color:"var(--color-text-muted)"}},I(Nv(B.last_seen))),ie.default.createElement("span",{onClick:()=>_(H?null:B.key),style:{cursor:"pointer",textAlign:"center"}},ie.default.createElement(Ra,{kind:"chevron",open:H}))),H&&ie.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},ie.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"Tools offered"),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},B.transport),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},ie.default.createElement(W2,{onClick:()=>K(B,!0),title:`Offer every tool ${B.name} serves`},"all"),ie.default.createElement(W2,{onClick:()=>K(B,!1),disabled:!B.on,title:`Offer none of ${B.name}'s tools`},"none"))),B.tools.length===0?ie.default.createElement(Kn,{style:{padding:"10px 0"}},uq(B)):ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},B.tools.map(M=>ie.default.createElement("div",{key:M.name,className:"aa-roster-row",onClick:()=>te(B,M),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:B.on?"pointer":"default",opacity:B.on?1:.55}},ie.default.createElement(HG,{on:M.on,dim:!B.on}),ie.default.createElement("span",{style:{minWidth:0}},ie.default.createElement("span",{style:{display:"block",fontFamily:X,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)",...U2}},M.name),ie.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...U2}},M.description)),ie.default.createElement("span",{style:{...Ls,color:"var(--color-text-secondary)"}},I(M.calls)),ie.default.createElement("span",{style:{...Ls,color:M.errors?"var(--color-error-text)":"var(--color-text-muted)"}},I(M.errors?`${M.errors} err`:uP(M.avg_duration_ms)))))),!B.on&&ie.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",B.name," on offers these ",B.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),z.length===0&&ie.default.createElement(Kn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},f?`no services match "${f}"`:"no MCP services yet"))),ie.default.createElement(Ve,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ie.default.createElement(qe,null,"Tools"),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},R," enabled of ",L," available"),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},ie.default.createElement(eo,{selected:!x,onClick:()=>h(null)},"All ",L),N.map(B=>ie.default.createElement(eo,{key:B.source,selected:x===B.source,onClick:()=>h(x===B.source?null:B.source)},B.name," ",B.total)),ie.default.createElement(eo,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),ie.default.createElement(KG,null,ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:UG,...WG}},ie.default.createElement("span",null),ie.default.createElement("span",null,"Tool"),ie.default.createElement("span",null,"Source"),ie.default.createElement("span",{style:{textAlign:"right"}},"Calls"),ie.default.createElement("span",{style:{textAlign:"right"}},"Errors"),ie.default.createElement("span",{style:{textAlign:"right"}},"Avg"),ie.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),ie.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(B=>{let H=w[B.source]!==!0;return ie.default.createElement("div",{key:B.source},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"7px 16px",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",flexWrap:"wrap"}},ie.default.createElement("span",{onClick:()=>C({...w,[B.source]:H}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},ie.default.createElement(Ra,{kind:"chevron",open:H}),ie.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},B.name)),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},B.meta),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-cell)"}},B.countLabel),B.editable&&ie.default.createElement(ie.default.Fragment,null,ie.default.createElement(W2,{onClick:()=>pe(B,!0)},"all"),ie.default.createElement(W2,{onClick:()=>pe(B,!1)},"none")))),H&&B.rows.map(M=>ie.default.createElement("div",{key:M.key,className:"aa-roster-row","data-on":M.on?"true":"false","data-testid":`tool-row-${M.key}`,onClick:()=>le(M),style:{display:"grid",gridTemplateColumns:UG,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:M.editable?"pointer":"default",opacity:M.editable?1:.75}},ie.default.createElement(HG,{on:M.on,dim:!M.editable}),ie.default.createElement("div",{style:{minWidth:0}},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ie.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},M.name),M.source==="mcp"&&ie.default.createElement(Te,{size:10},"via ",M.server),M.source==="agent_defined"&&(M.editable?ie.default.createElement(Te,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):ie.default.createElement(Te,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),E&&M.on&&!M.calls&&ie.default.createElement(Te,{size:10},"unused")),ie.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...U2}},M.description)),ie.default.createElement("span",null,ie.default.createElement(Te,{tone:mbe[M.source]||"muted"},lP[M.source])),ie.default.createElement("span",{style:Ls},I(M.calls)),ie.default.createElement("span",{style:{...Ls,color:M.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(M.errors)),ie.default.createElement("span",{style:{...Ls,color:"var(--color-text-secondary)"}},I(uP(M.avg_duration_ms))),ie.default.createElement("span",{style:{...Ls,color:"var(--color-text-muted)"}},I(Nv(M.last_seen))),ie.default.createElement(hbe,{tool:M,state:cP(M,F),onToggle:re}))))}),N.every(B=>B.rows.length===0)&&ie.default.createElement(Kn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},f?`no tools match "${f}"`:"nothing enabled yet"))),ie.default.createElement(Ve,{padding:"12px 16px",style:{position:"sticky",bottom:0,zIndex:4,background:"var(--color-surface)",display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"},testId:"roster-action-bar"},ie.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},ie.default.createElement(qe,{size:11,spacing:"0.05em"},R," tools \xB7 ",ue.length," services"),ie.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Every enabled tool is traced: calls, arguments, errors and latency land in Traces and roll up into Metrics.")),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},T>0&&ie.default.createElement(ie.default.Fragment,null,ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-warning-text)"}},T," change",T===1?"":"s"," pending"),ie.default.createElement(de,{variant:"secondary",onClick:_e},"Discard")),ie.default.createElement(de,{variant:o?"primary":"secondary",onClick:n,disabled:a||!o,title:o?"Save this agent":"Nothing to save",style:o?void 0:{background:"var(--color-muted)",color:"var(--color-text-muted)",border:"1px solid transparent",cursor:"default"}},a?"Saving\u2026":"Save Changes")))):ie.default.createElement(Ve,null,ie.default.createElement(Kn,null,"loading the roster\u2026"))}var ybe=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],YG=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],vbe=YG.map(e=>e.id),VG={success:{light:["#dcfce7","#166534"],dark:["rgba(22,163,74,0.18)","#4ade80"]},warning:{light:["#fef9c3","#854d0e"],dark:["rgba(234,179,8,0.18)","#facc15"]},neutral:{light:["#f3f4f6","#4b5563"],dark:["rgba(255,255,255,0.1)","rgba(255,255,255,0.7)"]},error:{light:["#fee2e2","#991b1b"],dark:["rgba(220,38,38,0.18)","#f87171"]},info:{light:["#dbeafe","#1e40af"],dark:["rgba(59,130,246,0.18)","#60a5fa"]}},xbe={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function vc({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(VG[e]||VG.neutral)[r?"dark":"light"];return me.default.createElement("span",{style:{background:o,color:a,borderRadius:"999px",padding:"2px 8px",fontSize:"11px",fontWeight:600,fontFamily:t?ht.mono:void 0,whiteSpace:"nowrap"}},n)}function Fo({variant:e="secondary",size:t="md",onClick:r,disabled:n,colors:o,title:a,testId:i,children:s}){let u={padding:t==="sm"?"5px 10px":"7px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:n?"not-allowed":"pointer",transition:"background 0.15s ease, border-color 0.15s ease",whiteSpace:"nowrap"},c={primary:{background:n?o.mutedBg:_o,color:n?o.textMuted:"#ffffff",border:"1px solid transparent"},secondary:{background:"transparent",color:o.textCell,border:`1px solid ${o.inputBorder}`},danger:{background:"transparent",color:"#dc2626",border:"1px solid rgba(220,38,38,0.4)"}};return me.default.createElement("button",{type:"button",onClick:r,disabled:n,title:a,"data-testid":i,style:{...u,...c[e]||c.secondary}},s)}function GG({tabs:e,active:t,onChange:r,colors:n}){return me.default.createElement("div",{style:{display:"flex",alignItems:"center"}},e.map(o=>{let a=t===o.id;return me.default.createElement("button",{key:o.id,type:"button",onClick:()=>r(o.id),style:{padding:"10px 12px",marginBottom:"-1px",background:"none",border:"none",borderBottom:`2px solid ${a?_o:"transparent"}`,color:a?_o:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function H2({agent:e,meta:t,onSave:r,onDelete:n,onRun:o,onDuplicate:a,onRunReport:i,onBack:s,isLoading:l,initialTab:u}){let{darkMode:c}=st(),d=fi(c),[f,p]=(0,me.useState)(u||"config"),[m,y]=(0,me.useState)({name:e.name||"",description:e.description||"",provider:e.provider||"openai",model:e.model||"gpt-4o-mini",instructions:e.instructions||"",action_prompts:e.actionPrompts||e.action_prompts||[],preset_type:e.presetType||e.preset_type||"terminal",appearance:e.appearance||{},instruction_sets:e.instructionSets||e.instruction_sets||[],tools:e.tools||[],approval_required_tools:e.approvalRequiredTools||e.approval_required_tools||[],mcp_servers:e.mcpServers||e.mcp_servers||[],model_config:e.modelConfig||e.model_config||{temperature:.7},status:e.status||"draft"}),[x,h]=(0,me.useState)([]),[g,v]=(0,me.useState)(!1),[b,_]=(0,me.useState)(""),w=Su([m.provider]);(0,me.useEffect)(()=>{let P=JSON.stringify(m)!==JSON.stringify({name:e.name||"",description:e.description||"",provider:e.provider||"openai",model:e.model||"gpt-4o-mini",instructions:e.instructions||"",action_prompts:e.actionPrompts||e.action_prompts||[],preset_type:e.presetType||e.preset_type||"terminal",appearance:e.appearance||{},instruction_sets:e.instructionSets||e.instruction_sets||[],tools:e.tools||[],approval_required_tools:e.approvalRequiredTools||e.approval_required_tools||[],mcp_servers:e.mcpServers||e.mcp_servers||[],model_config:e.modelConfig||e.model_config||{temperature:.7},status:e.status||"draft"});v(P)},[m,e]),(0,me.useEffect)(()=>{f==="versions"?C():f==="code"&&S()},[f]);let C=async()=>{try{let z=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(z.versions)}catch(P){console.error("Failed to load versions:",P)}},S=async()=>{try{let z=await(await fetch(`/api/agents/${e.id}/export`)).json();_(z.code)}catch(P){console.error("Failed to load code preview:",P)}},k=(P,z)=>{y(N=>({...N,[P]:z}))},A=(P,z)=>{y(N=>{let D=N[P]||[],T=D.includes(z)?D.filter(E=>E!==z):[...D,z];return{...N,[P]:T}})},O=()=>{r(m)},$=vbe.includes(f),F=f==="tools";return me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},me.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:"12px"}},me.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:ht.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),me.default.createElement(fn,{size:44}),me.default.createElement("div",{style:{flex:1,minWidth:0}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},me.default.createElement("h1",{style:{fontSize:"20px",fontWeight:700,color:d.textPrimary,margin:0}},m.name||"Untitled agent"),me.default.createElement(vc,{tone:xbe[m.status]||"neutral",darkMode:c},m.status),g&&me.default.createElement(vc,{tone:"info",darkMode:c},"unsaved")),me.default.createElement("p",{style:{fontSize:"13px",color:d.textSecondary,margin:"4px 0 0"}},m.description||"No description")),me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&me.default.createElement(Fo,{variant:"secondary",colors:d,onClick:a},"Duplicate"),me.default.createElement(Fo,{variant:"primary",colors:d,onClick:o},"Run Agent"))),me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto"}},me.default.createElement(GG,{tabs:ybe,active:f,onChange:p,colors:d}),me.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),me.default.createElement(GG,{tabs:YG,active:f,onChange:p,colors:d})),F?me.default.createElement(sM,{agent:e,formData:m,updateField:k,onSave:O,hasChanges:g,isLoading:l}):$?me.default.createElement("div",null,f==="traces"&&me.default.createElement(Kd,{agentId:e.id,embedded:!0}),f==="metrics"&&me.default.createElement(iM,{agent:e,embedded:!0}),f==="interactions"&&me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},i&&me.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},me.default.createElement("button",{type:"button",onClick:i,style:{background:"none",border:"none",cursor:"pointer",fontFamily:ht.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),me.default.createElement(Ul,{agentId:e.id,embedded:!0})),f==="evals"&&me.default.createElement(u0,{embedded:!0,agentId:e.id}),f==="feedback"&&me.default.createElement(Abe,{colors:d})):me.default.createElement("div",{style:{background:d.cardBg,border:`1px solid ${d.cardBorder}`,borderRadius:"12px",padding:"20px"}},f==="config"&&me.default.createElement(wbe,{formData:m,updateField:k,providerModels:w,colors:d,darkMode:c,onDelete:n}),f==="instructions"&&me.default.createElement(Sbe,{formData:m,updateField:k,meta:t,toggleArrayItem:A,colors:d}),f==="versions"&&me.default.createElement(kbe,{versions:x,agentId:e.id,onRestore:C,colors:d,darkMode:c}),f==="code"&&me.default.createElement(_be,{code:b,colors:d})),g&&!F&&me.default.createElement("div",{style:{position:"sticky",bottom:"0",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",background:d.cardBg,border:`1px solid ${d.borderStrong}`,borderRadius:"12px",padding:"10px 14px",boxShadow:"0 4px 16px rgba(0,0,0,0.12)"}},me.default.createElement("span",{style:{fontSize:"13px",color:d.textSecondary}},"Unsaved changes"),me.default.createElement("div",{style:{display:"flex",gap:"8px"}},me.default.createElement(Fo,{variant:"primary",size:"sm",colors:d,onClick:O,disabled:l},l?"Saving\u2026":"Save Changes"))))}var zs=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Kl=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),bbe=e=>({fontFamily:ht.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function wbe({formData:e,updateField:t,providerModels:r,colors:n,darkMode:o,onDelete:a}){return me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Agent Name"),me.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Kl(n)})),me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Preset Type"),me.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Kl(n)},Object.keys(sp).map(i=>me.default.createElement("option",{key:i,value:i},i))))),me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Description"),me.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Kl(n),resize:"vertical"}})),me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Provider"),me.default.createElement("select",{value:e.provider,onChange:i=>{t("provider",i.target.value),t("model",r[i.target.value][0])},className:"aa-field",style:Kl(n)},Object.keys(r).map(i=>me.default.createElement("option",{key:i,value:i},i.charAt(0).toUpperCase()+i.slice(1))))),me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Model"),me.default.createElement(sl,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Kl(n),fontFamily:ht.mono}}))),me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Temperature"," ",me.default.createElement("span",{style:{fontFamily:ht.mono,color:n.textSecondary}},e.model_config.temperature)),me.default.createElement("input",{type:"range",min:"0",max:"1",step:"0.1",value:e.model_config.temperature,onChange:i=>t("model_config",{...e.model_config,temperature:parseFloat(i.target.value)}),style:{width:"100%",accentColor:_o}})),me.default.createElement("div",null,me.default.createElement("label",{style:zs(n)},"Status"),me.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Kl(n)},me.default.createElement("option",{value:"draft"},"Draft"),me.default.createElement("option",{value:"active"},"Active"),me.default.createElement("option",{value:"archived"},"Archived")))),a&&me.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",borderTop:`1px solid ${n.cardBorder}`,paddingTop:"16px"}},me.default.createElement("div",null,me.default.createElement("div",{style:bbe(n)},"Danger zone"),me.default.createElement("p",{style:{fontSize:"13px",color:n.textMuted,margin:"4px 0 0"}},"Deleting an agent removes its configuration and version history.")),me.default.createElement(Fo,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function Sbe({formData:e,updateField:t,meta:r,toggleArrayItem:n,colors:o}){let a=e.action_prompts||[],i=(u,c)=>{t("action_prompts",a.map((d,f)=>f===u?{...d,...c}:d))},s=()=>{t("action_prompts",[...a,{name:"",prompt:"",expose_as_tool:!1}])},l=u=>{t("action_prompts",a.filter((c,d)=>d!==u))};return me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},me.default.createElement("div",null,me.default.createElement("label",{style:zs(o)},"System Instructions"),me.default.createElement("textarea",{value:e.instructions,onChange:u=>t("instructions",u.target.value),placeholder:"You are a helpful AI assistant...",rows:12,className:"aa-field",style:{...Kl(o),fontFamily:ht.mono,resize:"vertical"}})),me.default.createElement("div",null,me.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}},me.default.createElement("label",{style:{...zs(o),marginBottom:0}},"Action Prompts"),me.default.createElement(Fo,{variant:"secondary",size:"sm",colors:o,onClick:s},"+ Add action")),me.default.createElement("p",{style:{fontSize:"12px",color:o.textMuted,margin:"0 0 12px"}},"Named actions run with their prompt stacked below the system instructions. The default ",me.default.createElement("span",{style:{fontFamily:ht.mono}},"#ask")," action uses the system instructions alone."),a.length>0&&me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},a.map((u,c)=>me.default.createElement("div",{key:c,style:{border:`1px solid ${o.cardBorder}`,borderRadius:"10px",padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},me.default.createElement("span",{style:{fontFamily:ht.mono,fontSize:"13px",color:o.textMuted}},"#"),me.default.createElement("input",{type:"text",value:u.name,onChange:d=>i(c,{name:d.target.value.toLowerCase().replace(/[^a-z0-9_]/g,"_")}),placeholder:"action_name",className:"aa-field",style:{...Kl(o),flex:1,padding:"6px 10px",fontFamily:ht.mono}}),me.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:o.textSecondary,whiteSpace:"nowrap"}},me.default.createElement("input",{type:"checkbox",checked:!!u.expose_as_tool,onChange:d=>i(c,{expose_as_tool:d.target.checked}),style:{accentColor:_o}}),"Expose as tool"),me.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:ht.mono,fontSize:"12px",color:o.textMuted,background:"none",border:"none",cursor:"pointer",padding:"4px"}},"[x]")),me.default.createElement("textarea",{value:u.prompt,onChange:d=>i(c,{prompt:d.target.value}),placeholder:"This action's system prompt, applied on top of the base instructions...",rows:4,className:"aa-field",style:{...Kl(o),fontFamily:ht.mono,resize:"vertical"}}))))),me.default.createElement("div",null,me.default.createElement("label",{style:zs(o)},"Instruction Sets"),me.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},r.instructionSets?.map(u=>{let c=e.instruction_sets.includes(u);return me.default.createElement("button",{key:u,type:"button",onClick:()=>n("instruction_sets",u),style:{padding:"5px 12px",borderRadius:"999px",fontSize:"13px",cursor:"pointer",border:`1px solid ${c?_o:o.inputBorder}`,background:c?_o:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function kbe({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await cn({title:"Restore this version?",message:"A new version is created with the restored configuration. The current version stays in the history.",confirmLabel:"Restore"}))try{await fetch(`/api/agents/${t}/restore`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({version_id:i})}),r()}catch(s){console.error("Failed to restore version:",s)}};return me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},me.default.createElement("p",{style:{fontSize:"13px",color:n.textSecondary,margin:0}},"View and restore previous versions of this agent."),e.length>0?me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"10px"}},e.map(i=>{let s=i.is_latest||i.isLatest;return me.default.createElement("div",{key:i.id,style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px",padding:"14px",borderRadius:"10px",border:`1px solid ${s?_o:n.cardBorder}`,background:s?"rgba(239,68,68,0.06)":"transparent"}},me.default.createElement("div",{style:{minWidth:0}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},me.default.createElement("span",{style:{fontFamily:ht.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&me.default.createElement(vc,{tone:"error",darkMode:o},"current")),me.default.createElement("p",{style:{fontSize:"13px",color:n.textCell,margin:"4px 0 0"}},i.change_summary||i.changeSummary),me.default.createElement("p",{style:{fontFamily:ht.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&me.default.createElement(Fo,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):me.default.createElement(XG,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function _be({code:e,colors:t}){let r=()=>{navigator.clipboard.writeText(e)};return me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},me.default.createElement("p",{style:{fontSize:"13px",color:t.textSecondary,margin:0}},"Generated Ruby code for this agent."),me.default.createElement(Fo,{variant:"secondary",size:"sm",colors:t,onClick:r},"Copy")),me.default.createElement("pre",{style:{padding:"16px",background:"#111827",color:"#e5e7eb",borderRadius:"10px",overflowX:"auto",fontFamily:ht.mono,fontSize:"12px",lineHeight:1.6,margin:0}},me.default.createElement("code",null,e||"Loading...")))}function Abe({colors:e}){return me.default.createElement("div",{style:{background:e.cardBg,border:`1px solid ${e.cardBorder}`,borderRadius:"12px",padding:"20px"}},me.default.createElement(XG,{colors:e,glyph:"[?]",title:"No feedback recorded",hint:"Thumbs and comments are not captured yet. Once an interaction feedback source is recorded, CSAT and per-trace comments appear here."}))}function XG({colors:e,glyph:t,title:r,hint:n}){return me.default.createElement("div",{style:{textAlign:"center",padding:"40px 20px"}},me.default.createElement("div",{style:{fontFamily:ht.mono,fontSize:"20px",color:e.textMuted}},t),me.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:e.textPrimary,marginTop:"10px"}},r),me.default.createElement("p",{style:{fontSize:"13px",color:e.textMuted,margin:"6px auto 0",maxWidth:"420px"}},n))}var V=G(Y());async function mg(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var K2=G(Y());var Cbe='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var JG=Object.freeze({events:500,chars:262144}),Ebe=16*1024,Nbe=3;function Tbe(e){return{emit:e,maskAllInputs:!0,blockSelector:Cbe,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function Obe(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function Pbe(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function Mbe(e,t=JG){let r=0,n=0;for(let o of e){if(n>=t.events||n>0&&r+o.length>t.chars)break;r+=o.length+1,n+=1}return n}function ZG(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function QG({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=JG,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",f=null,p=null,m=null,y=null,x=!1,h=!1,g=null,v=0;function b(z){d!==z&&(d=z,i(z))}function _(){u.length=0,c=0}function w(){p&&p(),p=null,m=null,y!==null&&o.clearInterval(y),y=null,a?.removeEventListener?.("pagehide",$)}function C(z){h=!0,_(),w(),b(z)}function S(z){if(x||h)return;let N=Obe(z);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&O()}async function k(z,N){let D=Pbe(z,n());try{let T=await r(`/api/session_recordings/${encodeURIComponent(f)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:D,keepalive:N&&D.length<=Ebe});return ZG(T.status)}catch{return"retry"}}async function A(z){for(;u.length>0&&!h;){let N=u.splice(0,Mbe(u,s)),D=N.reduce((E,I)=>E+I.length+1,0);c-=D;let T=await k(N,z);if(T==="sent"){v=0;continue}if(T!=="retry"){C(T);return}if(v+=1,z||v>=Nbe){v=0,_(),m&&m();return}u.unshift(...N),c+=D;return}}function O({final:z=!1}={}){return f===null||h?Promise.resolve():(g||(g=A(z).finally(()=>{g=null})),g)}function $(){O({final:!0})}async function F(){if(d!=="idle"||x)return;b("starting");let z;try{z=await r("/api/session_recordings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_context_id:e})})}catch{x||C("failed");return}if(x)return;if(!z.ok){C(ZG(z.status)==="off"?"off":"failed");return}let N=await z.json().catch(()=>null);if(x)return;if(f=N?.recording?.id??null,f===null){C("failed");return}let D;try{({record:D}=await t())}catch{x||C("failed");return}if(x)return;let T=null;try{T=typeof D=="function"?D(Tbe(S)):null}catch{T=null}if(typeof T!="function"){C("failed");return}p=T,m=()=>D.takeFullSnapshot?.(),y=o.setInterval(()=>O(),l),a?.addEventListener?.("pagehide",$),b("recording")}async function P(){x||(x=!0,w(),!h&&(b("stopped"),g&&await g,await O({final:!0})))}return{start:F,stop:P,flush:O,get state(){return d}}}function lM(e,t){let[r,n]=(0,K2.useState)("idle");return(0,K2.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=QG({contextId:e,loadRecorder:()=>import(t),fetch:(i,s)=>fetch(i,s),target:window,onStateChange:i=>{o&&n(i)}});return a.start(),()=>{o=!1,a.stop()}},[e,t]),r}var Dbe={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},Ibe=(e,t)=>{let r=Dbe[e]||{role:e,label:e};return{...mn(r.role,t),label:r.label}},uM={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},jbe=["Hello, what can you help me with?","Show me a dashboard of last quarter's sales","List the files in the current directory","Explain how this code works"],$be=["user","assistant","tool"],Lbe=1200,zbe=600*1e3,q2=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",RG=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},cM=e=>{let t=new Map;return(e?.logs||[]).filter(r=>r.eid).forEach(r=>{let n=t.get(r.eid)||{eid:r.eid};r.status==="started"?Object.assign(n,r,{input:r.detail,output:n.output}):Object.assign(n,r,{input:n.input,output:r.detail}),t.set(r.eid,n)}),[...t.values()]},Li=e=>e?.context_id??e?.output_metadata?.context_id??null,c0=e=>e.json().catch(()=>({})),eY=({open:e,color:t})=>V.default.createElement("svg",{className:`w-3.5 h-3.5 mt-1 flex-shrink-0 transition-transform ${e?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:t}},V.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}));function Bbe({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=cM(e),i=n2(t);return V.default.createElement("div",{"data-testid":"runner-activity",className:"space-y-2"},a.map(s=>{let l=!!n[s.eid],u=!!(s.input||s.output),c=Ibe(s.kind,t);return V.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},V.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${u?"cursor-pointer":""}`,onClick:u?()=>o(s.eid):void 0,title:u?"Click to inspect input/output":void 0,style:l?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},V.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium flex-shrink-0 mt-0.5",style:{background:c.background,color:c.color,minWidth:"72px",textAlign:"center"}},c.label),V.default.createElement("div",{className:"min-w-0 flex-1"},V.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&V.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),V.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:r.textMuted}},s.status==="started"?V.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?V.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):V.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${q2(s.duration_ms)}`),s.at&&V.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&V.default.createElement(eY,{open:l,color:r.textMuted})),l&&V.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:c.color+"55"}},s.input&&V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),V.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},RG(s.input))),s.output&&V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),V.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"224px",overflowY:"auto",...s.status==="error"?{background:t?"rgba(239,68,68,0.12)":"#fef2f2",color:t?"#fca5a5":"#b91c1c"}:{}}},RG(s.output)))))}))}function Fbe({run:e,darkMode:t,colors:r}){return e?V.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},V.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},V.default.createElement(vc,{tone:uM[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&V.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?V.default.createElement("span",null,q2(e.duration_ms)):null,e.total_tokens?V.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&V.default.createElement("a",{href:ct(`/traces?trace=${e.trace_id}`),className:"font-mono hover:underline",style:{color:r.textSecondary},title:`${e.trace_id} \u2014 open in Traces`},"trace:",e.trace_id.slice(0,8)," \u2192")):null}function dM({agent:e,onBack:t,recorderUrl:r=null}){let{darkMode:n}=st(),o=fi(n),a=e.action_prompts||e.actionPrompts||[],i=["ask",...a.map(ae=>ae.name).filter(Boolean)],[s,l]=(0,V.useState)("ask"),[u,c]=(0,V.useState)(""),[d,f]=(0,V.useState)([]),[p,m]=(0,V.useState)(!1),[y,x]=(0,V.useState)([]),[h,g]=(0,V.useState)(null),[v,b]=(0,V.useState)(null),[_,w]=(0,V.useState)(null),[C,S]=(0,V.useState)([]),[k,A]=(0,V.useState)(!1),[O,$]=(0,V.useState)(null),[F,P]=(0,V.useState)(null),[z,N]=(0,V.useState)(null),[D,T]=(0,V.useState)(null),[E,I]=(0,V.useState)({}),[j,q]=(0,V.useState)([]),[te,K]=(0,V.useState)(null),[le,pe]=(0,V.useState)(!1),[re,_e]=(0,V.useState)(null),[ue,se]=(0,V.useState)(!1),[Z,R]=(0,V.useState)(!1),[L,B]=(0,V.useState)(null),[H,M]=(0,V.useState)(""),[ne,U]=(0,V.useState)(!1),[oe,ye]=(0,V.useState)(null),Je=(0,V.useRef)(null),Ft=(0,V.useRef)(null),Nt=(0,V.useRef)(0),ce=(0,V.useRef)(null),Ze=(0,V.useRef)(!1),fr=(0,V.useRef)(!0),Rt=(0,V.useRef)(null),er=(0,V.useRef)([]),Ke=(0,V.useRef)(null),Kt=(0,V.useRef)(null),Or=(0,V.useRef)(null),oo=(0,V.useRef)(null),us=lM(h,r),oa=(v?.messages||[]).filter(ae=>$be.includes(ae.role));(0,V.useEffect)(()=>{Rt.current=F},[F]),(0,V.useEffect)(()=>{er.current=d},[d]),(0,V.useEffect)(()=>{fr.current=!0,Vl();let ae=Iq(window.location.search);return ae&&w_(ae),()=>{fr.current=!1,Nt.current+=1,Bi(Rt.current),Bi({attachments:er.current}),P(null),f([])}},[e.id]),(0,V.useEffect)(()=>{fe(s)},[e.id,s]),(0,V.useEffect)(()=>{Ft.current=h,h?Ge(h):(b(null),w(null))},[h]),(0,V.useEffect)(()=>{let ae=Kt.current;ae&&(ae.scrollTop=ae.scrollHeight)},[oa.length,F,O?.logs?.length,O?.input_requests?.length,L,z]),(0,V.useEffect)(()=>{if(!Z)return;let ae=je=>{oo.current&&!oo.current.contains(je.target)&&R(!1)};return document.addEventListener("mousedown",ae),()=>document.removeEventListener("mousedown",ae)},[Z]);let Vl=async()=>{try{let je=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();S(je.runs||[])}catch(ae){console.error("Failed to load runs:",ae)}},fe=async ae=>{try{let je=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(ae)}`);if(!je.ok)throw new Error(`HTTP ${je.status}`);let jt=(await je.json()).conversations||[];x(jt),g(Nn=>Nn&&(Je.current===Nn||jt.some(Fi=>Fi.id===Nn))?Nn:jt[0]?.id??null)}catch(je){console.error("Failed to load conversations:",je),x([])}},Ge=async ae=>{try{let je=await fetch(`/api/interactions/${ae}`);if(!je.ok)throw new Error(je.status===404?"Conversation not found":`HTTP ${je.status}`);let it=await je.json();if(Ft.current!==ae)return;b(it.interaction),w(null)}catch(je){if(Ft.current!==ae)return;b(null),w(je.message)}},rt=async()=>{let ae=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:s})}),je=await c0(ae);if(!ae.ok||!je.conversation)throw new Error(je.error||`Could not start a conversation (HTTP ${ae.status})`);let it=je.conversation;return x(jt=>[it,...jt.filter(Nn=>Nn.id!==it.id)]),Je.current=it.id,g(it.id),it.id},ir=()=>Ft.current?Promise.resolve(Ft.current):rt(),Ho=ae=>{Je.current=null,l(ae)},ao=ae=>{Ze.current=ae,A(ae)},aa=()=>{ce.current?.waiting&&(ce.current=null,ao(!1))},Ko=()=>{aa(),$(null),T(null),I({}),q([])},Ca=ae=>{let je=ae?Number(ae):null;je!==Ft.current&&Ko(),Je.current=je,g(je),N(null)},Fs=async()=>{if(!k)try{await rt(),w(null),N(null),Ko(),Bi(Rt.current),P(null),B(null)}catch(ae){w(ae.message)}},Bi=ae=>{(ae?.attachments||[]).forEach(je=>{je.url&&je.url.startsWith("blob:")&&URL.revokeObjectURL(je.url)})},df=ae=>{let je=Array.from(ae||[]).filter(Boolean);je.length!==0&&f(it=>[...it,...je.map(jt=>({file:jt,filename:jt.name,content_type:jt.type||"application/octet-stream",byte_size:jt.size,kind:LK(jt),url:jt.type&&jt.type.startsWith("image/")?URL.createObjectURL(jt):null}))])},cs=ae=>{f(je=>{let it=je[ae];return it?.url&&URL.revokeObjectURL(it.url),je.filter((jt,Nn)=>Nn!==ae)})},Gl=(ae,je)=>{Bi(Rt.current),P(null),Vl();let it=Li(ae)??je;it&&(it!==Ft.current?(Je.current=it,g(it)):Ge(it),fe(s))},Vn=(ae,je)=>{ce.current=null,ao(!1),q([]),Gl(ae,je)},M0=(ae,je)=>{ce.current={id:ae.id,contextId:Li(ae)??je,waiting:!0},Gl(ae,je),m2()},ff=(ae,je)=>{if(!fr.current)return;let it=++Nt.current,jt=Date.now(),Nn=async()=>{if(Nt.current===it){try{let Fi=await fetch(`/api/runs/${ae}`);if(Fi.ok){let qo=await Fi.json();if(Nt.current!==it)return;$(qo.run);let ds=pP(qo.run);if(ds==="finished"){Vn(qo.run,je);return}if(ds==="awaiting"){M0(qo.run,je);return}}}catch{}Date.now()-jtFi&&{...Fi,status:"failed",error_message:"Timed out waiting for the run to finish."}),T("Timed out waiting for the run to finish."))}};Nn()},D0=async({text:ae,files:je,fromComposer:it=!1})=>{let jt=(ae||"").trim();if(!jt&&je.length===0||k)return;T(null),N(null),B(null),ao(!0),I({}),q([]),$({status:"pending",input_prompt:jt,output:"",logs:[],started_at:new Date().toISOString()}),Bi(Rt.current),P({content:jt||"(see attached files)",attachments:je.map(({file:qo,...ds})=>ds)}),it&&(c(""),f([]));let Nn=Ft.current;if(!Nn)try{Nn=await rt()}catch(qo){T(`${qo.message} \u2014 running without a pinned conversation.`)}let Fi=()=>{it&&(c(jt),f(je)),P(null)};try{let qo=new FormData;qo.append("prompt",jt),qo.append("action_name",s),Nn&&qo.append("params[context_id]",String(Nn)),je.forEach(({file:z0})=>qo.append("attachments[]",z0,z0.name));let ds=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:qo}),mf=await c0(ds);if(ds.status===402&&mf.upgrade_required){K(mf.usage),$(z0=>({...z0,status:"failed",error_message:mf.message||"Plan limit reached"})),ao(!1),Fi();return}if(!ds.ok)throw new Error(mf.error||"Run failed");ff(mf.run.id,Li(mf.run)??Nn)}catch(qo){$(ds=>({...ds,status:"failed",error_message:qo.message})),ao(!1),Fi()}},I0=()=>D0({text:u,files:d,fromComposer:!0}),Eg=(ae,je)=>{let it=ce.current;!it||String(it.id)!==String(ae.run_id)||(q(jt=>[...jt.filter(Nn=>Nn.request.id!==ae.id),{request:ae,outcome:je}]),ce.current={...it,waiting:!1},ff(it.id,it.contextId))},Ng=ae=>{let je=pP(ae);je==="finished"||Ze.current||(T(null),I({}),q([]),$(ae),ao(!0),je==="awaiting"?M0(ae,Li(ae)):ff(ae.id,Li(ae)))},j0=(ae,je)=>{Je.current=ae,je&&i.includes(je)&&je!==s&&l(je),g(ae)},w_=async ae=>{try{let je=await fetch(`/api/runs/${ae}`);if(!je.ok)return;let it=await je.json();if(!fr.current||!it.run||String(it.agent?.id)!==String(e.id))return;let jt=Li(it.run);jt&&j0(jt,it.run.action_name),Ng(it.run)}catch(je){console.error("Failed to open the linked run:",je)}},$0=ae=>{!ae||!ae.text||D0({text:ae.text,files:[]})},S_=ae=>{ae.key==="Enter"&&(ae.metaKey||ae.ctrlKey)&&(ae.preventDefault(),I0())},k_=async(ae,je)=>{let it=Ft.current,jt=await fetch(`/api/interactions/${it}/messages/${ae.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:je})}),Nn=await c0(jt);if(!jt.ok)throw new Error(Nn.error||`Could not save the message (HTTP ${jt.status})`);await Ge(it)},Tg=async ae=>{let je=Ft.current;try{let it=await fetch(`/api/interactions/${je}/messages/${ae.id}`,{method:"DELETE"});if(!it.ok){let jt=await c0(it);throw new Error(jt.error||`Could not delete the message (HTTP ${it.status})`)}w(null),await Ge(je),fe(s)}catch(it){w(it.message)}},__=ae=>{R(!1),B(ae),M(""),ye(null)},we=async()=>{let ae=H.trim();if(!(!ae||ne)){U(!0),ye(null);try{let je=await ir(),it=await fetch(`/api/interactions/${je}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:L,content:ae})}),jt=await c0(it);if(!it.ok)throw new Error(jt.error||`Could not add the message (HTTP ${it.status})`);M(""),B(null),await Ge(je),fe(s)}catch(je){ye(je.message)}finally{U(!1)}}},gt=async ae=>{let je=ae;if(Li(ae)==null||ae.status==="awaiting_input")try{let jt=await fetch(`/api/runs/${ae.id}`);jt.ok&&(je=(await jt.json()).run)}catch(jt){console.error("Failed to load run details:",jt)}let it=Li(je);it?(N(null),it!==Ft.current&&Ko(),j0(it,je.action_name||ae.action_name),Ng(je)):N({...je,output:je.output??je.output_preview,error_message:je.error_message??je.error}),Ke.current?.scrollIntoView({behavior:"smooth",block:"start"})},tr=async()=>{pe(!0),_e(null);try{await mg({planSlug:"pro"})}catch(ae){_e(ae.message),pe(!1)}},Sr=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,Kr=a.find(ae=>ae.name===s)?.prompt,Ea=[e.instructions,s==="ask"?null:Kr].map(ae=>(ae||"").trim()).filter(Boolean).join(` +Who changed the shipping policy last week?`,style:{...Jl,width:"100%",fontFamily:X,fontSize:12,lineHeight:"18px"}}),Ye.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)",textWrap:"pretty"}},"With scenarios, each run replays every message through the agent \u2014 once per model in \u201CCompare models\u201D \u2014 and reports which tasks it completes, what faults it hits, and how to fix them. ",Ye.default.createElement("code",{style:{fontFamily:X}},"# Heading")," lines group related tasks so they can be run together; ",Ye.default.createElement("code",{style:{fontFamily:X}},"| tools: a, b")," names the tool a task should call.")),s.judgeKind==="judge_defined"?Ye.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"On the first run the judge reads the agent's instructions and recent interactions, defines 3\u20136 KPIs, then scores samples against them. KPIs persist so later runs (and model cohorts) stay comparable."):Ye.default.createElement(Ye.default.Fragment,null,Ye.default.createElement("div",null,Ye.default.createElement(Ve,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),Ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},mM.map(_))),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),Ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},qG.map(_))),Ye.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),Ye.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>x({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Jl,width:"100%"}})),Ye.default.createElement("div",null,Ye.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"LLM judge criterion (optional, needs provider credentials)"),Ye.default.createElement("input",{type:"text",value:s.llmJudgePrompt,onChange:C=>x({llmJudgePrompt:C.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Jl,width:"100%"}})))),u&&Ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},u),Ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ye.default.createElement(se,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&Ye.default.createElement(se,{onClick:i},"Cancel"))))}function Ibe(e,t){return e?`The judge runs on ${Mbe[e]||e}.`:t?"Provider credentials could not be read, so the judge's provider is unknown. Check the provider API keys in Settings.":"No provider has credentials for a judge. Add a provider API key in Settings."}function Dbe(e){let[t,r]=(0,Ye.useState)([]);return(0,Ye.useEffect)(()=>{if(r([]),!e)return;let n=!1;return fetch(`/api/agents/${encodeURIComponent(e)}/recorded_models`).then(o=>o.ok?o.json():{}).then(o=>{!n&&Array.isArray(o.models)&&r(o.models)}).catch(()=>{}),()=>{n=!0}},[e]),t}var Se=V(Y());var jbe={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:X,fontSize:12,color:"var(--color-info)"},Jn=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:X,fontSize:e,color:t,...r});function $be({stats:e}){if(!e)return Se.default.createElement("span",{style:Jn()},"\u2014");if(e.skipped)return Se.default.createElement("div",null,Se.default.createElement("span",{style:Jn(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Se.default.createElement("div",{style:{...Jn(),marginTop:2,textWrap:"pretty"},title:e.reason},Hv(e.reason,90)));let t=Number(e.score),r=la[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${Vn(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${ta(e.min)} \xB7 max ${ta(e.max)}`),e.source==="telemetry"){n.push(`${e.traces} traces \xB7 ${e.window_hours}h`);let o=e.observed||{};o.error_rate!=null&&n.push(`observed ${o.error_rate}% errors (${o.errors})`),o.avg_duration_ms!=null&&n.push(`observed avg ${so(o.avg_duration_ms)}`)}return Se.default.createElement("div",null,Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6}},Se.default.createElement("span",{style:Jn(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",ta(t)),e.source==="telemetry"&&Se.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:Jn(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Se.default.createElement("div",{style:{...Jn(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function Lbe({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>IG({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:I_()});return Se.default.createElement("div",{"data-testid":"fix-item",style:{border:"1px solid var(--color-border)",borderRadius:10,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10,minWidth:0}},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(ii,{kind:"fault"}),Se.default.createElement(Ee,{tone:"error"},e.label),Se.default.createElement("span",{style:Jn()},e.scope)),Se.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},e.text),e.chips?.length>0&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},Se.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},e.chipsLabel),Se.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},e.chips.map(a=>Se.default.createElement("span",{key:a,style:{fontFamily:X,fontSize:11,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",color:"var(--color-text-primary)",fontWeight:600}},a)))),e.details?.length>0&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:3}},e.details.map(a=>Se.default.createElement("span",{key:a,style:Jn(11,"var(--color-text-cell)",{textWrap:"pretty"})},a))),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",flexWrap:"wrap"}},e.action?.path&&Se.default.createElement(se,{size:"sm",onClick:()=>kt(e.action.path)},e.action.label),e.action?.hint&&Se.default.createElement("span",{style:{...Jn(),whiteSpace:"nowrap"}},e.action.hint),Se.default.createElement(o0,{build:o,style:{marginLeft:"auto"}})))}function hM({evaluation:e,runs:t=[],runCount:r=null,runId:n,loading:o=!1,running:a=!1,onSelectRun:i,onRun:s,onBack:l,onOpenEvaluation:u,onDelete:c,deleting:d=!1}){let[f,p]=(0,Se.useState)("all"),[m,y]=(0,Se.useState)(!1),b=(K,ue)=>Se.default.createElement("button",{type:"button",onClick:ue,style:jbe},K),h=t.findIndex(K=>K.id===n),g=h>=0?t[h]:t[0],v=g?mg(g,Math.max(h,0),t,r):null,x=Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},b("Evaluations",l),Se.default.createElement("span",{style:Jn(12)},"/"),b(e?.name||"Evaluation",u),Se.default.createElement("span",{style:Jn(12)},"/"),Se.default.createElement("span",{style:Jn(12,"var(--color-text-primary)",{fontWeight:700})},g?`Run #${v}`:"Runs"));if(!e)return Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Se.default.createElement("div",null,b("Evaluations",l)),Se.default.createElement(He,null,Se.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!g)return Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},x,o?Se.default.createElement("div",{className:"flex items-center justify-center h-64"},Se.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):Se.default.createElement(He,null,Se.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let S=qv(g),w=S.length?S:[null],A=pg(g),k=K=>A.find(ue=>ue.label===K)||(K==null?A[0]:null),_=g.scores?._verdict,C=Array.isArray(g.scores?._missing_models)?g.scores._missing_models:[],E=fg(g).map(([K,ue])=>({key:K,value:ue,criterion:Kv(e,K)})),j=K=>E.filter(ue=>Hs(ue.criterion)===K).length,F=IP.filter(K=>j(K.id)>0),D=K=>w.some(ue=>{let pe=nf(K.value,ue);return pe&&(pe.skipped||pe.score!=null&&pe.score<.7)}),z=E.filter(K=>(f==="all"||Hs(K.criterion)===f)&&(!m||D(K))),N=IP.map(K=>({...K,rows:z.filter(ue=>Hs(ue.criterion)===K.id)})).filter(K=>K.rows.length),O=N_(e,{...g,number:v}),$=Hi(g),T=_o(g.completed_at||g.created_at),I=g.status==="complete"&&g.samples_evaluated?` \xB7 ${Vn(g.samples_passed||0,g.samples_evaluated)} passed`:"",P={fontFamily:X,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"top",whiteSpace:"nowrap"},H={padding:"10px 12px",verticalAlign:"top"},Q={padding:"7px 12px",verticalAlign:"middle"};return Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},x,Se.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Se.default.createElement("div",{style:{minWidth:0}},Se.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},`Run #${v}`),Se.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},`${e.name} \xB7 ${T} \xB7 @${e.agent?.name||"agent"} \xB7 ${rf(e,g)}${I}`)),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((K,ue)=>Se.default.createElement(io,{key:K.id,square:!0,mono:!0,selected:K.id===g.id,onClick:()=>i?.(K),title:`${K.status} \xB7 ${_o(K.completed_at||K.created_at)}`},`#${mg(K,ue,t,r)}`)),Se.default.createElement(se,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Se.default.createElement(Rv,{spend:$,judgedBy:dg(e,g)}),g.status==="failed"?Se.default.createElement(He,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Se.default.createElement("span",{style:Jn(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},g.error_message)):g.status!=="complete"?Se.default.createElement(He,{"data-testid":"run-pending",padding:"14px 16px"},Se.default.createElement("span",{style:Jn(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${g.status}`),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6}},"Scores appear once the run completes.")):Se.default.createElement(Se.default.Fragment,null,S.length>1&&Se.default.createElement(n0,{rows:T_(g,{columns:S}),unit:"interaction",judgedBy:_?.judge||null,judgeEstimated:$?.judge?.estimated??!0}),Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},w.map(K=>{let ue=sV(g,K),pe=k(K),re=pe?.samples??(K==null?g.samples_evaluated:null),_e=pe?.passed??(K==null?g.samples_passed:null),de=[];return ue.below>0&&de.push({tone:"error",text:`below pass mark \xD7${ue.below}`}),ue.skipped>0&&de.push({tone:"warning",text:`skipped \xD7${ue.skipped}`}),Se.default.createElement(r0,{key:K||"all",label:K,short:K?Io(K).short:"all samples",provider:pe?.provider||(K?Io(K).provider:null)||null,winner:!!_?.winner&&_.winner===K,passed:_e,total:re,avgScore:ue.avg,criteria:{cleared:ue.cleared,scored:ue.scored},latencyMs:pe?.avg_duration_ms,inputTokens:pe?.input_tokens,outputTokens:pe?.output_tokens,cost:pe?.cost,perInteraction:of(pe?.cost,pe?.priced),estimated:pe?.estimated??!1,unit:"interaction",badges:de})}))),(_||C.length>0)&&Se.default.createElement(He,{padding:"12px 16px",style:{display:"flex",flexDirection:"column",gap:6},"data-testid":"run-verdict"},_&&Se.default.createElement(Se.default.Fragment,null,Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Se.default.createElement(Ve,null,"Verdict"),_.judge&&Se.default.createElement("span",{style:Jn()},`judged by ${_.judge}`)),Se.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},Se.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:X,fontSize:12}},_.winner),_.rationale?` \xB7 ${_.rationale}`:"")),C.length>0&&Se.default.createElement("span",{style:Jn(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${C.join(", ")}`)),Se.default.createElement(He,{padding:0,style:{overflow:"hidden"},testId:"criteria-matrix"},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",flexWrap:"wrap"}},Se.default.createElement(Ve,{style:{marginRight:4}},"Criteria"),Se.default.createElement(io,{selected:f==="all",onClick:()=>p("all")},`All ${E.length}`),F.map(K=>Se.default.createElement(io,{key:K.id,selected:f===K.id,onClick:()=>p(K.id)},`${K.label} ${j(K.id)}`)),Se.default.createElement(io,{square:!0,mono:!0,selected:m,onClick:()=>y(K=>!K),style:{marginLeft:"auto",background:"transparent"},title:"Hide criteria every model cleared"},m?"[x] failed only":"[ ] failed only")),Se.default.createElement("div",{style:{overflowX:"auto"}},Se.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Se.default.createElement("thead",null,Se.default.createElement("tr",{style:{background:"var(--color-muted)"}},Se.default.createElement("th",{style:{...P,width:"34%"}},"Criterion"),Se.default.createElement("th",{style:P},"Expects"),w.map(K=>Se.default.createElement("th",{key:K||"score",style:P},K?Se.default.createElement(Se.default.Fragment,null,Se.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},Io(K).short),(k(K)?.provider||Io(K).provider)&&Se.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},k(K)?.provider||Io(K).provider)):"Score")))),Se.default.createElement("tbody",null,N.map(K=>Se.default.createElement(Se.default.Fragment,{key:K.id},Se.default.createElement("tr",{style:{background:"var(--color-background)",borderTop:"1px solid var(--color-border-light)"}},Se.default.createElement("td",{style:Q},Se.default.createElement("span",{style:{fontWeight:600,fontSize:13,color:"var(--color-text-primary)"}},K.label)),Se.default.createElement("td",{style:Q},Se.default.createElement("span",{style:Jn()},`${K.rows.length} ${K.rows.length===1?"criterion":"criteria"}`)),w.map(ue=>{let pe=K.rows.filter(de=>{let le=nf(de.value,ue);return le&&le.score!=null}),re=pe.filter(de=>nf(de.value,ue).score>=.7).length,_e=pe.length&&re===pe.length?"var(--color-success-text)":re===0&&pe.length?"var(--color-error-text)":"var(--color-text-cell)";return Se.default.createElement("td",{key:ue||"score",style:Q},Se.default.createElement("span",{style:Jn(11,_e,{fontWeight:600})},pe.length?`${Vn(re,pe.length)} passed`:"\u2014"))})),K.rows.map(ue=>Se.default.createElement("tr",{key:ue.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Se.default.createElement("td",{style:H},Se.default.createElement("div",{style:Jn()},ue.key),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},A_(ue.criterion))),Se.default.createElement("td",{style:H},Se.default.createElement("span",{style:{fontFamily:X,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:cg(ue.criterion)},Hv(cg(ue.criterion),40))),w.map(pe=>Se.default.createElement("td",{key:pe||"score",style:H},Se.default.createElement($be,{stats:nf(ue.value,pe)}))))))),N.length===0&&Se.default.createElement("tr",{style:{borderTop:"1px solid var(--color-border-light)"}},Se.default.createElement("td",{colSpan:2+w.length,style:{padding:"16px 14px",fontSize:13,color:"var(--color-text-muted)"}},E.length?"Nothing failed under this filter.":"This run recorded no criterion scores.")))))),Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Se.default.createElement(Ve,null,"What to fix"),Se.default.createElement("span",{style:Jn()},O.length?Ut(O.length,"item"):"nothing")),O.length?Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},O.map(K=>Se.default.createElement(Lbe,{key:K.kind,item:K,evaluation:e,run:g,number:v}))):Se.default.createElement(Zn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${Ab(.7)}) and nothing was skipped.`)),Se.default.createElement(sf,{evaluation:e,run:g,spend:$,onDelete:c,deleting:d}))}var _c=null,yM=new Set,GG=()=>yM.forEach(e=>e(_c));function zbe(e={}){let t=e.requireText==null?null:String(e.requireText);return{title:e.title||"Are you sure?",message:e.message||"",confirmLabel:e.confirmLabel||"Confirm",cancelLabel:e.cancelLabel||"Cancel",danger:!!e.danger,requireText:t===""?null:t}}function Br(e){return _c&&_c.resolve(!1),new Promise(t=>{_c={...zbe(e),resolve:t},GG()})}function YG(e){if(!_c)return;let{resolve:t}=_c;_c=null,GG(),t(!!e)}function XG(){return _c}function ZG(e){return yM.add(e),()=>yM.delete(e)}function JG(e,t){return e?.requireText?t===e.requireText:!0}var QG=()=>{let e=Xn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=OP(window.location.search);return t?.runId?t:null},Z_=()=>{let e=Xn().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},RG=()=>OP(window.location.search)?.evaluationId||(Z_()?String(Z_().evaluationId):null),X_=(e=11,t="var(--color-text-muted)")=>({fontFamily:X,fontSize:e,color:t}),Bbe=e=>{let t=gg(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:N_(e,t).length+r:r},Fbe={stale:{tone:"warning",text:"stale",title:"Its headline run scored an earlier version of the agent, so the tiles leave it out"},unrecorded:{tone:"muted",text:"version not recorded",title:"Nothing says which version of the agent its headline run scored; it still counts"},archived:{tone:"muted",text:"archived",title:"Archived: kept with its runs, left out of the tiles"}};function b0({embedded:e=!1,agentId:t=null}){let{darkMode:r}=lt(),[n,o]=(0,Le.useState)(()=>e?null:QG()),a=(0,Le.useRef)(null),[i,s]=(0,Le.useState)(0),[l,u]=(0,Le.useState)(null);(0,Le.useEffect)(()=>{let me=a.current?.contentDocument?.body;if(!me)return;let Ge=()=>u(me.scrollHeight);if(Ge(),typeof ResizeObserver>"u")return window.addEventListener("resize",Ge),()=>window.removeEventListener("resize",Ge);let rt=new ResizeObserver(Ge);return rt.observe(me),()=>rt.disconnect()},[i,n]),(0,Le.useEffect)(()=>u(null),[n]);let[c,d]=(0,Le.useState)([]),[f,p]=(0,Le.useState)([]),[m,y]=(0,Le.useState)(void 0),[b,h]=(0,Le.useState)(!1),[g,v]=(0,Le.useState)(void 0),[x,S]=(0,Le.useState)(!0),[w,A]=(0,Le.useState)(null),[k,_]=(0,Le.useState)(null),[C,E]=(0,Le.useState)(()=>{if(e)return null;let me=Z_();return me?.runId?me:null}),[j,F]=(0,Le.useState)(()=>e?null:RG()),[D,z]=(0,Le.useState)({}),[N,O]=(0,Le.useState)(!1),[$,T]=(0,Le.useState)(null),[I,P]=(0,Le.useState)(null),[H,Q]=(0,Le.useState)(null),[K,ue]=(0,Le.useState)(!1),[pe,re]=(0,Le.useState)(0);(0,Le.useEffect)(()=>{if(e)return;let me=()=>{o(QG());let Ge=Z_();E(Ge?.runId?Ge:null);let rt=RG();F(rt),rt&&_(ur=>new Set([...ur||[],Number(rt)]))};return window.addEventListener("popstate",me),window.addEventListener("dashboard:navigate",me),()=>{window.removeEventListener("popstate",me),window.removeEventListener("dashboard:navigate",me)}},[e]);let _e=(0,Le.useCallback)(async()=>{try{let me=new URLSearchParams;t&&me.set("agent_id",t),K&&me.set("archived","1");let Ge=me.toString(),rt=await fetch(`/api/evaluations${Ge?`?${Ge}`:""}`);if(!rt.ok)throw new Error(`Request failed (${rt.status})`);let ur=await rt.json();re(Number(ur.archived_count)||0),y(ur.judge_provider??null),h(ur.judge_provider_error===!0),v(Array.isArray(ur.model_providers)?ur.model_providers:null);let Xo=ur.evaluations||[],fo=null;try{Xo=await rV(Xo,j,fetch)}catch(da){fo=da.message}d(Xo),_(da=>{if(da)return da;let Zo=j?Xo.find(Ia=>String(Ia.id)===j):Xo.find(Ia=>Ia.scenario_suite)||Xo[0];return new Set(Zo?[Zo.id]:[])}),A(fo)}catch(me){A(me.message),v(Ge=>Ge===void 0?null:Ge)}finally{S(!1)}},[t,j,K]),de=(0,Le.useCallback)(async me=>{try{let Ge=await fetch(`/api/evaluations/${me}`);if(!Ge.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${Ge.status})`);let rt=await Ge.json();z(ur=>({...ur,[me]:{runs:rt.evaluation?.runs||[],runCount:rt.evaluation?.run_count??null}}))}catch(Ge){z(rt=>({...rt,[me]:{runs:null,runCount:null,error:Ge.message}})),A(Ge.message)}},[]);(0,Le.useEffect)(()=>{_e(),fetch("/api/agents").then(me=>me.ok?me.json():{agents:[]}).then(me=>p(me.agents||[])).catch(()=>p([]))},[_e]),(0,Le.useEffect)(()=>{new Set([...k||[],...C?[C.evaluationId]:[]]).forEach(Ge=>{let rt=c.find(ur=>ur.id===Ge);rt&&!rt.scenario_suite&&!D[Ge]&&de(Ge)})},[k,C,c,D,de]);let le=me=>{!e&&Xn()!==me&&og(me)},Z=me=>!!k?.has(me),ee=me=>{let Ge=!Z(me.id);_(rt=>{let ur=new Set(rt||[]);return Ge?ur.add(me.id):ur.delete(me.id),ur}),le(Ge?`/evaluations/${me.id}`:"/evaluations")},L=(me,Ge)=>{_(rt=>new Set([...rt||[],me.id])),E({evaluationId:me.id,runId:Ge.id}),le(`/evaluations/${me.id}/runs/${Ge.id}`)},B=me=>{E(null),le(me?`/evaluations/${me}`:"/evaluations")},q=async me=>{T(me.id),A(null);try{let Ge=await fetch(`/api/evaluations/${me.id}/run`,{method:"POST"}),rt=await Ge.json().catch(()=>({}));if(!Ge.ok){A((rt.errors||[rt.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${Ge.status})`);return}await Promise.all([_e(),de(me.id)]),rt.run&&C?.evaluationId===me.id&&L(me,rt.run)}finally{T(null)}},M=async(me,Ge)=>{Q(me.id),A(null);try{let rt=await fetch(`/api/evaluations/${me.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:Ge}})}),ur=await rt.json().catch(()=>({}));if(!rt.ok){A((ur.errors||[ur.error]).filter(Boolean).join(", ")||`${Ge?"Archive":"Unarchive"} failed (HTTP ${rt.status})`);return}await _e()}finally{Q(null)}},ne=async me=>{if(await Br({title:`Delete ${me.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:me.name})){P(me.id),A(null);try{let Ge=await fetch(`/api/evaluations/${me.id}`,{method:"DELETE"});Ge.ok||Ge.status===404?(d(rt=>rt.filter(ur=>ur.id!==me.id)),_(rt=>{let ur=new Set(rt||[]);return ur.delete(me.id),ur}),C?.evaluationId===me.id&&B(null)):A(`Delete failed (HTTP ${Ge.status})`)}finally{P(null)}}};if(x)return Le.default.createElement("div",{className:"flex items-center justify-center h-64"},Le.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let U=t?c.filter(me=>String(me.agent?.id)===String(t)):c,oe=me=>{let Ge=D[me.id];return Ge?.runs?{runs:Ge.runs,runCount:me.run_count??Ge.runCount??null,loaded:!0}:{runs:me.latest_run?[me.latest_run]:[],runCount:me.run_count??null,loaded:!1}};if(n){let me=ct(`/api/evaluations/${n.evaluationId}/runs/${n.runId}/report`),Ge=`${me}?theme=${r?"dark":"light"}`;return Le.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Le.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Le.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Le.default.createElement(se,{size:"sm",onClick:()=>{og("/evaluations"),o(null)}},Le.default.createElement("span",{style:{fontFamily:X}},"<-")," Evaluations"),Le.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),Le.default.createElement("span",{style:X_(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),Le.default.createElement("a",{href:me,target:"_blank",rel:"noopener noreferrer",title:"The report is one self-contained page \u2014 save it to export",style:{padding:"6px 12px",borderRadius:8,fontSize:13,fontWeight:500,color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)",textDecoration:"none"}},"Open standalone ",Le.default.createElement("span",{style:{fontFamily:X}},"->"))),Le.default.createElement("iframe",{ref:a,src:Ge,title:"Evaluation run report",onLoad:()=>s(rt=>rt+1),scrolling:"no",style:{width:"100%",borderRadius:12,border:"1px solid var(--color-border)",background:"var(--color-background)",display:"block",height:l?`${l}px`:"calc(100vh - 180px)"}}))}if(C){let me=U.find(Ge=>Ge.id===C.evaluationId);if(!me||!me.scenario_suite){let{runs:Ge,runCount:rt,loaded:ur}=me?oe(me):{runs:[],runCount:null,loaded:!0};return Le.default.createElement(hM,{evaluation:me,runs:Ge,runCount:rt,runId:C.runId,loading:!ur,running:$===C.evaluationId,onSelectRun:Xo=>L(me,Xo),onRun:()=>q(me),onBack:()=>B(null),onOpenEvaluation:()=>B(C.evaluationId),onDelete:me?()=>ne(me):void 0,deleting:I===C.evaluationId})}}let ve=fV(U,{focusId:j}),{samplesScored:Ze,samplesPassed:Ht,passRatio:Mt,spend:fe}=ve,Xe=pV(ve),gr=[...new Set(U.map(me=>me.agent?.name).filter(Boolean))],rr=U.reduce((me,Ge)=>Math.max(me,DP(Ge,gg(Ge)||Ge.latest_run)),0),nr=U.map(Bbe),qe=nr.reduce((me,Ge)=>me+Ge,0),Gt=nr.filter(Boolean).length,Ir=U.length?[`${Ut(gr.length,"agent")} \xB7 ${rr>1?`${rr} models compared`:"no model comparisons"}`,Xe].filter(Boolean).join(" \xB7 "):"none defined yet",co=ve.focused?"headline run of this evaluation":`headline run of ${Ut(ve.counted,"current evaluation")}${Xe?` \xB7 ${Xe}`:""}`,ys=ve.perModel.length>1?ve.perModel.map(me=>`${me.label} ${Vn(me.passed,me.total)}`):[],ca=fe.agentCost!=null?[`agent ${Rr(fe.agentCost,{estimated:fe.estimated})} over ${Ut(fe.interactions,"interaction")}`,fe.judgeCost!=null?`judge ${Rr(fe.judgeCost,{estimated:fe.judgeEstimated})} offline`:"no judge spend"].join(" \xB7 "):"no priced runs yet",eu=fe.agentCost!=null&&fe.estimated||fe.judgeCost!=null&&fe.judgeEstimated;return Le.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},Le.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&Le.default.createElement("div",{style:{flex:1,minWidth:260}},Le.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),Le.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Score recorded outputs, or paste a list of user messages to replay through the agent under one or more models. Every run is kept.")),Le.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(pe>0||K)&&Le.default.createElement(se,{size:"sm",onClick:()=>ue(me=>!me),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},K?"Hide archived":`Show archived (${pe})`),Le.default.createElement(se,{variant:"primary",onClick:()=>O(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),w&&Le.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},"Failed to load evaluations: ",w),N&&Le.default.createElement(gM,{agents:f,agentId:t,judgeProvider:m,judgeProviderError:b,modelProviders:g,onCancel:()=>O(!1),onCreated:async me=>{O(!1),await _e(),me?.id!=null&&(_(Ge=>new Set([...Ge||[],me.id])),le(`/evaluations/${me.id}`))}}),Le.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},Le.default.createElement(ag,{label:"Evaluations",value:U.length,sub:Ir,testId:"stat-evaluations"}),Le.default.createElement(ag,{label:"Samples scored",value:Ze,sub:co,testId:"stat-samples-scored"}),Le.default.createElement(ag,{label:"Pass rate",value:bp(Mt),valueColor:Mt==null?"var(--color-text-muted)":la[Rd(Mt)].strong,sub:Mt==null?Xe||"no completed runs yet":Le.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},Le.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${Ht}/${Ze} passed`),ys.map(me=>Le.default.createElement("span",{key:me,style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"stat-pass-rate-model"},me))),testId:"stat-pass-rate"}),Le.default.createElement(ag,{label:"To fix",value:qe,valueColor:qe?"var(--color-error)":void 0,sub:qe?`across ${Ut(Gt,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Le.default.createElement(ag,{label:"Cost / interaction",value:Zl(fe.perInteraction,fe.estimated),valueColor:fe.perInteraction==null?"var(--color-text-muted)":void 0,sub:eu?`${ca} \xB7 ${Es}`:ca,testId:"stat-agent-cost"})),Le.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},U.map((me,Ge)=>{let rt=me.latest_run,ur=gg(me),Xo=rt&&ur&&rt.id!==ur.id?rt:null,fo=LP(me),da=Fbe[fo],Zo=fo==="archived",Ia=Z(me.id),Ys=!!me.scenario_suite,Gi=nr[Ge],Sf=(me.criteria||[]).some(Qn=>Hs(Qn)==="telemetry"),{runs:vs,runCount:tu}=oe(me);return Le.default.createElement(He,{key:me.id,padding:0,testId:"evaluation-card","data-telemetry":Sf?"true":"false","data-kind":Ys?"suite":"sampling","data-open":Ia?"true":"false","data-standing":fo,style:{overflow:"hidden",opacity:Zo?.75:1}},Le.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":Ia,onClick:()=>ee(me),onKeyDown:Qn=>{(Qn.key==="Enter"||Qn.key===" ")&&(Qn.preventDefault(),ee(me))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},Le.default.createElement(ii,{kind:"chevron",open:Ia}),Le.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:X,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:Ys?"scenario suite":"sampling evaluation"},Ys?"=":"~"),Le.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},me.name),Le.default.createElement("span",{style:X_(11)},`@${me.agent?.name||"agent"} \xB7 ${rf(me)}`),Le.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},Le.default.createElement("span",{style:X_(11)},_o(rt?.completed_at||rt?.created_at||me.created_at)),Gi>0&&Le.default.createElement("span",{style:X_(11,"var(--color-error)")},`${Gi} to fix`),da&&Le.default.createElement(Ee,{tone:da.tone,size:10,style:{padding:"1px 6px"},title:da.title,testId:"evaluation-standing"},da.text),Xo&&Le.default.createElement(P_,{run:Xo,testId:"evaluation-newer-run-badge"}),Le.default.createElement(P_,{run:ur||rt,testId:Ys?"suite-pass-badge":"evaluation-pass-badge"}),Le.default.createElement("button",{type:"button",onClick:Qn=>{Qn.stopPropagation(),M(me,!Zo)},disabled:H===me.id,title:Zo?"Bring this evaluation back into the list and the tiles":"Archive: keep its runs, leave it out of the list and the tiles","data-testid":"evaluation-archive-toggle",style:{background:"transparent",border:"none",padding:0,cursor:H===me.id?"not-allowed":"pointer",fontFamily:X,fontSize:11,color:"var(--color-text-muted)",opacity:H===me.id?.5:1}},H===me.id?"\u2026":Zo?"unarchive":"archive"))),Ia&&Le.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Ys?Le.default.createElement(pM,{evaluation:me,modelProviders:g,onChanged:_e,onDelete:()=>ne(me),deleting:I===me.id,initialRunId:C?.evaluationId===me.id?C.runId:null,onRunSelected:Qn=>le(`/evaluations/${me.id}/runs/${Qn}`)}):Le.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},Le.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Le.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},vs.length?MV(vs,tu):`@${me.agent?.name||"agent"} \xB7 no runs yet`),Le.default.createElement(se,{variant:"primary",size:"sm",disabled:$===me.id,onClick:Qn=>{Qn.stopPropagation(),q(me)},testId:"evaluation-run-button"},$===me.id?"Running\u2026":`Run ${rf(me)}`)),Le.default.createElement(e0,{runs:vs,runCount:tu,evaluation:me,agentName:me.agent?.name,previousRun:me.previous_run,onOpen:Qn=>L(me,Qn),testId:"evaluation-runs-panel"}),Le.default.createElement(sf,{evaluation:me,run:rt,spend:Hi(rt),onDelete:()=>ne(me),deleting:I===me.id}))))})),U.length===0&&!N&&Le.default.createElement(He,{style:{textAlign:"center",padding:"48px 20px"}},Le.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),Le.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Create an evaluation to score recorded outputs, or paste scenarios to test new tasks across models. Every run is kept, so scores stay comparable over time.")))}var $e=V(Y());var Ube=e=>new Date(`${e}T00:00:00`),Wbe=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function vM({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=lt(),o=xi(n),[a,i]=(0,$e.useState)(null),[s,l]=(0,$e.useState)(!0),{timeWindow:u,days:c}=Fs(),[d,f]=(0,$e.useState)("overview");(0,$e.useEffect)(()=>{p()},[e?.id,c]);let p=async()=>{if(e?.id){l(!0);try{let x=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(x)}catch(v){console.error("Failed to load analytics:",v)}finally{l(!1)}}},m=v=>v?v<1e3?`${v}ms`:`${(v/1e3).toFixed(2)}s`:"-",y=v=>v?v>=1e6?`${(v/1e6).toFixed(1)}M`:v>=1e3?`${(v/1e3).toFixed(1)}K`:v.toString():"0",b=v=>{switch(v){case"complete":return"bg-green-500";case"failed":return"bg-red-500";case"running":return"bg-blue-500";case"pending":return"bg-yellow-500";case"cancelled":return"bg-gray-500";default:return"bg-gray-400"}};if(s&&!a)return $e.default.createElement("div",{className:"flex items-center justify-center h-64"},$e.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let h=a?.runs_by_day?.length>0?Math.max(...a.runs_by_day.map(v=>v.count)):1,g=r?"overview":d;return $e.default.createElement("div",{className:"space-y-6"},r?$e.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&$e.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),$e.default.createElement(Us,null)):$e.default.createElement("div",{className:"flex items-center justify-between"},$e.default.createElement("div",{className:"flex items-center space-x-4"},$e.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},$e.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),$e.default.createElement("div",null,$e.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),$e.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&$e.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),$e.default.createElement(Us,null))),!r&&$e.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},Wbe.map(v=>$e.default.createElement("button",{key:v.id,onClick:()=>f(v.id),className:`px-4 py-1.5 text-sm rounded-md transition-colors ${d===v.id?"shadow":""}`,style:d===v.id?{background:o.cardBg,color:o.textPrimary}:{color:o.textSecondary}},v.label))),g==="traces"&&$e.default.createElement(Qd,{agentId:e.id,embedded:!0}),g==="interactions"&&$e.default.createElement(Xl,{agentId:e.id,embedded:!0}),g==="overview"&&$e.default.createElement($e.default.Fragment,null,$e.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},$e.default.createElement(J_,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),$e.default.createElement(J_,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})),color:"green",colors:o,darkMode:n}),$e.default.createElement(J_,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})),color:"blue",colors:o,darkMode:n}),$e.default.createElement(J_,{title:"Total Tokens",value:y(a?.summary?.total_tokens),icon:$e.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"})),color:"purple",colors:o,darkMode:n})),$e.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},$e.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?$e.default.createElement("div",{className:"h-48"},$e.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((v,x)=>$e.default.createElement("div",{key:v.date,className:"flex-1 flex flex-col items-center group"},$e.default.createElement("div",{className:"relative w-full"},$e.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${v.count/h*150}px`,minHeight:v.count>0?"4px":"0"}}),$e.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap"},v.count," runs")),(x===0||x===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&$e.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},Ube(v.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):$e.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),$e.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?$e.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([v,x])=>{let S=a?.summary?.total_runs||1,w=(x/S*100).toFixed(1);return $e.default.createElement("div",{key:v},$e.default.createElement("div",{className:"flex justify-between text-sm mb-1"},$e.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},v),$e.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},x," (",w,"%)")),$e.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},$e.default.createElement("div",{className:`h-full ${b(v)} rounded-full transition-all`,style:{width:`${w}%`}})))})):$e.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&$e.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),$e.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(v=>$e.default.createElement("div",{key:v.id,className:"flex items-start space-x-3 p-3 rounded-lg",style:{background:n?"rgba(220,38,38,0.12)":"#fef2f2"}},$e.default.createElement("svg",{className:"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},$e.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})),$e.default.createElement("div",{className:"flex-1 min-w-0"},$e.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},v.error||"Unknown error"),$e.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(v.created_at).toLocaleString())))))),$e.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},y(a?.summary?.avg_tokens_per_run))),$e.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),$e.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var eY={rose:["#dc2626","rgba(220,38,38,0.18)","#fee2e2"],green:["#16a34a","rgba(22,163,74,0.18)","#dcfce7"],blue:["#2563eb","rgba(37,99,235,0.18)","#dbeafe"],purple:["#7c3aed","rgba(124,58,237,0.18)","#ede9fe"]};function J_({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=eY[n]||eY.rose;return $e.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},$e.default.createElement("div",{className:"flex items-center justify-between"},$e.default.createElement("div",null,$e.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),$e.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),$e.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var ie=V(Y());var Hbe={active:"success",configured:"info",available:"warning",idle:"muted"},Kbe={agent_defined:"success",dashboard:"success",mcp:"info"},tY="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",rY="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",qbe=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],nY={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:X,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},qs={fontFamily:X,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},Q_={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function iY({on:e,onClick:t,title:r}){return ie.default.createElement("span",{role:"switch","aria-checked":e,tabIndex:0,title:r,onClick:t,onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),t(n))},style:{width:34,height:18,borderRadius:999,flexShrink:0,position:"relative",cursor:"pointer",background:e?"var(--color-accent-ui)":"var(--color-muted)",border:`1px solid ${e?"var(--color-accent-ui)":"var(--color-border-strong)"}`,transition:"background 0.12s ease"}},ie.default.createElement("span",{style:{position:"absolute",top:1,left:e?17:1,width:14,height:14,borderRadius:"50%",background:e?"#ffffff":"var(--color-text-muted)",transition:"left 0.12s ease"}}))}function oY({on:e,dim:t=!1}){return ie.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:X,fontSize:10,fontWeight:700,flexShrink:0,border:`1px solid ${e?"var(--color-accent-ui)":"var(--color-border-strong)"}`,background:e?"var(--color-accent-ui)":"transparent",color:e?"var(--color-on-accent)":"transparent",opacity:t?.8:1}},e?"x":"")}function Vbe({tool:e,state:t,onToggle:r}){if(!t)return ie.default.createElement("span",null);let n=t!=="off",o=`Click to make each ${e.name} call wait for a person to approve it`;return t==="on"&&(o=`Each ${e.name} call waits for approval. Click to let it run without asking.`),t==="partial"&&(o=`Some ${e.name} functions wait for approval. Click to let every ${e.name} call run without asking.`),ie.default.createElement("span",{"data-testid":`tool-approval-${e.key}`,"data-approval":t,onClick:a=>a.stopPropagation(),onKeyDown:a=>a.stopPropagation(),style:{display:"flex",justifyContent:"center"}},ie.default.createElement(iY,{on:n,title:o,onClick:()=>r(e)}))}function R_({children:e,onClick:t,disabled:r,title:n}){return ie.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:X,fontSize:11,border:"1px solid var(--color-border-strong)",color:"var(--color-text-cell)",cursor:r?"not-allowed":"pointer",opacity:r?.5:1}},e)}function aY({children:e}){return ie.default.createElement("div",{style:{overflowX:"auto"}},ie.default.createElement("div",{style:{minWidth:800}},e))}function xM({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,ie.useState)(null),[l,u]=(0,ie.useState)(null),[c,d]=(0,ie.useState)("7d"),[f,p]=(0,ie.useState)(""),[m,y]=(0,ie.useState)(null),[b,h]=(0,ie.useState)(null),[g,v]=(0,ie.useState)(!1),[x,S]=(0,ie.useState)(null),[w,A]=(0,ie.useState)({}),k=(w_.find(B=>B.value===c)||w_[1]).hours;(0,ie.useEffect)(()=>{let B=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${k}`).then(q=>{if(!q.ok)throw new Error(`Request failed (${q.status})`);return q.json()}).then(q=>{B||s(q)}).catch(q=>{B||u(q.message)}),()=>{B=!0}},[e.id,k]);let _=(0,ie.useMemo)(()=>({services:[],tools:[]}),[]),C=i||_,E=(0,ie.useMemo)(()=>t.tools||[],[t.tools]),j=(0,ie.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),F=(0,ie.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),D=(0,ie.useMemo)(()=>b_(C,j),[C,j]),z=(0,ie.useMemo)(()=>Eq(C,D,{query:f,filter:m}),[C,D,f,m]),N=(0,ie.useMemo)(()=>Tq(C,D,E,{query:f,source:b,enabledOnly:g}),[C,D,E,f,b,g]),O=(0,ie.useMemo)(()=>Oq(C,D,E,{range:c}),[C,D,E,c]),$=(0,ie.useMemo)(()=>Iq(C,{tools:E,mcpServers:j,approvalRequiredTools:F},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[C,E,j,F,e]),T=C.usage_available!==!1,I=B=>T?B:"\u2014",P=(0,ie.useCallback)(B=>{r("mcp_servers",Dq(C,B,j))},[C,j,r]),H=(0,ie.useCallback)(B=>{let q=D[B.key];P({...D,[B.key]:{...q,on:!q.on}})},[D,P]),Q=(0,ie.useCallback)((B,q)=>{let M=D[B.key];M.on&&P({...D,[B.key]:{...M,tools:{...M.tools,[q.name]:!M.tools[q.name]}}})},[D,P]),K=(0,ie.useCallback)((B,q)=>{let M=D[B.key],ne=Object.fromEntries((B.tools||[]).map(U=>[U.name,q]));P({...D,[B.key]:{on:q||M.on,tools:ne}})},[D,P]),ue=(0,ie.useCallback)(B=>{if(!B.editable)return;let q=B.on?E.filter(M=>M!==B.key):[...E,B.key];r("tools",kP(C,q))},[C,E,r]),pe=(0,ie.useCallback)((B,q)=>{if(!B.editable)return;let M=q?[...E,...B.keys.filter(ne=>!E.includes(ne))]:E.filter(ne=>!B.keys.includes(ne));r("tools",kP(C,M))},[C,E,r]),re=(0,ie.useCallback)(B=>{r("approval_required_tools",Mq(F,B,e.approval_required_tools||[]))},[F,e,r]),_e=(0,ie.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),de=(C.services||[]).filter(B=>D[B.key]?.on),le=N.find(B=>B.source==="mcp"),ee=N.filter(B=>B.source!=="mcp").reduce((B,q)=>B+q.enabledCount,0)+(le?le.total:0),L=N.reduce((B,q)=>B+q.total,0);return l?ie.default.createElement(He,null,ie.default.createElement(Ve,null,"Tools & MCP services"),ie.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?ie.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},ie.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},ie.default.createElement("div",{style:{flex:1,minWidth:260}},ie.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),ie.default.createElement("p",{style:{margin:"3px 0 0",fontSize:13,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turn a service on to offer its tools, then narrow the roster tool by tool. Call counts come from the traces recorded on every tool call.")),ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ie.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border-strong)",background:"var(--color-card)"}},ie.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},"?"),ie.default.createElement("input",{value:f,onChange:B=>p(B.target.value),placeholder:"Filter tools and services\u2026","aria-label":"Filter tools and services",style:{border:"none",outline:"none",background:"transparent",color:"var(--color-text-primary)",fontSize:13,width:180}})),ie.default.createElement(Ui,{options:w_,value:c,onChange:d}))),ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},O.map(B=>ie.default.createElement(He,{key:B.key,padding:"14px 16px",testId:`roster-stat-${B.key}`},ie.default.createElement(Ve,{size:11,spacing:"0.05em"},B.label),ie.default.createElement("div",{style:{marginTop:6,fontFamily:X,fontSize:26,fontWeight:700,lineHeight:1.1,color:B.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},B.value),ie.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},B.sub)))),ie.default.createElement(He,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ie.default.createElement(Ve,null,"MCP services"),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},de.length," of ",(C.services||[]).length," enabled \xB7 ",le?le.total:0," tools offered"),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},ie.default.createElement(io,{selected:!m,onClick:()=>y(null)},"All ",(C.services||[]).length),qbe.map(B=>ie.default.createElement(io,{key:B.value,selected:m===B.value,onClick:()=>y(m===B.value?null:B.value)},B.label,B.value==="enabled"?` ${de.length}`:"")),ie.default.createElement(Wi,{href:ct("/mcp"),onClick:()=>kt("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),ie.default.createElement(aY,null,ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:tY,...nY}},ie.default.createElement("span",null,"On"),ie.default.createElement("span",null,"Service"),ie.default.createElement("span",null,"Status"),ie.default.createElement("span",{style:{textAlign:"right"}},"Tools"),ie.default.createElement("span",{style:{textAlign:"right"}},"Calls"),ie.default.createElement("span",{style:{textAlign:"right"}},"Errors"),ie.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),ie.default.createElement("span",null)),z.map(B=>{let q=x===B.key;return ie.default.createElement("div",{key:B.key},ie.default.createElement("div",{className:"aa-roster-row","data-on":B.on?"true":"false","data-testid":`service-row-${B.key}`,style:{display:"grid",gridTemplateColumns:tY,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},ie.default.createElement(iY,{on:B.on,onClick:()=>H(B),title:`${B.on?"Disable":"Enable"} ${B.name} for this agent`}),ie.default.createElement("div",{onClick:()=>S(q?null:B.key),style:{minWidth:0,cursor:"pointer"}},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ie.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},B.name),B.first_party&&ie.default.createElement(Ee,{tone:"accent",size:10},"first-party"),ef(B)&&ie.default.createElement(Ee,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Fv(B)&&ie.default.createElement(Ee,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),S_(B)&&ie.default.createElement(Ee,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),B.partial&&ie.default.createElement(Ee,{tone:"warning",size:10},B.partialLabel)),ie.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...Q_}},B.description)),ie.default.createElement("span",null,ie.default.createElement(Ee,{tone:Hbe[B.status]||"muted"},B.status)),ie.default.createElement("span",{style:{...qs,color:B.on?"var(--color-text-primary)":"var(--color-text-muted)"}},B.toolsLabel),ie.default.createElement("span",{style:qs},I(B.calls)),ie.default.createElement("span",{style:{...qs,color:B.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(B.errors)),ie.default.createElement("span",{style:{...qs,color:"var(--color-text-muted)"}},I(Bv(B.last_seen))),ie.default.createElement("span",{onClick:()=>S(q?null:B.key),style:{cursor:"pointer",textAlign:"center"}},ie.default.createElement(ii,{kind:"chevron",open:q}))),q&&ie.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},ie.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Tools offered"),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},B.transport),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},ie.default.createElement(R_,{onClick:()=>K(B,!0),title:`Offer every tool ${B.name} serves`},"all"),ie.default.createElement(R_,{onClick:()=>K(B,!1),disabled:!B.on,title:`Offer none of ${B.name}'s tools`},"none"))),B.tools.length===0?ie.default.createElement(Zn,{style:{padding:"10px 0"}},Cq(B)):ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},B.tools.map(M=>ie.default.createElement("div",{key:M.name,className:"aa-roster-row",onClick:()=>Q(B,M),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:B.on?"pointer":"default",opacity:B.on?1:.55}},ie.default.createElement(oY,{on:M.on,dim:!B.on}),ie.default.createElement("span",{style:{minWidth:0}},ie.default.createElement("span",{style:{display:"block",fontFamily:X,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)",...Q_}},M.name),ie.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...Q_}},M.description)),ie.default.createElement("span",{style:{...qs,color:"var(--color-text-secondary)"}},I(M.calls)),ie.default.createElement("span",{style:{...qs,color:M.errors?"var(--color-error-text)":"var(--color-text-muted)"}},I(M.errors?`${M.errors} err`:wP(M.avg_duration_ms)))))),!B.on&&ie.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",B.name," on offers these ",B.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),z.length===0&&ie.default.createElement(Zn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},f?`no services match "${f}"`:"no MCP services yet"))),ie.default.createElement(He,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ie.default.createElement(Ve,null,"Tools"),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},ee," enabled of ",L," available"),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},ie.default.createElement(io,{selected:!b,onClick:()=>h(null)},"All ",L),N.map(B=>ie.default.createElement(io,{key:B.source,selected:b===B.source,onClick:()=>h(b===B.source?null:B.source)},B.name," ",B.total)),ie.default.createElement(io,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),ie.default.createElement(aY,null,ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:rY,...nY}},ie.default.createElement("span",null),ie.default.createElement("span",null,"Tool"),ie.default.createElement("span",null,"Source"),ie.default.createElement("span",{style:{textAlign:"right"}},"Calls"),ie.default.createElement("span",{style:{textAlign:"right"}},"Errors"),ie.default.createElement("span",{style:{textAlign:"right"}},"Avg"),ie.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),ie.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(B=>{let q=w[B.source]!==!0;return ie.default.createElement("div",{key:B.source},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"7px 16px",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",flexWrap:"wrap"}},ie.default.createElement("span",{onClick:()=>A({...w,[B.source]:q}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},ie.default.createElement(ii,{kind:"chevron",open:q}),ie.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},B.name)),ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},B.meta),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-cell)"}},B.countLabel),B.editable&&ie.default.createElement(ie.default.Fragment,null,ie.default.createElement(R_,{onClick:()=>pe(B,!0)},"all"),ie.default.createElement(R_,{onClick:()=>pe(B,!1)},"none")))),q&&B.rows.map(M=>ie.default.createElement("div",{key:M.key,className:"aa-roster-row","data-on":M.on?"true":"false","data-testid":`tool-row-${M.key}`,onClick:()=>ue(M),style:{display:"grid",gridTemplateColumns:rY,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:M.editable?"pointer":"default",opacity:M.editable?1:.75}},ie.default.createElement(oY,{on:M.on,dim:!M.editable}),ie.default.createElement("div",{style:{minWidth:0}},ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ie.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},M.name),M.source==="mcp"&&ie.default.createElement(Ee,{size:10},"via ",M.server),M.source==="agent_defined"&&(M.editable?ie.default.createElement(Ee,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):ie.default.createElement(Ee,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),T&&M.on&&!M.calls&&ie.default.createElement(Ee,{size:10},"unused")),ie.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...Q_}},M.description)),ie.default.createElement("span",null,ie.default.createElement(Ee,{tone:Kbe[M.source]||"muted"},bP[M.source])),ie.default.createElement("span",{style:qs},I(M.calls)),ie.default.createElement("span",{style:{...qs,color:M.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(M.errors)),ie.default.createElement("span",{style:{...qs,color:"var(--color-text-secondary)"}},I(wP(M.avg_duration_ms))),ie.default.createElement("span",{style:{...qs,color:"var(--color-text-muted)"}},I(Bv(M.last_seen))),ie.default.createElement(Vbe,{tool:M,state:SP(M,F),onToggle:re}))))}),N.every(B=>B.rows.length===0)&&ie.default.createElement(Zn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},f?`no tools match "${f}"`:"nothing enabled yet"))),ie.default.createElement(He,{padding:"12px 16px",style:{position:"sticky",bottom:0,zIndex:4,background:"var(--color-surface)",display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"},testId:"roster-action-bar"},ie.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},ie.default.createElement(Ve,{size:11,spacing:"0.05em"},ee," tools \xB7 ",de.length," services"),ie.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Every enabled tool is traced: calls, arguments, errors and latency land in Traces and roll up into Metrics.")),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},$>0&&ie.default.createElement(ie.default.Fragment,null,ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-warning-text)"}},$," change",$===1?"":"s"," pending"),ie.default.createElement(se,{variant:"secondary",onClick:_e},"Discard")),ie.default.createElement(se,{variant:o?"primary":"secondary",onClick:n,disabled:a||!o,title:o?"Save this agent":"Nothing to save",style:o?void 0:{background:"var(--color-muted)",color:"var(--color-text-muted)",border:"1px solid transparent",cursor:"default"}},a?"Saving\u2026":"Save Changes")))):ie.default.createElement(He,null,ie.default.createElement(Zn,null,"loading the roster\u2026"))}var Gbe=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],uY=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],Ybe=uY.map(e=>e.id),sY={success:{light:["#dcfce7","#166534"],dark:["rgba(22,163,74,0.18)","#4ade80"]},warning:{light:["#fef9c3","#854d0e"],dark:["rgba(234,179,8,0.18)","#facc15"]},neutral:{light:["#f3f4f6","#4b5563"],dark:["rgba(255,255,255,0.1)","rgba(255,255,255,0.7)"]},error:{light:["#fee2e2","#991b1b"],dark:["rgba(220,38,38,0.18)","#f87171"]},info:{light:["#dbeafe","#1e40af"],dark:["rgba(59,130,246,0.18)","#60a5fa"]}},Xbe={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function Cc({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(sY[e]||sY.neutral)[r?"dark":"light"];return ge.default.createElement("span",{style:{background:o,color:a,borderRadius:"999px",padding:"2px 8px",fontSize:"11px",fontWeight:600,fontFamily:t?vt.mono:void 0,whiteSpace:"nowrap"}},n)}function qo({variant:e="secondary",size:t="md",onClick:r,disabled:n,colors:o,title:a,testId:i,children:s}){let u={padding:t==="sm"?"5px 10px":"7px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,cursor:n?"not-allowed":"pointer",transition:"background 0.15s ease, border-color 0.15s ease",whiteSpace:"nowrap"},c={primary:{background:n?o.mutedBg:Oo,color:n?o.textMuted:"#ffffff",border:"1px solid transparent"},secondary:{background:"transparent",color:o.textCell,border:`1px solid ${o.inputBorder}`},danger:{background:"transparent",color:"#dc2626",border:"1px solid rgba(220,38,38,0.4)"}};return ge.default.createElement("button",{type:"button",onClick:r,disabled:n,title:a,"data-testid":i,style:{...u,...c[e]||c.secondary}},s)}function lY({tabs:e,active:t,onChange:r,colors:n}){return ge.default.createElement("div",{style:{display:"flex",alignItems:"center"}},e.map(o=>{let a=t===o.id;return ge.default.createElement("button",{key:o.id,type:"button",onClick:()=>r(o.id),style:{padding:"10px 12px",marginBottom:"-1px",background:"none",border:"none",borderBottom:`2px solid ${a?Oo:"transparent"}`,color:a?Oo:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function e2({agent:e,meta:t,onSave:r,onDelete:n,onRun:o,onDuplicate:a,onRunReport:i,onBack:s,isLoading:l,initialTab:u}){let{darkMode:c}=lt(),d=xi(c),[f,p]=(0,ge.useState)(u||"config"),[m,y]=(0,ge.useState)({name:e.name||"",description:e.description||"",provider:e.provider||"openai",model:e.model||"gpt-4o-mini",instructions:e.instructions||"",action_prompts:e.actionPrompts||e.action_prompts||[],preset_type:e.presetType||e.preset_type||"terminal",appearance:e.appearance||{},instruction_sets:e.instructionSets||e.instruction_sets||[],tools:e.tools||[],approval_required_tools:e.approvalRequiredTools||e.approval_required_tools||[],mcp_servers:e.mcpServers||e.mcp_servers||[],model_config:e.modelConfig||e.model_config||{temperature:.7},status:e.status||"draft"}),[b,h]=(0,ge.useState)([]),[g,v]=(0,ge.useState)(!1),[x,S]=(0,ge.useState)(""),w=Ou([m.provider]);(0,ge.useEffect)(()=>{let D=JSON.stringify(m)!==JSON.stringify({name:e.name||"",description:e.description||"",provider:e.provider||"openai",model:e.model||"gpt-4o-mini",instructions:e.instructions||"",action_prompts:e.actionPrompts||e.action_prompts||[],preset_type:e.presetType||e.preset_type||"terminal",appearance:e.appearance||{},instruction_sets:e.instructionSets||e.instruction_sets||[],tools:e.tools||[],approval_required_tools:e.approvalRequiredTools||e.approval_required_tools||[],mcp_servers:e.mcpServers||e.mcp_servers||[],model_config:e.modelConfig||e.model_config||{temperature:.7},status:e.status||"draft"});v(D)},[m,e]),(0,ge.useEffect)(()=>{f==="versions"?A():f==="code"&&k()},[f]);let A=async()=>{try{let z=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(z.versions)}catch(D){console.error("Failed to load versions:",D)}},k=async()=>{try{let z=await(await fetch(`/api/agents/${e.id}/export`)).json();S(z.code)}catch(D){console.error("Failed to load code preview:",D)}},_=(D,z)=>{y(N=>({...N,[D]:z}))},C=(D,z)=>{y(N=>{let O=N[D]||[],$=O.includes(z)?O.filter(T=>T!==z):[...O,z];return{...N,[D]:$}})},E=()=>{r(m)},j=Ybe.includes(f),F=f==="tools";return ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},ge.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:"12px"}},ge.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:vt.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),ge.default.createElement(yn,{size:44}),ge.default.createElement("div",{style:{flex:1,minWidth:0}},ge.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},ge.default.createElement("h1",{style:{fontSize:"20px",fontWeight:700,color:d.textPrimary,margin:0}},m.name||"Untitled agent"),ge.default.createElement(Cc,{tone:Xbe[m.status]||"neutral",darkMode:c},m.status),g&&ge.default.createElement(Cc,{tone:"info",darkMode:c},"unsaved")),ge.default.createElement("p",{style:{fontSize:"13px",color:d.textSecondary,margin:"4px 0 0"}},m.description||"No description")),ge.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&ge.default.createElement(qo,{variant:"secondary",colors:d,onClick:a},"Duplicate"),ge.default.createElement(qo,{variant:"primary",colors:d,onClick:o},"Run Agent"))),ge.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto"}},ge.default.createElement(lY,{tabs:Gbe,active:f,onChange:p,colors:d}),ge.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),ge.default.createElement(lY,{tabs:uY,active:f,onChange:p,colors:d})),F?ge.default.createElement(xM,{agent:e,formData:m,updateField:_,onSave:E,hasChanges:g,isLoading:l}):j?ge.default.createElement("div",null,f==="traces"&&ge.default.createElement(Qd,{agentId:e.id,embedded:!0}),f==="metrics"&&ge.default.createElement(vM,{agent:e,embedded:!0}),f==="interactions"&&ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},i&&ge.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},ge.default.createElement("button",{type:"button",onClick:i,style:{background:"none",border:"none",cursor:"pointer",fontFamily:vt.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),ge.default.createElement(Xl,{agentId:e.id,embedded:!0})),f==="evals"&&ge.default.createElement(b0,{embedded:!0,agentId:e.id}),f==="feedback"&&ge.default.createElement(t1e,{colors:d})):ge.default.createElement("div",{style:{background:d.cardBg,border:`1px solid ${d.cardBorder}`,borderRadius:"12px",padding:"20px"}},f==="config"&&ge.default.createElement(Jbe,{formData:m,updateField:_,providerModels:w,colors:d,darkMode:c,onDelete:n}),f==="instructions"&&ge.default.createElement(Qbe,{formData:m,updateField:_,meta:t,toggleArrayItem:C,colors:d}),f==="versions"&&ge.default.createElement(Rbe,{versions:b,agentId:e.id,onRestore:A,colors:d,darkMode:c}),f==="code"&&ge.default.createElement(e1e,{code:x,colors:d})),g&&!F&&ge.default.createElement("div",{style:{position:"sticky",bottom:"0",display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",background:d.cardBg,border:`1px solid ${d.borderStrong}`,borderRadius:"12px",padding:"10px 14px",boxShadow:"0 4px 16px rgba(0,0,0,0.12)"}},ge.default.createElement("span",{style:{fontSize:"13px",color:d.textSecondary}},"Unsaved changes"),ge.default.createElement("div",{style:{display:"flex",gap:"8px"}},ge.default.createElement(qo,{variant:"primary",size:"sm",colors:d,onClick:E,disabled:l},l?"Saving\u2026":"Save Changes"))))}var Vs=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Ql=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),Zbe=e=>({fontFamily:vt.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function Jbe({formData:e,updateField:t,providerModels:r,colors:n,darkMode:o,onDelete:a}){return ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},ge.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Agent Name"),ge.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Ql(n)})),ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Preset Type"),ge.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Ql(n)},Object.keys(vp).map(i=>ge.default.createElement("option",{key:i,value:i},i))))),ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Description"),ge.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Ql(n),resize:"vertical"}})),ge.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Provider"),ge.default.createElement("select",{value:e.provider,onChange:i=>{t("provider",i.target.value),t("model",r[i.target.value][0])},className:"aa-field",style:Ql(n)},Object.keys(r).map(i=>ge.default.createElement("option",{key:i,value:i},i.charAt(0).toUpperCase()+i.slice(1))))),ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Model"),ge.default.createElement(gl,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Ql(n),fontFamily:vt.mono}}))),ge.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Temperature"," ",ge.default.createElement("span",{style:{fontFamily:vt.mono,color:n.textSecondary}},e.model_config.temperature)),ge.default.createElement("input",{type:"range",min:"0",max:"1",step:"0.1",value:e.model_config.temperature,onChange:i=>t("model_config",{...e.model_config,temperature:parseFloat(i.target.value)}),style:{width:"100%",accentColor:Oo}})),ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(n)},"Status"),ge.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Ql(n)},ge.default.createElement("option",{value:"draft"},"Draft"),ge.default.createElement("option",{value:"active"},"Active"),ge.default.createElement("option",{value:"archived"},"Archived")))),a&&ge.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",borderTop:`1px solid ${n.cardBorder}`,paddingTop:"16px"}},ge.default.createElement("div",null,ge.default.createElement("div",{style:Zbe(n)},"Danger zone"),ge.default.createElement("p",{style:{fontSize:"13px",color:n.textMuted,margin:"4px 0 0"}},"Deleting an agent removes its configuration and version history.")),ge.default.createElement(qo,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function Qbe({formData:e,updateField:t,meta:r,toggleArrayItem:n,colors:o}){let a=e.action_prompts||[],i=(u,c)=>{t("action_prompts",a.map((d,f)=>f===u?{...d,...c}:d))},s=()=>{t("action_prompts",[...a,{name:"",prompt:"",expose_as_tool:!1}])},l=u=>{t("action_prompts",a.filter((c,d)=>d!==u))};return ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(o)},"System Instructions"),ge.default.createElement("textarea",{value:e.instructions,onChange:u=>t("instructions",u.target.value),placeholder:"You are a helpful AI assistant...",rows:12,className:"aa-field",style:{...Ql(o),fontFamily:vt.mono,resize:"vertical"}})),ge.default.createElement("div",null,ge.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}},ge.default.createElement("label",{style:{...Vs(o),marginBottom:0}},"Action Prompts"),ge.default.createElement(qo,{variant:"secondary",size:"sm",colors:o,onClick:s},"+ Add action")),ge.default.createElement("p",{style:{fontSize:"12px",color:o.textMuted,margin:"0 0 12px"}},"Named actions run with their prompt stacked below the system instructions. The default ",ge.default.createElement("span",{style:{fontFamily:vt.mono}},"#ask")," action uses the system instructions alone."),a.length>0&&ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},a.map((u,c)=>ge.default.createElement("div",{key:c,style:{border:`1px solid ${o.cardBorder}`,borderRadius:"10px",padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},ge.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},ge.default.createElement("span",{style:{fontFamily:vt.mono,fontSize:"13px",color:o.textMuted}},"#"),ge.default.createElement("input",{type:"text",value:u.name,onChange:d=>i(c,{name:d.target.value.toLowerCase().replace(/[^a-z0-9_]/g,"_")}),placeholder:"action_name",className:"aa-field",style:{...Ql(o),flex:1,padding:"6px 10px",fontFamily:vt.mono}}),ge.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:o.textSecondary,whiteSpace:"nowrap"}},ge.default.createElement("input",{type:"checkbox",checked:!!u.expose_as_tool,onChange:d=>i(c,{expose_as_tool:d.target.checked}),style:{accentColor:Oo}}),"Expose as tool"),ge.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:vt.mono,fontSize:"12px",color:o.textMuted,background:"none",border:"none",cursor:"pointer",padding:"4px"}},"[x]")),ge.default.createElement("textarea",{value:u.prompt,onChange:d=>i(c,{prompt:d.target.value}),placeholder:"This action's system prompt, applied on top of the base instructions...",rows:4,className:"aa-field",style:{...Ql(o),fontFamily:vt.mono,resize:"vertical"}}))))),ge.default.createElement("div",null,ge.default.createElement("label",{style:Vs(o)},"Instruction Sets"),ge.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},r.instructionSets?.map(u=>{let c=e.instruction_sets.includes(u);return ge.default.createElement("button",{key:u,type:"button",onClick:()=>n("instruction_sets",u),style:{padding:"5px 12px",borderRadius:"999px",fontSize:"13px",cursor:"pointer",border:`1px solid ${c?Oo:o.inputBorder}`,background:c?Oo:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function Rbe({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await Br({title:"Restore this version?",message:"A new version is created with the restored configuration. The current version stays in the history.",confirmLabel:"Restore"}))try{await fetch(`/api/agents/${t}/restore`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({version_id:i})}),r()}catch(s){console.error("Failed to restore version:",s)}};return ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},ge.default.createElement("p",{style:{fontSize:"13px",color:n.textSecondary,margin:0}},"View and restore previous versions of this agent."),e.length>0?ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"10px"}},e.map(i=>{let s=i.is_latest||i.isLatest;return ge.default.createElement("div",{key:i.id,style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px",padding:"14px",borderRadius:"10px",border:`1px solid ${s?Oo:n.cardBorder}`,background:s?"rgba(239,68,68,0.06)":"transparent"}},ge.default.createElement("div",{style:{minWidth:0}},ge.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},ge.default.createElement("span",{style:{fontFamily:vt.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&ge.default.createElement(Cc,{tone:"error",darkMode:o},"current")),ge.default.createElement("p",{style:{fontSize:"13px",color:n.textCell,margin:"4px 0 0"}},i.change_summary||i.changeSummary),ge.default.createElement("p",{style:{fontFamily:vt.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&ge.default.createElement(qo,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):ge.default.createElement(cY,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function e1e({code:e,colors:t}){let r=()=>{navigator.clipboard.writeText(e)};return ge.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},ge.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},ge.default.createElement("p",{style:{fontSize:"13px",color:t.textSecondary,margin:0}},"Generated Ruby code for this agent."),ge.default.createElement(qo,{variant:"secondary",size:"sm",colors:t,onClick:r},"Copy")),ge.default.createElement("pre",{style:{padding:"16px",background:"#111827",color:"#e5e7eb",borderRadius:"10px",overflowX:"auto",fontFamily:vt.mono,fontSize:"12px",lineHeight:1.6,margin:0}},ge.default.createElement("code",null,e||"Loading...")))}function t1e({colors:e}){return ge.default.createElement("div",{style:{background:e.cardBg,border:`1px solid ${e.cardBorder}`,borderRadius:"12px",padding:"20px"}},ge.default.createElement(cY,{colors:e,glyph:"[?]",title:"No feedback recorded",hint:"Thumbs and comments are not captured yet. Once an interaction feedback source is recorded, CSAT and per-trace comments appear here."}))}function cY({colors:e,glyph:t,title:r,hint:n}){return ge.default.createElement("div",{style:{textAlign:"center",padding:"40px 20px"}},ge.default.createElement("div",{style:{fontFamily:vt.mono,fontSize:"20px",color:e.textMuted}},t),ge.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:e.textPrimary,marginTop:"10px"}},r),ge.default.createElement("p",{style:{fontSize:"13px",color:e.textMuted,margin:"6px auto 0",maxWidth:"420px"}},n))}var G=V(Y());async function Cg(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var t2=V(Y());var r1e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var fY=Object.freeze({events:500,chars:262144}),n1e=16*1024,o1e=3;function a1e(e){return{emit:e,maskAllInputs:!0,blockSelector:r1e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function i1e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function s1e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function l1e(e,t=fY){let r=0,n=0;for(let o of e){if(n>=t.events||n>0&&r+o.length>t.chars)break;r+=o.length+1,n+=1}return n}function dY(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function pY({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=fY,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",f=null,p=null,m=null,y=null,b=!1,h=!1,g=null,v=0;function x(z){d!==z&&(d=z,i(z))}function S(){u.length=0,c=0}function w(){p&&p(),p=null,m=null,y!==null&&o.clearInterval(y),y=null,a?.removeEventListener?.("pagehide",j)}function A(z){h=!0,S(),w(),x(z)}function k(z){if(b||h)return;let N=i1e(z);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&E()}async function _(z,N){let O=s1e(z,n());try{let $=await r(`/api/session_recordings/${encodeURIComponent(f)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:O,keepalive:N&&O.length<=n1e});return dY($.status)}catch{return"retry"}}async function C(z){for(;u.length>0&&!h;){let N=u.splice(0,l1e(u,s)),O=N.reduce((T,I)=>T+I.length+1,0);c-=O;let $=await _(N,z);if($==="sent"){v=0;continue}if($!=="retry"){A($);return}if(v+=1,z||v>=o1e){v=0,S(),m&&m();return}u.unshift(...N),c+=O;return}}function E({final:z=!1}={}){return f===null||h?Promise.resolve():(g||(g=C(z).finally(()=>{g=null})),g)}function j(){E({final:!0})}async function F(){if(d!=="idle"||b)return;x("starting");let z;try{z=await r("/api/session_recordings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_context_id:e})})}catch{b||A("failed");return}if(b)return;if(!z.ok){A(dY(z.status)==="off"?"off":"failed");return}let N=await z.json().catch(()=>null);if(b)return;if(f=N?.recording?.id??null,f===null){A("failed");return}let O;try{({record:O}=await t())}catch{b||A("failed");return}if(b)return;let $=null;try{$=typeof O=="function"?O(a1e(k)):null}catch{$=null}if(typeof $!="function"){A("failed");return}p=$,m=()=>O.takeFullSnapshot?.(),y=o.setInterval(()=>E(),l),a?.addEventListener?.("pagehide",j),x("recording")}async function D(){b||(b=!0,w(),!h&&(x("stopped"),g&&await g,await E({final:!0})))}return{start:F,stop:D,flush:E,get state(){return d}}}function bM(e,t){let[r,n]=(0,t2.useState)("idle");return(0,t2.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=pY({contextId:e,loadRecorder:()=>import(t),fetch:(i,s)=>fetch(i,s),target:window,onStateChange:i=>{o&&n(i)}});return a.start(),()=>{o=!1,a.stop()}},[e,t]),r}var u1e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},c1e=(e,t)=>{let r=u1e[e]||{role:e,label:e};return{...xn(r.role,t),label:r.label}},wM={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},d1e=["Hello, what can you help me with?","Show me a dashboard of last quarter's sales","List the files in the current directory","Explain how this code works"],f1e=["user","assistant","tool"],p1e=1200,m1e=600*1e3,r2=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",mY=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},SM=e=>{let t=new Map;return(e?.logs||[]).filter(r=>r.eid).forEach(r=>{let n=t.get(r.eid)||{eid:r.eid};r.status==="started"?Object.assign(n,r,{input:r.detail,output:n.output}):Object.assign(n,r,{input:n.input,output:r.detail}),t.set(r.eid,n)}),[...t.values()]},qi=e=>e?.context_id??e?.output_metadata?.context_id??null,w0=e=>e.json().catch(()=>({})),gY=({open:e,color:t})=>G.default.createElement("svg",{className:`w-3.5 h-3.5 mt-1 flex-shrink-0 transition-transform ${e?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:t}},G.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}));function g1e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=SM(e),i=p_(t);return G.default.createElement("div",{"data-testid":"runner-activity",className:"space-y-2"},a.map(s=>{let l=!!n[s.eid],u=!!(s.input||s.output),c=c1e(s.kind,t);return G.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},G.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${u?"cursor-pointer":""}`,onClick:u?()=>o(s.eid):void 0,title:u?"Click to inspect input/output":void 0,style:l?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},G.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium flex-shrink-0 mt-0.5",style:{background:c.background,color:c.color,minWidth:"72px",textAlign:"center"}},c.label),G.default.createElement("div",{className:"min-w-0 flex-1"},G.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&G.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),G.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:r.textMuted}},s.status==="started"?G.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?G.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):G.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${r2(s.duration_ms)}`),s.at&&G.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&G.default.createElement(gY,{open:l,color:r.textMuted})),l&&G.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:c.color+"55"}},s.input&&G.default.createElement("div",null,G.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),G.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},mY(s.input))),s.output&&G.default.createElement("div",null,G.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),G.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"224px",overflowY:"auto",...s.status==="error"?{background:t?"rgba(239,68,68,0.12)":"#fef2f2",color:t?"#fca5a5":"#b91c1c"}:{}}},mY(s.output)))))}))}function h1e({run:e,darkMode:t,colors:r}){return e?G.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},G.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},G.default.createElement(Cc,{tone:wM[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&G.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?G.default.createElement("span",null,r2(e.duration_ms)):null,e.total_tokens?G.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&G.default.createElement("a",{href:ct(`/traces?trace=${e.trace_id}`),className:"font-mono hover:underline",style:{color:r.textSecondary},title:`${e.trace_id} \u2014 open in Traces`},"trace:",e.trace_id.slice(0,8)," \u2192")):null}function kM({agent:e,onBack:t,recorderUrl:r=null}){let{darkMode:n}=lt(),o=xi(n),a=e.action_prompts||e.actionPrompts||[],i=["ask",...a.map(ae=>ae.name).filter(Boolean)],[s,l]=(0,G.useState)("ask"),[u,c]=(0,G.useState)(""),[d,f]=(0,G.useState)([]),[p,m]=(0,G.useState)(!1),[y,b]=(0,G.useState)([]),[h,g]=(0,G.useState)(null),[v,x]=(0,G.useState)(null),[S,w]=(0,G.useState)(null),[A,k]=(0,G.useState)([]),[_,C]=(0,G.useState)(!1),[E,j]=(0,G.useState)(null),[F,D]=(0,G.useState)(null),[z,N]=(0,G.useState)(null),[O,$]=(0,G.useState)(null),[T,I]=(0,G.useState)({}),[P,H]=(0,G.useState)([]),[Q,K]=(0,G.useState)(null),[ue,pe]=(0,G.useState)(!1),[re,_e]=(0,G.useState)(null),[de,le]=(0,G.useState)(!1),[Z,ee]=(0,G.useState)(!1),[L,B]=(0,G.useState)(null),[q,M]=(0,G.useState)(""),[ne,U]=(0,G.useState)(!1),[oe,ve]=(0,G.useState)(null),Ze=(0,G.useRef)(null),Ht=(0,G.useRef)(null),Mt=(0,G.useRef)(0),fe=(0,G.useRef)(null),Xe=(0,G.useRef)(!1),gr=(0,G.useRef)(!0),rr=(0,G.useRef)(null),nr=(0,G.useRef)([]),qe=(0,G.useRef)(null),Gt=(0,G.useRef)(null),Ir=(0,G.useRef)(null),co=(0,G.useRef)(null),ys=bM(h,r),ca=(v?.messages||[]).filter(ae=>f1e.includes(ae.role));(0,G.useEffect)(()=>{rr.current=F},[F]),(0,G.useEffect)(()=>{nr.current=d},[d]),(0,G.useEffect)(()=>{gr.current=!0,eu();let ae=Zq(window.location.search);return ae&&I2(ae),()=>{gr.current=!1,Mt.current+=1,Gi(rr.current),Gi({attachments:nr.current}),D(null),f([])}},[e.id]),(0,G.useEffect)(()=>{me(s)},[e.id,s]),(0,G.useEffect)(()=>{Ht.current=h,h?Ge(h):(x(null),w(null))},[h]),(0,G.useEffect)(()=>{let ae=Gt.current;ae&&(ae.scrollTop=ae.scrollHeight)},[ca.length,F,E?.logs?.length,E?.input_requests?.length,L,z]),(0,G.useEffect)(()=>{if(!Z)return;let ae=je=>{co.current&&!co.current.contains(je.target)&&ee(!1)};return document.addEventListener("mousedown",ae),()=>document.removeEventListener("mousedown",ae)},[Z]);let eu=async()=>{try{let je=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();k(je.runs||[])}catch(ae){console.error("Failed to load runs:",ae)}},me=async ae=>{try{let je=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(ae)}`);if(!je.ok)throw new Error(`HTTP ${je.status}`);let zt=(await je.json()).conversations||[];b(zt),g(In=>In&&(Ze.current===In||zt.some(Yi=>Yi.id===In))?In:zt[0]?.id??null)}catch(je){console.error("Failed to load conversations:",je),b([])}},Ge=async ae=>{try{let je=await fetch(`/api/interactions/${ae}`);if(!je.ok)throw new Error(je.status===404?"Conversation not found":`HTTP ${je.status}`);let st=await je.json();if(Ht.current!==ae)return;x(st.interaction),w(null)}catch(je){if(Ht.current!==ae)return;x(null),w(je.message)}},rt=async()=>{let ae=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:s})}),je=await w0(ae);if(!ae.ok||!je.conversation)throw new Error(je.error||`Could not start a conversation (HTTP ${ae.status})`);let st=je.conversation;return b(zt=>[st,...zt.filter(In=>In.id!==st.id)]),Ze.current=st.id,g(st.id),st.id},ur=()=>Ht.current?Promise.resolve(Ht.current):rt(),Xo=ae=>{Ze.current=null,l(ae)},fo=ae=>{Xe.current=ae,C(ae)},da=()=>{fe.current?.waiting&&(fe.current=null,fo(!1))},Zo=()=>{da(),j(null),$(null),I({}),H([])},Ia=ae=>{let je=ae?Number(ae):null;je!==Ht.current&&Zo(),Ze.current=je,g(je),N(null)},Ys=async()=>{if(!_)try{await rt(),w(null),N(null),Zo(),Gi(rr.current),D(null),B(null)}catch(ae){w(ae.message)}},Gi=ae=>{(ae?.attachments||[]).forEach(je=>{je.url&&je.url.startsWith("blob:")&&URL.revokeObjectURL(je.url)})},Sf=ae=>{let je=Array.from(ae||[]).filter(Boolean);je.length!==0&&f(st=>[...st,...je.map(zt=>({file:zt,filename:zt.name,content_type:zt.type||"application/octet-stream",byte_size:zt.size,kind:RK(zt),url:zt.type&&zt.type.startsWith("image/")?URL.createObjectURL(zt):null}))])},vs=ae=>{f(je=>{let st=je[ae];return st?.url&&URL.revokeObjectURL(st.url),je.filter((zt,In)=>In!==ae)})},tu=(ae,je)=>{Gi(rr.current),D(null),eu();let st=qi(ae)??je;st&&(st!==Ht.current?(Ze.current=st,g(st)):Ge(st),me(s))},Qn=(ae,je)=>{fe.current=null,fo(!1),H([]),tu(ae,je)},W0=(ae,je)=>{fe.current={id:ae.id,contextId:qi(ae)??je,waiting:!0},tu(ae,je),__()},kf=(ae,je)=>{if(!gr.current)return;let st=++Mt.current,zt=Date.now(),In=async()=>{if(Mt.current===st){try{let Yi=await fetch(`/api/runs/${ae}`);if(Yi.ok){let Jo=await Yi.json();if(Mt.current!==st)return;j(Jo.run);let xs=CP(Jo.run);if(xs==="finished"){Qn(Jo.run,je);return}if(xs==="awaiting"){W0(Jo.run,je);return}}}catch{}Date.now()-ztYi&&{...Yi,status:"failed",error_message:"Timed out waiting for the run to finish."}),$("Timed out waiting for the run to finish."))}};In()},H0=async({text:ae,files:je,fromComposer:st=!1})=>{let zt=(ae||"").trim();if(!zt&&je.length===0||_)return;$(null),N(null),B(null),fo(!0),I({}),H([]),j({status:"pending",input_prompt:zt,output:"",logs:[],started_at:new Date().toISOString()}),Gi(rr.current),D({content:zt||"(see attached files)",attachments:je.map(({file:Jo,...xs})=>xs)}),st&&(c(""),f([]));let In=Ht.current;if(!In)try{In=await rt()}catch(Jo){$(`${Jo.message} \u2014 running without a pinned conversation.`)}let Yi=()=>{st&&(c(zt),f(je)),D(null)};try{let Jo=new FormData;Jo.append("prompt",zt),Jo.append("action_name",s),In&&Jo.append("params[context_id]",String(In)),je.forEach(({file:Y0})=>Jo.append("attachments[]",Y0,Y0.name));let xs=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:Jo}),Cf=await w0(xs);if(xs.status===402&&Cf.upgrade_required){K(Cf.usage),j(Y0=>({...Y0,status:"failed",error_message:Cf.message||"Plan limit reached"})),fo(!1),Yi();return}if(!xs.ok)throw new Error(Cf.error||"Run failed");kf(Cf.run.id,qi(Cf.run)??In)}catch(Jo){j(xs=>({...xs,status:"failed",error_message:Jo.message})),fo(!1),Yi()}},K0=()=>H0({text:u,files:d,fromComposer:!0}),zg=(ae,je)=>{let st=fe.current;!st||String(st.id)!==String(ae.run_id)||(H(zt=>[...zt.filter(In=>In.request.id!==ae.id),{request:ae,outcome:je}]),fe.current={...st,waiting:!1},kf(st.id,st.contextId))},Bg=ae=>{let je=CP(ae);je==="finished"||Xe.current||($(null),I({}),H([]),j(ae),fo(!0),je==="awaiting"?W0(ae,qi(ae)):kf(ae.id,qi(ae)))},q0=(ae,je)=>{Ze.current=ae,je&&i.includes(je)&&je!==s&&l(je),g(ae)},I2=async ae=>{try{let je=await fetch(`/api/runs/${ae}`);if(!je.ok)return;let st=await je.json();if(!gr.current||!st.run||String(st.agent?.id)!==String(e.id))return;let zt=qi(st.run);zt&&q0(zt,st.run.action_name),Bg(st.run)}catch(je){console.error("Failed to open the linked run:",je)}},V0=ae=>{!ae||!ae.text||H0({text:ae.text,files:[]})},D2=ae=>{ae.key==="Enter"&&(ae.metaKey||ae.ctrlKey)&&(ae.preventDefault(),K0())},j2=async(ae,je)=>{let st=Ht.current,zt=await fetch(`/api/interactions/${st}/messages/${ae.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:je})}),In=await w0(zt);if(!zt.ok)throw new Error(In.error||`Could not save the message (HTTP ${zt.status})`);await Ge(st)},Fg=async ae=>{let je=Ht.current;try{let st=await fetch(`/api/interactions/${je}/messages/${ae.id}`,{method:"DELETE"});if(!st.ok){let zt=await w0(st);throw new Error(zt.error||`Could not delete the message (HTTP ${st.status})`)}w(null),await Ge(je),me(s)}catch(st){w(st.message)}},$2=ae=>{ee(!1),B(ae),M(""),ve(null)},we=async()=>{let ae=q.trim();if(!(!ae||ne)){U(!0),ve(null);try{let je=await ur(),st=await fetch(`/api/interactions/${je}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:L,content:ae})}),zt=await w0(st);if(!st.ok)throw new Error(zt.error||`Could not add the message (HTTP ${st.status})`);M(""),B(null),await Ge(je),me(s)}catch(je){ve(je.message)}finally{U(!1)}}},yt=async ae=>{let je=ae;if(qi(ae)==null||ae.status==="awaiting_input")try{let zt=await fetch(`/api/runs/${ae.id}`);zt.ok&&(je=(await zt.json()).run)}catch(zt){console.error("Failed to load run details:",zt)}let st=qi(je);st?(N(null),st!==Ht.current&&Zo(),q0(st,je.action_name||ae.action_name),Bg(je)):N({...je,output:je.output??je.output_preview,error_message:je.error_message??je.error}),qe.current?.scrollIntoView({behavior:"smooth",block:"start"})},or=async()=>{pe(!0),_e(null);try{await Cg({planSlug:"pro"})}catch(ae){_e(ae.message),pe(!1)}},Cr=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,Yr=a.find(ae=>ae.name===s)?.prompt,Da=[e.instructions,s==="ask"?null:Yr].map(ae=>(ae||"").trim()).filter(Boolean).join(` -`)||v?.instructions||"",A_=y.slice();h&&!A_.some(ae=>ae.id===h)&&A_.unshift({id:h,message_count:oa.length});let OZ=(u.trim().length>0||d.length>0)&&!k,L0=O?.status==="awaiting_input",z3=L0?Zm(O.input_requests):[],PZ=new Set(j.map(({request:ae})=>ae.id)),B3=O&&!k&&O.status==="failed",MZ=O&&!k&&O.status==="complete"&&!Li(O)&&!h,pf={background:o.cardBg,border:`1px solid ${o.cardBorder}`,borderRadius:"12px"},F3={borderBottom:`1px solid ${o.cardBorder}`},U3={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontSize:"13px",fontFamily:ht.mono,maxWidth:"260px"},W3={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${p?_o:o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},C_=mn("system",n),DZ=n2(n);return V.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},V.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},te&&V.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},V.default.createElement("div",null,V.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),V.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",te.runs_used," of ",te.runs_limit," runs on the"," ",te.plan||"free"," plan. Upgrade to keep running agents."),re&&V.default.createElement("p",{className:"text-sm text-red-600 mt-1"},re)),V.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},Sr&&V.default.createElement("a",{href:Sr,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),V.default.createElement("button",{onClick:tr,disabled:le,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},le?"Redirecting\u2026":"Upgrade to Pro"))),V.default.createElement("div",{"data-testid":"runner-toolbar",style:pf,className:"p-4 flex items-center gap-3 flex-wrap"},V.default.createElement(fn,{size:40}),V.default.createElement("div",{className:"min-w-0"},V.default.createElement("div",{className:"font-semibold truncate",style:{color:o.textPrimary}},e.name),V.default.createElement("div",{className:"text-xs font-mono",style:{color:o.textSecondary}},e.provider," / ",e.model)),V.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},V.default.createElement("select",{"data-testid":"runner-action-select",value:s,onChange:ae=>Ho(ae.target.value),disabled:k,className:"aa-field",style:U3,title:"Agent action to invoke"},i.map(ae=>V.default.createElement("option",{key:ae,value:ae},"#",ae))),V.default.createElement("select",{"data-testid":"runner-conversation-select",value:h??"",onChange:ae=>Ca(ae.target.value),disabled:k,className:"aa-field",style:U3,title:"Conversation to continue"},V.default.createElement("option",{value:""},"New conversation on first run"),A_.map(ae=>V.default.createElement("option",{key:ae.id,value:ae.id},"Conversation #",ae.id," \xB7 ",ae.message_count??0," message",ae.message_count===1?"":"s"))),V.default.createElement(Fo,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:o,onClick:Fs,disabled:k,title:"Start an empty conversation for this action"},"+ New conversation"),V.default.createElement(Fo,{testId:"runner-back",variant:"secondary",size:"sm",colors:o,onClick:t},"\u2190 Back to editor"))),V.default.createElement("div",{"data-testid":"runner-context",ref:Ke,style:pf,className:"flex flex-col overflow-hidden"},V.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:F3},V.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},V.default.createElement("h3",{className:"font-medium",style:{color:o.textPrimary}},"Context"),v&&V.default.createElement("span",{className:"text-xs font-mono",style:{color:o.textMuted}},"#",v.id," \xB7 ",oa.length," message",oa.length===1?"":"s"),us==="recording"&&V.default.createElement("span",{"data-testid":"runner-recording-notice",className:"text-xs inline-flex items-center gap-1",style:{color:o.textMuted},title:"This view is recorded for the conversation's replay. Field values are masked and keys are left out; the conversation is recorded as shown."},V.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),us==="limit"&&V.default.createElement("span",{"data-testid":"runner-recording-stopped",className:"text-xs",style:{color:o.textMuted},title:"This visit reached the size limit for a recording, so the rest of it is not recorded. Open the conversation again to start a new recording."},"Recording stopped")),V.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},V.default.createElement(Fbe,{run:O,darkMode:n,colors:o}),v&&V.default.createElement(Fo,{testId:"runner-replay",variant:"secondary",size:"sm",colors:o,onClick:()=>It(Xm("context",v.id)),disabled:k,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),V.default.createElement("div",{className:"relative",ref:oo},V.default.createElement(Fo,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:o,onClick:()=>R(ae=>!ae),disabled:k,title:"Insert a message into the context without running"},"+ Add message"),Z&&V.default.createElement("div",{className:"absolute right-0 mt-1 z-10 py-1 rounded-lg shadow-lg",style:{background:o.cardBg,border:`1px solid ${o.borderStrong}`,minWidth:"180px"}},[["user","runner-add-user-message","User message"],["assistant","runner-add-assistant-message","Assistant message"]].map(([ae,je,it])=>V.default.createElement("button",{key:ae,type:"button","data-testid":je,onClick:()=>__(ae),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-black/5",style:{color:o.textCell,background:"none",border:"none",cursor:"pointer"}},it)))))),V.default.createElement("div",{ref:Kt,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},V.default.createElement("div",{"data-testid":"runner-system-row",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 cursor-pointer",onClick:()=>se(ae=>!ae),title:ue?"Collapse system instructions":"Show system instructions"},V.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},V.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:C_.background,color:C_.color,textAlign:"center"}},C_.label)),V.default.createElement("div",{className:"min-w-0 flex-1"},Ea?ue?V.default.createElement("pre",{style:{...DZ,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},Ea):V.default.createElement("div",{className:"text-sm truncate",style:{color:o.textSecondary}},Ea.split(` -`).find(ae=>ae.trim())||""):V.default.createElement("div",{className:"text-sm",style:{color:o.textMuted}},"No system instructions"),V.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:o.textMuted}},"read-only \xB7 Edit in the Instructions tab")),V.default.createElement(eY,{open:ue,color:o.textMuted})),_&&V.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},_),oa.length>0?V.default.createElement("div",{className:"mt-3"},V.default.createElement(Di,{messages:oa,darkMode:n,testIdPrefix:"runner-message",onUiAction:$0,onEditMessage:k_,onDeleteMessage:Tg})):!F&&!z&&!B3&&V.default.createElement("div",{"data-testid":"runner-context-empty",className:"text-sm text-center py-8",style:{color:o.textMuted}},"No messages yet \u2014 say something below to test the agent as a user."),F&&V.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},V.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},V.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:mn("user",n).background,color:mn("user",n).color,textAlign:"center"}},"User")),V.default.createElement("div",{className:"min-w-0 flex-1"},V.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:o.textPrimary}},F.content),V.default.createElement(o2,{attachments:F.attachments,darkMode:n}))),O&&(k||cM(O).length>0)&&V.default.createElement("div",{className:"mt-3 space-y-2"},V.default.createElement(Bbe,{run:O,darkMode:n,colors:o,expanded:E,onToggle:ae=>I(je=>({...je,[ae]:!je[ae]}))}),k&&!L0&&V.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:o.textSecondary}},V.default.createElement("span",{className:"animate-pulse"},"\u25CF"),V.default.createElement("span",null,cM(O).length>0?"Working\u2026":"Starting run\u2026"))),(z3.length>0||j.length>0)&&V.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},L0&&V.default.createElement("div",{className:"text-sm",style:{color:o.textSecondary}},"Paused for input: answer to continue this run."),z3.filter(ae=>!PZ.has(ae.id)).map(ae=>V.default.createElement(Gd,{key:ae.id,request:ae,showRunLink:!1,onSettled:Eg})),j.map(({request:ae,outcome:je})=>V.default.createElement(Gd,{key:ae.id,request:ae,initialOutcome:je,showRunLink:!1}))),D&&V.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},D),B3&&O.error_message&&V.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:n?"rgba(239,68,68,0.12)":"#fef2f2",color:n?"#fca5a5":"#b91c1c"}},V.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),V.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},O.error_message)),MZ&&V.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:o.innerBg,color:o.textPrimary}},V.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:o.textMuted}},"Output"),V.default.createElement(rs,{text:O.output||"No output",darkMode:n,onUiAction:$0})),z&&V.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:o.innerBg,border:`1px solid ${o.cardBorder}`}},V.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},V.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:o.textMuted}},V.default.createElement("span",{style:{color:o.textPrimary}},"Run #",z.id),V.default.createElement(vc,{tone:uM[z.status]||"neutral",darkMode:n},z.status),z.output_metadata?.model&&V.default.createElement("span",null,z.output_metadata.provider,"/",z.output_metadata.model),z.duration_ms?V.default.createElement("span",null,q2(z.duration_ms)):null,z.trace_id&&V.default.createElement("a",{href:ct(`/traces?trace=${z.trace_id}`),className:"hover:underline",style:{color:o.textSecondary}},"trace:",z.trace_id.slice(0,8)," \u2192"),V.default.createElement("span",null,"\xB7 no conversation attached")),V.default.createElement("button",{type:"button",onClick:()=>N(null),className:"text-xs font-mono",style:{color:o.textMuted,background:"none",border:"none",cursor:"pointer"},title:"Close"},"[x]")),(z.input_prompt||z.input_preview)&&V.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:o.textSecondary}},z.input_prompt||z.input_preview),z.error_message?V.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:n?"#fca5a5":"#b91c1c"}},z.error_message):V.default.createElement("div",{className:"text-sm",style:{color:o.textPrimary}},V.default.createElement(rs,{text:z.output||"No output",darkMode:n}))),L&&V.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${o.borderStrong}`}},V.default.createElement("div",{className:"flex items-center gap-2 mb-2"},V.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:mn(L,n).background,color:mn(L,n).color}},mn(L,n).label),V.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},"Added to the context without running the agent")),V.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:H,onChange:ae=>M(ae.target.value),onKeyDown:ae=>{ae.key==="Escape"&&B(null),ae.key==="Enter"&&(ae.metaKey||ae.ctrlKey)&&we()},placeholder:L==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...W3,border:`1px solid ${o.inputBorder}`}}),V.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},V.default.createElement(Fo,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:o,onClick:we,disabled:ne||!H.trim()},ne?"Adding\u2026":`Add ${L} message`),V.default.createElement(Fo,{variant:"secondary",size:"sm",colors:o,onClick:()=>B(null),disabled:ne},"Cancel"),oe&&V.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},oe))))),V.default.createElement("div",{style:pf,className:"p-4"},V.default.createElement("div",{onDragOver:ae=>{ae.preventDefault(),p||m(!0)},onDragLeave:()=>m(!1),onDrop:ae=>{ae.preventDefault(),m(!1),k||df(ae.dataTransfer?.files)}},V.default.createElement("textarea",{"data-testid":"runner-prompt",value:u,onChange:ae=>c(ae.target.value),onKeyDown:S_,placeholder:"Message the agent as a user\u2026 (\u2318/Ctrl+Enter to run \xB7 drop files here to attach)",rows:3,disabled:k,className:"aa-field",style:W3})),V.default.createElement(o2,{attachments:d,darkMode:n,testId:"runner-attachment-chip",onRemove:(ae,je)=>cs(je),removeTestId:"runner-attachment-remove"}),V.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},V.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},V.default.createElement("input",{ref:Or,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:ae=>{df(ae.target.files),ae.target.value=""}}),V.default.createElement(Fo,{testId:"runner-attach",variant:"secondary",size:"sm",colors:o,onClick:()=>Or.current?.click(),disabled:k,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),V.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},"Press ",V.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:o.mutedBg,color:o.textSecondary}},"\u2318")," + ",V.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:o.mutedBg,color:o.textSecondary}},"Enter")," to run")),V.default.createElement(Fo,{testId:"runner-run",variant:"primary",colors:o,onClick:I0,disabled:!OZ},k&&L0?V.default.createElement(V.default.Fragment,null,V.default.createElement("span",{style:{fontFamily:ht.mono}},"[?]")," Waiting for input"):k?V.default.createElement(V.default.Fragment,null,V.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:ht.mono}},"[~]")," Running\u2026"):V.default.createElement(V.default.Fragment,null,V.default.createElement("span",{style:{fontFamily:ht.mono}},"[>]")," Run"))))),V.default.createElement("div",{className:"space-y-4 min-w-0"},V.default.createElement("div",{style:pf,className:"p-4"},V.default.createElement("h4",{className:"font-medium mb-3",style:{color:o.textPrimary}},"Configuration"),V.default.createElement("dl",{className:"space-y-2 text-sm"},V.default.createElement("div",{className:"flex justify-between"},V.default.createElement("dt",{style:{color:o.textSecondary}},"Temperature"),V.default.createElement("dd",{style:{color:o.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),V.default.createElement("div",{className:"flex justify-between"},V.default.createElement("dt",{style:{color:o.textSecondary}},"Tools"),V.default.createElement("dd",{style:{color:o.textPrimary}},e.tools?.length||0)),V.default.createElement("div",{className:"flex justify-between items-center"},V.default.createElement("dt",{style:{color:o.textSecondary}},"Status"),V.default.createElement("dd",null,V.default.createElement(vc,{tone:e.status==="active"?"success":"neutral",darkMode:n},e.status)))),e.instructions&&V.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${o.cardBorder}`}},V.default.createElement("div",{className:"text-xs mb-1.5",style:{color:o.textSecondary}},"System Instructions"),V.default.createElement("p",{className:"text-xs whitespace-pre-wrap max-h-44 overflow-y-auto font-mono leading-relaxed",style:{color:o.textCell}},e.instructions))),V.default.createElement("div",{style:pf,className:"overflow-hidden"},V.default.createElement("div",{className:"px-4 py-3",style:F3},V.default.createElement("h4",{className:"font-medium",style:{color:o.textPrimary}},"Recent Runs")),V.default.createElement("div",{className:"max-h-64 overflow-auto"},C.length>0?V.default.createElement("div",null,C.map(ae=>V.default.createElement("div",{key:ae.id,"data-testid":"runner-recent-run",className:"px-4 py-3 cursor-pointer hover:bg-black/5",style:{borderBottom:`1px solid ${o.cardBorder}`},onClick:()=>gt(ae),title:Li(ae)?"Open this run\u2019s conversation":"Show this run\u2019s output"},V.default.createElement("div",{className:"flex items-center justify-between mb-1"},V.default.createElement(vc,{tone:uM[ae.status]||"neutral",darkMode:n},ae.status),V.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},q2(ae.duration_ms))),V.default.createElement("p",{className:"text-sm truncate",style:{color:o.textCell}},ae.input_preview||ae.input_prompt?.substring(0,50)),V.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:o.textMuted}},ae.model&&V.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:o.mutedBg,color:o.textSecondary}},ae.model),Li(ae)&&V.default.createElement("span",{className:"font-mono"},"#",Li(ae)),V.default.createElement("span",null,new Date(ae.created_at).toLocaleString()))))):V.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:o.textMuted}},"No runs yet"))),V.default.createElement("div",{style:pf,className:"p-4"},V.default.createElement("h4",{className:"font-medium mb-3",style:{color:o.textPrimary}},"Example Prompts"),V.default.createElement("div",{className:"space-y-2"},jbe.map(ae=>V.default.createElement("button",{key:ae,type:"button","data-testid":"runner-example-prompt",onClick:()=>c(ae),className:"w-full text-left px-3 py-2 text-sm rounded-lg transition-colors hover:bg-black/5",style:{color:o.textCell,border:`1px solid ${o.cardBorder}`,background:"transparent",cursor:"pointer"}},ae))))))}var Ue=G(Y()),V2=e=>new Date(`${e}T00:00:00`),Ube=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function fM({onSelectAgent:e}){let[t,r]=(0,Ue.useState)(null),[n,o]=(0,Ue.useState)(!0),[a,i]=(0,Ue.useState)(30);(0,Ue.useEffect)(()=>{s()},[a]);let s=async()=>{o(!0);try{let p=await(await fetch(`/api/analytics?days=${a}`)).json();r(p)}catch(f){console.error("Failed to load analytics:",f)}finally{o(!1)}},l=f=>f?f>=1e6?`${(f/1e6).toFixed(1)}M`:f>=1e3?`${(f/1e3).toFixed(1)}K`:f.toString():"0",u=f=>f?f<1e3?`${f}ms`:`${(f/1e3).toFixed(2)}s`:"-";if(n&&!t)return Ue.default.createElement("div",{className:"flex items-center justify-center h-64"},Ue.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let c=t?.charts?.runs_by_day?.length>0?Math.max(...t.charts.runs_by_day.map(f=>f.count)):1,d=t?.charts?.tokens_by_day?.length>0?Math.max(...t.charts.tokens_by_day.map(f=>f.tokens)):1;return Ue.default.createElement("div",{className:"space-y-6"},Ue.default.createElement("div",{className:"flex items-center justify-between"},Ue.default.createElement("div",null,Ue.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Ue.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Ue.default.createElement("select",{value:a,onChange:f=>i(Number(f.target.value)),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},Ube.map(f=>Ue.default.createElement("option",{key:f.value,value:f.value},"Last ",f.label)))),Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ue.default.createElement(d0,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ue.default.createElement(d0,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ue.default.createElement(d0,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ue.default.createElement(d0,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ue.default.createElement(d0,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Ue.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Ue.default.createElement("div",{className:"h-48"},Ue.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((f,p)=>Ue.default.createElement("div",{key:f.date,className:"flex-1 flex flex-col items-center group"},Ue.default.createElement("div",{className:"relative w-full"},Ue.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${f.count/c*150}px`,minHeight:f.count>0?"4px":"0"}}),Ue.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-10"},f.count," runs"))))),Ue.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ue.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&V2(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ue.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&V2(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ue.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Ue.default.createElement("div",{className:"h-48"},Ue.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((f,p)=>Ue.default.createElement("div",{key:f.date,className:"flex-1 flex flex-col items-center group"},Ue.default.createElement("div",{className:"relative w-full"},Ue.default.createElement("div",{className:"w-full bg-purple-500 rounded-t transition-all hover:bg-purple-600",style:{height:`${f.tokens/d*150}px`,minHeight:f.tokens>0?"4px":"0"}}),Ue.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-10"},l(f.tokens)," tokens"))))),Ue.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ue.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&V2(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ue.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&V2(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ue.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Ue.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ue.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Top Agents"),t?.top_agents?.length>0?Ue.default.createElement("div",{className:"space-y-3"},t.top_agents.map((f,p)=>Ue.default.createElement("div",{key:f.id,onClick:()=>e?.(f),className:"flex items-center space-x-4 p-3 rounded-lg hover:bg-gray-50 cursor-pointer transition-colors"},Ue.default.createElement("div",{className:"w-8 h-8 rounded-full bg-red-100 flex items-center justify-center text-red-600 font-semibold"},p+1),Ue.default.createElement("div",{className:"flex-1 min-w-0"},Ue.default.createElement("p",{className:"font-medium text-gray-900 truncate"},f.name),Ue.default.createElement("p",{className:"text-sm text-gray-500"},f.run_count," runs")),Ue.default.createElement("div",{className:"text-right"},Ue.default.createElement("p",{className:"font-medium text-gray-900"},l(f.total_tokens)),Ue.default.createElement("p",{className:"text-xs text-gray-500"},"tokens"))))):Ue.default.createElement("div",{className:"py-8 text-center text-gray-400"},"No agent activity yet")),Ue.default.createElement("div",{className:"space-y-6"},Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Ue.default.createElement("div",{className:"space-y-3"},Object.entries(t.provider_breakdown).map(([f,p])=>{let m=t?.summary?.total_runs||1,y=(p/m*100).toFixed(1);return Ue.default.createElement("div",{key:f},Ue.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ue.default.createElement("span",{className:"capitalize text-gray-600"},f),Ue.default.createElement("span",{className:"text-gray-900 font-medium"},p)),Ue.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Ue.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${y}%`}})))})):Ue.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Ue.default.createElement("div",{className:"space-y-4"},Ue.default.createElement("div",{className:"flex justify-between items-center"},Ue.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Ue.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Ue.default.createElement("div",{className:"flex justify-between items-center"},Ue.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Ue.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Ue.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Ue.default.createElement("div",{className:"flex justify-between items-center"},Ue.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Ue.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function d0({title:e,value:t,subtitle:r,color:n}){return Ue.default.createElement("div",{className:`bg-white rounded-xl border border-gray-200 border-l-4 ${{rose:"border-l-red-500",blue:"border-l-blue-500",green:"border-l-green-500",purple:"border-l-purple-500",amber:"border-l-amber-500"}[n]} p-4`},Ue.default.createElement("p",{className:"text-sm text-gray-500"},e),Ue.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Ue.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var Q=G(Y());function pM({agent:e,onBack:t}){let{timeWindow:r}=Ms(),[n,o]=(0,Q.useState)([]),[a,i]=(0,Q.useState)([]),[s,l]=(0,Q.useState)(null),[u,c]=(0,Q.useState)(null),[d,f]=(0,Q.useState)([]),[p,m]=(0,Q.useState)("run"),[y,x]=(0,Q.useState)(!1),[h,g]=(0,Q.useState)(!1),v=(0,Q.useRef)(!1),b=(0,Q.useRef)(!1),[_,w]=(0,Q.useState)("recent"),[C,S]=(0,Q.useState)({}),[k,A]=(0,Q.useState)(!0),[O,$]=(0,Q.useState)(1),[F,P]=(0,Q.useState)(!0),[z,N]=(0,Q.useState)(""),[D,T]=(0,Q.useState)(""),[E,I]=(0,Q.useState)("recent"),j=(0,Q.useRef)(null),q=ct(`/agents/${e.id}/interactions`);(0,Q.useEffect)(()=>{te()},[e.id,O,z,D,E,r.minutes]),(0,Q.useEffect)(()=>{$(1)},[r.minutes]),(0,Q.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(M=>M.json()).then(M=>i(M.interactions||[])).catch(()=>{}).finally(()=>g(!0))},[e.id]),(0,Q.useEffect)(()=>{let M=()=>{let ne=Eo(),U=ne.match(/\/interactions\/runs\/(\d+)/),oe=ne.match(/\/interactions\/sessions\/(\d+)/);if(U)m("run"),c(null),le(parseInt(U[1],10),{updateUrl:!1});else if(oe)m("all"),c({id:parseInt(oe[1],10)});else if(ne.endsWith("/interactions/sessions")||ne.endsWith("/interactions/all"))ne.endsWith("/all")&&window.history.replaceState({},"",ne.replace(/\/all$/,"/sessions")),m("all"),c(null);else{v.current=!1,l(null),c(null),f([]);return}v.current=!0};return M(),window.addEventListener("popstate",M),()=>window.removeEventListener("popstate",M)},[e.id]),(0,Q.useEffect)(()=>{v.current||b.current||!y||!h||m(n.length===0&&a.length>0?"all":"run")},[y,h,n.length,a.length]);let te=async()=>{A(!0);try{let M=new URLSearchParams({page:O.toString(),per_page:"20",minutes:String(r.minutes)});z&&M.append("status",z),D&&M.append("source",D),E!=="recent"&&M.append("sort",E);let U=await(await fetch(`/api/agents/${e.id}/runs?${M}`)).json();o(O===1?U.runs:oe=>[...oe,...U.runs]),P(U.runs.length===20)}catch(M){console.error("Failed to load runs:",M)}finally{A(!1),x(!0)}},K=M=>{window.location.pathname!==M&&window.history.pushState({},"",M)},le=async(M,{updateUrl:ne=!0}={})=>{try{let oe=await(await fetch(`/api/runs/${M}`)).json();l(oe.run),f(oe.messages||[]),m("run"),c(null),ne&&K(`${q}/runs/${M}`)}catch(U){console.error("Failed to load run details:",U)}},pe=M=>{if(M.source==="reported"){let ne=M.trace_id||String(M.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",ct(`/traces/${ne}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:ct(`/traces/${ne}`)}}));return}le(M.record_id||M.id)},re=()=>{l(null),c(null),f([]),m("run"),K(q)},_e=M=>{m("all"),M?(c({id:M.id,name:M.display_name}),K(`${q}/sessions/${M.id}`)):(c(null),K(`${q}/sessions`))},ue=M=>{b.current=!0,m(M),K(M==="all"?u?`${q}/sessions/${u.id}`:`${q}/sessions`:s?`${q}/runs/${s.id}`:q)},se=u?u.name||a.find(M=>M.id===u.id)?.display_name||`Session #${u.id}`:null,Z=()=>{let M=new Map;n.forEach(oe=>{let ye=`${oe.model||"unknown"}|${oe.instructions_digest||"none"}`;M.has(ye)||M.set(ye,{key:ye,model:oe.model,instructionsDigest:oe.instructions_digest,instructionsVersion:oe.instructions_version,instructionsCodename:oe.instructions_codename,instructionsPreview:oe.instructions_preview,runs:[]}),M.get(ye).runs.push(oe)});let ne=[...M.values()].map(oe=>({...oe,count:oe.runs.length,completed:oe.runs.filter(ye=>ye.status==="complete").length,failed:oe.runs.filter(ye=>ye.status==="failed").length,totalTokens:oe.runs.reduce((ye,Je)=>ye+(Je.tokens||0),0),avgTokens:oe.runs.reduce((ye,Je)=>ye+(Je.tokens||0),0)/oe.runs.length,avgDuration:oe.runs.reduce((ye,Je)=>ye+(Je.duration_ms||0),0)/oe.runs.length,latest:oe.runs[0],sortedRuns:[...oe.runs].sort((ye,Je)=>(Je.duration_ms||0)-(ye.duration_ms||0))}));ne.sort((oe,ye)=>_==="longest"?ye.avgDuration-oe.avgDuration:new Date(ye.latest.created_at)-new Date(oe.latest.created_at));let U={runs:n.length,completed:n.filter(oe=>oe.status==="complete").length,tokens:n.reduce((oe,ye)=>oe+(ye.tokens||0),0),avgDuration:n.length?n.reduce((oe,ye)=>oe+(ye.duration_ms||0),0)/n.length:0,models:[...new Set(n.map(oe=>oe.model).filter(Boolean))]};return{cohorts:ne,totals:U}},R=M=>{switch(M){case"complete":return"bg-green-100 text-green-700";case"failed":return"bg-red-100 text-red-700";case"running":return"bg-blue-100 text-blue-700";case"pending":return"bg-yellow-100 text-yellow-700";case"cancelled":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},L=M=>M?M<1e3?`${M}ms`:M<6e4?`${(M/1e3).toFixed(1)}s`:`${Math.floor(M/6e4)}m ${Math.floor(M%6e4/1e3)}s`:"-",B=M=>M==null?"\u2014":M===0?"$0":M<.01?`$${M.toFixed(4)}`:`$${M.toFixed(2)}`,H=M=>{let ne=new Date(M),oe=new Date-ne,ye=Math.floor(oe/6e4),Je=Math.floor(oe/36e5),Ft=Math.floor(oe/864e5);return ye<1?"Just now":ye<60?`${ye}m ago`:Je<24?`${Je}h ago`:Ft<7?`${Ft}d ago`:ne.toLocaleDateString()};return Q.default.createElement("div",{className:"flex h-full"},Q.default.createElement("div",{className:"w-80 border-r border-gray-200 flex flex-col bg-white"},Q.default.createElement("div",{className:"p-4 border-b border-gray-200"},Q.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},Q.default.createElement("button",{onClick:t,className:"p-1 text-gray-400 hover:text-gray-600 transition-colors"},Q.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Q.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),Q.default.createElement("div",null,Q.default.createElement("h2",{className:"font-semibold text-gray-900"},"Agent Interactions"),Q.default.createElement("p",{className:"text-sm text-gray-500"},e.name))),Q.default.createElement("div",{className:"mb-2"},Q.default.createElement(Ds,{compact:!0})),Q.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 mb-2 text-sm"},[{value:"",label:"All"},{value:"dashboard",label:"Dashboard"},{value:"reported",label:"Reported"}].map(M=>Q.default.createElement("button",{key:M.value||"all",onClick:()=>{T(M.value),$(1)},className:`flex-1 px-2 py-1 rounded-md transition-colors ${D===M.value?"bg-white shadow text-gray-900":"text-gray-600"}`,title:M.value==="dashboard"?"Executions started from this dashboard":M.value==="reported"?"Executions reported by your app via telemetry":"Every execution, however it started"},M.label))),Q.default.createElement("select",{value:z,onChange:M=>{N(M.target.value),$(1)},className:"w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},Q.default.createElement("option",{value:""},"All statuses"),Q.default.createElement("option",{value:"complete"},"Completed"),Q.default.createElement("option",{value:"failed"},"Failed"),Q.default.createElement("option",{value:"running"},"Running"),Q.default.createElement("option",{value:"cancelled"},"Cancelled")),Q.default.createElement("select",{value:E,onChange:M=>{I(M.target.value),$(1)},className:"w-full mt-2 px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},Q.default.createElement("option",{value:"recent"},"Most recent"),Q.default.createElement("option",{value:"longest"},"Longest running"),Q.default.createElement("option",{value:"cost"},"Highest cost"),Q.default.createElement("option",{value:"tokens"},"Most tokens"))),Q.default.createElement("div",{className:"flex-1 overflow-auto"},k&&n.length===0?Q.default.createElement("div",{className:"flex items-center justify-center h-32"},Q.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):n.length>0?Q.default.createElement(Q.default.Fragment,null,n.map(M=>{let ne=M.source==="reported";return Q.default.createElement("div",{key:M.id,onClick:()=>pe(M),title:ne?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b border-gray-100 cursor-pointer transition-colors ${!ne&&s?.id===M.id?"bg-red-50 border-l-4 border-l-red-500":"hover:bg-gray-50"}`},Q.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},Q.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${R(M.status)}`},M.status),Q.default.createElement("div",{className:"flex items-center gap-2"},Q.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${ne?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`},ne?"reported":"dashboard"),Q.default.createElement("span",{className:"text-xs text-gray-400"},H(M.created_at||M.occurred_at)),!ne&&Q.default.createElement(lc,{kind:"run",id:M.id,title:"Replay this run"}))),Q.default.createElement("p",{className:"text-sm text-gray-700 truncate"},M.input_preview||M.input_prompt?.substring(0,60)||(ne?`${M.action_name||"execution"} \xB7 trace ${String(M.trace_id||"").slice(0,8)}`:"No input")),Q.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs text-gray-400 flex-wrap gap-y-1"},M.model&&Q.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},M.model),Q.default.createElement("span",{className:E==="longest"?"text-gray-700 font-medium":void 0},L(M.duration_ms)),!!M.tokens&&Q.default.createElement("span",{className:E==="tokens"?"text-gray-700 font-medium":void 0},M.tokens," tokens"),M.cost!=null&&Q.default.createElement("span",{className:E==="cost"?"text-gray-700 font-medium":void 0,title:"Estimated from token counts at this model's published rates"},B(M.cost))))}),F&&Q.default.createElement("button",{onClick:()=>$(M=>M+1),disabled:k,className:"w-full py-3 text-sm text-red-600 hover:bg-gray-50 transition-colors"},k?"Loading...":"Load More")):Q.default.createElement("div",{className:"p-8 text-center text-gray-400"},Q.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 text-gray-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Q.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})),Q.default.createElement("p",null,"No conversations yet")))),Q.default.createElement("div",{className:"flex-1 flex flex-col bg-gray-50"},Q.default.createElement("div",{className:"px-4 py-2 bg-white border-b border-gray-100 flex items-center gap-1.5 text-xs text-gray-500"},Q.default.createElement("button",{onClick:t,className:"hover:text-gray-900 hover:underline transition-colors"},e.name),Q.default.createElement("span",{className:"text-gray-300"},"/"),p==="all"||s?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("button",{onClick:re,className:"hover:text-gray-900 hover:underline transition-colors"},"Interactions"),Q.default.createElement("span",{className:"text-gray-300"},"/"),p==="all"?u?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("button",{onClick:()=>_e(null),className:"hover:text-gray-900 hover:underline transition-colors"},"Sessions"),Q.default.createElement("span",{className:"text-gray-300"},"/"),Q.default.createElement("span",{className:"text-gray-900 font-medium"},se)):Q.default.createElement("span",{className:"text-gray-900 font-medium"},"Sessions"):Q.default.createElement("span",{className:"text-gray-900 font-medium"},"Run #",s.id)):Q.default.createElement("span",{className:"text-gray-900 font-medium"},"Interactions")),Q.default.createElement("div",{className:"p-3 bg-white border-b border-gray-200 flex items-center justify-between"},Q.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},Q.default.createElement("button",{onClick:()=>ue("run"),className:`px-3 py-1 text-sm rounded-md transition-colors ${p==="run"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Selected run"),Q.default.createElement("button",{onClick:()=>ue("all"),className:`px-3 py-1 text-sm rounded-md transition-colors ${p==="all"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Sessions")),p==="run"&&s&&Q.default.createElement("span",{className:`px-3 py-1 rounded-full text-sm font-medium ${R(s.status)}`},s.status)),p==="all"?Q.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:M}=Z();return Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4 space-y-3"},Q.default.createElement("div",{className:"flex items-center gap-3"},Q.default.createElement(fn,{size:40}),Q.default.createElement("div",null,Q.default.createElement("h3",{className:"font-semibold text-gray-900"},e.name),Q.default.createElement("p",{className:"text-xs text-gray-500"},u?`${se} \u2014 one persisted interaction stream`:"Sessions group this agent\u2019s runs into persisted interaction streams"))),Q.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},Q.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),Q.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.runs)),Q.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),Q.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.runs?Math.round(M.completed/M.runs*100):0,"%")),Q.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),Q.default.createElement("p",{className:"text-lg font-bold text-gray-900"},L(Math.round(M.avgDuration)))),Q.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),Q.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.tokens.toLocaleString()))))})(),Q.default.createElement(Ul,{agentId:e.id,embedded:!0,selectedSessionId:u?.id??null,onSelectSession:_e})):s?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("div",{className:"p-4 bg-white border-b border-gray-200"},Q.default.createElement("div",{className:"flex items-center space-x-3"},Q.default.createElement(fn,{size:40}),Q.default.createElement("div",null,Q.default.createElement("h3",{className:"font-medium text-gray-900"},e.name," \u2014 Run #",s.id),Q.default.createElement("p",{className:"text-xs text-gray-500"},new Date(s.created_at).toLocaleString())))),Q.default.createElement("div",{ref:j,className:"flex-1 overflow-auto p-6"},Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 shadow-sm p-4"},d.length>0?Q.default.createElement(Di,{messages:d,darkMode:!1}):Q.default.createElement(Di,{darkMode:!1,messages:[{id:`run-${s.id}-input`,role:"user",content:s.input_prompt||s.input_preview,created_at:s.created_at},{id:`run-${s.id}-output`,role:"assistant",content:s.error_message||s.output||s.output_preview||"No response",created_at:s.completed_at||s.created_at}]}))),Q.default.createElement("div",{className:"p-4 bg-white border-t border-gray-200"},Q.default.createElement("div",{className:"flex items-center justify-center space-x-8 text-sm text-gray-500"},Q.default.createElement("span",null,"Duration: ",L(s.duration_ms)),s.total_tokens&&Q.default.createElement("span",null,"Tokens: ",s.total_tokens),s.input_tokens&&s.output_tokens&&Q.default.createElement("span",null,"Input: ",s.input_tokens," / Output: ",s.output_tokens),s.trace_id&&Q.default.createElement("a",{href:ct(`/traces?trace=${s.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${s.trace_id} \u2014 open in Traces`},"trace:",s.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:M,totals:ne}=Z();return M.length===0?Q.default.createElement("div",{className:"flex-1 flex items-center justify-center"},Q.default.createElement("div",{className:"text-center text-gray-400"},Q.default.createElement(fn,{size:100}),Q.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):Q.default.createElement("div",{className:"flex-1 overflow-auto p-6 space-y-5"},Q.default.createElement("div",{className:"flex items-center gap-3"},Q.default.createElement(fn,{size:40}),Q.default.createElement("div",null,Q.default.createElement("h3",{className:"font-semibold text-gray-900"},"Agent Report"),Q.default.createElement("p",{className:"text-xs text-gray-500"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),Q.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),Q.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ne.runs)),Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),Q.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ne.runs?Math.round(ne.completed/ne.runs*100):0,"%")),Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),Q.default.createElement("p",{className:"text-xl font-bold text-gray-900"},L(Math.round(ne.avgDuration)))),Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},Q.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),Q.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ne.tokens.toLocaleString()))),ne.models.length>0&&Q.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},Q.default.createElement("span",{className:"text-gray-500"},"Models used:"),ne.models.map(U=>Q.default.createElement("span",{key:U,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},U))),a.length>0&&Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},Q.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},Q.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Sessions \u2014 grouped interaction streams")),Q.default.createElement("div",{className:"divide-y divide-gray-100"},a.map(U=>Q.default.createElement("div",{key:U.id,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer flex items-center justify-between gap-3",onClick:()=>_e(U),title:"Open this session's interaction stream"},Q.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:U.display_name},Q.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),Q.default.createElement("span",{className:"text-sm text-gray-900 truncate"},U.agent?.name||U.agent_name),U.action_name&&Q.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",U.action_name)),Q.default.createElement("div",{className:"flex items-center gap-3 text-xs text-gray-400 flex-shrink-0"},Q.default.createElement("span",null,U.message_count," messages"),Q.default.createElement("span",null,(U.tokens?.total||0).toLocaleString()," tokens"),Q.default.createElement("span",null,H(U.last_activity_at)),Q.default.createElement(lc,{kind:"context",id:U.id,title:"Replay this conversation"})))))),Q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},Q.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100 flex items-center justify-between"},Q.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Interactions by instructions \xD7 model"),Q.default.createElement("select",{value:_,onChange:U=>w(U.target.value),className:"text-xs border border-gray-200 rounded px-2 py-1 text-gray-600"},Q.default.createElement("option",{value:"recent"},"Most recent"),Q.default.createElement("option",{value:"longest"},"Longest interactions"))),Q.default.createElement("div",{className:"divide-y divide-gray-100"},M.map(U=>Q.default.createElement("div",{key:U.key},Q.default.createElement("div",{className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>S(oe=>({...oe,[U.key]:!oe[U.key]})),title:"Show this configuration's runs"},Q.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},Q.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},U.model||"unknown model"),Q.default.createElement("span",{className:"text-xs text-gray-400 font-mono",title:U.instructionsDigest?`sha:${U.instructionsDigest}`:void 0},"instructions"," ",U.instructionsDigest?[U.instructionsVersion,U.instructionsCodename||U.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),U.instructionsPreview&&Q.default.createElement("p",{className:"text-xs text-gray-500 mt-1 truncate"},U.instructionsPreview),Q.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs text-gray-400 flex-wrap gap-y-1"},Q.default.createElement("span",null,U.count," run",U.count>1?"s":""),Q.default.createElement("span",{className:U.failed>0?"text-red-500":"text-green-600"},U.count?Math.round(U.completed/U.count*100):0,"% success"),Q.default.createElement("span",null,"avg ",L(Math.round(U.avgDuration))),Q.default.createElement("span",null,"avg ",Math.round(U.avgTokens).toLocaleString()," tokens"),Q.default.createElement("span",null,"last ",H(U.latest.created_at)))),C[U.key]&&Q.default.createElement("div",{className:"bg-gray-50 divide-y divide-gray-100 border-t border-gray-100"},U.sortedRuns.map(oe=>Q.default.createElement("div",{key:oe.id,className:"px-6 py-2 hover:bg-gray-100 cursor-pointer",onClick:()=>le(oe.id),title:"Open this run's interaction"},Q.default.createElement("p",{className:"text-xs text-gray-700 truncate"},oe.input_preview||"No input"),Q.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] text-gray-400"},Q.default.createElement("span",{className:oe.status==="failed"?"text-red-500":""},oe.status),Q.default.createElement("span",null,L(oe.duration_ms)),oe.tokens&&Q.default.createElement("span",null,oe.tokens.toLocaleString()," tokens"),Q.default.createElement("span",null,H(oe.created_at)))))))))))})()))}var Qe=G(Y());var Wbe={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function mM({onUseTemplate:e,onClose:t}){let[r,n]=(0,Qe.useState)([]),[o,a]=(0,Qe.useState)([]),[i,s]=(0,Qe.useState)(""),[l,u]=(0,Qe.useState)(null),[c,d]=(0,Qe.useState)(!0),[f,p]=(0,Qe.useState)(!1),[m,y]=(0,Qe.useState)(null);(0,Qe.useEffect)(()=>{x()},[i]);let x=async()=>{d(!0);try{let g=new URLSearchParams;i&&g.append("category",i);let b=await(await fetch(`/api/templates?${g}`)).json();n(b.templates),a(b.categories)}catch(g){console.error("Failed to load templates:",g)}finally{d(!1)}},h=async g=>{p(!0),y(null);try{let v=await fetch(`/api/templates/${g.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name})});if(v.ok){let b=await v.json();e(b.agent)}else{let b=`Could not create the agent (HTTP ${v.status})`;try{let _=await v.json(),w=_.errors||_.error;w&&(b=Array.isArray(w)?w.join(", "):String(w))}catch{}y(b)}}catch(v){console.error("Failed to create agent from template:",v),y("Could not create the agent \u2014 check your connection and try again.")}finally{p(!1)}};return Qe.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},Qe.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},Qe.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},Qe.default.createElement("div",null,Qe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),Qe.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),Qe.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},Qe.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Qe.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),Qe.default.createElement("div",{className:"flex-1 flex overflow-hidden"},Qe.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},Qe.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),Qe.default.createElement("div",{className:"space-y-1"},Qe.default.createElement("button",{onClick:()=>s(""),className:`w-full text-left px-3 py-2 rounded-lg text-sm transition-colors ${i?"text-gray-600 hover:bg-gray-50":"bg-red-50 text-red-600"}`},"All Templates"),o.map(g=>Qe.default.createElement("button",{key:g,onClick:()=>s(g),className:`w-full text-left px-3 py-2 rounded-lg text-sm flex items-center space-x-2 transition-colors ${i===g?"bg-red-50 text-red-600":"text-gray-600 hover:bg-gray-50"}`},Qe.default.createElement("span",null,Wbe[g]||"\u{1F4E6}"),Qe.default.createElement("span",{className:"capitalize"},g))))),Qe.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?Qe.default.createElement("div",{className:"flex items-center justify-center h-full"},Qe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?Qe.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(g=>Qe.default.createElement("div",{key:g.id,onClick:()=>u(g),className:`bg-white rounded-xl border-2 p-4 cursor-pointer transition-all hover:shadow-lg ${l?.id===g.id?"border-red-500 ring-2 ring-red-100":"border-gray-200 hover:border-gray-300"}`},Qe.default.createElement("div",{className:"flex items-start space-x-3"},Qe.default.createElement("div",{className:"flex-shrink-0"},Qe.default.createElement(fn,{size:60})),Qe.default.createElement("div",{className:"flex-1 min-w-0"},Qe.default.createElement("div",{className:"flex items-center space-x-2"},Qe.default.createElement("span",{className:"text-lg"},g.icon),Qe.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},g.name)),Qe.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},g.description),Qe.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},Qe.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},g.category),g.featured&&Qe.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):Qe.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&Qe.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},Qe.default.createElement("div",{className:"flex justify-center mb-4"},Qe.default.createElement(fn,{size:120})),Qe.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),Qe.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),Qe.default.createElement("div",{className:"mt-6 space-y-4"},Qe.default.createElement("div",null,Qe.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),Qe.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&Qe.default.createElement("div",null,Qe.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),Qe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(g=>Qe.default.createElement("span",{key:g,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},g)))),Qe.default.createElement("div",null,Qe.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),Qe.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),Qe.default.createElement("button",{onClick:()=>h(l),disabled:f,className:"w-full mt-6 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50"},f?"Creating...":"Use This Template"),m&&Qe.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var tt=G(Y());function gM({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={}}){let{darkMode:l}=st(),[u,c]=(0,tt.useState)(!1),d=(0,tt.useRef)(null);(0,tt.useEffect)(()=>{function g(v){d.current&&!d.current.contains(v.target)&&c(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);let f=o?.name||"My Workspace",p=a?.name||a?.email?.split("@")[0]||"User",m={agentCount:r,pendingInputCount:n},y=g=>{let v=g.badge?m[g.badge]:void 0;return g.badgeTone==="attention"&&!v?void 0:v},x=lq(s).map(g=>({...g,items:g.items.map(v=>({id:v.view,label:v.label,icon:v.glyph??co.nav[v.icon],badge:y(v),badgeTone:v.badgeTone,badgeTitle:v.badgeTitle}))})),h=({item:g})=>tt.default.createElement("button",{onClick:()=>t(g.id),className:`w-full flex items-center justify-between py-3 rounded-lg text-left transition-colors ${g.indent?"pl-10 pr-4":"px-4"}`,style:{backgroundColor:e===g.id?l?"rgba(239, 68, 68, 0.15)":"#fef2f2":"transparent",color:e===g.id?"#ef4444":l?"#d1d5db":"#374151"},onMouseEnter:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor=l?"#252525":"#f3f4f6")},onMouseLeave:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor="transparent")}},tt.default.createElement("div",{className:"flex items-center space-x-3"},tt.default.createElement("span",{style:{fontFamily:ht.mono,fontSize:"12px",width:"20px",textAlign:"center"}},g.icon),tt.default.createElement("span",{className:"font-medium"},g.label)),g.badge!==void 0&&g.badgeTone==="attention"&&tt.default.createElement("span",{"data-testid":`nav-badge-${g.id}`,className:"px-2 py-0.5 text-xs rounded-full font-semibold",title:`${g.badge} ${g.badgeTitle||""}`.trim(),"aria-label":`${g.badge} ${g.badgeTitle||""}`.trim(),style:{backgroundColor:"var(--color-warning-soft)",color:"var(--color-warning-text)"}},g.badge),g.badge!==void 0&&g.badgeTone!=="attention"&&tt.default.createElement("span",{className:"px-2 py-0.5 text-xs rounded-full",style:{backgroundColor:e===g.id?"#fee2e2":l?"#2a2a2a":"#f3f4f6",color:e===g.id?"#ef4444":l?"#d1d5db":"#4b5563"}},g.badge));return tt.default.createElement("aside",{className:"w-64 border-r flex flex-col",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:l?"#2a2a2a":"#e5e7eb"},ref:d},tt.default.createElement("button",{onClick:()=>c(!u),className:"w-full flex items-center justify-between px-2 py-2 rounded-lg transition-colors",style:{backgroundColor:u?l?"#252525":"#f3f4f6":"transparent"}},tt.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},tt.default.createElement(fn,{size:28}),tt.default.createElement("span",{className:`font-semibold truncate ${l?"text-white":"text-gray-900"}`},f)),tt.default.createElement("svg",{className:`w-4 h-4 flex-shrink-0 transition-transform ${u?"rotate-180":""}`,style:{color:l?"#9ca3af":"#6b7280"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),u&&tt.default.createElement("div",{className:"absolute left-4 right-4 top-14 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:"flex items-center space-x-3"},tt.default.createElement(fn,{size:32}),tt.default.createElement("div",{className:"min-w-0"},tt.default.createElement("div",{className:`font-medium truncate ${l?"text-white":"text-gray-900"}`},f)))),tt.default.createElement("div",{className:"py-1"},tt.default.createElement("button",{onClick:()=>{t("settings"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},tt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),tt.default.createElement("span",null,"Settings")),tt.default.createElement("button",{onClick:()=>{t("organization"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},tt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"})),tt.default.createElement("span",null,"Organization"))),tt.default.createElement("div",{className:"border-t py-1",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${l?"text-gray-300":"text-gray-700"}`},tt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})),tt.default.createElement("span",{className:"text-sm"},p))))),tt.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},x.map(g=>{let v=tt.default.createElement("div",{className:"space-y-1"},g.items.map(b=>tt.default.createElement(h,{key:b.id,item:b})));return g.label?tt.default.createElement("div",{key:g.id,className:"pt-4"},tt.default.createElement("div",{className:"px-4 pb-2"},tt.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${l?"text-gray-500":"text-gray-400"}`},g.label)),v):tt.default.createElement(tt.default.Fragment,{key:g.id},v)})),tt.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${l?"text-gray-500":"text-gray-400"}`},"Resources"),tt.default.createElement("div",{className:"space-y-2"},tt.default.createElement("a",{href:"https://docs.activeagents.ai",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},tt.default.createElement("span",{style:{fontFamily:ht.mono,fontSize:"12px",width:"20px",textAlign:"center"}},co.nav.docs),tt.default.createElement("span",null,"Documentation")),tt.default.createElement("a",{href:"https://github.com/activeagents/activeagent",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},tt.default.createElement("span",{style:{fontFamily:ht.mono,fontSize:"12px",width:"20px",textAlign:"center"}},co.nav.github),tt.default.createElement("span",null,"GitHub")))),tt.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:`text-xs ${l?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:"")))}var ar=G(Y());function hM({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=st(),[o,a]=(0,ar.useState)(!1),i=(0,ar.useRef)(null);(0,ar.useEffect)(()=>{function d(f){i.current&&!i.current.contains(f.target)&&a(!1)}return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[]);let s=window.ACTIVE_AGENT_DASHBOARD?.meta?.signOutPath,l=()=>{if(!s)return;let d=document.querySelector('meta[name="csrf-token"]')?.content,f=document.createElement("form");f.method="POST",f.action=s;let p=document.createElement("input");p.type="hidden",p.name="_method",p.value="delete",f.appendChild(p);let m=document.createElement("input");m.type="hidden",m.name="authenticity_token",m.value=d,f.appendChild(m),document.body.appendChild(f),f.submit()},u=e?.name||e?.email?.split("@")[0]||"User",c=u.charAt(0).toUpperCase();return ar.default.createElement("header",{className:"h-16 border-b flex items-center justify-between px-6",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},ar.default.createElement("div",{className:"flex items-center space-x-4"}),ar.default.createElement("div",{className:"flex items-center space-x-4"},ar.default.createElement("button",{onClick:n,className:"p-2 rounded-lg transition-colors",style:{backgroundColor:r?"#252525":"#f3f4f6",color:r?"#fbbf24":"#4b5563"},title:r?"Switch to light mode":"Switch to dark mode"},r?ar.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},ar.default.createElement("path",{fillRule:"evenodd",d:"M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z",clipRule:"evenodd"})):ar.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},ar.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),ar.default.createElement("div",{className:`flex items-center space-x-2 text-sm ${r?"text-gray-400":"text-gray-500"}`},ar.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),ar.default.createElement("span",null,"Connected")),ar.default.createElement("div",{className:"relative",ref:i},ar.default.createElement("button",{onClick:()=>a(!o),className:"flex items-center space-x-2 p-1 rounded-lg transition-colors",style:{backgroundColor:o?r?"#252525":"#f3f4f6":"transparent"}},ar.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},ar.default.createElement("span",{className:"text-red-600 font-medium text-sm"},c))),o&&ar.default.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},ar.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},ar.default.createElement("div",{className:"flex items-center space-x-3"},ar.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},ar.default.createElement("span",{className:"text-red-600 font-medium"},c)),ar.default.createElement("div",null,ar.default.createElement("div",{className:`font-medium ${r?"text-white":"text-gray-900"}`},u),ar.default.createElement("div",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},e?.email)))),s&&ar.default.createElement("div",{className:"py-1"},ar.default.createElement("button",{onClick:l,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${r?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},ar.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ar.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"})),ar.default.createElement("span",null,"Sign out")))))))}var De=G(Y());var nt=G(Y());var yM=150,Hbe=e=>e.reduce((t,r)=>t+(Number(r)||0),0),Kbe=e=>e.length?Hbe(e)/e.length:0,is=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),vM=e=>{if(!(e>0))return 1;let t=Math.pow(10,Math.floor(Math.log10(e))),r=e/t;return(r<=1?1:r<=2?2:r<=2.5?2.5:r<=5?5:10)*t},nf=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),qbe=4,gg=e=>Math.max(qbe,vM(e)),tY=(e,t=2,r=6)=>{let n=e/4;for(let o=t;oMath.abs(n*i-Number((n*i).toFixed(o)))<=n*.1))return o;return r},Vbe=5.5,Gbe=12,Ybe=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*Vbe+Gbe,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},Xbe=typeof window>"u"?nt.useEffect:nt.useLayoutEffect,Zbe=e=>{let[t,r]=(0,nt.useState)(0);return Xbe(()=>{let n=e.current;if(!n)return;let o=()=>r(n.clientWidth);if(o(),typeof ResizeObserver>"u")return window.addEventListener("resize",o),()=>window.removeEventListener("resize",o);let a=new ResizeObserver(o);return a.observe(n),()=>a.disconnect()},[e]),t},of=(e,t)=>{let r=e.length,n=[];return e.forEach((o,a)=>{if(o==null||Number.isNaN(Number(o)))return;let i=r>1?a/(r-1)*100:50,s=100-Math.min(100,Math.max(0,Number(o)/t*100));n.push(`${i.toFixed(2)},${s.toFixed(2)}`)}),n.join(" ")},G2=(e,t)=>{let r=of(e,t);return r?`0,100 ${r} 100,100`:""},rY=(e,t=24)=>{let r=e.length;if(!r)return"";let n=r/t,o=Array.from({length:t},(s,l)=>{let u=Math.floor(l*n),c=Math.max(u+1,Math.floor((l+1)*n));return Kbe(e.slice(u,c).filter(d=>d!=null))}),a=Math.max(...o),i=Math.min(...o);return o.map((s,l)=>`${(l/(t-1)*100).toFixed(1)},${(26-(a===i?.5:(s-i)/(a-i))*24).toFixed(1)}`).join(" ")},f0=(e,t,r)=>{let n=e.length?e[0].data.length:0;return Array.from({length:n},(o,a)=>({title:r(a),segs:e.map(i=>({h:(Number(i.data[a])||0)/t*100,color:i.color}))}))};function nY({label:e,value:t,unit:r,sub:n,delta:o,deltaColor:a,deltaSub:i,spark:s,sparkColor:l}){return nt.default.createElement(Ve,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8}},nt.default.createElement(qe,{size:11,spacing:"0.05em"},e),nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,fontWeight:600,color:a,whiteSpace:"nowrap"}},o)),nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},nt.default.createElement("span",{style:{fontFamily:X,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?nt.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},r):null),nt.default.createElement("div",{title:n,style:{fontFamily:X,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),nt.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},nt.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},nt.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),nt.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function oY({title:e,sub:t,value:r,valueColor:n="var(--color-text-primary)",legend:o=[],ticks:a=[],buckets:i=[],lines:s=[],areas:l=[],markers:u=[],xLabels:c=[],height:d=yM}){let f=(0,nt.useRef)(null),p=Zbe(f),m="1px dashed var(--color-text-secondary)";return nt.default.createElement(Ve,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},nt.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),nt.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)"}},t),nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),nt.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(y=>nt.default.createElement("span",{key:y.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:X,fontSize:10,color:"var(--color-text-secondary)"}},nt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:y.color,flexShrink:0}}),y.label))),nt.default.createElement("div",{ref:f,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(y=>nt.default.createElement("div",{key:y.top,style:{position:"absolute",left:0,right:0,top:`${y.top}%`,borderTop:"1px solid var(--color-border-light)"}},nt.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:X,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},y.label))),i.length>0&&nt.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((y,x)=>nt.default.createElement("div",{key:x,title:y.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},y.segs.map((h,g)=>nt.default.createElement("div",{key:g,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&nt.default.createElement("svg",{viewBox:"0 0 100 100",preserveAspectRatio:"none","aria-hidden":"true",style:{position:"absolute",inset:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"}},l.map((y,x)=>nt.default.createElement("polygon",{key:x,points:y.points,fill:y.color,opacity:"0.16"})),s.map((y,x)=>nt.default.createElement("polyline",{key:x,points:y.points,fill:"none",stroke:y.color,strokeWidth:y.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((y,x)=>{let h=Ybe(y,p),g=`${Number(y.left).toFixed(2)}%`;return nt.default.createElement("div",{key:x,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:g,borderRight:m}:{left:g,right:0,borderLeft:m}}},nt.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:X,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},y.label))})),nt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:X,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,x)=>nt.default.createElement("span",{key:x},y))))}function hg({label:e,qualifier:t,meta:r,children:n}){return nt.default.createElement(Ve,{padding:0,style:{overflow:"hidden"}},nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},nt.default.createElement(qe,null,e),t?nt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function xM({template:e,columns:t}){return nt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:X,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},nt.default.createElement("span",null),t.map(r=>nt.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function Y2({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return nt.default.createElement("div",{role:i?"button":void 0,tabIndex:i?0:void 0,"aria-pressed":i?t:void 0,onClick:r,onKeyDown:i?l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),r(l))}:void 0,title:n,className:i?"hover:bg-[var(--color-hover)]":void 0,style:{display:"grid",gridTemplateColumns:e,gap:8,alignItems:"center",padding:o,borderTop:"1px solid var(--color-border-light)",cursor:i?"pointer":"default",background:t?"var(--color-muted)":void 0}},a)}function bM({children:e,padding:t="8px 14px"}){return nt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function p0({children:e}){return nt.default.createElement("div",{style:{padding:"12px 14px",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},e)}function wM({color:e}){return nt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function SM({pct:e,color:t}){return nt.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},nt.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function kM({pct:e,color:t,width:r=70}){return nt.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},nt.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function zi({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return nt.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var lY=6e4,Jbe=1180,vg={"1h":{n:60,seconds:60,bucket:"1 min",prev:"vs previous hour",title:"last hour"},"24h":{n:96,seconds:900,bucket:"15 min",prev:"vs previous 24h",title:"last 24 hours"},"7d":{n:84,seconds:7200,bucket:"2 h",prev:"vs previous 7 days",title:"last 7 days"}},Qbe=Object.keys(vg).map(e=>({value:e,label:e})),AM="24h",yg=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],m0=[{type:"429 rate limit",short:"429",color:"var(--color-error)"},{type:"timeout",short:"timeout",color:"var(--color-warning)"},{type:"tool error",short:"tool error",color:"var(--span-tool)"},{type:"provider 5xx",short:"5xx",color:"var(--color-token-out)"},{type:"other",short:"error",color:"var(--color-text-muted)"}],aY=e=>m0.find(t=>t.type===e)?.color||"var(--color-text-muted)",Rbe=3,Z2="var(--color-text-primary)",e1e={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},t1e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],_M=e=>String(e).padStart(2,"0"),_t=e=>e==null||Number.isNaN(Number(e))?0:Number(e),r1e=e=>e.reduce((t,r)=>t+_t(r),0),iY=e=>`${_t(e).toFixed(1)}%`,X2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,n1e=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,o1e=(e,t)=>{let r=Array.isArray(e)?[...e]:[];return t.forEach(n=>{n.name&&!r.some(o=>o.name===n.name)&&r.push(n)}),r},a1e=e=>{let t=String(e.label||"incident"),r=m0.find(n=>t.startsWith(n.type));return r&&(t=`${r.short}${t.slice(r.type.length)}`),e.agent&&!t.includes(e.agent)?`${t} \xB7 ${e.agent}`:t},i1e=e=>{let t=_t(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},sY=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},s1e=(e,t,r=Date.now())=>{let n=Math.max(1,_t(t))*1e3,o=Math.max(1,Math.round(_t(e)*6e4/n)),a=Math.floor(r/n)*n;return Array.from({length:o},(i,s)=>({ts:new Date(a-(o-1-s)*n).toISOString()}))},l1e=(e,t)=>{let r=e.summary||{},n=vg[e.range]||vg[t]||vg[AM],o=_t(e.bucket_seconds)||n.seconds,a=_t(e.window_minutes)||(e.window_hours?_t(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:s1e(a,o),s=_t(e.totals?.requests??r.total_requests),l=_t(e.totals?.cost??r.total_cost),u={requests:s,requests_per_minute:a?s/a:0,p50_ms:null,p95_ms:null,p99_ms:null,errors:_t(r.errors),error_rate:_t(r.error_rate),tokens_in:_t(r.tokens_input),tokens_out:_t(r.tokens_output),tokens:_t(r.tokens_used),cost:l,cost_per_request:s?l/s:0,tool_calls:0,tool_errors:0,tool_error_rate:0,...e.totals||{}},c={requests_pct:r.requests_change??null,p50_pct:r.latency_change??null,error_rate_pt:null,tokens_pct:null,cost_pct:null,...e.deltas||{}},d=Array.isArray(e.agents)?e.agents:(e.by_agent||[]).map(p=>({name:p.name,requests:_t(p.requests),share_pct:s?_t(p.requests)/s*100:0,p95_ms:null,error_rate:p.requests?_t(p.errors)/_t(p.requests)*100:0,cost:_t(p.cost),tokens:_t(p.tokens)})),f=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:m0.map(p=>({type:p.type,count:0}));return{range:e.range||t,bucketSeconds:o,windowMinutes:a,agent:e.agent||null,environment:e.environment||null,totals:u,deltas:c,series:i,agents:d,models:Array.isArray(e.models)?e.models:[],actions:Array.isArray(e.actions)?e.actions:[],tools:Array.isArray(e.tools)?e.tools:[],errorsByType:f,markers:Array.isArray(e.markers)?e.markers:[]}},uY=e=>{let t=vg[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:i1e(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},u1e=e=>{let[t,r]=(0,De.useState)(()=>typeof window<"u"&&window.innerWidth{let n=window.matchMedia(`(max-width: ${e-1}px)`),o=()=>r(n.matches);return o(),n.addEventListener("change",o),()=>n.removeEventListener("change",o)},[e]),t};function CM(){let[e,t]=(0,De.useState)(AM),[r,n]=(0,De.useState)(""),[o,a]=(0,De.useState)(null),[i,s]=(0,De.useState)(!0),[l,u]=(0,De.useState)(null),[c,d]=(0,De.useState)(!1),f=(0,De.useRef)(0),p=u1e(Jbe),m=(0,De.useRef)(null),y=(0,De.useCallback)(async()=>{let _=++f.current;try{let w=new URLSearchParams({range:e});r&&w.set("agent",r);let[C,S]=await Promise.all([sY(w),r?sY(new URLSearchParams({range:e})).catch(()=>null):null]);if(_!==f.current)return;let k=r?S?.agents:C.agents;Array.isArray(k)&&(m.current=k),a({data:C,ranking:Array.isArray(k)?k:m.current}),u(null)}catch(w){if(_!==f.current)return;u(w.message)}finally{_===f.current&&s(!1)}},[e,r]);(0,De.useEffect)(()=>{let _=!1;d(!0),y().finally(()=>{_||d(!1)});let w=setInterval(y,lY);return()=>{_=!0,clearInterval(w)}},[y]);let x=(0,De.useMemo)(()=>o?l1e(o.data,e):null,[o,e]),h=(0,De.useMemo)(()=>x?x.agent?o1e(o.ranking,x.agents):x.agents:[],[x,o]),g=(0,De.useMemo)(()=>h.map(_=>_.name).filter(Boolean),[h]),v=(0,De.useMemo)(()=>{let _=Object.fromEntries(g.map((C,S)=>[C,yg[S%yg.length]])),w=g.length;return(x?x.agents:[]).forEach(C=>{C.name&&!_[C.name]&&(_[C.name]=yg[w++%yg.length])}),C=>_[C]||yg[0]},[g,x]),b=(0,De.useMemo)(()=>x?d1e(x,v):null,[x,v]);return i?De.default.createElement("div",{className:"flex items-center justify-center h-64"},De.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!x?De.default.createElement("div",null,De.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:Z2}},"Metrics"),De.default.createElement("div",{style:{marginTop:16,padding:"12px 16px",background:"var(--color-error-soft)",borderRadius:8,color:"var(--color-error-text)",fontSize:14}},"Failed to load metrics",l?`: ${l}`:"")):De.default.createElement(c1e,{m:x,view:b,railAgents:h,range:vg[e]?e:AM,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:p,pending:c,onRange:t,onAgent:n})}function c1e({m:e,view:t,railAgents:r=e.agents,range:n,agent:o,agentOptions:a,colorFor:i,narrow:s,pending:l=!1,onRange:u,onAgent:c}){let d=uY(e),f=e.totals.requests===0,p=m=>c(o===m?"":m);return De.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:Z2,fontSize:13}},De.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},De.default.createElement("div",{style:{flex:1,minWidth:240}},De.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),De.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Requests, latency, errors, tokens and cost across every agent \u2014 ",d.title,o?` \xB7 ${o}`:"")),De.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},De.default.createElement("select",{value:o,onChange:m=>c(m.target.value),"aria-label":"Filter by agent",style:{padding:"6px 10px",borderRadius:8,fontSize:13,fontFamily:"inherit",border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:Z2,cursor:"pointer"}},De.default.createElement("option",{value:""},"All agents"),a.map(m=>De.default.createElement("option",{key:m,value:m},m))),e.environment&&De.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:X,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},De.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),De.default.createElement(sc,{options:Qbe,value:n,onChange:u}),De.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${lY/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},De.default.createElement("span",{style:{width:7,height:7,borderRadius:"50%",background:l?"var(--color-text-muted)":"var(--color-success)"}}),"live \xB7 ",d.bucket," buckets"))),f?De.default.createElement(Ve,{style:{padding:"40px 24px",textAlign:"center",fontSize:14,color:"var(--color-text-secondary)"}},"No traffic yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace",De.default.createElement("div",{style:{marginTop:8,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):De.default.createElement(De.default.Fragment,null,De.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>De.default.createElement(nY,{key:m.label,...m,deltaSub:d.prev}))),De.default.createElement("div",{style:{display:"grid",gridTemplateColumns:s?"minmax(0, 1fr)":"minmax(0, 2.3fr) minmax(300px, 1fr)",gap:16,alignItems:"start",opacity:l?.6:1}},De.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>De.default.createElement(oY,{key:m.title,...m,xLabels:t.xLabels,height:yM}))),De.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},De.default.createElement(hg,{label:"Agents",qualifier:"by requests \xB7 click to filter"},De.default.createElement(xM,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&De.default.createElement(p0,null,"no agents in this window"),r.map(m=>De.default.createElement(Y2,{key:m.name,template:"minmax(0, 1fr) 44px 44px 40px 52px",active:o===m.name,onClick:()=>p(m.name),title:o===m.name?"Show all agents":`Filter to ${m.name}`},De.default.createElement("div",{style:{minWidth:0}},De.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},De.default.createElement(wM,{color:i(m.name)}),De.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),De.default.createElement(SM,{pct:m.share_pct,color:i(m.name)})),De.default.createElement(zi,null,un(m.requests)),De.default.createElement(zi,{color:"var(--color-text-secondary)"},to(m.p95_ms)),De.default.createElement(zi,{color:_t(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},iY(m.error_rate)),De.default.createElement(zi,null,Ov(m.cost))))),De.default.createElement(hg,{label:"Models",qualifier:"by tokens"},e.models.length===0&&De.default.createElement(p0,null,"no model usage in this window"),e.models.map((m,y)=>De.default.createElement(Y2,{key:`${m.model}-${m.provider}-${y}`,template:"minmax(0, 1fr) 52px 56px"},De.default.createElement("div",{style:{minWidth:0}},De.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},De.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&De.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),De.default.createElement(SM,{pct:m.share_pct,color:"var(--color-token-in)"})),De.default.createElement(zi,null,un(m.tokens)),De.default.createElement(zi,{color:"var(--color-text-secondary)"},Ov(m.cost))))),De.default.createElement(hg,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&De.default.createElement(p0,null,"no actions in this window"),e.actions.map(m=>De.default.createElement(bM,{key:m.name},De.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:X,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),De.default.createElement(kM,{pct:t.slowestP95?_t(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),De.default.createElement(zi,{weight:600,width:40},to(m.p95_ms))))),De.default.createElement(hg,{label:"Tools",qualifier:"by calls"},De.default.createElement(xM,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&De.default.createElement(p0,null,"no tool calls in this window"),e.tools.map(m=>De.default.createElement(Y2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},De.default.createElement("span",{title:m.name,style:{fontFamily:X,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),De.default.createElement(zi,null,un(m.calls)),De.default.createElement(zi,{color:"var(--color-text-secondary)"},to(m.avg_ms)),De.default.createElement(zi,{color:_t(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},iY(m.error_rate))))),De.default.createElement(hg,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>De.default.createElement(bM,{key:m.type},De.default.createElement(wM,{color:aY(m.type)}),De.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),De.default.createElement(kM,{pct:t.errorTotal?_t(m.count)/t.errorTotal*100:0,color:aY(m.type)}),De.default.createElement(zi,{weight:600,width:32},Math.round(_t(m.count))))))))))}function d1e(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=uY(e),s=r.map(U=>new Date(U.ts)),l=e.windowMinutes>=2880,u=U=>Number.isNaN(U.getTime())?"":l?`${t1e[U.getDay()]} ${_M(U.getHours())}h`:`${_M(U.getHours())}:${_M(U.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(U=>U===6?"now":u(s[Math.round(U*(a-1)/6)])):[],d=U=>r.map(oe=>_t(oe[U])),f=d("requests"),p=d("errors"),m=d("tokens_in"),y=d("tokens_out"),x=d("cost"),h=d("tool_calls"),g=d("tool_errors"),v=U=>r.map(oe=>oe[U]==null?null:_t(oe[U])),b=v("p50_ms"),_=v("p95_ms"),w=v("p99_ms"),C=r.map(U=>U.requests_by_agent||{}),S=e.agents.map(U=>U.name).filter(Boolean);C.forEach(U=>Object.keys(U).forEach(oe=>{S.includes(oe)||S.push(oe)}));let k=S.length?S.map(U=>({label:U,color:t(U),data:C.map(oe=>_t(oe[U]))})):[{label:"requests",color:yg[0],data:f}],A=m0.map(U=>({label:U.type,color:U.color,data:r.map(oe=>_t((oe.errors_by_type||{})[U.type]))})),O=(_t(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,$=(U,oe)=>{if(!U||a<2||!O)return null;let ye=new Date(U.ts).getTime();if(Number.isNaN(ye))return null;let Ft=Math.min(a-1,Math.max(0,Math.floor((ye-s[0].getTime())/O)))/(a-1);return{left:Ft*100,label:oe,flip:Ft>.55}},F=e.markers.filter(U=>U.kind==="deploy").sort((U,oe)=>new Date(U.ts)-new Date(oe.ts)).slice(-Rbe).map(U=>$(U,U.label)).filter(Boolean),P=e.markers.find(U=>U.kind==="incident"),z=P?$(P,a1e(P)):null,N=z?[z]:[],D=gg(is(f)*1.1),T=gg(is(p)*1.15),E=gg(Math.max(is(w),is(_),is(b))*1.05),I=gg(Math.max(is(m),is(y))*1.1),j=vM(is(x)*1.1),q=tY(j),te=gg(is(h)*1.1),K=_t(n.requests),le=_t(n.requests_per_minute),pe=_t(n.errors),re=_t(n.error_rate),_e=_t(n.tokens)||_t(n.tokens_in)+_t(n.tokens_out),ue=_t(n.cost),se=n.cost_per_request!=null?_t(n.cost_per_request):K?ue/K:0,Z=_t(n.tool_calls),R=n.tool_error_rate!=null?_t(n.tool_error_rate):Z?_t(n.tool_errors)/Z*100:0,L=_t(e.errorsByType.find(U=>U.type===m0[0].type)?.count),B=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${un(K)} \xB7 ${le.toFixed(1)}/min`,legend:k.map(U=>({label:U.label,color:U.color})),ticks:nf(D,un),buckets:f0(k,D,U=>`${u(s[U])} \xB7 ${Math.round(f[U])} req`),markers:F},{title:"Latency",sub:"generation percentiles",value:`p50 ${to(n.p50_ms)}`,legend:[{label:`p50 ${to(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${to(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${to(n.p99_ms)}`,color:"var(--color-error)"}],ticks:nf(E,n1e),lines:[{points:of(w,E),color:"var(--color-error)",width:1.5},{points:of(_,E),color:"var(--color-warning)",width:1.5},{points:of(b,E),color:"var(--color-token-in)",width:2}],areas:[{points:G2(b,E),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${re.toFixed(2)}% \xB7 ${X2(Math.round(pe),"error")}`,valueColor:re>1?"var(--color-error)":Z2,legend:A.map(U=>({label:U.label,color:U.color})),ticks:nf(T,U=>String(Math.round(U))),buckets:f0(A,T,U=>`${u(s[U])} \xB7 ${X2(Math.round(p[U]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${un(_e)} \xB7 in ${un(n.tokens_in)} / out ${un(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:nf(I,un),lines:[{points:of(m,I),color:"var(--color-token-in)",width:1.5},{points:of(y,I),color:"var(--color-token-out)",width:1.5}],areas:[{points:G2(m,I),color:"var(--color-token-in)"},{points:G2(y,I),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${Ov(ue)} \xB7 ${Pv(se)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:nf(j,U=>Pv(U,q)),buckets:f0([{color:"var(--color-text-secondary)",data:x}],j,U=>`${u(s[U])} \xB7 ${Pv(x[U],q)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${un(Z)} \xB7 ${R.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:nf(te,un),buckets:f0([{color:"var(--span-tool)",data:h.map((U,oe)=>Math.max(0,U-g[oe]))},{color:"var(--color-error)",data:g}],te,U=>`${u(s[U])} \xB7 ${X2(Math.round(h[U]),"call")}`)}],H=(U,oe,ye)=>{let Je=U==null?null:_t(U);return Je==null||Je===0?"muted":oe&&oe(Je)?"success":ye&&ye(Je)?"error":"muted"},M=(U,oe,ye,Je,Ft,Nt,ce,Ze)=>({label:U,value:oe,unit:ye,sub:Je,delta:Ft,deltaColor:e1e[Nt],spark:rY(ce),sparkColor:Ze});return{signals:[M("Requests",un(K),"",`${le.toFixed(1)} req/min`,Jm(o.requests_pct),H(o.requests_pct,U=>U>0,null),f,"var(--color-token-in)"),M("Latency",to(n.p50_ms),"p50",`p95 ${to(n.p95_ms)} \xB7 p99 ${to(n.p99_ms)}`,Jm(o.p50_pct),H(o.p50_pct,U=>U<0,U=>U>0),b,"var(--color-token-in)"),M("Error rate",re.toFixed(2),"%",`${X2(Math.round(pe),"error")} \xB7 ${Math.round(L)} rate-limited`,Jm(o.error_rate_pt," pt",1),H(o.error_rate_pt,U=>U<0,U=>U>0),p,"var(--color-error)"),M("Tokens",un(_e),"",`in ${un(n.tokens_in)} \xB7 out ${un(n.tokens_out)}`,Jm(o.tokens_pct),"muted",m.map((U,oe)=>U+y[oe]),"var(--color-token-in)"),M("Cost",Ov(ue),"",`${Pv(se)} per request`,Jm(o.cost_pct),"muted",x,"var(--color-text-secondary)")],panels:B,xLabels:c,slowestP95:is(e.actions.map(U=>U.p95_ms)),errorTotal:r1e(e.errorsByType.map(U=>U.count))}}var Ie=G(Y());var f1e=6e4,p1e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],cY={mcp:{light:"#7c3aed",dark:"#c4b5fd",bgLight:"#f5f3ff",bgDark:"rgba(124,58,237,0.15)"},builtin:{light:"#2563eb",dark:"#93c5fd",bgLight:"#eff6ff",bgDark:"rgba(37,99,235,0.15)"},agent:{light:"#15803d",dark:"#86efac",bgLight:"#f0fdf4",bgDark:"rgba(34,197,94,0.12)"}},g0=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),dY=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,m1e=e=>{if(!e)return"\u2014";let t=new Date(e),r=Math.round((Date.now()-t.getTime())/6e4);if(r<1)return"just now";if(r<60)return`${r}m ago`;let n=Math.round(r/60);return n<24?`${n}h ago`:`${Math.round(n/24)}d ago`};function EM({onOpenServer:e}){let{darkMode:t}=st(),[r,n]=(0,Ie.useState)(null),[o,a]=(0,Ie.useState)(!0),[i,s]=(0,Ie.useState)(null),[l,u]=(0,Ie.useState)("all"),[c,d]=(0,Ie.useState)(""),[f,p]=(0,Ie.useState)(168),[m,y]=(0,Ie.useState)(null),x=(0,Ie.useCallback)(async()=>{try{let k=new URLSearchParams({hours:String(f)});l!=="all"&&k.set("origin",l),c.trim()&&k.set("q",c.trim());let A=await fetch(`/api/tools?${k}`);if(!A.ok)throw new Error(`Request failed (${A.status})`);n(await A.json()),s(null)}catch(k){s(k.message)}finally{a(!1)}},[l,c,f]);(0,Ie.useEffect)(()=>{let k=setTimeout(x,c?250:0);return()=>clearTimeout(k)},[x,c]),(0,Ie.useEffect)(()=>{let k=setInterval(x,f1e);return()=>clearInterval(k)},[x]);let h={bg:t?"transparent":"#f9fafb",cardBg:t?"rgba(255,255,255,0.05)":"#ffffff",border:t?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:t?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af",textCell:t?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:t?"rgba(239,68,68,0.2)":"#fef2f2",inputBg:t?"rgba(255,255,255,0.06)":"#ffffff"},g=k=>{let A=cY[k]||cY.agent;return{fg:t?A.dark:A.light,bg:t?A.bgDark:A.bgLight}};if(o&&!r)return Ie.default.createElement("div",{className:"flex items-center justify-center h-64"},Ie.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return Ie.default.createElement("div",{style:{padding:"24px"}},Ie.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Ie.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:h.errorBg,borderRadius:"8px",color:h.error,fontSize:"14px"}},"Failed to load tools: ",i));let{tools:v=[],summary:b={},origins:_={},sources:w={}}=r||{},C=!w.telemetry&&!w.generations&&!w.messages&&!w.declared,S=({label:k,value:A,hint:O,tone:$})=>Ie.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},Ie.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},k),Ie.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:$||h.textPrimary}},A),O&&Ie.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},O));return Ie.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},Ie.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},Ie.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},Ie.default.createElement("div",null,Ie.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Ie.default.createElement("p",{style:{fontSize:"14px",color:h.textSecondary,marginTop:"4px"}},"Detected from telemetry spans, generation request bodies, and agent records \u2014 nothing to register by hand")),Ie.default.createElement("div",{style:{display:"flex",gap:"4px"}},p1e.map(k=>Ie.default.createElement("button",{key:k.value,onClick:()=>p(k.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${f===k.value?"#ef4444":h.border}`,background:f===k.value?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:f===k.value?"#ef4444":h.textSecondary}},k.label))))),Ie.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},Ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},Ie.default.createElement(S,{label:"Tools Detected",value:g0(b.total_tools),hint:`${b.active_tools||0} called in this window`}),Ie.default.createElement(S,{label:"Tool Calls",value:g0(b.total_calls),hint:`${dY(b.avg_duration_ms)} average`}),Ie.default.createElement(S,{label:"Error Rate",value:`${b.error_rate||0}%`,tone:b.error_rate>5?h.error:h.textPrimary,hint:`${b.total_errors||0} failed call${b.total_errors===1?"":"s"}`}),Ie.default.createElement(S,{label:"From MCP",value:g0(b.mcp_tools),hint:`across ${b.mcp_servers_active||0} active server${b.mcp_servers_active===1?"":"s"}`}),Ie.default.createElement(S,{label:"Never Called",value:g0(b.unused_tools),hint:"offered or configured, unused"})),Ie.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(_).map(([k,A])=>Ie.default.createElement("button",{key:k,onClick:()=>u(k),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${l===k?"#ef4444":h.border}`,background:l===k?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:l===k?"#ef4444":h.textSecondary}},A)),Ie.default.createElement("input",{value:c,onChange:k=>d(k.target.value),placeholder:"Filter by name\u2026",style:{marginLeft:"auto",padding:"6px 12px",fontSize:"13px",borderRadius:"6px",minWidth:"200px",border:`1px solid ${h.border}`,background:h.inputBg,color:h.textPrimary}})),Ie.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},v.length===0?Ie.default.createElement("div",{style:{textAlign:"center",padding:"48px 24px",color:h.textSecondary,fontSize:"14px"}},C?"No tool activity yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace":"No tools match these filters"):Ie.default.createElement("div",{style:{overflowX:"auto"}},Ie.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},Ie.default.createElement("thead",null,Ie.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},Ie.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),Ie.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),Ie.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),Ie.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),Ie.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),Ie.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),Ie.default.createElement("tbody",null,v.map((k,A)=>{let O=g(k.origin),$=m===k.name;return Ie.default.createElement(Ie.default.Fragment,{key:k.name},Ie.default.createElement("tr",{onClick:()=>y($?null:k.name),style:{borderBottom:A{F.stopPropagation(),k.mcp_server&&e&&e(k.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:O.bg,color:O.fg,fontFamily:"monospace",cursor:k.mcp_server&&e?"pointer":"default"},title:k.mcp_server?`Open ${k.mcp_server} in MCP Services`:k.source_label},k.source_label)),Ie.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},g0(k.calls)),Ie.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:k.errors>0?h.error:h.textCell}},k.errors),Ie.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},dY(k.avg_duration_ms)),Ie.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},m1e(k.last_seen))),$&&Ie.default.createElement("tr",{style:{borderBottom:AIe.default.createElement("span",{key:k,style:{color:w[k]?h.textSecondary:h.textMuted,opacity:w[k]?1:.5}},w[k]?"\u25CF":"\u25CB"," ",A)))))}function g1e({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>Ie.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},Ie.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),Ie.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return Ie.default.createElement("div",{style:{display:"grid",gap:"8px",padding:"12px 16px",borderRadius:"8px",background:n?"rgba(0,0,0,0.25)":"#ffffff",border:`1px solid ${t.border}`}},Ie.default.createElement(o,{label:"Full name"},Ie.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&Ie.default.createElement(o,{label:"Description"},e.description),Ie.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?Ie.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):Ie.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),Ie.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):Ie.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&Ie.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),Ie.default.createElement(o,{label:"Call breakdown"},Ie.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&Ie.default.createElement(o,{label:"Last arguments"},Ie.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&Ie.default.createElement(o,{label:"Last error"},Ie.default.createElement("span",{style:{color:t.error}},e.last_error)),Ie.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var ze=G(Y());var h1e=6e4,y1e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],v1e=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],x1e=["http","streamable_http","sse"],fY={active:{light:"#15803d",dark:"#86efac",bgLight:"#f0fdf4",bgDark:"rgba(34,197,94,0.15)"},configured:{light:"#b45309",dark:"#fcd34d",bgLight:"#fffbeb",bgDark:"rgba(245,158,11,0.15)"},available:{light:"#4b5563",dark:"rgba(255,255,255,0.6)",bgLight:"#f3f4f6",bgDark:"rgba(255,255,255,0.08)"},idle:{light:"#4b5563",dark:"rgba(255,255,255,0.6)",bgLight:"#f3f4f6",bgDark:"rgba(255,255,255,0.08)"}},h0=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function NM({focusServer:e,onOpenTools:t}){let{darkMode:r}=st(),[n,o]=(0,ze.useState)(null),[a,i]=(0,ze.useState)(!0),[s,l]=(0,ze.useState)(null),[u,c]=(0,ze.useState)("all"),[d,f]=(0,ze.useState)(168),[p,m]=(0,ze.useState)(e||null),[y,x]=(0,ze.useState)(null),[h,g]=(0,ze.useState)(null),v=(0,ze.useCallback)(async()=>{try{let P=await fetch(`/api/mcp_servers?hours=${d}`);if(!P.ok)throw new Error(`Request failed (${P.status})`);o(await P.json()),l(null)}catch(P){l(P.message)}finally{i(!1)}},[d]);(0,ze.useEffect)(()=>{v();let P=setInterval(v,h1e);return()=>clearInterval(P)},[v]),(0,ze.useEffect)(()=>{e&&m(e)},[e]);let b={bg:r?"transparent":"#f9fafb",cardBg:r?"rgba(255,255,255,0.05)":"#ffffff",border:r?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:r?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:r?"#ffffff":"#111827",textSecondary:r?"rgba(255,255,255,0.6)":"#6b7280",textMuted:r?"rgba(255,255,255,0.4)":"#9ca3af",textCell:r?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:r?"rgba(239,68,68,0.2)":"#fef2f2",codeBg:r?"rgba(0,0,0,0.35)":"#f9fafb"},_=P=>{let z=fY[P]||fY.available;return{fg:r?z.dark:z.light,bg:r?z.bgDark:z.bgLight}},w=async P=>{x(P.key),g(null);try{let z=await fetch(`/api/mcp_servers/${encodeURIComponent(P.key)}/launch`,{method:"POST",headers:{"Content-Type":"application/json"}}),N=await z.json();if(!z.ok)throw new Error(N.reason||N.error||`Launch failed (${z.status})`);g({kind:"ok",text:`${P.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),v()}catch(z){g({kind:"error",text:z.message})}finally{x(null)}};if(a&&!n)return ze.default.createElement("div",{className:"flex items-center justify-center h-64"},ze.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(s&&!n)return ze.default.createElement("div",{style:{padding:"24px"}},ze.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:b.textPrimary,margin:0}},"MCP Services"),ze.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:b.errorBg,borderRadius:"8px",color:b.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:C=[],summary:S={},sandboxes:k=[],statuses:A={}}=n||{},O=u==="all"?C:C.filter(P=>P.status===u),$=new Set(k.flatMap(P=>P.mcp_servers||[])),F=({label:P,value:z,hint:N})=>ze.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${b.border}`}},ze.default.createElement("div",{style:{fontSize:"11px",color:b.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},P),ze.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:b.textPrimary}},z),N&&ze.default.createElement("div",{style:{fontSize:"13px",color:b.textSecondary,marginTop:"8px"}},N));return ze.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:b.bg}},ze.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${b.border}`,marginBottom:"16px"}},ze.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},ze.default.createElement("div",null,ze.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:b.textPrimary,margin:0}},"MCP Services"),ze.default.createElement("p",{style:{fontSize:"14px",color:b.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),ze.default.createElement("div",{style:{display:"flex",gap:"4px"}},y1e.map(P=>ze.default.createElement("button",{key:P.value,onClick:()=>f(P.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${d===P.value?"#ef4444":b.border}`,background:d===P.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===P.value?"#ef4444":b.textSecondary}},P.label))))),ze.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},ze.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},ze.default.createElement(F,{label:"Active",value:h0(S.active),hint:"called in this window"}),ze.default.createElement(F,{label:"Configured",value:h0(S.configured),hint:"declared, no traffic yet"}),ze.default.createElement(F,{label:"Available",value:h0(S.available),hint:"defaults you can connect"}),ze.default.createElement(F,{label:"Tool Calls",value:h0(S.total_calls),hint:"through MCP servers"})),h&&ze.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?b.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?b.error:r?"#86efac":"#15803d"}},h.text),ze.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},v1e.map(P=>ze.default.createElement("button",{key:P.value,onClick:()=>c(P.value),title:A[P.value]||"Every MCP service known to this workspace",style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${u===P.value?"#ef4444":b.border}`,background:u===P.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===P.value?"#ef4444":b.textSecondary}},P.label))),ze.default.createElement("div",{style:{display:"grid",gap:"12px"}},O.length===0?ze.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,textAlign:"center",padding:"48px 24px",color:b.textSecondary,fontSize:"14px"}},"No MCP services in this state"):O.map(P=>{let z=_(P.status),N=p===P.key,D=$.has(P.key);return ze.default.createElement("div",{key:P.key,style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${N?z.fg:b.border}`,overflow:"hidden"}},ze.default.createElement("div",{onClick:()=>m(N?null:P.key),style:{padding:"16px 20px",cursor:"pointer",display:"flex",alignItems:"center",gap:"16px",flexWrap:"wrap"}},ze.default.createElement("div",{style:{flex:1,minWidth:"220px"}},ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},ze.default.createElement("span",{style:{fontSize:"15px",fontWeight:"600",color:b.textPrimary}},P.name),ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:z.bg,color:z.fg,textTransform:"uppercase",letterSpacing:"0.04em"}},P.status),P.first_party&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(239,68,68,0.15)":"#fef2f2",color:"#ef4444"}},"first-party"),Vd(P)&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(59,130,246,0.15)":"#eff6ff",color:r?"#93c5fd":"#1d4ed8"},title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Tv(P)&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(245,158,11,0.15)":"#fffbeb",color:r?"#fcd34d":"#b45309"},title:"This checkout sandbox has stopped; agents may still name its runtime"},"not running"),f2(P)&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:b.borderLight,color:b.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),D&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:r?"#86efac":"#15803d"}},"\u25CF sandbox running")),P.description&&ze.default.createElement("div",{style:{fontSize:"13px",color:b.textSecondary,marginTop:"4px"}},P.description)),ze.default.createElement("div",{style:{display:"flex",gap:"24px",alignItems:"center"}},ze.default.createElement("div",{style:{textAlign:"right"}},ze.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:b.textPrimary}},h0(P.calls)),ze.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"calls")),ze.default.createElement("div",{style:{textAlign:"right"}},ze.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:P.errors>0?b.error:b.textPrimary}},P.errors||0),ze.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"errors")),P.launchable&&ze.default.createElement("button",{onClick:T=>{T.stopPropagation(),w(P)},disabled:y===P.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:y===P.key?b.borderLight:"#ef4444",color:y===P.key?b.textMuted:"#ffffff",cursor:y===P.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${P.name} in a sandbox session`},y===P.key?"Starting\u2026":D?"Start another":"Start in sandbox"))),N&&ze.default.createElement(b1e,{server:P,colors:b,tone:z,onOpenTools:t}))})),k.length>0&&ze.default.createElement("div",{style:{marginTop:"24px",background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,padding:"20px"}},ze.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:b.textPrimary,margin:"0 0 12px 0"}},"Running sandboxes"),ze.default.createElement("div",{style:{display:"grid",gap:"8px"}},k.map(P=>ze.default.createElement("div",{key:P.session_id,style:{display:"flex",justifyContent:"space-between",gap:"12px",fontSize:"13px",color:b.textCell,flexWrap:"wrap"}},ze.default.createElement("span",{style:{fontFamily:"monospace"}},(P.mcp_servers||[]).join(", ")||P.sandbox_type),ze.default.createElement("span",{style:{color:b.textMuted}},P.status," \xB7 ",P.runs_count,"/",P.max_runs," runs \xB7 expires ",new Date(P.expires_at).toLocaleTimeString())))))))}function b1e({server:e,colors:t,tone:r,onOpenTools:n}){let o=({label:i,children:s})=>ze.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},ze.default.createElement("span",{style:{color:t.textMuted,minWidth:"120px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},i),ze.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},s)),a=e.command||e.url;return ze.default.createElement("div",{style:{padding:"0 20px 20px 20px",display:"grid",gap:"10px"}},ze.default.createElement("div",{style:{height:"1px",background:t.borderLight,marginBottom:"4px"}}),a&&ze.default.createElement(o,{label:x1e.includes(e.transport)?"Endpoint":"Command"},ze.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",background:t.codeBg,display:"inline-block"}},a)),e.transport&&ze.default.createElement(o,{label:"Transport"},e.transport),e.categories?.length>0&&ze.default.createElement(o,{label:"Categories"},e.categories.join(", ")),e.requires_credentials?.length>0&&ze.default.createElement(o,{label:"Requires"},e.requires_credentials.join(", ")),ze.default.createElement(o,{label:e.tool_count>0?"Tools used":"Tools offered"},e.tools?.length>0?ze.default.createElement("span",{style:{display:"flex",gap:"6px",flexWrap:"wrap"}},e.tools.map(i=>ze.default.createElement("code",{key:i,style:{fontFamily:"monospace",fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r.bg,color:r.fg}},i))):ze.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),e.agents?.length>0&&ze.default.createElement(o,{label:"Used by"},e.agents.join(", ")),e.configured_by?.length>0&&ze.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),e.last_seen&&ze.default.createElement(o,{label:"Last call"},new Date(e.last_seen).toLocaleString()),ze.default.createElement("div",{style:{display:"flex",gap:"12px",marginTop:"4px",flexWrap:"wrap"}},e.docs_url&&ze.default.createElement("a",{href:e.docs_url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"13px",color:"#ef4444",textDecoration:"none"}},"Documentation \u2192"),e.calls>0&&n&&ze.default.createElement("button",{onClick:()=>n(e.key),style:{fontSize:"13px",color:"#ef4444",background:"none",border:"none",padding:0,cursor:"pointer"}},"View its tools \u2192")))}var J=G(Y());var xc=G(Y());var Q2={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},hn={log(...e){this.enabled&&(e.push(Date.now()),Q2.logger.log("[ActionCable]",...e))}},v0=()=>new Date().getTime(),J2=e=>(v0()-e)/1e3,x0=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=v0(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),hn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=v0(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),hn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=v0()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,hn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=v0(),hn.log("ConnectionMonitor recorded disconnect")}startPolling(){this.stopPolling(),this.poll()}stopPolling(){clearTimeout(this.pollTimeout)}poll(){this.pollTimeout=setTimeout((()=>{this.reconnectIfStale(),this.poll()}),this.getPollInterval())}getPollInterval(){let{staleThreshold:t,reconnectionBackoffRate:r}=this.constructor,n=Math.pow(1+r,Math.min(this.reconnectAttempts,10)),a=(this.reconnectAttempts===0?1:r)*Math.random();return t*1e3*n*(1+a)}reconnectIfStale(){this.connectionIsStale()&&(hn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${J2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?hn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${J2(this.disconnectedAt)} s`):(hn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return J2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&J2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(hn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};x0.staleThreshold=6;x0.reconnectionBackoffRate=.15;var mY={message_types:{welcome:"welcome",disconnect:"disconnect",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},disconnect_reasons:{unauthorized:"unauthorized",invalid_request:"invalid_request",server_restart:"server_restart",remote:"remote"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]},{message_types:y0,protocols:TM}=mY,w1e=TM.slice(0,TM.length-1),pY=[].indexOf,b0=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new x0(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return hn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...TM,...this.consumer.subprotocols||[]];return hn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new Q2.WebSocket(this.consumer.url,t),this.installEventHandlers(),this.monitor.start(),!0}}close({allowReconnect:t}={allowReconnect:!0}){if(t||this.monitor.stop(),this.isOpen())return this.webSocket.close()}reopen(){if(hn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){hn.log("Failed to reopen WebSocket",t)}finally{hn.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`),setTimeout(this.open,this.constructor.reopenDelay)}else return this.open()}getProtocol(){if(this.webSocket)return this.webSocket.protocol}isOpen(){return this.isState("open")}isActive(){return this.isState("open","connecting")}triedToReconnect(){return this.monitor.reconnectAttempts>0}isProtocolSupported(){return pY.call(w1e,this.getProtocol())>=0}isState(...t){return pY.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in Q2.WebSocket)if(Q2.WebSocket[t]===this.webSocket.readyState)return t.toLowerCase()}return null}installEventHandlers(){for(let t in this.events){let r=this.events[t].bind(this);this.webSocket[`on${t}`]=r}}uninstallEventHandlers(){for(let t in this.events)this.webSocket[`on${t}`]=function(){}}};b0.reopenDelay=500;b0.prototype.events={message(e){if(!this.isProtocolSupported())return;let{identifier:t,message:r,reason:n,reconnect:o,type:a}=JSON.parse(e.data);switch(this.monitor.recordMessage(),a){case y0.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case y0.disconnect:return hn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case y0.ping:return null;case y0.confirmation:return this.subscriptions.confirmSubscription(t),this.reconnectAttempted?(this.reconnectAttempted=!1,this.subscriptions.notify(t,"connected",{reconnected:!0})):this.subscriptions.notify(t,"connected",{reconnected:!1});case y0.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(hn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return hn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(hn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){hn.log("WebSocket onerror event")}};var S1e=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},OM=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),S1e(this,n)}perform(t,r={}){return r.action=t,this.send(r)}send(t){return this.consumer.send({command:"message",identifier:this.identifier,data:JSON.stringify(t)})}unsubscribe(){return this.consumer.subscriptions.remove(this)}},PM=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(hn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):hn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){hn.log(`SubscriptionGuarantor forgetting ${t.identifier}`),this.pendingSubscriptions=this.pendingSubscriptions.filter((r=>r!==t))}startGuaranteeing(){this.stopGuaranteeing(),this.retrySubscribing()}stopGuaranteeing(){clearTimeout(this.retryTimeout)}retrySubscribing(){this.retryTimeout=setTimeout((()=>{this.subscriptions&&typeof this.subscriptions.subscribe=="function"&&this.pendingSubscriptions.map((t=>{hn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},MM=class{constructor(t){this.consumer=t,this.guarantor=new PM(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new OM(this.consumer,o,r);return this.add(a)}add(t){return this.subscriptions.push(t),this.consumer.ensureActiveConnection(),this.notify(t,"initialized"),this.subscribe(t),t}remove(t){return this.forget(t),this.findAll(t.identifier).length||this.sendCommand(t,"unsubscribe"),t}reject(t){return this.findAll(t).map((r=>(this.forget(r),this.notify(r,"rejected"),r)))}forget(t){return this.guarantor.forget(t),this.subscriptions=this.subscriptions.filter((r=>r!==t)),t}findAll(t){return this.subscriptions.filter((r=>r.identifier===t))}reload(){return this.subscriptions.map((t=>this.subscribe(t)))}notifyAll(t,...r){return this.subscriptions.map((n=>this.notify(n,t,...r)))}notify(t,r,...n){let o;return typeof t=="string"?o=this.findAll(t):o=[t],o.map((a=>typeof a[r]=="function"?a[r](...n):void 0))}subscribe(t){this.sendCommand(t,"subscribe")&&this.guarantor.guarantee(t)}confirmSubscription(t){hn.log(`Subscription confirmed ${t}`),this.findAll(t).map((r=>this.guarantor.forget(r)))}sendCommand(t,r){let{identifier:n}=t;return this.consumer.send({command:r,identifier:n})}},DM=class{constructor(t){this._url=t,this.subscriptions=new MM(this),this.connection=new b0(this),this.subprotocols=[]}get url(){return k1e(this._url)}send(t){return this.connection.send(t)}connect(){return this.connection.open()}disconnect(){return this.connection.close({allowReconnect:!1})}ensureActiveConnection(){if(!this.connection.isActive())return this.connection.open()}addSubProtocol(t){this.subprotocols=[...this.subprotocols,t]}};function k1e(e){if(typeof e=="function"&&(e=e()),e&&!/^wss?:/i.test(e)){let t=document.createElement("a");return t.href=e,t.href=t.href,t.protocol=t.protocol.replace("http","ws"),t.href}else return e}function gY(e=_1e("url")||mY.default_mount_path){return new DM(e)}function _1e(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var R2=null;function A1e(){if(R2===null)try{R2=gY()}catch{R2=!1}return R2||null}function xg(e,t,r,n=!0){let o=(0,xc.useRef)(null),a=(0,xc.useRef)(r);return(0,xc.useEffect)(()=>{a.current=r},[r]),(0,xc.useEffect)(()=>{if(!n||!e)return;let s=A1e();if(s)return o.current=s.subscriptions.create({channel:e,...t},{connected(){console.log(`[ActionCable] Connected to ${e}`,t)},disconnected(){console.log(`[ActionCable] Disconnected from ${e}`)},received(l){console.log(`[ActionCable] Received on ${e}:`,l),a.current&&a.current(l)},rejected(){console.warn(`[ActionCable] Subscription rejected for ${e}`)}}),()=>{o.current&&(console.log(`[ActionCable] Unsubscribing from ${e}`),o.current.unsubscribe(),o.current=null)}},[e,JSON.stringify(t),n]),{send:(0,xc.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function bg(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var e_=[{id:"anthropic",name:"Anthropic",model:"claude-haiku-4-5",color:"bg-orange-500"},{id:"openai",name:"OpenAI",model:"gpt-4o",color:"bg-green-500"},{id:"ollama",name:"Ollama",model:"llama3.1:8b",color:"bg-purple-500"}],C1e={playwright_mcp:[{name:"Screenshot Example.com",task:"Take a screenshot of https://example.com",description:"Navigate to example.com and capture a screenshot"},{name:"Extract Hacker News Headlines",task:"Go to https://news.ycombinator.com and list the top 5 story titles with their scores",description:"Scrape the front page of Hacker News"},{name:"Check Wikipedia",task:"Navigate to https://en.wikipedia.org/wiki/Artificial_intelligence and extract the first paragraph",description:"Extract content from Wikipedia"},{name:"GitHub Trending",task:"Visit https://github.com/trending and list the top 3 trending repositories",description:"Check GitHub's trending repositories"}],comparison:[{name:"Explain Ruby Blocks",task:"Explain how Ruby blocks work with a simple example",description:"Compare how each model explains Ruby concepts"},{name:"Write a Haiku",task:"Write a haiku about programming",description:"Compare creative output across models"},{name:"Debug This Code",task:"What's wrong with this code? def add(a, b); a - b; end; puts add(2, 3)",description:"Compare debugging abilities"},{name:"Summarize AI",task:"Summarize the current state of AI in 3 sentences",description:"Compare factual knowledge and conciseness"}]},hY={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function IM({initialType:e="playwright_mcp",onClose:t}){let[r,n]=(0,J.useState)(e),[o,a]=(0,J.useState)(null),[i,s]=(0,J.useState)(""),[l,u]=(0,J.useState)([]),[c,d]=(0,J.useState)(null),[f,p]=(0,J.useState)(!1),[m,y]=(0,J.useState)(!1),[x,h]=(0,J.useState)(null),[g,v]=(0,J.useState)(null),[b,_]=(0,J.useState)(!1),[w,C]=(0,J.useState)(null),[S,k]=(0,J.useState)(!1),A=(0,J.useRef)(null),[O,$]=(0,J.useState)(["anthropic"]),[F,P]=(0,J.useState)(!1),[z,N]=(0,J.useState)({}),[D,T]=(0,J.useState)([]),E=(0,J.useCallback)(async H=>{try{let M=await fetch(`/api/sandboxes/${H}`);if(!M.ok)return;let ne=await M.json();a(ne.sandbox),u(ne.sandbox.runs||[])}catch(M){console.error("Could not refresh the sandbox session:",M)}},[]),I=(0,J.useCallback)(H=>{!bg(H)||!o?.session_id||E(o.session_id)},[E,o?.session_id]);xg("SandboxChannel",{session_id:o?.session_id},I,!!o?.session_id),(0,J.useEffect)(()=>{q(),j()},[r]);let j=async()=>{try{let H=await fetch("/api/usage");if(H.ok){let M=await H.json();C(M.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,J.useEffect)(()=>{if(!o?.expires_at)return;let H=setInterval(()=>{let M=new Date,ne=new Date(o.expires_at),U=Math.max(0,Math.floor((ne-M)/1e3));v(U),U===0&&(a(oe=>({...oe,status:"expired"})),clearInterval(H))},1e3);return()=>clearInterval(H)},[o?.expires_at]),(0,J.useEffect)(()=>{A.current&&(A.current.scrollTop=A.current.scrollHeight)},[c?.result]);let q=async()=>{y(!0),h(null);try{let H=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:r})});if(!H.ok)throw new Error("Failed to create sandbox session");let M=await H.json();a(M.sandbox),u([]),d(null)}catch(H){h(H.message)}finally{y(!1)}},te=async()=>{!i.trim()||f||!o||(F&&O.length>1?await le():await K(O[0]||"anthropic"))},K=async H=>{p(!0),d({status:"running",task:i,provider:H,result:"",started_at:new Date().toISOString()});try{let M=await fetch(`/api/sandboxes/${o.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:i,provider:H})}),ne=await M.json();if(M.status===402&&ne.upgrade_required){C(ne.usage),_(!0),d(U=>({...U,status:"failed",error:ne.message||"Plan limit reached"})),p(!1);return}if(!M.ok)throw new Error(ne.error||"Task execution failed");ne.usage&&C(ne.usage),ue(ne.run_id)}catch(M){d(ne=>({...ne,status:"failed",error:M.message})),p(!1)}},le=async()=>{p(!0),T([...O]),N({});let H={};O.forEach(M=>{H[M]={status:"running",result:"",started_at:new Date().toISOString()}}),N(H);try{let M=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:i,providers:O,sandbox_id:o?.session_id,sandbox_type:r})});if(!M.ok){let U=await M.json();throw new Error(U.error||"Comparison failed")}let ne=await M.json();ne.sandbox&&a(ne.sandbox),pe(O,ne.sandbox?.session_id||o?.session_id,ne.sandbox?.runs_count??o?.runs_count??0)}catch(M){O.forEach(ne=>{N(U=>({...U,[ne]:{status:"failed",error:M.message}}))}),p(!1),T([])}},pe=(H,M,ne)=>{if(!M)return;let U=async()=>{try{let oe=await fetch(`/api/sandboxes/${M}`);if(!oe.ok)throw new Error(`HTTP ${oe.status}`);let ye=await oe.json();a(ye.sandbox);let Je=ye.sandbox.runs||[];u(Je);let Ft=new Set;if(Je.slice(ne).forEach(Nt=>{Nt.provider&&(N(ce=>({...ce,[Nt.provider]:{...Nt,provider:Nt.provider}})),(Nt.status==="completed"||Nt.status==="failed")&&Ft.add(Nt.provider))}),H.every(Nt=>Ft.has(Nt))){p(!1),T([]);return}setTimeout(U,1e3)}catch(oe){console.error("Comparison polling failed:",oe),p(!1),T([])}};setTimeout(U,1e3)},re=async()=>{if(o?.session_id)try{let M=await(await fetch(`/api/sandboxes/${o.session_id}`)).json();a(M.sandbox),u(M.sandbox.runs||[]),(M.sandbox.runs||[]).forEach(oe=>{oe.provider&&N(ye=>({...ye,[oe.provider]:{...oe,provider:oe.provider}}))}),O.every(oe=>{let ye=z[oe];return ye?.status==="completed"||ye?.status==="failed"})&&(p(!1),T([]))}catch(H){console.error("Polling error:",H)}},_e=H=>{$(M=>M.includes(H)?M.length===1?M:M.filter(ne=>ne!==H):[...M,H])},ue=async H=>{let M=async()=>{try{let U=await(await fetch(`/api/sandboxes/${o.session_id}`)).json();a(U.sandbox);let oe=U.sandbox.runs||[],ye=oe[oe.length-1];if(ye&&(d(ye),u(oe),ye.status==="completed"||ye.status==="failed")){p(!1);return}setTimeout(M,1e3)}catch{p(!1)}};M()},se=H=>{H.key==="Enter"&&(H.metaKey||H.ctrlKey)&&te()},Z=H=>{if(!H)return"--:--";let M=Math.floor(H/60),ne=H%60;return`${M}:${ne.toString().padStart(2,"0")}`},R=H=>{switch(H){case"completed":return"text-green-600 bg-green-100";case"failed":return"text-red-600 bg-red-100";case"running":return"text-blue-600 bg-blue-100";case"ready":return"text-emerald-600 bg-emerald-100";case"expired":return"text-orange-600 bg-orange-100";default:return"text-gray-600 bg-gray-100"}},L=o?.status==="ready"&&o?.runs_count{k(!0);try{await mg({planSlug:"pro",billingInterval:H})}catch(M){console.error("Checkout error:",M),h(M.message||"Failed to initiate checkout. Please try again."),k(!1)}};return J.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},J.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},J.default.createElement("div",{className:"flex items-center justify-between"},J.default.createElement("div",{className:"flex items-center space-x-4"},J.default.createElement(fn,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),J.default.createElement("div",null,J.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),J.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),J.default.createElement("div",{className:"flex items-center space-x-4"},o&&J.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},J.default.createElement("span",{className:`px-2 py-1 rounded-full text-xs font-medium ${R(o.status)}`},o.status),J.default.createElement("span",{className:"text-gray-500"},o.runs_count,"/",o.max_runs," runs"),J.default.createElement("span",{className:`font-mono ${g<60?"text-red-500":"text-gray-500"}`},Z(g))),t&&J.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},J.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},J.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),J.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},J.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},J.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},J.default.createElement("textarea",{value:i,onChange:H=>s(H.target.value),onKeyDown:se,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!L,className:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-rose-500 focus:border-transparent resize-none disabled:bg-gray-100"}),J.default.createElement("div",{className:"flex items-center justify-between mt-3"},J.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",J.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",J.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),J.default.createElement("button",{onClick:te,disabled:!i.trim()||!L,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${i.trim()&&L?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},f?J.default.createElement(J.default.Fragment,null,J.default.createElement("span",{className:"animate-spin"},"\u25E0"),J.default.createElement("span",null,"Running...")):J.default.createElement(J.default.Fragment,null,J.default.createElement("span",null,"\u25B6"),J.default.createElement("span",null,"Run"))))),J.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},J.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},J.default.createElement("h3",{className:"font-medium text-gray-900"},F&&Object.keys(z).length>0?"Comparison Results":"Output"),c&&!F&&J.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${R(c.status)}`},c.status),F&&D.length>0&&J.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",D.length," provider(s)...")),J.default.createElement("div",{ref:A,className:"flex-1 overflow-auto bg-gray-50"},m?J.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},J.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):x?J.default.createElement("div",{className:"text-red-600 p-4"},x):F&&Object.keys(z).length>0?J.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},O.map(H=>{let M=e_.find(U=>U.id===H),ne=z[H];return J.default.createElement("div",{key:H,className:"p-4"},J.default.createElement("div",{className:"flex items-center justify-between mb-2"},J.default.createElement("div",{className:"flex items-center space-x-2"},J.default.createElement("div",{className:`w-3 h-3 rounded-full ${M?.color||"bg-gray-400"}`}),J.default.createElement("span",{className:"font-medium text-gray-900"},M?.name||H),J.default.createElement("span",{className:"text-xs text-gray-500"},M?.model)),ne&&J.default.createElement("div",{className:"flex items-center space-x-2"},J.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${R(ne.status)}`},ne.status),ne.tokens&&J.default.createElement("span",{className:"text-xs text-gray-500"},ne.tokens," tokens"),ne.duration_ms&&J.default.createElement("span",{className:"text-xs text-gray-500"},(ne.duration_ms/1e3).toFixed(1),"s"))),J.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},ne?.status==="running"?J.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},J.default.createElement("span",{className:"animate-pulse"},"\u25CF"),J.default.createElement("span",null,"Processing...")):ne?.error?J.default.createElement("div",{className:"text-red-600"},ne.error):ne?.result?J.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},ne.result):J.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):c?J.default.createElement("div",{className:"p-4 font-mono text-sm"},c.provider&&J.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},J.default.createElement("div",{className:`w-2 h-2 rounded-full ${e_.find(H=>H.id===c.provider)?.color||"bg-gray-400"}`}),J.default.createElement("span",{className:"text-sm text-gray-600"},e_.find(H=>H.id===c.provider)?.name||c.provider)),c.status==="running"?J.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},J.default.createElement("span",{className:"animate-pulse"},"\u25CF"),J.default.createElement("span",null,"Executing task...")):c.error?J.default.createElement("div",{className:"text-red-600"},J.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),J.default.createElement("pre",{className:"whitespace-pre-wrap"},c.error)):J.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},c.result||"Processing...")):J.default.createElement("div",{className:"text-gray-400 text-center py-12"},J.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),J.default.createElement("p",{className:"text-xs"},F?`Compare results across ${O.length} providers`:"Task will execute using the selected provider"))))),J.default.createElement("div",{className:"space-y-4 overflow-auto"},J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},J.default.createElement("div",{className:"flex items-center justify-between mb-3"},J.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),J.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},J.default.createElement("input",{type:"checkbox",checked:F,onChange:H=>P(H.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),J.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),J.default.createElement("div",{className:"space-y-2"},e_.map(H=>J.default.createElement("label",{key:H.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${O.includes(H.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},J.default.createElement("div",{className:"flex items-center space-x-3"},J.default.createElement("input",{type:"checkbox",checked:O.includes(H.id),onChange:()=>_e(H.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),J.default.createElement("div",{className:`w-2 h-2 rounded-full ${H.color}`}),J.default.createElement("span",{className:"text-sm font-medium text-gray-900"},H.name)),J.default.createElement("span",{className:"text-xs text-gray-500"},H.model)))),F&&O.length>1&&J.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},J.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",O.length," providers simultaneously"))),J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},J.default.createElement("div",{className:"flex items-center justify-between mb-3"},J.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),F&&J.default.createElement("button",{onClick:()=>n(r==="playwright_mcp"?"comparison":"playwright_mcp"),className:"text-xs text-rose-600 hover:text-rose-700"},r==="comparison"?"Browser Tasks":"Comparison Tasks")),J.default.createElement("div",{className:"space-y-2"},C1e[r]?.map((H,M)=>J.default.createElement("button",{key:M,onClick:()=>s(H.task),disabled:!L,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},J.default.createElement("div",{className:"font-medium text-sm text-gray-900"},H.name),J.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},H.description))))),J.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},J.default.createElement("h4",{className:"font-medium text-gray-900 mb-3"},w?.unlimited?"Unlimited":w?.plan==="free"?"Free Tier":`${w?.plan?.toUpperCase()||"FREE"} Plan`),w&&!w.unlimited&&w.runs_limit!=null&&J.default.createElement("div",{className:"mb-4"},J.default.createElement("div",{className:"flex justify-between text-sm mb-1"},J.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),J.default.createElement("span",{className:`font-medium ${w.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},w.runs_used," / ",w.runs_limit)),J.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},J.default.createElement("div",{className:`h-2 rounded-full transition-all ${w.runs_remaining<=1?"bg-rose-500":"bg-emerald-500"}`,style:{width:`${Math.min(w.runs_used/w.runs_limit*100,100)}%`}})),w.runs_remaining<=1&&J.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},w.runs_remaining===0?"Limit reached!":"Almost at limit!")),J.default.createElement("dl",{className:"space-y-2 text-sm"},J.default.createElement("div",{className:"flex justify-between"},J.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),J.default.createElement("dd",{className:"text-gray-900"},o?.runs_count||0,"/",o?.max_runs||hY.max_runs)),J.default.createElement("div",{className:"flex justify-between"},J.default.createElement("dt",{className:"text-gray-500"},"Timeout"),J.default.createElement("dd",{className:"text-gray-900"},hY.timeout_seconds,"s per task"))),w?.plan==="free"&&J.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},J.default.createElement("button",{onClick:()=>_(!0),className:"w-full text-center text-sm text-rose-600 hover:text-rose-700 font-medium"},"Upgrade to PRO \u2192"))),l.length>0&&J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},J.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},J.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),J.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},l.slice().reverse().map((H,M)=>J.default.createElement("div",{key:H.id||M,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>d(H)},J.default.createElement("div",{className:"flex items-center justify-between mb-1"},J.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${R(H.status||"completed")}`},H.status||"completed"),J.default.createElement("span",{className:"text-xs text-gray-400"},H.tokens||0," tokens")),J.default.createElement("p",{className:"text-sm text-gray-600 truncate"},H.task))))),o?.status==="expired"&&J.default.createElement("button",{onClick:q,className:"w-full px-4 py-3 bg-rose-500 text-white rounded-lg hover:bg-rose-600 transition-colors"},"Start New Session")))),b&&J.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},J.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},J.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},J.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),J.default.createElement("p",{className:"text-rose-100 text-sm"},"You've used ",w?.runs_used||0," of ",w?.runs_limit||25," trial runs. Choose a plan to continue.")),J.default.createElement("div",{className:"p-6"},J.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},J.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},J.default.createElement("div",{className:"text-center mb-4"},J.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),J.default.createElement("div",{className:"mt-2"},J.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),J.default.createElement("span",{className:"text-gray-500"},"/mo"))),J.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),J.default.createElement("button",{disabled:!0,className:"w-full py-2 px-4 border border-gray-300 text-gray-400 rounded-lg text-sm cursor-not-allowed"},"Current Plan")),J.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},J.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},J.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),J.default.createElement("div",{className:"text-center mb-4 mt-2"},J.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),J.default.createElement("div",{className:"mt-2"},J.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),J.default.createElement("span",{className:"text-gray-500"},"/mo")),J.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),J.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),J.default.createElement("button",{onClick:()=>B("monthly"),disabled:S,className:"w-full py-2 px-4 bg-rose-500 text-white rounded-lg text-sm font-semibold hover:bg-rose-600 transition-colors disabled:opacity-50"},S?"Loading...":"Upgrade to Pro")),J.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},J.default.createElement("div",{className:"text-center mb-4"},J.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),J.default.createElement("div",{className:"mt-2"},J.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),J.default.createElement("span",{className:"text-gray-500"},"/mo")),J.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),J.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),J.default.createElement("a",{href:"mailto:sales@activeagents.ai",className:"block w-full py-2 px-4 border border-gray-300 text-gray-700 rounded-lg text-sm font-semibold text-center hover:bg-gray-50 transition-colors"},"Contact Sales")))),J.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},J.default.createElement("button",{onClick:()=>_(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ot=G(Y());var no=G(Y());var jM=["message","llm","tool","browser"];function t_(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function yY(e={}){let t=[];return jM.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=t_(o?.start);if(i===null)return;let s=Math.max(0,Number(o.duration_ms)||0);t.push({entry:{...o,lane:r,startMs:i,endMs:i+s},laneIndex:n,index:a})})}),t.sort((r,n)=>r.entry.startMs-n.entry.startMs||r.laneIndex-n.laneIndex||r.index-n.index),t.map(({entry:r})=>r)}function vY(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&t_(t.rrweb.first_at)!==null).map(t=>{let r=t_(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,t_(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function xY(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function bY(e=[],{maxGapMs:t=1e4,gapMs:r=1e3,minSegmentMs:n=1e3}={}){let o=e.filter(([u,c])=>Number.isFinite(u)&&Number.isFinite(c)).map(([u,c])=>[u,Math.max(u,c)]).sort((u,c)=>u[0]-c[0]),a=[];for(let[u,c]of o){let d=a[a.length-1];d&&u-d[1]<=t?d[1]=Math.max(d[1],c):a.push([u,c])}let i=0,s=a.map(([u,c])=>{let d=Math.max(c,u+n),f={startMs:u,endMs:d,axisStart:i,axisEnd:i+(d-u)};return i=f.axisEnd+r,f}),l=s[s.length-1];return{segments:s,gapMs:r,totalMs:l?l.axisEnd:0,startMs:s[0]?.startMs??null,endMs:l?.endMs??null}}function wY(e){return e.segments.slice(1).map((t,r)=>{let n=e.segments[r];return{axisStart:n.axisEnd,axisEnd:t.axisStart,skippedMs:t.startMs-n.endMs}})}function SY(e,t){let{segments:r}=e;if(!r.length)return null;let n=Math.min(Math.max(t,0),e.totalMs);for(let o=0;ot<=n.axisEnd);return r===-1?Math.max(0,e.segments.length*2-2):t>=e.segments[r].axisStart?r*2:Math.max(0,r*2-1)}function $M(e,t){let r=0,n=e.length-1,o=-1;for(;r<=n;){let a=r+n>>1;e[a].startMs<=t?(o=a,r=a+1):n=a-1}return o}function _Y(e,t,r){if(r>0)return e.find(n=>n.startMs>t)?.startMs??null;for(let n=e.length-1;n>=0;n-=1)if(e[n].startMst>=o.startMs&&t<=o.endMs);if(r)return r;let n=e.filter(o=>o.startMs<=t);return n[n.length-1]||e[0]}function CY(e,t){let r=Math.max(0,e.endMs-e.startMs);return te.endMs?{phase:"after",offsetMs:r}:{phase:"during",offsetMs:t-e.startMs}}function wg(e){let t=Math.max(0,Math.floor((Number(e)||0)/1e3)),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=String(t%60).padStart(2,"0");return r?`${r}:${String(n).padStart(2,"0")}:${o}`:`${n}:${o}`}function r_(e){let t=Math.max(0,Math.round((Number(e)||0)/1e3)),r=[["d",86400],["h",3600],["m",60],["s",1]],n=[],o=t;for(let[a,i]of r){let s=Math.floor(o/i);if(o-=s*i,(s||n.length)&&n.push(`${s}${a}`),n.length===2)break}return n.filter(a=>!a.startsWith("0")).join(" ")||"0s"}function LM(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function E1e(e){if(!e)return"";let t=Number(e.input??e.input_tokens)||0,r=Number(e.output??e.output_tokens)||0;return t||r?`${t} in / ${r} out`:""}function EY(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=LM(e.content);return!r&&t.length?`${e.role} called ${t.join(", ")}`:e.role==="tool"?`${e.tool_name||"tool"} result: ${r}`:`${e.role}: ${r}`}case"llm":return[e.model||e.name||"model call",E1e(e.tokens)].filter(Boolean).join(" \xB7 ");case"tool":return`${e.name||"tool"}${e.error?" (failed)":""}`;case"browser":{let t=e.data||{};return e.kind==="console"?`console ${t.level||"log"}: ${LM(t.message??t.value)}`:e.kind==="marker"?`marker: ${LM(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function Sg(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function N1e(e=[]){return e.filter(t=>t?.kind==="rrweb").flatMap(t=>t.events||[]).filter(t=>t&&Number.isFinite(t.at)&&t.data&&typeof t.data=="object").map(t=>({...t.data,timestamp:t.at})).sort((t,r)=>t.timestamp-r.timestamp)}function T1e(e,t=null,r=50){let n=new URLSearchParams({kind:"rrweb",limit:String(r)});return t!=null&&n.set("after",String(t)),`/api/session_recordings/${encodeURIComponent(e)}/events?${n}`}async function NY(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(T1e(e,a));if(o())return{count:i,truncated:!1};let l=N1e(s?.events);if(l.length&&(r(l,i===0),i+=l.length),!s?.has_more||s.next_after==null)return{count:i,truncated:!1};if(i>=n)return{count:i,truncated:!0};a=s.next_after}}var ql=[{lane:"message",label:"messages",color:"var(--color-info)"},{lane:"llm",label:"model",color:"var(--color-token-out)"},{lane:"tool",label:"tools",color:"var(--color-warning)"},{lane:"browser",label:"browser",color:"var(--color-success)"}],w0=18,O1e=76,af=(e,t)=>e.totalMs?t/e.totalMs*100:0,P1e=(0,no.memo)(function({axis:t,entries:r,recordings:n}){let o=wY(t);return no.default.createElement(no.default.Fragment,null,o.map(a=>no.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${r_(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${af(t,a.axisStart)}%`,width:`${af(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),ql.map((a,i)=>no.default.createElement(no.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=bc(t,s.startMs);return no.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*w0+7,height:4,borderRadius:2,left:`${af(t,l)}%`,width:`${Math.max(af(t,bc(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=bc(t,s.startMs);return no.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*w0+4,height:w0-8,borderRadius:2,left:`${af(t,l)}%`,width:`max(3px, ${af(t,bc(t,s.endMs)-l)}%)`,background:Sg(s)?"var(--color-error)":a.color}})}))))});function zM({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,no.useRef)(null),i=ql.length*w0,s=u=>{let c=a.current?.getBoundingClientRect();if(!c?.width)return;let d=Math.min(Math.max((u.clientX-c.left)/c.width,0),1);o(d*e.totalMs)},l=u=>{let c=e.totalMs/100;if(u.key==="ArrowRight")o(n+c);else if(u.key==="ArrowLeft")o(n-c);else if(u.key==="Home")o(0);else if(u.key==="End")o(e.totalMs);else return;u.preventDefault()};return no.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},no.default.createElement("div",{style:{width:O1e,flexShrink:0}},ql.map(u=>no.default.createElement("div",{key:u.lane,style:{height:w0,display:"flex",alignItems:"center",gap:6,fontFamily:X,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},no.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),no.default.createElement("div",{ref:a,role:"slider",tabIndex:0,"aria-label":"Session position","aria-valuemin":0,"aria-valuemax":Math.round(e.totalMs),"aria-valuenow":Math.round(n),onPointerDown:u=>{u.currentTarget.setPointerCapture?.(u.pointerId),s(u)},onPointerMove:u=>{u.buttons===1&&s(u)},onKeyDown:l,style:{position:"relative",flex:1,height:i,cursor:"pointer",borderRadius:6,overflow:"hidden",background:"var(--color-background)",border:"1px solid var(--color-border-light)",touchAction:"none"}},no.default.createElement(P1e,{axis:e,entries:t,recordings:r}),no.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${af(e,n)}%`,background:"var(--color-text-primary)"}})))}var Oo=G(Y());var M1e=Object.fromEntries(ql.map(e=>[e.lane,e])),D1e=(0,Oo.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=M1e[t.lane],l=Sg(t);return Oo.default.createElement("button",{type:"button",ref:i,"data-testid":"replay-entry","aria-current":n?"step":void 0,onClick:()=>a(t),style:{display:"flex",alignItems:"baseline",gap:10,width:"100%",textAlign:"left",cursor:"pointer",padding:"6px 12px",border:"none",borderLeft:`3px solid ${n?s.color:"transparent"}`,background:o?"var(--color-accent-ui-tint)":n?"var(--color-hover)":"transparent",fontFamily:"inherit"}},Oo.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},wg(t.startMs-r)),Oo.default.createElement("span",{style:{fontFamily:X,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),Oo.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},EY(t)),t.duration_ms>0&&Oo.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),TY=(0,Oo.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,Oo.useRef)(null),l=(0,Oo.useRef)(null);return(0,Oo.useEffect)(()=>{let u=l.current,c=s.current;if(!a||!u||!c)return;let d=u.offsetTop;(dc.scrollTop+c.clientHeight)&&(c.scrollTop=Math.max(0,d-c.clientHeight/3))},[n,a]),t.length?Oo.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>Oo.default.createElement(D1e,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):Oo.default.createElement("div",{style:{padding:20,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var ei=G(Y());var I1e=Object.fromEntries(ql.map(e=>[e.lane,e.label])),j1e={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:X,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function $1e(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function L1e({label:e,value:t}){let r=$1e(t);return r==null?null:ei.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},ei.default.createElement(qe,{size:10},e),ei.default.createElement("pre",{style:j1e},r))}function z1e(e){switch(e.lane){case"message":return[["content",e.content],["tool calls",e.tool_calls?.length?e.tool_calls:null]];case"llm":return[["model",[e.provider,e.model].filter(Boolean).join(" / ")],["finish reason",e.finish_reason],["tokens",e.tokens]];case"tool":return[["arguments",e.arguments],["result",e.result??e.detail]];case"browser":return[["event",e.data]];default:return[]}}function BM({entry:e}){return e?ei.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},ei.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ei.default.createElement(Te,{tone:Sg(e)?"error":"muted"},I1e[e.lane]),e.role&&ei.default.createElement(Te,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&ei.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),ei.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},title:e.start},new Date(e.startMs).toLocaleTimeString(),e.duration_ms>0?` \xB7 ${Math.round(e.duration_ms)}ms`:"")),e.trace_id&&ei.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),z1e(e).map(([t,r])=>ei.default.createElement(L1e,{key:t,label:t,value:r}))):ei.default.createElement("div",{style:{padding:16,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var $n=G(Y());var OY="action-agent-session-player",PY="/session_player",MY="allow-scripts allow-same-origin";function DY(e,t={}){return{...t,channel:OY,type:e}}function IY(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===OY&&typeof e.data.type=="string"}async function F1e(e){let t=await fetch(e);if(!t.ok)throw new Error(`Could not load the browser recording (HTTP ${t.status})`);return t.json()}var U1e="the session player did not start",W1e={loading:"loading the browser recording\u2026",empty:"this recording has too few browser events to replay",truncated:"showing the start of a long recording"};function FM({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,$n.useRef)(null),s=(0,$n.useRef)(null),[l,u]=(0,$n.useState)(!1),[c,d]=(0,$n.useState)(!1),[f,p]=(0,$n.useState)(null),[m,y]=(0,$n.useState)({state:"loading"}),x=AY(e,t),h=x?.id,g=f!==null&&f===s.current,v=x?CY(x,t):null,b=(C,S)=>{i.current?.contentWindow?.postMessage(DY(C,S),window.location.origin)};(0,$n.useEffect)(()=>{let C=S=>{if(!IY(S,i.current?.contentWindow,window.location.origin))return;let{type:k}=S.data;k==="ready"?d(!0):k==="loaded"?p(S.data.token):k==="error"&&y({state:"error",message:S.data.message})};return window.addEventListener("message",C),()=>window.removeEventListener("message",C)},[]),(0,$n.useEffect)(()=>{if(!l||c)return;let C=setTimeout(()=>y({state:"error",message:U1e}),5e3);return()=>clearTimeout(C)},[l,c]),(0,$n.useEffect)(()=>{if(!c||h==null)return;let C=!1,S=[],k=`${h}:${Date.now()}`;return s.current=k,p(null),y({state:"loading"}),NY(h,{fetchPage:F1e,isCancelled:()=>C,onEvents:A=>{if(S===null){b("append",{events:A});return}S=S.concat(A),!(S.length<2)&&(b("load",{events:S,token:k}),S=null)}}).then(({truncated:A})=>{C||y(S!==null?{state:"empty"}:{state:A?"truncated":"ready"})}).catch(A=>{C||y({state:"error",message:A.message})}),()=>{C=!0}},[c,h]);let _=v?.phase;(0,$n.useEffect)(()=>{!g||!v||b("seek",{offset:v.offsetMs,playing:n&&_==="during"})},[g,a,n,_]),(0,$n.useEffect)(()=>{g&&b("speed",{speed:o})},[g,o]);let w=m.state==="error"?m.message:_==="before"?`the browser recording starts at ${wg(x.startMs-r)}`:W1e[m.state];return $n.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},$n.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},$n.default.createElement(qe,null,"browser"),x&&$n.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},x.name||`recording ${x.id}`,e.length>1?` \xB7 ${e.indexOf(x)+1} of ${e.length}`:""),w&&$n.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},w)),$n.default.createElement("iframe",{ref:i,title:"Browser recording",src:ct(PY),sandbox:MY,referrerPolicy:"no-referrer",onLoad:()=>u(!0),style:{width:"100%",height:480,border:"1px solid var(--color-border-light)",borderRadius:10,background:"var(--color-background)",opacity:_==="before"?.4:1}}))}var na=G(Y());function UM(e){let[t,r]=(0,na.useState)(0),[n,o]=(0,na.useState)(!1),[a,i]=(0,na.useState)(1),[s,l]=(0,na.useState)(0),u=(0,na.useRef)(0),c=(0,na.useRef)(0),d=(0,na.useCallback)((y,x)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=kY(e,h);return u.current=h,r(h),(x||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,na.useEffect)(()=>{if(!n)return;let y=null,x=performance.now(),h=g=>{let v=d(u.current+(g-x)*a,!1);if(x=g,v>=e.totalMs){o(!1);return}y=requestAnimationFrame(h)};return y=requestAnimationFrame(h),()=>cancelAnimationFrame(y)},[n,a,e,d]);let f=(0,na.useCallback)(y=>d(y,!0),[d]),p=(0,na.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,na.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:f,togglePlay:p,pause:m,setSpeed:i}}var H1e=[.5,1,2,4,8,16],K1e={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function q1e(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function V1e(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function G1e({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ot.useMemo)(()=>yY(r.lanes),[r]),i=(0,ot.useMemo)(()=>vY(r.recordings),[r]),s=(0,ot.useMemo)(()=>bY(xY(a,i)),[a,i]),l=UM(s),{seek:u,pause:c}=l,[d,f]=(0,ot.useState)(()=>new Set(jM)),[p,m]=(0,ot.useState)(null),y=SY(s,l.position)??s.startMs,x=(0,ot.useMemo)(()=>a.filter(O=>d.has(O.lane)),[a,d]),h=a[$M(a,y)]||null,g=x[$M(x,y)]?.id??null,v=a.find(O=>O.id===p)||h,b=(0,ot.useMemo)(()=>V1e(a),[a]),_=(0,ot.useCallback)(O=>{c(),m(O.id),u(bc(s,O.startMs))},[s,c,u]),w=O=>{let $=_Y(x,y,O);$!==null&&(c(),m(null),u(bc(s,$)))},C=()=>{m(null),l.togglePlay()},S=O=>f($=>{let F=new Set($);return F.has(O)?F.delete(O):F.add(O),F}),k=r.session||{},A=a.length===0&&i.length===0;return ot.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1400}},ot.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},ot.default.createElement("div",{style:{minWidth:0}},ot.default.createElement(de,{variant:"ghost",size:"sm",onClick:n,style:{padding:"2px 0",marginBottom:6}},"<- Sessions"),ot.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},K1e[e]||"Session"," #",t),ot.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},k.started_at&&ot.default.createElement("span",{title:k.started_at},"started ",new Date(k.started_at).toLocaleString()),s.startMs!==null&&ot.default.createElement("span",null,r_(s.endMs-s.startMs)," long"),ot.default.createElement("span",null,b.message||0," messages \xB7 ",b.llm||0," model calls \xB7 ",b.tool||0," tool calls"),i.length>0&&ot.default.createElement("span",null,"browser recorded"))),ot.default.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},k.truncated&&ot.default.createElement(Te,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),A?ot.default.createElement(Ve,{testId:"replay-empty"},ot.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"Nothing to replay yet."),ot.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",marginTop:6}},"This session has no messages, model calls, tool calls or browser events.")):ot.default.createElement(ot.default.Fragment,null,ot.default.createElement(Ve,{padding:14,style:{display:"flex",flexDirection:"column",gap:12}},ot.default.createElement("div",{"data-testid":"replay-controls",style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ot.default.createElement(de,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>w(-1)},"|<"),ot.default.createElement(de,{size:"sm",variant:"primary",testId:"replay-play",onClick:C,style:{minWidth:72}},l.playing?"Pause":"Play"),ot.default.createElement(de,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>w(1)},">|"),ot.default.createElement("select",{"aria-label":"Playback speed",value:l.speed,onChange:O=>l.setSpeed(Number(O.target.value)),style:{padding:"6px 8px",borderRadius:8,fontFamily:X,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},H1e.map(O=>ot.default.createElement("option",{key:O,value:O},O,"x"))),ot.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:X,fontSize:12,color:"var(--color-text-primary)"}},wg(y-s.startMs)),ot.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},title:"Idle stretches longer than 10 seconds play as one second"},Number.isFinite(y)?new Date(y).toLocaleTimeString():"")),ot.default.createElement(zM,{axis:s,entries:a,recordings:i,position:l.position,onSeek:u})),ot.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 3fr) minmax(0, 2fr)",gap:16,alignItems:"start"}},ot.default.createElement(Ve,{padding:0,style:{overflow:"hidden"}},ot.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ot.default.createElement(qe,{style:{marginRight:6}},"timeline"),ql.map(O=>ot.default.createElement(eo,{key:O.lane,mono:!0,selected:d.has(O.lane),onClick:()=>S(O.lane)},O.label," ",b[O.lane]||0))),ot.default.createElement(TY,{entries:x,startMs:s.startMs,currentId:g,selectedId:p,playing:l.playing,onChoose:_})),ot.default.createElement(Ve,{padding:0},ot.default.createElement(BM,{entry:v}))),i.length>0&&ot.default.createElement(Ve,{padding:14},ot.default.createElement(FM,{recordings:i,time:y,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function WM({kind:e,id:t,onBack:r,onHandoff:n}){let[o,a]=(0,ot.useState)({status:"loading"}),[i,s]=(0,ot.useState)(!1);(0,ot.useEffect)(()=>{let c=!1;return a({status:"loading"}),fetch(q1e(e,t)).then(async d=>{if(c)return;if(d.status===404)return a({status:"missing"});let f=await d.json().catch(()=>({}));return d.ok?a({status:"ready",timeline:f.timeline||{}}):a({status:"error",message:f.error||`Could not load this session (HTTP ${d.status})`})}).catch(()=>{c||a({status:"error",message:"Could not load this session: the request did not complete"})}),e==="recording"&&fetch(`/api/session_recordings/${encodeURIComponent(t)}`).then(d=>d.ok?d.json():null).then(d=>{c||s(!!d?.recording?.handoff_state)}).catch(()=>{}),()=>{c=!0}},[e,t]);let l=async()=>{let c=await fetch(`/api/session_recordings/${encodeURIComponent(t)}/handoff`,{method:"POST",headers:{"Content-Type":"application/json"}});c.ok&&n?.(await c.json())};if(o.status==="ready")return ot.default.createElement(G1e,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ot.default.createElement(de,{size:"sm",variant:"primary",testId:"replay-take-over",onClick:l},"Take over session")});let u=o.status==="loading"?"loading the session\u2026":o.status==="missing"?"This session does not exist, or you cannot open it.":o.message;return ot.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:12,maxWidth:1400}},ot.default.createElement(de,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ot.default.createElement(Ve,{testId:`replay-${o.status}`},ot.default.createElement("div",{style:{fontSize:13,color:o.status==="loading"?"var(--color-text-muted)":"var(--color-text-primary)"}},u)))}var Re=G(Y());function jY(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var KM=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],qM=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],S0=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),LY={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},HM=/^(\d{4})-(\d{2})-(\d{2})$/,Y1e={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>KM.some(t=>t.value&&t.value===e),outcome:e=>qM.some(t=>t.value&&t.value===e),from:e=>HM.test(e),to:e=>HM.test(e)};function n_(e={}){let t={...S0};for(let r of Object.keys(S0)){let n=String(e[r]??"");n&&Y1e[r](n)&&(t[r]=n)}return t}function VM(e={}){return Object.values(n_(e)).some(Boolean)}function zY(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(LY))r[n]=t.get(o)||"";return n_(r)}function BY(e={}){let t=new URLSearchParams,r=n_(e);for(let[o,a]of Object.entries(LY))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function $Y(e,t=0){let[,r,n,o]=e.match(HM);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var FY=Object.freeze({openedFromSessions:!0});function UY(e){return e?.openedFromSessions===!0}function WY(e={},{before:t=null,perPage:r=25}={}){let n=n_(e),o=new URLSearchParams;return n.agentId&&o.set("agent_id",n.agentId),n.user&&o.set("user",n.user),n.source&&o.set("source",n.source),n.outcome&&o.set("outcome",n.outcome),n.from&&o.set("from",$Y(n.from)),n.to&&o.set("to",$Y(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var HY={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},X1e={failed:"error",passed:"success"},kg={padding:"7px 10px",borderRadius:8,fontSize:13,fontFamily:"inherit",boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};async function KY(e,t){let r=await fetch(WY(e,{before:t})),n=await r.json().catch(()=>({}));if(!r.ok)throw new Error(n.error||`Could not load sessions (HTTP ${r.status})`);return n}function Z1e(e){let t=[];return e.kind==="context"&&(t.push(`${e.message_count} message${e.message_count===1?"":"s"}`),e.recording_count&&t.push("browser recorded")),e.kind==="scenario_result"&&(e.evaluation?.name&&t.push(e.evaluation.name),e.model&&t.push(e.model)),e.kind==="recording"&&(t.push(`${e.event_count||0} events`),e.action_count&&t.push(`${e.action_count} actions`)),t.join(" \xB7 ")}function J1e({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return Re.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},Re.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:kg},Re.default.createElement("option",{value:""},"Every agent"),r.map(a=>Re.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&&Re.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:kg},Re.default.createElement("option",{value:""},"Run by anyone"),Re.default.createElement("option",{value:"me"},"Run by me")),Re.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:kg},KM.map(a=>Re.default.createElement("option",{key:a.value,value:a.value},a.label))),Re.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:kg},qM.map(a=>Re.default.createElement("option",{key:a.value,value:a.value},a.label))),Re.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",Re.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:kg})),Re.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",Re.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:kg})),VM(e)&&Re.default.createElement(de,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(S0)},"Clear filters"))}function Q1e({session:e}){let t=Xm(e.kind,e.id),r=HY[e.source]||HY.agent,n=Z1e(e);return Re.default.createElement("a",{href:ct(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),It(t,FY))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},Re.default.createElement(Te,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),Re.default.createElement("div",{style:{minWidth:0,flex:1}},Re.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},Re.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&&Re.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&&Re.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&&Re.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&Re.default.createElement(Te,{tone:X1e[e.outcome]||"muted"},e.outcome),Re.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},vo(e.last_activity_at)),Re.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function GM({agents:e=[],user:t=null}){let[r,n]=(0,Re.useState)(()=>zY(window.location.search)),[o,a]=(0,Re.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,Re.useState)("loading"),[l,u]=(0,Re.useState)(null),[c,d]=(0,Re.useState)(!1),[f,p]=(0,Re.useState)(null),[m,y]=(0,Re.useState)(0),[x]=(0,Re.useState)(jY);(0,Re.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${BY(r)}`);let v=x.next();return s("loading"),d(!1),p(null),KY(r,null).then(b=>{v()&&(a({sessions:b.sessions||[],total:b.total||0,nextBefore:b.next_before||null}),s("ready"))}).catch(b=>{v()&&(u(b.message),s("error"))}),()=>{x.next()}},[r,m]);let h=async()=>{let v=x.latest();d(!0),p(null);try{let b=await KY(r,o.nextBefore);if(!v())return;a(_=>({sessions:[..._.sessions,...b.sessions||[]],total:b.total??_.total,nextBefore:b.next_before||null}))}catch(b){v()&&p(b.message)}finally{v()&&d(!1)}},g=VM(r);return Re.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},Re.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Re.default.createElement("div",null,Re.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),Re.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Replay what an agent did: its messages, model calls and tool calls, and its browser when one was recorded.")),i==="ready"&&Re.default.createElement(qe,null,o.total," session",o.total===1?"":"s")),Re.default.createElement(J1e,{filters:r,onChange:n,agents:e,user:t}),Re.default.createElement(Ve,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&Re.default.createElement(Kn,null,"loading sessions\u2026"),i==="error"&&Re.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,Re.default.createElement(de,{size:"sm",onClick:()=>y(v=>v+1)},"Retry")),i==="ready"&&o.sessions.length===0&&Re.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},g?Re.default.createElement(Re.default.Fragment,null,Re.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),Re.default.createElement(de,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(S0)},"Clear filters")):Re.default.createElement(Re.default.Fragment,null,Re.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),Re.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",marginTop:6}},"Every conversation in an agent's Run workbench and every evaluation replay appears here, ready to replay."))),i==="ready"&&o.sessions.map(v=>Re.default.createElement(Q1e,{key:`${v.kind}-${v.id}`,session:v}))),i==="ready"&&o.nextBefore&&Re.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},f&&Re.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},f),Re.default.createElement(de,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":f?"Try again":"Load more")))}var Ae=G(Y());var Ct=G(Y());var R1e={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function qY(e){return R1e[e]||null}function o_(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function VY({set_by:e,updated_at:t}={},r=n=>new Date(n).toLocaleDateString()){let n=[];return e?.name&&n.push(`Set by ${e.name}`),t&&n.push(`${n.length?"updated":"Updated"} ${r(t)}`),n.length?n.join(" \xB7 "):null}var ewe="Setting your own host needs permission to manage the organization's keys.";function GY({editable:e=!0,scope:t,row:r={}}){let n=t==="personal"&&r.editable===!1;return{canChange:e&&!n,canRemove:e&&!!r.configured,note:e&&n&&r.host_based?ewe:null}}var XY={openai:{label:"OpenAI",icon:"\u{1F916}",placeholder:"sk-\u2026"},anthropic:{label:"Anthropic",icon:"\u{1F9E0}",placeholder:"sk-ant-\u2026"},openrouter:{label:"OpenRouter",icon:"\u{1F500}",placeholder:"sk-or-\u2026"},ollama:{label:"Ollama",icon:"\u{1F999}",placeholder:"http://localhost:11434/v1"}};function a_({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,Ct.useState)(null),[a,i]=(0,Ct.useState)(""),[s,l]=(0,Ct.useState)(""),[u,c]=(0,Ct.useState)(!1),[d,f]=(0,Ct.useState)({}),[p,m]=(0,Ct.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:p,saveProviderKey:async(g,{hostBased:v=!1,clearApiKey:b=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let _={provider:g,credential:a.trim()};r&&(_.scope=r),v&&(s.trim()||b)&&(_.api_key=b?"":s.trim());let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(_)});if(!w.ok){let C=await w.json().catch(()=>({}));throw new Error(Array.isArray(C.error)?C.error.join(", "):"save failed")}o(null),i(""),l(""),f(C=>({...C,[g]:null})),gE(),await e()}catch(_){t(`Could not save the ${XY[g]?.label||g} credential${_.message!=="save failed"?`: ${_.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(g,{editing:v=!1}={})=>{if(!p){m(g),t(null);try{let b={provider:g};r&&(b.scope=r),v&&(a.trim()&&(b.credential=a.trim()),s.trim()&&(b.api_key=s.trim()));let _=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),w=await _.json().catch(()=>({}));if(!_.ok)throw new Error(w.error||"test failed");f(C=>({...C,[g]:w}))}catch(b){f(_=>({..._,[g]:{ok:!1,models:[],error:b.message}}))}finally{m(null)}}},removeProviderKey:async g=>{if(await cn(r==="personal"?{title:"Remove your key?",message:"Your runs will use the organization's key, or the platform default.",confirmLabel:"Remove key",danger:!0}:{title:"Remove this provider credential?",message:"Runs fall back to the platform default credentials, or fail until a key is configured.",confirmLabel:"Remove credential",danger:!0}))try{if(!(await fetch(o_(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");f(_=>({..._,[g]:null})),gE(),await e()}catch{t("Could not remove the provider credential.")}}}}var YY={default:{title:"Provider API Keys",description:"Configure your own LLM provider credentials. Agent runs and evaluations on this account use these instead of the platform defaults. Keys are encrypted at rest."},organization:{title:"Provider Keys",description:"Shared by everyone in this organization. Agent runs and evaluations use these instead of the platform defaults. Keys are encrypted at rest."},personal:{title:"Your Provider Keys",description:"Your own credentials, used by the runs you start. Where you have none, the organization's key applies. Keys are encrypted at rest."}};function k0({providerKeys:e,editor:t,scope:r,editable:n=!0}){let{darkMode:o}=st(),{editingProvider:a,setEditingProvider:i,providerInput:s,setProviderInput:l,providerApiKeyInput:u,setProviderApiKeyInput:c,savingProvider:d,testResults:f,testingProvider:p,saveProviderKey:m,testProviderHost:y,removeProviderKey:x}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},g=YY[r]||YY.default;return Ct.default.createElement("div",{className:"border rounded-lg p-6",style:h},Ct.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},g.title),Ct.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},g.description),!n&&Ct.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),Ct.default.createElement("div",{className:"space-y-4"},e.filter(({kind:v})=>v!=="connection").map(v=>{let{provider:b,host_based:_,configured:w,hint:C,api_key_configured:S,api_key_hint:k,platform_default:A}=v,O=XY[b]||{label:b,icon:"\u{1F511}",placeholder:""},$=a===b,F=f[b],P=p===b,z=_&&($?s.trim():w||A),N=w?_?`${C}${S?` \xB7 key ${k}`:""}`:`Configured (${C})`:_&&A?`Platform default: ${A}`:"Not configured",D=r==="personal"?qY(v.effective_source):null,{canChange:T,canRemove:E,note:I}=GY({editable:n,scope:r,row:v}),j=r==="organization"&&w?VY(v):null;return Ct.default.createElement("div",{key:b,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ct.default.createElement("div",{className:"flex items-center justify-between"},Ct.default.createElement("div",{className:"flex items-center space-x-3"},Ct.default.createElement("span",{className:"text-xl"},O.icon),Ct.default.createElement("div",null,Ct.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},O.label),Ct.default.createElement("p",{className:`text-sm ${w?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),j&&Ct.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},j)),D&&Ct.default.createElement("span",{className:`px-2 py-0.5 rounded text-xs ${o?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-700"}`,"data-testid":"provider-key-source"},D)),(T||E)&&Ct.default.createElement("div",{className:"flex items-center space-x-2"},T&&_&&!$&&z&&Ct.default.createElement("button",{onClick:()=>y(b),disabled:P,className:`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},P?"Testing\u2026":"Test connection"),E&&!$&&Ct.default.createElement("button",{onClick:()=>x(b),className:`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Remove"),T&&Ct.default.createElement("button",{onClick:()=>{i($?null:b),l(!$&&_&&w?C:""),c("")},className:`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},$?"Cancel":w?"Update":"Configure"))),I&&Ct.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},I),$&&Ct.default.createElement("div",{className:"mt-3 space-y-2"},Ct.default.createElement("div",{className:"flex items-center space-x-2"},Ct.default.createElement("input",{type:_?"text":"password","data-aa-secret":_?void 0:"",value:s,onChange:q=>l(q.target.value),onKeyDown:q=>q.key==="Enter"&&m(b,{hostBased:_}),placeholder:_?O.placeholder:`${O.label} API key (${O.placeholder})`,"aria-label":_?`${O.label} host URL`:`${O.label} API key`,autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),_&&Ct.default.createElement("button",{onClick:()=>y(b,{editing:!0}),disabled:!s.trim()||P,className:`px-3 py-2 text-sm rounded-lg disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},P?"Testing\u2026":"Test"),Ct.default.createElement("button",{onClick:()=>m(b,{hostBased:_}),disabled:!s.trim()||d,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},d?"Saving\u2026":"Save")),_&&Ct.default.createElement("div",{className:"flex items-center space-x-2"},Ct.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:q=>c(q.target.value),onKeyDown:q=>q.key==="Enter"&&m(b,{hostBased:_}),placeholder:S?`API key (stored: ${k} \u2014 type to replace)`:"API key (optional \u2014 only for remote servers that require one)","aria-label":`${O.label} API key`,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),S&&Ct.default.createElement("button",{onClick:()=>m(b,{hostBased:_,clearApiKey:!0}),disabled:!s.trim()||d,className:`px-3 py-2 text-sm rounded-lg disabled:opacity-50 ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Clear key"))),_&&$&&Ct.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"Your Ollama server's address \u2014 the OpenAI-compatible /v1 path is added if you leave it off. Local: http://localhost:11434. Remote: a LAN host, a tunnel URL, or Ollama Cloud (https://ollama.com), which needs an API key. Test lists the models the server currently serves."),_&&F&&Ct.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:F.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:F.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},F.ok?Ct.default.createElement(Ct.default.Fragment,null,Ct.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",F.host,typeof F.latency_ms=="number"?` in ${F.latency_ms} ms`:""," \xB7 ",F.models.length===0?"no models pulled yet (run `ollama pull ` on the server)":`${F.models.length} model${F.models.length===1?"":"s"}`,F.models.length>0&&Ct.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},F.models.join(" \xB7 "))):Ct.default.createElement(Ct.default.Fragment,null,Ct.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",F.error)))})))}async function ZY(e=fetch){let t=await e("/api/telemetry_key",{cache:"no-store"});if(!t.ok)throw new Error(`Could not load the telemetry key (HTTP ${t.status})`);return(await t.json().catch(()=>null))?.telemetry_api_key||null}var i_=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function YM({account:e,user:t,subscription:r,agentCount:n=0}){let{darkMode:o}=st(),[a,i]=(0,Ae.useState)(null),[s,l]=(0,Ae.useState)(!1),[u,c]=(0,Ae.useState)(!1),[d,f]=(0,Ae.useState)({status:"idle",value:null,error:null}),[p,m]=(0,Ae.useState)(!1),[y,x]=(0,Ae.useState)(null),[h,g]=(0,Ae.useState)(null),[v,b]=(0,Ae.useState)([]),[_,w]=(0,Ae.useState)(!1),[C,S]=(0,Ae.useState)(null),k=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Ae.useEffect)(()=>{fetch("/api/usage").then(j=>j.ok?j.json():null).then(j=>i(j?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(j=>j.ok?j.json():null).then(j=>g(j?.members||[])).catch(()=>g([]))},[]);let A=(0,Ae.useCallback)(async()=>{try{let j=await fetch("/api/provider_keys?scope=organization");if(!j.ok)throw new Error("load failed");let q=await j.json();b(q.provider_keys||[]),w(!!q.can_manage_organization_keys),S(null)}catch{S("Could not load the organization's provider keys.")}},[]);(0,Ae.useEffect)(()=>{A()},[A]);let O=a_({onKeysChanged:A,onError:S,scope:"organization"}),$=async()=>{m(!0),x(null);try{await mg({planSlug:"pro"})}catch(j){x(j.message),m(!1)}},F=async()=>{if(d.status==="ready")return d.value;f({status:"loading",value:null,error:null});try{let j=await ZY();return f({status:"ready",value:j,error:null}),j}catch(j){return f({status:"error",value:null,error:j.message}),null}},P=async()=>{u?c(!1):await F()&&c(!0)},z=async()=>{let j=await F();if(j)try{await navigator.clipboard.writeText(j),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,D={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},T=r?.plan_name||"Free",E={free:{seats:1,workspaces:1,agents:3,traces:"250/mo trial"},pro:{seats:5,workspaces:3,agents:"Unlimited",traces:"25,000/mo"},enterprise:{seats:"Unlimited",workspaces:"Unlimited",agents:"Unlimited",traces:"500,000+/mo"}},I=E[T.toLowerCase()]||E.free;return Ae.default.createElement("div",{className:"p-6 space-y-6"},Ae.default.createElement("div",null,Ae.default.createElement("h2",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},"Organization"),Ae.default.createElement("p",{className:`mt-1 ${o?"text-gray-400":"text-gray-500"}`},"Manage your workspace, team, and billing")),Ae.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ae.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ae.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Workspace"),Ae.default.createElement("div",{className:"space-y-3"},Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Name"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.name||"My Workspace")),Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Owner"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},t?.email||"you@example.com")),Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Created"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.created_at?new Date(e.created_at).toLocaleDateString():"Today")))),Ae.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ae.default.createElement("div",{className:"flex items-center justify-between mb-4"},Ae.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Current Plan"),Ae.default.createElement("span",{className:"px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm font-medium"},T)),Ae.default.createElement("div",{className:"space-y-3"},Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Team Seats"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.seats)),Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Workspaces"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.workspaces)),Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Agents"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.agents)),Ae.default.createElement("div",{className:"flex justify-between items-center"},Ae.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Traces"),Ae.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.traces))),T.toLowerCase()!=="enterprise"&&Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("button",{onClick:$,disabled:p,className:"mt-4 w-full px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},p?"Redirecting to checkout\u2026":"Upgrade Plan"),y&&Ae.default.createElement("p",{className:"mt-2 text-sm text-red-500 text-center"},y)))),Ae.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ae.default.createElement("div",{className:"flex items-center justify-between mb-4"},Ae.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Team Members"),k&&Ae.default.createElement("a",{href:k,className:"px-4 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors"},"+ Invite Member")),Ae.default.createElement("div",{className:"overflow-hidden"},Ae.default.createElement("table",{className:"min-w-full"},Ae.default.createElement("thead",null,Ae.default.createElement("tr",{className:o?"border-b border-gray-700":"border-b border-gray-200"},Ae.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Member"),Ae.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Role"))),Ae.default.createElement("tbody",null,(h||[]).map(j=>Ae.default.createElement("tr",{key:j.id??j.email},Ae.default.createElement("td",{className:"py-3 px-4"},Ae.default.createElement("div",{className:"flex items-center space-x-3"},Ae.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},Ae.default.createElement("span",{className:"text-red-600 font-medium text-sm"},(j.name||j.email||"?").charAt(0).toUpperCase())),Ae.default.createElement("div",null,Ae.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.name||j.email,j.id!=null&&j.id===t?.id&&Ae.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),j.name&&j.email&&Ae.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},j.email)))),Ae.default.createElement("td",{className:"py-3 px-4"},j.role?Ae.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(j.role).charAt(0).toUpperCase()+String(j.role).slice(1)):Ae.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Ae.default.createElement("div",{className:"space-y-2"},C&&Ae.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},C),Ae.default.createElement(k0,{providerKeys:v,editor:O,scope:"organization",editable:_})),Ae.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ae.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Usage This Month"),Ae.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4"},Ae.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ae.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},n),Ae.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Agents")),Ae.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ae.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},i_(a?.traces_used),a?.traces_limit>0&&Ae.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",i_(a.traces_limit))),Ae.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Traces")),Ae.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ae.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},i_(a?.runs_used)),Ae.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Executions")),Ae.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ae.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},i_(a?.tokens_used)),Ae.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Tokens")))),Ae.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ae.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${o?"text-white":"text-gray-900"}`},"Telemetry"),Ae.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},"Send traces from your own ActiveAgent app to this workspace. Add this to your"," ",Ae.default.createElement("code",{className:`px-1 rounded text-xs ${o?"bg-gray-800 text-gray-300":"bg-gray-100 text-gray-700"}`},"config/active_agent.yml"),":"),Ae.default.createElement("pre",{className:`text-xs rounded-lg p-4 overflow-x-auto mb-4 ${o?"bg-black text-gray-300":"bg-gray-900 text-gray-100"}`},`telemetry: +`)||v?.instructions||"",L2=y.slice();h&&!L2.some(ae=>ae.id===h)&&L2.unshift({id:h,message_count:ca.length});let iJ=(u.trim().length>0||d.length>0)&&!_,G0=E?.status==="awaiting_input",eI=G0?sg(E.input_requests):[],sJ=new Set(P.map(({request:ae})=>ae.id)),tI=E&&!_&&E.status==="failed",lJ=E&&!_&&E.status==="complete"&&!qi(E)&&!h,_f={background:o.cardBg,border:`1px solid ${o.cardBorder}`,borderRadius:"12px"},rI={borderBottom:`1px solid ${o.cardBorder}`},nI={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontSize:"13px",fontFamily:vt.mono,maxWidth:"260px"},oI={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${p?Oo:o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},z2=xn("system",n),uJ=p_(n);return G.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},G.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},Q&&G.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},G.default.createElement("div",null,G.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),G.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",Q.runs_used," of ",Q.runs_limit," runs on the"," ",Q.plan||"free"," plan. Upgrade to keep running agents."),re&&G.default.createElement("p",{className:"text-sm text-red-600 mt-1"},re)),G.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},Cr&&G.default.createElement("a",{href:Cr,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),G.default.createElement("button",{onClick:or,disabled:ue,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},ue?"Redirecting\u2026":"Upgrade to Pro"))),G.default.createElement("div",{"data-testid":"runner-toolbar",style:_f,className:"p-4 flex items-center gap-3 flex-wrap"},G.default.createElement(yn,{size:40}),G.default.createElement("div",{className:"min-w-0"},G.default.createElement("div",{className:"font-semibold truncate",style:{color:o.textPrimary}},e.name),G.default.createElement("div",{className:"text-xs font-mono",style:{color:o.textSecondary}},e.provider," / ",e.model)),G.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},G.default.createElement("select",{"data-testid":"runner-action-select",value:s,onChange:ae=>Xo(ae.target.value),disabled:_,className:"aa-field",style:nI,title:"Agent action to invoke"},i.map(ae=>G.default.createElement("option",{key:ae,value:ae},"#",ae))),G.default.createElement("select",{"data-testid":"runner-conversation-select",value:h??"",onChange:ae=>Ia(ae.target.value),disabled:_,className:"aa-field",style:nI,title:"Conversation to continue"},G.default.createElement("option",{value:""},"New conversation on first run"),L2.map(ae=>G.default.createElement("option",{key:ae.id,value:ae.id},"Conversation #",ae.id," \xB7 ",ae.message_count??0," message",ae.message_count===1?"":"s"))),G.default.createElement(qo,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:o,onClick:Ys,disabled:_,title:"Start an empty conversation for this action"},"+ New conversation"),G.default.createElement(qo,{testId:"runner-back",variant:"secondary",size:"sm",colors:o,onClick:t},"\u2190 Back to editor"))),G.default.createElement("div",{"data-testid":"runner-context",ref:qe,style:_f,className:"flex flex-col overflow-hidden"},G.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:rI},G.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},G.default.createElement("h3",{className:"font-medium",style:{color:o.textPrimary}},"Context"),v&&G.default.createElement("span",{className:"text-xs font-mono",style:{color:o.textMuted}},"#",v.id," \xB7 ",ca.length," message",ca.length===1?"":"s"),ys==="recording"&&G.default.createElement("span",{"data-testid":"runner-recording-notice",className:"text-xs inline-flex items-center gap-1",style:{color:o.textMuted},title:"This view is recorded for the conversation's replay. Field values are masked and keys are left out; the conversation is recorded as shown."},G.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),ys==="limit"&&G.default.createElement("span",{"data-testid":"runner-recording-stopped",className:"text-xs",style:{color:o.textMuted},title:"This visit reached the size limit for a recording, so the rest of it is not recorded. Open the conversation again to start a new recording."},"Recording stopped")),G.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},G.default.createElement(h1e,{run:E,darkMode:n,colors:o}),v&&G.default.createElement(qo,{testId:"runner-replay",variant:"secondary",size:"sm",colors:o,onClick:()=>kt(ig("context",v.id)),disabled:_,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),G.default.createElement("div",{className:"relative",ref:co},G.default.createElement(qo,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:o,onClick:()=>ee(ae=>!ae),disabled:_,title:"Insert a message into the context without running"},"+ Add message"),Z&&G.default.createElement("div",{className:"absolute right-0 mt-1 z-10 py-1 rounded-lg shadow-lg",style:{background:o.cardBg,border:`1px solid ${o.borderStrong}`,minWidth:"180px"}},[["user","runner-add-user-message","User message"],["assistant","runner-add-assistant-message","Assistant message"]].map(([ae,je,st])=>G.default.createElement("button",{key:ae,type:"button","data-testid":je,onClick:()=>$2(ae),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-black/5",style:{color:o.textCell,background:"none",border:"none",cursor:"pointer"}},st)))))),G.default.createElement("div",{ref:Gt,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},G.default.createElement("div",{"data-testid":"runner-system-row",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 cursor-pointer",onClick:()=>le(ae=>!ae),title:de?"Collapse system instructions":"Show system instructions"},G.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},G.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:z2.background,color:z2.color,textAlign:"center"}},z2.label)),G.default.createElement("div",{className:"min-w-0 flex-1"},Da?de?G.default.createElement("pre",{style:{...uJ,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},Da):G.default.createElement("div",{className:"text-sm truncate",style:{color:o.textSecondary}},Da.split(` +`).find(ae=>ae.trim())||""):G.default.createElement("div",{className:"text-sm",style:{color:o.textMuted}},"No system instructions"),G.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:o.textMuted}},"read-only \xB7 Edit in the Instructions tab")),G.default.createElement(gY,{open:de,color:o.textMuted})),S&&G.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},S),ca.length>0?G.default.createElement("div",{className:"mt-3"},G.default.createElement(Fi,{messages:ca,darkMode:n,testIdPrefix:"runner-message",onUiAction:V0,onEditMessage:j2,onDeleteMessage:Fg})):!F&&!z&&!tI&&G.default.createElement("div",{"data-testid":"runner-context-empty",className:"text-sm text-center py-8",style:{color:o.textMuted}},"No messages yet \u2014 say something below to test the agent as a user."),F&&G.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},G.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},G.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:xn("user",n).background,color:xn("user",n).color,textAlign:"center"}},"User")),G.default.createElement("div",{className:"min-w-0 flex-1"},G.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:o.textPrimary}},F.content),G.default.createElement(m_,{attachments:F.attachments,darkMode:n}))),E&&(_||SM(E).length>0)&&G.default.createElement("div",{className:"mt-3 space-y-2"},G.default.createElement(g1e,{run:E,darkMode:n,colors:o,expanded:T,onToggle:ae=>I(je=>({...je,[ae]:!je[ae]}))}),_&&!G0&&G.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:o.textSecondary}},G.default.createElement("span",{className:"animate-pulse"},"\u25CF"),G.default.createElement("span",null,SM(E).length>0?"Working\u2026":"Starting run\u2026"))),(eI.length>0||P.length>0)&&G.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},G0&&G.default.createElement("div",{className:"text-sm",style:{color:o.textSecondary}},"Paused for input: answer to continue this run."),eI.filter(ae=>!sJ.has(ae.id)).map(ae=>G.default.createElement(tf,{key:ae.id,request:ae,showRunLink:!1,onSettled:zg})),P.map(({request:ae,outcome:je})=>G.default.createElement(tf,{key:ae.id,request:ae,initialOutcome:je,showRunLink:!1}))),O&&G.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},O),tI&&E.error_message&&G.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:n?"rgba(239,68,68,0.12)":"#fef2f2",color:n?"#fca5a5":"#b91c1c"}},G.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),G.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},E.error_message)),lJ&&G.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:o.innerBg,color:o.textPrimary}},G.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:o.textMuted}},"Output"),G.default.createElement(cs,{text:E.output||"No output",darkMode:n,onUiAction:V0})),z&&G.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:o.innerBg,border:`1px solid ${o.cardBorder}`}},G.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},G.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:o.textMuted}},G.default.createElement("span",{style:{color:o.textPrimary}},"Run #",z.id),G.default.createElement(Cc,{tone:wM[z.status]||"neutral",darkMode:n},z.status),z.output_metadata?.model&&G.default.createElement("span",null,z.output_metadata.provider,"/",z.output_metadata.model),z.duration_ms?G.default.createElement("span",null,r2(z.duration_ms)):null,z.trace_id&&G.default.createElement("a",{href:ct(`/traces?trace=${z.trace_id}`),className:"hover:underline",style:{color:o.textSecondary}},"trace:",z.trace_id.slice(0,8)," \u2192"),G.default.createElement("span",null,"\xB7 no conversation attached")),G.default.createElement("button",{type:"button",onClick:()=>N(null),className:"text-xs font-mono",style:{color:o.textMuted,background:"none",border:"none",cursor:"pointer"},title:"Close"},"[x]")),(z.input_prompt||z.input_preview)&&G.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:o.textSecondary}},z.input_prompt||z.input_preview),z.error_message?G.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:n?"#fca5a5":"#b91c1c"}},z.error_message):G.default.createElement("div",{className:"text-sm",style:{color:o.textPrimary}},G.default.createElement(cs,{text:z.output||"No output",darkMode:n}))),L&&G.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${o.borderStrong}`}},G.default.createElement("div",{className:"flex items-center gap-2 mb-2"},G.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:xn(L,n).background,color:xn(L,n).color}},xn(L,n).label),G.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},"Added to the context without running the agent")),G.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:q,onChange:ae=>M(ae.target.value),onKeyDown:ae=>{ae.key==="Escape"&&B(null),ae.key==="Enter"&&(ae.metaKey||ae.ctrlKey)&&we()},placeholder:L==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...oI,border:`1px solid ${o.inputBorder}`}}),G.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},G.default.createElement(qo,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:o,onClick:we,disabled:ne||!q.trim()},ne?"Adding\u2026":`Add ${L} message`),G.default.createElement(qo,{variant:"secondary",size:"sm",colors:o,onClick:()=>B(null),disabled:ne},"Cancel"),oe&&G.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},oe))))),G.default.createElement("div",{style:_f,className:"p-4"},G.default.createElement("div",{onDragOver:ae=>{ae.preventDefault(),p||m(!0)},onDragLeave:()=>m(!1),onDrop:ae=>{ae.preventDefault(),m(!1),_||Sf(ae.dataTransfer?.files)}},G.default.createElement("textarea",{"data-testid":"runner-prompt",value:u,onChange:ae=>c(ae.target.value),onKeyDown:D2,placeholder:"Message the agent as a user\u2026 (\u2318/Ctrl+Enter to run \xB7 drop files here to attach)",rows:3,disabled:_,className:"aa-field",style:oI})),G.default.createElement(m_,{attachments:d,darkMode:n,testId:"runner-attachment-chip",onRemove:(ae,je)=>vs(je),removeTestId:"runner-attachment-remove"}),G.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},G.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},G.default.createElement("input",{ref:Ir,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:ae=>{Sf(ae.target.files),ae.target.value=""}}),G.default.createElement(qo,{testId:"runner-attach",variant:"secondary",size:"sm",colors:o,onClick:()=>Ir.current?.click(),disabled:_,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),G.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},"Press ",G.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:o.mutedBg,color:o.textSecondary}},"\u2318")," + ",G.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:o.mutedBg,color:o.textSecondary}},"Enter")," to run")),G.default.createElement(qo,{testId:"runner-run",variant:"primary",colors:o,onClick:K0,disabled:!iJ},_&&G0?G.default.createElement(G.default.Fragment,null,G.default.createElement("span",{style:{fontFamily:vt.mono}},"[?]")," Waiting for input"):_?G.default.createElement(G.default.Fragment,null,G.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:vt.mono}},"[~]")," Running\u2026"):G.default.createElement(G.default.Fragment,null,G.default.createElement("span",{style:{fontFamily:vt.mono}},"[>]")," Run"))))),G.default.createElement("div",{className:"space-y-4 min-w-0"},G.default.createElement("div",{style:_f,className:"p-4"},G.default.createElement("h4",{className:"font-medium mb-3",style:{color:o.textPrimary}},"Configuration"),G.default.createElement("dl",{className:"space-y-2 text-sm"},G.default.createElement("div",{className:"flex justify-between"},G.default.createElement("dt",{style:{color:o.textSecondary}},"Temperature"),G.default.createElement("dd",{style:{color:o.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),G.default.createElement("div",{className:"flex justify-between"},G.default.createElement("dt",{style:{color:o.textSecondary}},"Tools"),G.default.createElement("dd",{style:{color:o.textPrimary}},e.tools?.length||0)),G.default.createElement("div",{className:"flex justify-between items-center"},G.default.createElement("dt",{style:{color:o.textSecondary}},"Status"),G.default.createElement("dd",null,G.default.createElement(Cc,{tone:e.status==="active"?"success":"neutral",darkMode:n},e.status)))),e.instructions&&G.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${o.cardBorder}`}},G.default.createElement("div",{className:"text-xs mb-1.5",style:{color:o.textSecondary}},"System Instructions"),G.default.createElement("p",{className:"text-xs whitespace-pre-wrap max-h-44 overflow-y-auto font-mono leading-relaxed",style:{color:o.textCell}},e.instructions))),G.default.createElement("div",{style:_f,className:"overflow-hidden"},G.default.createElement("div",{className:"px-4 py-3",style:rI},G.default.createElement("h4",{className:"font-medium",style:{color:o.textPrimary}},"Recent Runs")),G.default.createElement("div",{className:"max-h-64 overflow-auto"},A.length>0?G.default.createElement("div",null,A.map(ae=>G.default.createElement("div",{key:ae.id,"data-testid":"runner-recent-run",className:"px-4 py-3 cursor-pointer hover:bg-black/5",style:{borderBottom:`1px solid ${o.cardBorder}`},onClick:()=>yt(ae),title:qi(ae)?"Open this run\u2019s conversation":"Show this run\u2019s output"},G.default.createElement("div",{className:"flex items-center justify-between mb-1"},G.default.createElement(Cc,{tone:wM[ae.status]||"neutral",darkMode:n},ae.status),G.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},r2(ae.duration_ms))),G.default.createElement("p",{className:"text-sm truncate",style:{color:o.textCell}},ae.input_preview||ae.input_prompt?.substring(0,50)),G.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:o.textMuted}},ae.model&&G.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:o.mutedBg,color:o.textSecondary}},ae.model),qi(ae)&&G.default.createElement("span",{className:"font-mono"},"#",qi(ae)),G.default.createElement("span",null,new Date(ae.created_at).toLocaleString()))))):G.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:o.textMuted}},"No runs yet"))),G.default.createElement("div",{style:_f,className:"p-4"},G.default.createElement("h4",{className:"font-medium mb-3",style:{color:o.textPrimary}},"Example Prompts"),G.default.createElement("div",{className:"space-y-2"},d1e.map(ae=>G.default.createElement("button",{key:ae,type:"button","data-testid":"runner-example-prompt",onClick:()=>c(ae),className:"w-full text-left px-3 py-2 text-sm rounded-lg transition-colors hover:bg-black/5",style:{color:o.textCell,border:`1px solid ${o.cardBorder}`,background:"transparent",cursor:"pointer"}},ae))))))}var Ue=V(Y()),n2=e=>new Date(`${e}T00:00:00`),y1e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function _M({onSelectAgent:e}){let[t,r]=(0,Ue.useState)(null),[n,o]=(0,Ue.useState)(!0),[a,i]=(0,Ue.useState)(30);(0,Ue.useEffect)(()=>{s()},[a]);let s=async()=>{o(!0);try{let p=await(await fetch(`/api/analytics?days=${a}`)).json();r(p)}catch(f){console.error("Failed to load analytics:",f)}finally{o(!1)}},l=f=>f?f>=1e6?`${(f/1e6).toFixed(1)}M`:f>=1e3?`${(f/1e3).toFixed(1)}K`:f.toString():"0",u=f=>f?f<1e3?`${f}ms`:`${(f/1e3).toFixed(2)}s`:"-";if(n&&!t)return Ue.default.createElement("div",{className:"flex items-center justify-center h-64"},Ue.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let c=t?.charts?.runs_by_day?.length>0?Math.max(...t.charts.runs_by_day.map(f=>f.count)):1,d=t?.charts?.tokens_by_day?.length>0?Math.max(...t.charts.tokens_by_day.map(f=>f.tokens)):1;return Ue.default.createElement("div",{className:"space-y-6"},Ue.default.createElement("div",{className:"flex items-center justify-between"},Ue.default.createElement("div",null,Ue.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Ue.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Ue.default.createElement("select",{value:a,onChange:f=>i(Number(f.target.value)),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},y1e.map(f=>Ue.default.createElement("option",{key:f.value,value:f.value},"Last ",f.label)))),Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ue.default.createElement(S0,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ue.default.createElement(S0,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ue.default.createElement(S0,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ue.default.createElement(S0,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ue.default.createElement(S0,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Ue.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Ue.default.createElement("div",{className:"h-48"},Ue.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((f,p)=>Ue.default.createElement("div",{key:f.date,className:"flex-1 flex flex-col items-center group"},Ue.default.createElement("div",{className:"relative w-full"},Ue.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${f.count/c*150}px`,minHeight:f.count>0?"4px":"0"}}),Ue.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-10"},f.count," runs"))))),Ue.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ue.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&n2(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ue.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&n2(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ue.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Ue.default.createElement("div",{className:"h-48"},Ue.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((f,p)=>Ue.default.createElement("div",{key:f.date,className:"flex-1 flex flex-col items-center group"},Ue.default.createElement("div",{className:"relative w-full"},Ue.default.createElement("div",{className:"w-full bg-purple-500 rounded-t transition-all hover:bg-purple-600",style:{height:`${f.tokens/d*150}px`,minHeight:f.tokens>0?"4px":"0"}}),Ue.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-10"},l(f.tokens)," tokens"))))),Ue.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ue.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&n2(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ue.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&n2(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ue.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Ue.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ue.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Top Agents"),t?.top_agents?.length>0?Ue.default.createElement("div",{className:"space-y-3"},t.top_agents.map((f,p)=>Ue.default.createElement("div",{key:f.id,onClick:()=>e?.(f),className:"flex items-center space-x-4 p-3 rounded-lg hover:bg-gray-50 cursor-pointer transition-colors"},Ue.default.createElement("div",{className:"w-8 h-8 rounded-full bg-red-100 flex items-center justify-center text-red-600 font-semibold"},p+1),Ue.default.createElement("div",{className:"flex-1 min-w-0"},Ue.default.createElement("p",{className:"font-medium text-gray-900 truncate"},f.name),Ue.default.createElement("p",{className:"text-sm text-gray-500"},f.run_count," runs")),Ue.default.createElement("div",{className:"text-right"},Ue.default.createElement("p",{className:"font-medium text-gray-900"},l(f.total_tokens)),Ue.default.createElement("p",{className:"text-xs text-gray-500"},"tokens"))))):Ue.default.createElement("div",{className:"py-8 text-center text-gray-400"},"No agent activity yet")),Ue.default.createElement("div",{className:"space-y-6"},Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Ue.default.createElement("div",{className:"space-y-3"},Object.entries(t.provider_breakdown).map(([f,p])=>{let m=t?.summary?.total_runs||1,y=(p/m*100).toFixed(1);return Ue.default.createElement("div",{key:f},Ue.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ue.default.createElement("span",{className:"capitalize text-gray-600"},f),Ue.default.createElement("span",{className:"text-gray-900 font-medium"},p)),Ue.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Ue.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${y}%`}})))})):Ue.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Ue.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ue.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Ue.default.createElement("div",{className:"space-y-4"},Ue.default.createElement("div",{className:"flex justify-between items-center"},Ue.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Ue.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Ue.default.createElement("div",{className:"flex justify-between items-center"},Ue.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Ue.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Ue.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Ue.default.createElement("div",{className:"flex justify-between items-center"},Ue.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Ue.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function S0({title:e,value:t,subtitle:r,color:n}){return Ue.default.createElement("div",{className:`bg-white rounded-xl border border-gray-200 border-l-4 ${{rose:"border-l-red-500",blue:"border-l-blue-500",green:"border-l-green-500",purple:"border-l-purple-500",amber:"border-l-amber-500"}[n]} p-4`},Ue.default.createElement("p",{className:"text-sm text-gray-500"},e),Ue.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Ue.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var R=V(Y());function CM({agent:e,onBack:t}){let{timeWindow:r}=Fs(),[n,o]=(0,R.useState)([]),[a,i]=(0,R.useState)([]),[s,l]=(0,R.useState)(null),[u,c]=(0,R.useState)(null),[d,f]=(0,R.useState)([]),[p,m]=(0,R.useState)("run"),[y,b]=(0,R.useState)(!1),[h,g]=(0,R.useState)(!1),v=(0,R.useRef)(!1),x=(0,R.useRef)(!1),[S,w]=(0,R.useState)("recent"),[A,k]=(0,R.useState)({}),[_,C]=(0,R.useState)(!0),[E,j]=(0,R.useState)(1),[F,D]=(0,R.useState)(!0),[z,N]=(0,R.useState)(""),[O,$]=(0,R.useState)(""),[T,I]=(0,R.useState)("recent"),P=(0,R.useRef)(null),H=ct(`/agents/${e.id}/interactions`);(0,R.useEffect)(()=>{Q()},[e.id,E,z,O,T,r.minutes]),(0,R.useEffect)(()=>{j(1)},[r.minutes]),(0,R.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(M=>M.json()).then(M=>i(M.interactions||[])).catch(()=>{}).finally(()=>g(!0))},[e.id]),(0,R.useEffect)(()=>{let M=()=>{let ne=Xn(),U=ne.match(/\/interactions\/runs\/(\d+)/),oe=ne.match(/\/interactions\/sessions\/(\d+)/);if(U)m("run"),c(null),ue(parseInt(U[1],10),{updateUrl:!1});else if(oe)m("all"),c({id:parseInt(oe[1],10)});else if(ne.endsWith("/interactions/sessions")||ne.endsWith("/interactions/all"))ne.endsWith("/all")&&window.history.replaceState({},"",ne.replace(/\/all$/,"/sessions")),m("all"),c(null);else{v.current=!1,l(null),c(null),f([]);return}v.current=!0};return M(),window.addEventListener("popstate",M),()=>window.removeEventListener("popstate",M)},[e.id]),(0,R.useEffect)(()=>{v.current||x.current||!y||!h||m(n.length===0&&a.length>0?"all":"run")},[y,h,n.length,a.length]);let Q=async()=>{C(!0);try{let M=new URLSearchParams({page:E.toString(),per_page:"20",minutes:String(r.minutes)});z&&M.append("status",z),O&&M.append("source",O),T!=="recent"&&M.append("sort",T);let U=await(await fetch(`/api/agents/${e.id}/runs?${M}`)).json();o(E===1?U.runs:oe=>[...oe,...U.runs]),D(U.runs.length===20)}catch(M){console.error("Failed to load runs:",M)}finally{C(!1),b(!0)}},K=M=>{window.location.pathname!==M&&window.history.pushState({},"",M)},ue=async(M,{updateUrl:ne=!0}={})=>{try{let oe=await(await fetch(`/api/runs/${M}`)).json();l(oe.run),f(oe.messages||[]),m("run"),c(null),ne&&K(`${H}/runs/${M}`)}catch(U){console.error("Failed to load run details:",U)}},pe=M=>{if(M.source==="reported"){let ne=M.trace_id||String(M.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",ct(`/traces/${ne}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:ct(`/traces/${ne}`)}}));return}ue(M.record_id||M.id)},re=()=>{l(null),c(null),f([]),m("run"),K(H)},_e=M=>{m("all"),M?(c({id:M.id,name:M.display_name}),K(`${H}/sessions/${M.id}`)):(c(null),K(`${H}/sessions`))},de=M=>{x.current=!0,m(M),K(M==="all"?u?`${H}/sessions/${u.id}`:`${H}/sessions`:s?`${H}/runs/${s.id}`:H)},le=u?u.name||a.find(M=>M.id===u.id)?.display_name||`Session #${u.id}`:null,Z=()=>{let M=new Map;n.forEach(oe=>{let ve=`${oe.model||"unknown"}|${oe.instructions_digest||"none"}`;M.has(ve)||M.set(ve,{key:ve,model:oe.model,instructionsDigest:oe.instructions_digest,instructionsVersion:oe.instructions_version,instructionsCodename:oe.instructions_codename,instructionsPreview:oe.instructions_preview,runs:[]}),M.get(ve).runs.push(oe)});let ne=[...M.values()].map(oe=>({...oe,count:oe.runs.length,completed:oe.runs.filter(ve=>ve.status==="complete").length,failed:oe.runs.filter(ve=>ve.status==="failed").length,totalTokens:oe.runs.reduce((ve,Ze)=>ve+(Ze.tokens||0),0),avgTokens:oe.runs.reduce((ve,Ze)=>ve+(Ze.tokens||0),0)/oe.runs.length,avgDuration:oe.runs.reduce((ve,Ze)=>ve+(Ze.duration_ms||0),0)/oe.runs.length,latest:oe.runs[0],sortedRuns:[...oe.runs].sort((ve,Ze)=>(Ze.duration_ms||0)-(ve.duration_ms||0))}));ne.sort((oe,ve)=>S==="longest"?ve.avgDuration-oe.avgDuration:new Date(ve.latest.created_at)-new Date(oe.latest.created_at));let U={runs:n.length,completed:n.filter(oe=>oe.status==="complete").length,tokens:n.reduce((oe,ve)=>oe+(ve.tokens||0),0),avgDuration:n.length?n.reduce((oe,ve)=>oe+(ve.duration_ms||0),0)/n.length:0,models:[...new Set(n.map(oe=>oe.model).filter(Boolean))]};return{cohorts:ne,totals:U}},ee=M=>{switch(M){case"complete":return"bg-green-100 text-green-700";case"failed":return"bg-red-100 text-red-700";case"running":return"bg-blue-100 text-blue-700";case"pending":return"bg-yellow-100 text-yellow-700";case"cancelled":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},L=M=>M?M<1e3?`${M}ms`:M<6e4?`${(M/1e3).toFixed(1)}s`:`${Math.floor(M/6e4)}m ${Math.floor(M%6e4/1e3)}s`:"-",B=M=>M==null?"\u2014":M===0?"$0":M<.01?`$${M.toFixed(4)}`:`$${M.toFixed(2)}`,q=M=>{let ne=new Date(M),oe=new Date-ne,ve=Math.floor(oe/6e4),Ze=Math.floor(oe/36e5),Ht=Math.floor(oe/864e5);return ve<1?"Just now":ve<60?`${ve}m ago`:Ze<24?`${Ze}h ago`:Ht<7?`${Ht}d ago`:ne.toLocaleDateString()};return R.default.createElement("div",{className:"flex h-full"},R.default.createElement("div",{className:"w-80 border-r border-gray-200 flex flex-col bg-white"},R.default.createElement("div",{className:"p-4 border-b border-gray-200"},R.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},R.default.createElement("button",{onClick:t,className:"p-1 text-gray-400 hover:text-gray-600 transition-colors"},R.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},R.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),R.default.createElement("div",null,R.default.createElement("h2",{className:"font-semibold text-gray-900"},"Agent Interactions"),R.default.createElement("p",{className:"text-sm text-gray-500"},e.name))),R.default.createElement("div",{className:"mb-2"},R.default.createElement(Us,{compact:!0})),R.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 mb-2 text-sm"},[{value:"",label:"All"},{value:"dashboard",label:"Dashboard"},{value:"reported",label:"Reported"}].map(M=>R.default.createElement("button",{key:M.value||"all",onClick:()=>{$(M.value),j(1)},className:`flex-1 px-2 py-1 rounded-md transition-colors ${O===M.value?"bg-white shadow text-gray-900":"text-gray-600"}`,title:M.value==="dashboard"?"Executions started from this dashboard":M.value==="reported"?"Executions reported by your app via telemetry":"Every execution, however it started"},M.label))),R.default.createElement("select",{value:z,onChange:M=>{N(M.target.value),j(1)},className:"w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},R.default.createElement("option",{value:""},"All statuses"),R.default.createElement("option",{value:"complete"},"Completed"),R.default.createElement("option",{value:"failed"},"Failed"),R.default.createElement("option",{value:"running"},"Running"),R.default.createElement("option",{value:"cancelled"},"Cancelled")),R.default.createElement("select",{value:T,onChange:M=>{I(M.target.value),j(1)},className:"w-full mt-2 px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},R.default.createElement("option",{value:"recent"},"Most recent"),R.default.createElement("option",{value:"longest"},"Longest running"),R.default.createElement("option",{value:"cost"},"Highest cost"),R.default.createElement("option",{value:"tokens"},"Most tokens"))),R.default.createElement("div",{className:"flex-1 overflow-auto"},_&&n.length===0?R.default.createElement("div",{className:"flex items-center justify-center h-32"},R.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):n.length>0?R.default.createElement(R.default.Fragment,null,n.map(M=>{let ne=M.source==="reported";return R.default.createElement("div",{key:M.id,onClick:()=>pe(M),title:ne?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b border-gray-100 cursor-pointer transition-colors ${!ne&&s?.id===M.id?"bg-red-50 border-l-4 border-l-red-500":"hover:bg-gray-50"}`},R.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},R.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(M.status)}`},M.status),R.default.createElement("div",{className:"flex items-center gap-2"},R.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${ne?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`},ne?"reported":"dashboard"),R.default.createElement("span",{className:"text-xs text-gray-400"},q(M.created_at||M.occurred_at)),!ne&&R.default.createElement(gc,{kind:"run",id:M.id,title:"Replay this run"}))),R.default.createElement("p",{className:"text-sm text-gray-700 truncate"},M.input_preview||M.input_prompt?.substring(0,60)||(ne?`${M.action_name||"execution"} \xB7 trace ${String(M.trace_id||"").slice(0,8)}`:"No input")),R.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs text-gray-400 flex-wrap gap-y-1"},M.model&&R.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},M.model),R.default.createElement("span",{className:T==="longest"?"text-gray-700 font-medium":void 0},L(M.duration_ms)),!!M.tokens&&R.default.createElement("span",{className:T==="tokens"?"text-gray-700 font-medium":void 0},M.tokens," tokens"),M.cost!=null&&R.default.createElement("span",{className:T==="cost"?"text-gray-700 font-medium":void 0,title:"Estimated from token counts at this model's published rates"},B(M.cost))))}),F&&R.default.createElement("button",{onClick:()=>j(M=>M+1),disabled:_,className:"w-full py-3 text-sm text-red-600 hover:bg-gray-50 transition-colors"},_?"Loading...":"Load More")):R.default.createElement("div",{className:"p-8 text-center text-gray-400"},R.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 text-gray-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},R.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})),R.default.createElement("p",null,"No conversations yet")))),R.default.createElement("div",{className:"flex-1 flex flex-col bg-gray-50"},R.default.createElement("div",{className:"px-4 py-2 bg-white border-b border-gray-100 flex items-center gap-1.5 text-xs text-gray-500"},R.default.createElement("button",{onClick:t,className:"hover:text-gray-900 hover:underline transition-colors"},e.name),R.default.createElement("span",{className:"text-gray-300"},"/"),p==="all"||s?R.default.createElement(R.default.Fragment,null,R.default.createElement("button",{onClick:re,className:"hover:text-gray-900 hover:underline transition-colors"},"Interactions"),R.default.createElement("span",{className:"text-gray-300"},"/"),p==="all"?u?R.default.createElement(R.default.Fragment,null,R.default.createElement("button",{onClick:()=>_e(null),className:"hover:text-gray-900 hover:underline transition-colors"},"Sessions"),R.default.createElement("span",{className:"text-gray-300"},"/"),R.default.createElement("span",{className:"text-gray-900 font-medium"},le)):R.default.createElement("span",{className:"text-gray-900 font-medium"},"Sessions"):R.default.createElement("span",{className:"text-gray-900 font-medium"},"Run #",s.id)):R.default.createElement("span",{className:"text-gray-900 font-medium"},"Interactions")),R.default.createElement("div",{className:"p-3 bg-white border-b border-gray-200 flex items-center justify-between"},R.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},R.default.createElement("button",{onClick:()=>de("run"),className:`px-3 py-1 text-sm rounded-md transition-colors ${p==="run"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Selected run"),R.default.createElement("button",{onClick:()=>de("all"),className:`px-3 py-1 text-sm rounded-md transition-colors ${p==="all"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Sessions")),p==="run"&&s&&R.default.createElement("span",{className:`px-3 py-1 rounded-full text-sm font-medium ${ee(s.status)}`},s.status)),p==="all"?R.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:M}=Z();return R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4 space-y-3"},R.default.createElement("div",{className:"flex items-center gap-3"},R.default.createElement(yn,{size:40}),R.default.createElement("div",null,R.default.createElement("h3",{className:"font-semibold text-gray-900"},e.name),R.default.createElement("p",{className:"text-xs text-gray-500"},u?`${le} \u2014 one persisted interaction stream`:"Sessions group this agent\u2019s runs into persisted interaction streams"))),R.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},R.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),R.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.runs)),R.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),R.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.runs?Math.round(M.completed/M.runs*100):0,"%")),R.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),R.default.createElement("p",{className:"text-lg font-bold text-gray-900"},L(Math.round(M.avgDuration)))),R.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),R.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.tokens.toLocaleString()))))})(),R.default.createElement(Xl,{agentId:e.id,embedded:!0,selectedSessionId:u?.id??null,onSelectSession:_e})):s?R.default.createElement(R.default.Fragment,null,R.default.createElement("div",{className:"p-4 bg-white border-b border-gray-200"},R.default.createElement("div",{className:"flex items-center space-x-3"},R.default.createElement(yn,{size:40}),R.default.createElement("div",null,R.default.createElement("h3",{className:"font-medium text-gray-900"},e.name," \u2014 Run #",s.id),R.default.createElement("p",{className:"text-xs text-gray-500"},new Date(s.created_at).toLocaleString())))),R.default.createElement("div",{ref:P,className:"flex-1 overflow-auto p-6"},R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 shadow-sm p-4"},d.length>0?R.default.createElement(Fi,{messages:d,darkMode:!1}):R.default.createElement(Fi,{darkMode:!1,messages:[{id:`run-${s.id}-input`,role:"user",content:s.input_prompt||s.input_preview,created_at:s.created_at},{id:`run-${s.id}-output`,role:"assistant",content:s.error_message||s.output||s.output_preview||"No response",created_at:s.completed_at||s.created_at}]}))),R.default.createElement("div",{className:"p-4 bg-white border-t border-gray-200"},R.default.createElement("div",{className:"flex items-center justify-center space-x-8 text-sm text-gray-500"},R.default.createElement("span",null,"Duration: ",L(s.duration_ms)),s.total_tokens&&R.default.createElement("span",null,"Tokens: ",s.total_tokens),s.input_tokens&&s.output_tokens&&R.default.createElement("span",null,"Input: ",s.input_tokens," / Output: ",s.output_tokens),s.trace_id&&R.default.createElement("a",{href:ct(`/traces?trace=${s.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${s.trace_id} \u2014 open in Traces`},"trace:",s.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:M,totals:ne}=Z();return M.length===0?R.default.createElement("div",{className:"flex-1 flex items-center justify-center"},R.default.createElement("div",{className:"text-center text-gray-400"},R.default.createElement(yn,{size:100}),R.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):R.default.createElement("div",{className:"flex-1 overflow-auto p-6 space-y-5"},R.default.createElement("div",{className:"flex items-center gap-3"},R.default.createElement(yn,{size:40}),R.default.createElement("div",null,R.default.createElement("h3",{className:"font-semibold text-gray-900"},"Agent Report"),R.default.createElement("p",{className:"text-xs text-gray-500"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),R.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),R.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ne.runs)),R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),R.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ne.runs?Math.round(ne.completed/ne.runs*100):0,"%")),R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),R.default.createElement("p",{className:"text-xl font-bold text-gray-900"},L(Math.round(ne.avgDuration)))),R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},R.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),R.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ne.tokens.toLocaleString()))),ne.models.length>0&&R.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},R.default.createElement("span",{className:"text-gray-500"},"Models used:"),ne.models.map(U=>R.default.createElement("span",{key:U,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},U))),a.length>0&&R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},R.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},R.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Sessions \u2014 grouped interaction streams")),R.default.createElement("div",{className:"divide-y divide-gray-100"},a.map(U=>R.default.createElement("div",{key:U.id,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer flex items-center justify-between gap-3",onClick:()=>_e(U),title:"Open this session's interaction stream"},R.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:U.display_name},R.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),R.default.createElement("span",{className:"text-sm text-gray-900 truncate"},U.agent?.name||U.agent_name),U.action_name&&R.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",U.action_name)),R.default.createElement("div",{className:"flex items-center gap-3 text-xs text-gray-400 flex-shrink-0"},R.default.createElement("span",null,U.message_count," messages"),R.default.createElement("span",null,(U.tokens?.total||0).toLocaleString()," tokens"),R.default.createElement("span",null,q(U.last_activity_at)),R.default.createElement(gc,{kind:"context",id:U.id,title:"Replay this conversation"})))))),R.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},R.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100 flex items-center justify-between"},R.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Interactions by instructions \xD7 model"),R.default.createElement("select",{value:S,onChange:U=>w(U.target.value),className:"text-xs border border-gray-200 rounded px-2 py-1 text-gray-600"},R.default.createElement("option",{value:"recent"},"Most recent"),R.default.createElement("option",{value:"longest"},"Longest interactions"))),R.default.createElement("div",{className:"divide-y divide-gray-100"},M.map(U=>R.default.createElement("div",{key:U.key},R.default.createElement("div",{className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>k(oe=>({...oe,[U.key]:!oe[U.key]})),title:"Show this configuration's runs"},R.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},R.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},U.model||"unknown model"),R.default.createElement("span",{className:"text-xs text-gray-400 font-mono",title:U.instructionsDigest?`sha:${U.instructionsDigest}`:void 0},"instructions"," ",U.instructionsDigest?[U.instructionsVersion,U.instructionsCodename||U.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),U.instructionsPreview&&R.default.createElement("p",{className:"text-xs text-gray-500 mt-1 truncate"},U.instructionsPreview),R.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs text-gray-400 flex-wrap gap-y-1"},R.default.createElement("span",null,U.count," run",U.count>1?"s":""),R.default.createElement("span",{className:U.failed>0?"text-red-500":"text-green-600"},U.count?Math.round(U.completed/U.count*100):0,"% success"),R.default.createElement("span",null,"avg ",L(Math.round(U.avgDuration))),R.default.createElement("span",null,"avg ",Math.round(U.avgTokens).toLocaleString()," tokens"),R.default.createElement("span",null,"last ",q(U.latest.created_at)))),A[U.key]&&R.default.createElement("div",{className:"bg-gray-50 divide-y divide-gray-100 border-t border-gray-100"},U.sortedRuns.map(oe=>R.default.createElement("div",{key:oe.id,className:"px-6 py-2 hover:bg-gray-100 cursor-pointer",onClick:()=>ue(oe.id),title:"Open this run's interaction"},R.default.createElement("p",{className:"text-xs text-gray-700 truncate"},oe.input_preview||"No input"),R.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] text-gray-400"},R.default.createElement("span",{className:oe.status==="failed"?"text-red-500":""},oe.status),R.default.createElement("span",null,L(oe.duration_ms)),oe.tokens&&R.default.createElement("span",null,oe.tokens.toLocaleString()," tokens"),R.default.createElement("span",null,q(oe.created_at)))))))))))})()))}var Qe=V(Y());var v1e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function AM({onUseTemplate:e,onClose:t}){let[r,n]=(0,Qe.useState)([]),[o,a]=(0,Qe.useState)([]),[i,s]=(0,Qe.useState)(""),[l,u]=(0,Qe.useState)(null),[c,d]=(0,Qe.useState)(!0),[f,p]=(0,Qe.useState)(!1),[m,y]=(0,Qe.useState)(null);(0,Qe.useEffect)(()=>{b()},[i]);let b=async()=>{d(!0);try{let g=new URLSearchParams;i&&g.append("category",i);let x=await(await fetch(`/api/templates?${g}`)).json();n(x.templates),a(x.categories)}catch(g){console.error("Failed to load templates:",g)}finally{d(!1)}},h=async g=>{p(!0),y(null);try{let v=await fetch(`/api/templates/${g.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name})});if(v.ok){let x=await v.json();e(x.agent)}else{let x=`Could not create the agent (HTTP ${v.status})`;try{let S=await v.json(),w=S.errors||S.error;w&&(x=Array.isArray(w)?w.join(", "):String(w))}catch{}y(x)}}catch(v){console.error("Failed to create agent from template:",v),y("Could not create the agent \u2014 check your connection and try again.")}finally{p(!1)}};return Qe.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},Qe.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},Qe.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},Qe.default.createElement("div",null,Qe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),Qe.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),Qe.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},Qe.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Qe.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),Qe.default.createElement("div",{className:"flex-1 flex overflow-hidden"},Qe.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},Qe.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),Qe.default.createElement("div",{className:"space-y-1"},Qe.default.createElement("button",{onClick:()=>s(""),className:`w-full text-left px-3 py-2 rounded-lg text-sm transition-colors ${i?"text-gray-600 hover:bg-gray-50":"bg-red-50 text-red-600"}`},"All Templates"),o.map(g=>Qe.default.createElement("button",{key:g,onClick:()=>s(g),className:`w-full text-left px-3 py-2 rounded-lg text-sm flex items-center space-x-2 transition-colors ${i===g?"bg-red-50 text-red-600":"text-gray-600 hover:bg-gray-50"}`},Qe.default.createElement("span",null,v1e[g]||"\u{1F4E6}"),Qe.default.createElement("span",{className:"capitalize"},g))))),Qe.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?Qe.default.createElement("div",{className:"flex items-center justify-center h-full"},Qe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?Qe.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(g=>Qe.default.createElement("div",{key:g.id,onClick:()=>u(g),className:`bg-white rounded-xl border-2 p-4 cursor-pointer transition-all hover:shadow-lg ${l?.id===g.id?"border-red-500 ring-2 ring-red-100":"border-gray-200 hover:border-gray-300"}`},Qe.default.createElement("div",{className:"flex items-start space-x-3"},Qe.default.createElement("div",{className:"flex-shrink-0"},Qe.default.createElement(yn,{size:60})),Qe.default.createElement("div",{className:"flex-1 min-w-0"},Qe.default.createElement("div",{className:"flex items-center space-x-2"},Qe.default.createElement("span",{className:"text-lg"},g.icon),Qe.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},g.name)),Qe.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},g.description),Qe.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},Qe.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},g.category),g.featured&&Qe.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):Qe.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&Qe.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},Qe.default.createElement("div",{className:"flex justify-center mb-4"},Qe.default.createElement(yn,{size:120})),Qe.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),Qe.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),Qe.default.createElement("div",{className:"mt-6 space-y-4"},Qe.default.createElement("div",null,Qe.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),Qe.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&Qe.default.createElement("div",null,Qe.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),Qe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(g=>Qe.default.createElement("span",{key:g,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},g)))),Qe.default.createElement("div",null,Qe.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),Qe.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),Qe.default.createElement("button",{onClick:()=>h(l),disabled:f,className:"w-full mt-6 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50"},f?"Creating...":"Use This Template"),m&&Qe.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var tt=V(Y());function EM({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={}}){let{darkMode:l}=lt(),[u,c]=(0,tt.useState)(!1),d=(0,tt.useRef)(null);(0,tt.useEffect)(()=>{function g(v){d.current&&!d.current.contains(v.target)&&c(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);let f=o?.name||"My Workspace",p=a?.name||a?.email?.split("@")[0]||"User",m={agentCount:r,pendingInputCount:n},y=g=>{let v=g.badge?m[g.badge]:void 0;return g.badgeTone==="attention"&&!v?void 0:v},b=_q(s).map(g=>({...g,items:g.items.map(v=>({id:v.view,label:v.label,icon:v.glyph??yo.nav[v.icon],badge:y(v),badgeTone:v.badgeTone,badgeTitle:v.badgeTitle}))})),h=({item:g})=>tt.default.createElement("button",{onClick:()=>t(g.id),className:`w-full flex items-center justify-between py-3 rounded-lg text-left transition-colors ${g.indent?"pl-10 pr-4":"px-4"}`,style:{backgroundColor:e===g.id?l?"rgba(239, 68, 68, 0.15)":"#fef2f2":"transparent",color:e===g.id?"#ef4444":l?"#d1d5db":"#374151"},onMouseEnter:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor=l?"#252525":"#f3f4f6")},onMouseLeave:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor="transparent")}},tt.default.createElement("div",{className:"flex items-center space-x-3"},tt.default.createElement("span",{style:{fontFamily:vt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},g.icon),tt.default.createElement("span",{className:"font-medium"},g.label)),g.badge!==void 0&&g.badgeTone==="attention"&&tt.default.createElement("span",{"data-testid":`nav-badge-${g.id}`,className:"px-2 py-0.5 text-xs rounded-full font-semibold",title:`${g.badge} ${g.badgeTitle||""}`.trim(),"aria-label":`${g.badge} ${g.badgeTitle||""}`.trim(),style:{backgroundColor:"var(--color-warning-soft)",color:"var(--color-warning-text)"}},g.badge),g.badge!==void 0&&g.badgeTone!=="attention"&&tt.default.createElement("span",{className:"px-2 py-0.5 text-xs rounded-full",style:{backgroundColor:e===g.id?"#fee2e2":l?"#2a2a2a":"#f3f4f6",color:e===g.id?"#ef4444":l?"#d1d5db":"#4b5563"}},g.badge));return tt.default.createElement("aside",{className:"w-64 border-r flex flex-col",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:l?"#2a2a2a":"#e5e7eb"},ref:d},tt.default.createElement("button",{onClick:()=>c(!u),className:"w-full flex items-center justify-between px-2 py-2 rounded-lg transition-colors",style:{backgroundColor:u?l?"#252525":"#f3f4f6":"transparent"}},tt.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},tt.default.createElement(yn,{size:28}),tt.default.createElement("span",{className:`font-semibold truncate ${l?"text-white":"text-gray-900"}`},f)),tt.default.createElement("svg",{className:`w-4 h-4 flex-shrink-0 transition-transform ${u?"rotate-180":""}`,style:{color:l?"#9ca3af":"#6b7280"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),u&&tt.default.createElement("div",{className:"absolute left-4 right-4 top-14 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:"flex items-center space-x-3"},tt.default.createElement(yn,{size:32}),tt.default.createElement("div",{className:"min-w-0"},tt.default.createElement("div",{className:`font-medium truncate ${l?"text-white":"text-gray-900"}`},f)))),tt.default.createElement("div",{className:"py-1"},tt.default.createElement("button",{onClick:()=>{t("settings"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},tt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),tt.default.createElement("span",null,"Settings")),tt.default.createElement("button",{onClick:()=>{t("organization"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},tt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"})),tt.default.createElement("span",null,"Organization"))),tt.default.createElement("div",{className:"border-t py-1",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${l?"text-gray-300":"text-gray-700"}`},tt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},tt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})),tt.default.createElement("span",{className:"text-sm"},p))))),tt.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},b.map(g=>{let v=tt.default.createElement("div",{className:"space-y-1"},g.items.map(x=>tt.default.createElement(h,{key:x.id,item:x})));return g.label?tt.default.createElement("div",{key:g.id,className:"pt-4"},tt.default.createElement("div",{className:"px-4 pb-2"},tt.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${l?"text-gray-500":"text-gray-400"}`},g.label)),v):tt.default.createElement(tt.default.Fragment,{key:g.id},v)})),tt.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${l?"text-gray-500":"text-gray-400"}`},"Resources"),tt.default.createElement("div",{className:"space-y-2"},tt.default.createElement("a",{href:"https://docs.activeagents.ai",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},tt.default.createElement("span",{style:{fontFamily:vt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},yo.nav.docs),tt.default.createElement("span",null,"Documentation")),tt.default.createElement("a",{href:"https://github.com/activeagents/activeagent",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},tt.default.createElement("span",{style:{fontFamily:vt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},yo.nav.github),tt.default.createElement("span",null,"GitHub")))),tt.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},tt.default.createElement("div",{className:`text-xs ${l?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:"")))}var lr=V(Y());function NM({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=lt(),[o,a]=(0,lr.useState)(!1),i=(0,lr.useRef)(null);(0,lr.useEffect)(()=>{function d(f){i.current&&!i.current.contains(f.target)&&a(!1)}return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[]);let s=window.ACTIVE_AGENT_DASHBOARD?.meta?.signOutPath,l=()=>{if(!s)return;let d=document.querySelector('meta[name="csrf-token"]')?.content,f=document.createElement("form");f.method="POST",f.action=s;let p=document.createElement("input");p.type="hidden",p.name="_method",p.value="delete",f.appendChild(p);let m=document.createElement("input");m.type="hidden",m.name="authenticity_token",m.value=d,f.appendChild(m),document.body.appendChild(f),f.submit()},u=e?.name||e?.email?.split("@")[0]||"User",c=u.charAt(0).toUpperCase();return lr.default.createElement("header",{className:"h-16 border-b flex items-center justify-between px-6",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},lr.default.createElement("div",{className:"flex items-center space-x-4"}),lr.default.createElement("div",{className:"flex items-center space-x-4"},lr.default.createElement("button",{onClick:n,className:"p-2 rounded-lg transition-colors",style:{backgroundColor:r?"#252525":"#f3f4f6",color:r?"#fbbf24":"#4b5563"},title:r?"Switch to light mode":"Switch to dark mode"},r?lr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},lr.default.createElement("path",{fillRule:"evenodd",d:"M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z",clipRule:"evenodd"})):lr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},lr.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),lr.default.createElement("div",{className:`flex items-center space-x-2 text-sm ${r?"text-gray-400":"text-gray-500"}`},lr.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),lr.default.createElement("span",null,"Connected")),lr.default.createElement("div",{className:"relative",ref:i},lr.default.createElement("button",{onClick:()=>a(!o),className:"flex items-center space-x-2 p-1 rounded-lg transition-colors",style:{backgroundColor:o?r?"#252525":"#f3f4f6":"transparent"}},lr.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},lr.default.createElement("span",{className:"text-red-600 font-medium text-sm"},c))),o&&lr.default.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},lr.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},lr.default.createElement("div",{className:"flex items-center space-x-3"},lr.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},lr.default.createElement("span",{className:"text-red-600 font-medium"},c)),lr.default.createElement("div",null,lr.default.createElement("div",{className:`font-medium ${r?"text-white":"text-gray-900"}`},u),lr.default.createElement("div",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},e?.email)))),s&&lr.default.createElement("div",{className:"py-1"},lr.default.createElement("button",{onClick:l,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${r?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},lr.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lr.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"})),lr.default.createElement("span",null,"Sign out")))))))}var Ie=V(Y());var nt=V(Y());var TM=150,x1e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),b1e=e=>e.length?x1e(e)/e.length:0,ms=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),OM=e=>{if(!(e>0))return 1;let t=Math.pow(10,Math.floor(Math.log10(e))),r=e/t;return(r<=1?1:r<=2?2:r<=2.5?2.5:r<=5?5:10)*t},ff=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),w1e=4,Ag=e=>Math.max(w1e,OM(e)),hY=(e,t=2,r=6)=>{let n=e/4;for(let o=t;oMath.abs(n*i-Number((n*i).toFixed(o)))<=n*.1))return o;return r},S1e=5.5,k1e=12,_1e=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*S1e+k1e,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},C1e=typeof window>"u"?nt.useEffect:nt.useLayoutEffect,A1e=e=>{let[t,r]=(0,nt.useState)(0);return C1e(()=>{let n=e.current;if(!n)return;let o=()=>r(n.clientWidth);if(o(),typeof ResizeObserver>"u")return window.addEventListener("resize",o),()=>window.removeEventListener("resize",o);let a=new ResizeObserver(o);return a.observe(n),()=>a.disconnect()},[e]),t},pf=(e,t)=>{let r=e.length,n=[];return e.forEach((o,a)=>{if(o==null||Number.isNaN(Number(o)))return;let i=r>1?a/(r-1)*100:50,s=100-Math.min(100,Math.max(0,Number(o)/t*100));n.push(`${i.toFixed(2)},${s.toFixed(2)}`)}),n.join(" ")},o2=(e,t)=>{let r=pf(e,t);return r?`0,100 ${r} 100,100`:""},yY=(e,t=24)=>{let r=e.length;if(!r)return"";let n=r/t,o=Array.from({length:t},(s,l)=>{let u=Math.floor(l*n),c=Math.max(u+1,Math.floor((l+1)*n));return b1e(e.slice(u,c).filter(d=>d!=null))}),a=Math.max(...o),i=Math.min(...o);return o.map((s,l)=>`${(l/(t-1)*100).toFixed(1)},${(26-(a===i?.5:(s-i)/(a-i))*24).toFixed(1)}`).join(" ")},k0=(e,t,r)=>{let n=e.length?e[0].data.length:0;return Array.from({length:n},(o,a)=>({title:r(a),segs:e.map(i=>({h:(Number(i.data[a])||0)/t*100,color:i.color}))}))};function vY({label:e,value:t,unit:r,sub:n,delta:o,deltaColor:a,deltaSub:i,spark:s,sparkColor:l}){return nt.default.createElement(He,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8}},nt.default.createElement(Ve,{size:11,spacing:"0.05em"},e),nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,fontWeight:600,color:a,whiteSpace:"nowrap"}},o)),nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},nt.default.createElement("span",{style:{fontFamily:X,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?nt.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},r):null),nt.default.createElement("div",{title:n,style:{fontFamily:X,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),nt.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},nt.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},nt.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),nt.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function xY({title:e,sub:t,value:r,valueColor:n="var(--color-text-primary)",legend:o=[],ticks:a=[],buckets:i=[],lines:s=[],areas:l=[],markers:u=[],xLabels:c=[],height:d=TM}){let f=(0,nt.useRef)(null),p=A1e(f),m="1px dashed var(--color-text-secondary)";return nt.default.createElement(He,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},nt.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),nt.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)"}},t),nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),nt.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(y=>nt.default.createElement("span",{key:y.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:X,fontSize:10,color:"var(--color-text-secondary)"}},nt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:y.color,flexShrink:0}}),y.label))),nt.default.createElement("div",{ref:f,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(y=>nt.default.createElement("div",{key:y.top,style:{position:"absolute",left:0,right:0,top:`${y.top}%`,borderTop:"1px solid var(--color-border-light)"}},nt.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:X,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},y.label))),i.length>0&&nt.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((y,b)=>nt.default.createElement("div",{key:b,title:y.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},y.segs.map((h,g)=>nt.default.createElement("div",{key:g,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&nt.default.createElement("svg",{viewBox:"0 0 100 100",preserveAspectRatio:"none","aria-hidden":"true",style:{position:"absolute",inset:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"}},l.map((y,b)=>nt.default.createElement("polygon",{key:b,points:y.points,fill:y.color,opacity:"0.16"})),s.map((y,b)=>nt.default.createElement("polyline",{key:b,points:y.points,fill:"none",stroke:y.color,strokeWidth:y.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((y,b)=>{let h=_1e(y,p),g=`${Number(y.left).toFixed(2)}%`;return nt.default.createElement("div",{key:b,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:g,borderRight:m}:{left:g,right:0,borderLeft:m}}},nt.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:X,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},y.label))})),nt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:X,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,b)=>nt.default.createElement("span",{key:b},y))))}function Eg({label:e,qualifier:t,meta:r,children:n}){return nt.default.createElement(He,{padding:0,style:{overflow:"hidden"}},nt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},nt.default.createElement(Ve,null,e),t?nt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function PM({template:e,columns:t}){return nt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:X,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},nt.default.createElement("span",null),t.map(r=>nt.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function a2({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return nt.default.createElement("div",{role:i?"button":void 0,tabIndex:i?0:void 0,"aria-pressed":i?t:void 0,onClick:r,onKeyDown:i?l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),r(l))}:void 0,title:n,className:i?"hover:bg-[var(--color-hover)]":void 0,style:{display:"grid",gridTemplateColumns:e,gap:8,alignItems:"center",padding:o,borderTop:"1px solid var(--color-border-light)",cursor:i?"pointer":"default",background:t?"var(--color-muted)":void 0}},a)}function MM({children:e,padding:t="8px 14px"}){return nt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function _0({children:e}){return nt.default.createElement("div",{style:{padding:"12px 14px",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},e)}function IM({color:e}){return nt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function DM({pct:e,color:t}){return nt.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},nt.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function jM({pct:e,color:t,width:r=70}){return nt.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},nt.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function Vi({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return nt.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var kY=6e4,E1e=1180,Tg={"1h":{n:60,seconds:60,bucket:"1 min",prev:"vs previous hour",title:"last hour"},"24h":{n:96,seconds:900,bucket:"15 min",prev:"vs previous 24h",title:"last 24 hours"},"7d":{n:84,seconds:7200,bucket:"2 h",prev:"vs previous 7 days",title:"last 7 days"}},N1e=Object.keys(Tg).map(e=>({value:e,label:e})),LM="24h",Ng=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],C0=[{type:"429 rate limit",short:"429",color:"var(--color-error)"},{type:"timeout",short:"timeout",color:"var(--color-warning)"},{type:"tool error",short:"tool error",color:"var(--span-tool)"},{type:"provider 5xx",short:"5xx",color:"var(--color-token-out)"},{type:"other",short:"error",color:"var(--color-text-muted)"}],bY=e=>C0.find(t=>t.type===e)?.color||"var(--color-text-muted)",T1e=3,s2="var(--color-text-primary)",O1e={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},P1e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],$M=e=>String(e).padStart(2,"0"),Et=e=>e==null||Number.isNaN(Number(e))?0:Number(e),M1e=e=>e.reduce((t,r)=>t+Et(r),0),wY=e=>`${Et(e).toFixed(1)}%`,i2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,I1e=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,D1e=(e,t)=>{let r=Array.isArray(e)?[...e]:[];return t.forEach(n=>{n.name&&!r.some(o=>o.name===n.name)&&r.push(n)}),r},j1e=e=>{let t=String(e.label||"incident"),r=C0.find(n=>t.startsWith(n.type));return r&&(t=`${r.short}${t.slice(r.type.length)}`),e.agent&&!t.includes(e.agent)?`${t} \xB7 ${e.agent}`:t},$1e=e=>{let t=Et(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},SY=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},L1e=(e,t,r=Date.now())=>{let n=Math.max(1,Et(t))*1e3,o=Math.max(1,Math.round(Et(e)*6e4/n)),a=Math.floor(r/n)*n;return Array.from({length:o},(i,s)=>({ts:new Date(a-(o-1-s)*n).toISOString()}))},z1e=(e,t)=>{let r=e.summary||{},n=Tg[e.range]||Tg[t]||Tg[LM],o=Et(e.bucket_seconds)||n.seconds,a=Et(e.window_minutes)||(e.window_hours?Et(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:L1e(a,o),s=Et(e.totals?.requests??r.total_requests),l=Et(e.totals?.cost??r.total_cost),u={requests:s,requests_per_minute:a?s/a:0,p50_ms:null,p95_ms:null,p99_ms:null,errors:Et(r.errors),error_rate:Et(r.error_rate),tokens_in:Et(r.tokens_input),tokens_out:Et(r.tokens_output),tokens:Et(r.tokens_used),cost:l,cost_per_request:s?l/s:0,tool_calls:0,tool_errors:0,tool_error_rate:0,...e.totals||{}},c={requests_pct:r.requests_change??null,p50_pct:r.latency_change??null,error_rate_pt:null,tokens_pct:null,cost_pct:null,...e.deltas||{}},d=Array.isArray(e.agents)?e.agents:(e.by_agent||[]).map(p=>({name:p.name,requests:Et(p.requests),share_pct:s?Et(p.requests)/s*100:0,p95_ms:null,error_rate:p.requests?Et(p.errors)/Et(p.requests)*100:0,cost:Et(p.cost),tokens:Et(p.tokens)})),f=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:C0.map(p=>({type:p.type,count:0}));return{range:e.range||t,bucketSeconds:o,windowMinutes:a,agent:e.agent||null,environment:e.environment||null,totals:u,deltas:c,series:i,agents:d,models:Array.isArray(e.models)?e.models:[],actions:Array.isArray(e.actions)?e.actions:[],tools:Array.isArray(e.tools)?e.tools:[],errorsByType:f,markers:Array.isArray(e.markers)?e.markers:[]}},_Y=e=>{let t=Tg[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:$1e(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},B1e=e=>{let[t,r]=(0,Ie.useState)(()=>typeof window<"u"&&window.innerWidth{let n=window.matchMedia(`(max-width: ${e-1}px)`),o=()=>r(n.matches);return o(),n.addEventListener("change",o),()=>n.removeEventListener("change",o)},[e]),t};function zM(){let[e,t]=(0,Ie.useState)(LM),[r,n]=(0,Ie.useState)(""),[o,a]=(0,Ie.useState)(null),[i,s]=(0,Ie.useState)(!0),[l,u]=(0,Ie.useState)(null),[c,d]=(0,Ie.useState)(!1),f=(0,Ie.useRef)(0),p=B1e(E1e),m=(0,Ie.useRef)(null),y=(0,Ie.useCallback)(async()=>{let S=++f.current;try{let w=new URLSearchParams({range:e});r&&w.set("agent",r);let[A,k]=await Promise.all([SY(w),r?SY(new URLSearchParams({range:e})).catch(()=>null):null]);if(S!==f.current)return;let _=r?k?.agents:A.agents;Array.isArray(_)&&(m.current=_),a({data:A,ranking:Array.isArray(_)?_:m.current}),u(null)}catch(w){if(S!==f.current)return;u(w.message)}finally{S===f.current&&s(!1)}},[e,r]);(0,Ie.useEffect)(()=>{let S=!1;d(!0),y().finally(()=>{S||d(!1)});let w=setInterval(y,kY);return()=>{S=!0,clearInterval(w)}},[y]);let b=(0,Ie.useMemo)(()=>o?z1e(o.data,e):null,[o,e]),h=(0,Ie.useMemo)(()=>b?b.agent?D1e(o.ranking,b.agents):b.agents:[],[b,o]),g=(0,Ie.useMemo)(()=>h.map(S=>S.name).filter(Boolean),[h]),v=(0,Ie.useMemo)(()=>{let S=Object.fromEntries(g.map((A,k)=>[A,Ng[k%Ng.length]])),w=g.length;return(b?b.agents:[]).forEach(A=>{A.name&&!S[A.name]&&(S[A.name]=Ng[w++%Ng.length])}),A=>S[A]||Ng[0]},[g,b]),x=(0,Ie.useMemo)(()=>b?U1e(b,v):null,[b,v]);return i?Ie.default.createElement("div",{className:"flex items-center justify-center h-64"},Ie.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!b?Ie.default.createElement("div",null,Ie.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:s2}},"Metrics"),Ie.default.createElement("div",{style:{marginTop:16,padding:"12px 16px",background:"var(--color-error-soft)",borderRadius:8,color:"var(--color-error-text)",fontSize:14}},"Failed to load metrics",l?`: ${l}`:"")):Ie.default.createElement(F1e,{m:b,view:x,railAgents:h,range:Tg[e]?e:LM,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:p,pending:c,onRange:t,onAgent:n})}function F1e({m:e,view:t,railAgents:r=e.agents,range:n,agent:o,agentOptions:a,colorFor:i,narrow:s,pending:l=!1,onRange:u,onAgent:c}){let d=_Y(e),f=e.totals.requests===0,p=m=>c(o===m?"":m);return Ie.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:s2,fontSize:13}},Ie.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},Ie.default.createElement("div",{style:{flex:1,minWidth:240}},Ie.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),Ie.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Requests, latency, errors, tokens and cost across every agent \u2014 ",d.title,o?` \xB7 ${o}`:"")),Ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Ie.default.createElement("select",{value:o,onChange:m=>c(m.target.value),"aria-label":"Filter by agent",style:{padding:"6px 10px",borderRadius:8,fontSize:13,fontFamily:"inherit",border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:s2,cursor:"pointer"}},Ie.default.createElement("option",{value:""},"All agents"),a.map(m=>Ie.default.createElement("option",{key:m,value:m},m))),e.environment&&Ie.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:X,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},Ie.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),Ie.default.createElement(Ui,{options:N1e,value:n,onChange:u}),Ie.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${kY/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},Ie.default.createElement("span",{style:{width:7,height:7,borderRadius:"50%",background:l?"var(--color-text-muted)":"var(--color-success)"}}),"live \xB7 ",d.bucket," buckets"))),f?Ie.default.createElement(He,{style:{padding:"40px 24px",textAlign:"center",fontSize:14,color:"var(--color-text-secondary)"}},"No traffic yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace",Ie.default.createElement("div",{style:{marginTop:8,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):Ie.default.createElement(Ie.default.Fragment,null,Ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>Ie.default.createElement(vY,{key:m.label,...m,deltaSub:d.prev}))),Ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:s?"minmax(0, 1fr)":"minmax(0, 2.3fr) minmax(300px, 1fr)",gap:16,alignItems:"start",opacity:l?.6:1}},Ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>Ie.default.createElement(xY,{key:m.title,...m,xLabels:t.xLabels,height:TM}))),Ie.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},Ie.default.createElement(Eg,{label:"Agents",qualifier:"by requests \xB7 click to filter"},Ie.default.createElement(PM,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&Ie.default.createElement(_0,null,"no agents in this window"),r.map(m=>Ie.default.createElement(a2,{key:m.name,template:"minmax(0, 1fr) 44px 44px 40px 52px",active:o===m.name,onClick:()=>p(m.name),title:o===m.name?"Show all agents":`Filter to ${m.name}`},Ie.default.createElement("div",{style:{minWidth:0}},Ie.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},Ie.default.createElement(IM,{color:i(m.name)}),Ie.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),Ie.default.createElement(DM,{pct:m.share_pct,color:i(m.name)})),Ie.default.createElement(Vi,null,gn(m.requests)),Ie.default.createElement(Vi,{color:"var(--color-text-secondary)"},so(m.p95_ms)),Ie.default.createElement(Vi,{color:Et(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},wY(m.error_rate)),Ie.default.createElement(Vi,null,Uv(m.cost))))),Ie.default.createElement(Eg,{label:"Models",qualifier:"by tokens"},e.models.length===0&&Ie.default.createElement(_0,null,"no model usage in this window"),e.models.map((m,y)=>Ie.default.createElement(a2,{key:`${m.model}-${m.provider}-${y}`,template:"minmax(0, 1fr) 52px 56px"},Ie.default.createElement("div",{style:{minWidth:0}},Ie.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},Ie.default.createElement("span",{style:{fontFamily:X,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&Ie.default.createElement("span",{style:{fontFamily:X,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),Ie.default.createElement(DM,{pct:m.share_pct,color:"var(--color-token-in)"})),Ie.default.createElement(Vi,null,gn(m.tokens)),Ie.default.createElement(Vi,{color:"var(--color-text-secondary)"},Uv(m.cost))))),Ie.default.createElement(Eg,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&Ie.default.createElement(_0,null,"no actions in this window"),e.actions.map(m=>Ie.default.createElement(MM,{key:m.name},Ie.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:X,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ie.default.createElement(jM,{pct:t.slowestP95?Et(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),Ie.default.createElement(Vi,{weight:600,width:40},so(m.p95_ms))))),Ie.default.createElement(Eg,{label:"Tools",qualifier:"by calls"},Ie.default.createElement(PM,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&Ie.default.createElement(_0,null,"no tool calls in this window"),e.tools.map(m=>Ie.default.createElement(a2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},Ie.default.createElement("span",{title:m.name,style:{fontFamily:X,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ie.default.createElement(Vi,null,gn(m.calls)),Ie.default.createElement(Vi,{color:"var(--color-text-secondary)"},so(m.avg_ms)),Ie.default.createElement(Vi,{color:Et(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},wY(m.error_rate))))),Ie.default.createElement(Eg,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>Ie.default.createElement(MM,{key:m.type},Ie.default.createElement(IM,{color:bY(m.type)}),Ie.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),Ie.default.createElement(jM,{pct:t.errorTotal?Et(m.count)/t.errorTotal*100:0,color:bY(m.type)}),Ie.default.createElement(Vi,{weight:600,width:32},Math.round(Et(m.count))))))))))}function U1e(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=_Y(e),s=r.map(U=>new Date(U.ts)),l=e.windowMinutes>=2880,u=U=>Number.isNaN(U.getTime())?"":l?`${P1e[U.getDay()]} ${$M(U.getHours())}h`:`${$M(U.getHours())}:${$M(U.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(U=>U===6?"now":u(s[Math.round(U*(a-1)/6)])):[],d=U=>r.map(oe=>Et(oe[U])),f=d("requests"),p=d("errors"),m=d("tokens_in"),y=d("tokens_out"),b=d("cost"),h=d("tool_calls"),g=d("tool_errors"),v=U=>r.map(oe=>oe[U]==null?null:Et(oe[U])),x=v("p50_ms"),S=v("p95_ms"),w=v("p99_ms"),A=r.map(U=>U.requests_by_agent||{}),k=e.agents.map(U=>U.name).filter(Boolean);A.forEach(U=>Object.keys(U).forEach(oe=>{k.includes(oe)||k.push(oe)}));let _=k.length?k.map(U=>({label:U,color:t(U),data:A.map(oe=>Et(oe[U]))})):[{label:"requests",color:Ng[0],data:f}],C=C0.map(U=>({label:U.type,color:U.color,data:r.map(oe=>Et((oe.errors_by_type||{})[U.type]))})),E=(Et(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,j=(U,oe)=>{if(!U||a<2||!E)return null;let ve=new Date(U.ts).getTime();if(Number.isNaN(ve))return null;let Ht=Math.min(a-1,Math.max(0,Math.floor((ve-s[0].getTime())/E)))/(a-1);return{left:Ht*100,label:oe,flip:Ht>.55}},F=e.markers.filter(U=>U.kind==="deploy").sort((U,oe)=>new Date(U.ts)-new Date(oe.ts)).slice(-T1e).map(U=>j(U,U.label)).filter(Boolean),D=e.markers.find(U=>U.kind==="incident"),z=D?j(D,j1e(D)):null,N=z?[z]:[],O=Ag(ms(f)*1.1),$=Ag(ms(p)*1.15),T=Ag(Math.max(ms(w),ms(S),ms(x))*1.05),I=Ag(Math.max(ms(m),ms(y))*1.1),P=OM(ms(b)*1.1),H=hY(P),Q=Ag(ms(h)*1.1),K=Et(n.requests),ue=Et(n.requests_per_minute),pe=Et(n.errors),re=Et(n.error_rate),_e=Et(n.tokens)||Et(n.tokens_in)+Et(n.tokens_out),de=Et(n.cost),le=n.cost_per_request!=null?Et(n.cost_per_request):K?de/K:0,Z=Et(n.tool_calls),ee=n.tool_error_rate!=null?Et(n.tool_error_rate):Z?Et(n.tool_errors)/Z*100:0,L=Et(e.errorsByType.find(U=>U.type===C0[0].type)?.count),B=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${gn(K)} \xB7 ${ue.toFixed(1)}/min`,legend:_.map(U=>({label:U.label,color:U.color})),ticks:ff(O,gn),buckets:k0(_,O,U=>`${u(s[U])} \xB7 ${Math.round(f[U])} req`),markers:F},{title:"Latency",sub:"generation percentiles",value:`p50 ${so(n.p50_ms)}`,legend:[{label:`p50 ${so(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${so(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${so(n.p99_ms)}`,color:"var(--color-error)"}],ticks:ff(T,I1e),lines:[{points:pf(w,T),color:"var(--color-error)",width:1.5},{points:pf(S,T),color:"var(--color-warning)",width:1.5},{points:pf(x,T),color:"var(--color-token-in)",width:2}],areas:[{points:o2(x,T),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${re.toFixed(2)}% \xB7 ${i2(Math.round(pe),"error")}`,valueColor:re>1?"var(--color-error)":s2,legend:C.map(U=>({label:U.label,color:U.color})),ticks:ff($,U=>String(Math.round(U))),buckets:k0(C,$,U=>`${u(s[U])} \xB7 ${i2(Math.round(p[U]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${gn(_e)} \xB7 in ${gn(n.tokens_in)} / out ${gn(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:ff(I,gn),lines:[{points:pf(m,I),color:"var(--color-token-in)",width:1.5},{points:pf(y,I),color:"var(--color-token-out)",width:1.5}],areas:[{points:o2(m,I),color:"var(--color-token-in)"},{points:o2(y,I),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${Uv(de)} \xB7 ${Wv(le)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:ff(P,U=>Wv(U,H)),buckets:k0([{color:"var(--color-text-secondary)",data:b}],P,U=>`${u(s[U])} \xB7 ${Wv(b[U],H)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${gn(Z)} \xB7 ${ee.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:ff(Q,gn),buckets:k0([{color:"var(--span-tool)",data:h.map((U,oe)=>Math.max(0,U-g[oe]))},{color:"var(--color-error)",data:g}],Q,U=>`${u(s[U])} \xB7 ${i2(Math.round(h[U]),"call")}`)}],q=(U,oe,ve)=>{let Ze=U==null?null:Et(U);return Ze==null||Ze===0?"muted":oe&&oe(Ze)?"success":ve&&ve(Ze)?"error":"muted"},M=(U,oe,ve,Ze,Ht,Mt,fe,Xe)=>({label:U,value:oe,unit:ve,sub:Ze,delta:Ht,deltaColor:O1e[Mt],spark:yY(fe),sparkColor:Xe});return{signals:[M("Requests",gn(K),"",`${ue.toFixed(1)} req/min`,lg(o.requests_pct),q(o.requests_pct,U=>U>0,null),f,"var(--color-token-in)"),M("Latency",so(n.p50_ms),"p50",`p95 ${so(n.p95_ms)} \xB7 p99 ${so(n.p99_ms)}`,lg(o.p50_pct),q(o.p50_pct,U=>U<0,U=>U>0),x,"var(--color-token-in)"),M("Error rate",re.toFixed(2),"%",`${i2(Math.round(pe),"error")} \xB7 ${Math.round(L)} rate-limited`,lg(o.error_rate_pt," pt",1),q(o.error_rate_pt,U=>U<0,U=>U>0),p,"var(--color-error)"),M("Tokens",gn(_e),"",`in ${gn(n.tokens_in)} \xB7 out ${gn(n.tokens_out)}`,lg(o.tokens_pct),"muted",m.map((U,oe)=>U+y[oe]),"var(--color-token-in)"),M("Cost",Uv(de),"",`${Wv(le)} per request`,lg(o.cost_pct),"muted",b,"var(--color-text-secondary)")],panels:B,xLabels:c,slowestP95:ms(e.actions.map(U=>U.p95_ms)),errorTotal:M1e(e.errorsByType.map(U=>U.count))}}var De=V(Y());var W1e=6e4,H1e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],CY={mcp:{light:"#7c3aed",dark:"#c4b5fd",bgLight:"#f5f3ff",bgDark:"rgba(124,58,237,0.15)"},builtin:{light:"#2563eb",dark:"#93c5fd",bgLight:"#eff6ff",bgDark:"rgba(37,99,235,0.15)"},agent:{light:"#15803d",dark:"#86efac",bgLight:"#f0fdf4",bgDark:"rgba(34,197,94,0.12)"}},A0=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),AY=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,K1e=e=>{if(!e)return"\u2014";let t=new Date(e),r=Math.round((Date.now()-t.getTime())/6e4);if(r<1)return"just now";if(r<60)return`${r}m ago`;let n=Math.round(r/60);return n<24?`${n}h ago`:`${Math.round(n/24)}d ago`};function BM({onOpenServer:e}){let{darkMode:t}=lt(),[r,n]=(0,De.useState)(null),[o,a]=(0,De.useState)(!0),[i,s]=(0,De.useState)(null),[l,u]=(0,De.useState)("all"),[c,d]=(0,De.useState)(""),[f,p]=(0,De.useState)(168),[m,y]=(0,De.useState)(null),b=(0,De.useCallback)(async()=>{try{let _=new URLSearchParams({hours:String(f)});l!=="all"&&_.set("origin",l),c.trim()&&_.set("q",c.trim());let C=await fetch(`/api/tools?${_}`);if(!C.ok)throw new Error(`Request failed (${C.status})`);n(await C.json()),s(null)}catch(_){s(_.message)}finally{a(!1)}},[l,c,f]);(0,De.useEffect)(()=>{let _=setTimeout(b,c?250:0);return()=>clearTimeout(_)},[b,c]),(0,De.useEffect)(()=>{let _=setInterval(b,W1e);return()=>clearInterval(_)},[b]);let h={bg:t?"transparent":"#f9fafb",cardBg:t?"rgba(255,255,255,0.05)":"#ffffff",border:t?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:t?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af",textCell:t?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:t?"rgba(239,68,68,0.2)":"#fef2f2",inputBg:t?"rgba(255,255,255,0.06)":"#ffffff"},g=_=>{let C=CY[_]||CY.agent;return{fg:t?C.dark:C.light,bg:t?C.bgDark:C.bgLight}};if(o&&!r)return De.default.createElement("div",{className:"flex items-center justify-center h-64"},De.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return De.default.createElement("div",{style:{padding:"24px"}},De.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),De.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:h.errorBg,borderRadius:"8px",color:h.error,fontSize:"14px"}},"Failed to load tools: ",i));let{tools:v=[],summary:x={},origins:S={},sources:w={}}=r||{},A=!w.telemetry&&!w.generations&&!w.messages&&!w.declared,k=({label:_,value:C,hint:E,tone:j})=>De.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},De.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},_),De.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:j||h.textPrimary}},C),E&&De.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},E));return De.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},De.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},De.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},De.default.createElement("div",null,De.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),De.default.createElement("p",{style:{fontSize:"14px",color:h.textSecondary,marginTop:"4px"}},"Detected from telemetry spans, generation request bodies, and agent records \u2014 nothing to register by hand")),De.default.createElement("div",{style:{display:"flex",gap:"4px"}},H1e.map(_=>De.default.createElement("button",{key:_.value,onClick:()=>p(_.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${f===_.value?"#ef4444":h.border}`,background:f===_.value?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:f===_.value?"#ef4444":h.textSecondary}},_.label))))),De.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},De.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},De.default.createElement(k,{label:"Tools Detected",value:A0(x.total_tools),hint:`${x.active_tools||0} called in this window`}),De.default.createElement(k,{label:"Tool Calls",value:A0(x.total_calls),hint:`${AY(x.avg_duration_ms)} average`}),De.default.createElement(k,{label:"Error Rate",value:`${x.error_rate||0}%`,tone:x.error_rate>5?h.error:h.textPrimary,hint:`${x.total_errors||0} failed call${x.total_errors===1?"":"s"}`}),De.default.createElement(k,{label:"From MCP",value:A0(x.mcp_tools),hint:`across ${x.mcp_servers_active||0} active server${x.mcp_servers_active===1?"":"s"}`}),De.default.createElement(k,{label:"Never Called",value:A0(x.unused_tools),hint:"offered or configured, unused"})),De.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(S).map(([_,C])=>De.default.createElement("button",{key:_,onClick:()=>u(_),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${l===_?"#ef4444":h.border}`,background:l===_?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:l===_?"#ef4444":h.textSecondary}},C)),De.default.createElement("input",{value:c,onChange:_=>d(_.target.value),placeholder:"Filter by name\u2026",style:{marginLeft:"auto",padding:"6px 12px",fontSize:"13px",borderRadius:"6px",minWidth:"200px",border:`1px solid ${h.border}`,background:h.inputBg,color:h.textPrimary}})),De.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},v.length===0?De.default.createElement("div",{style:{textAlign:"center",padding:"48px 24px",color:h.textSecondary,fontSize:"14px"}},A?"No tool activity yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace":"No tools match these filters"):De.default.createElement("div",{style:{overflowX:"auto"}},De.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},De.default.createElement("thead",null,De.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},De.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),De.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),De.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),De.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),De.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),De.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),De.default.createElement("tbody",null,v.map((_,C)=>{let E=g(_.origin),j=m===_.name;return De.default.createElement(De.default.Fragment,{key:_.name},De.default.createElement("tr",{onClick:()=>y(j?null:_.name),style:{borderBottom:C{F.stopPropagation(),_.mcp_server&&e&&e(_.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:E.bg,color:E.fg,fontFamily:"monospace",cursor:_.mcp_server&&e?"pointer":"default"},title:_.mcp_server?`Open ${_.mcp_server} in MCP Services`:_.source_label},_.source_label)),De.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},A0(_.calls)),De.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:_.errors>0?h.error:h.textCell}},_.errors),De.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},AY(_.avg_duration_ms)),De.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},K1e(_.last_seen))),j&&De.default.createElement("tr",{style:{borderBottom:CDe.default.createElement("span",{key:_,style:{color:w[_]?h.textSecondary:h.textMuted,opacity:w[_]?1:.5}},w[_]?"\u25CF":"\u25CB"," ",C)))))}function q1e({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>De.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},De.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),De.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return De.default.createElement("div",{style:{display:"grid",gap:"8px",padding:"12px 16px",borderRadius:"8px",background:n?"rgba(0,0,0,0.25)":"#ffffff",border:`1px solid ${t.border}`}},De.default.createElement(o,{label:"Full name"},De.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&De.default.createElement(o,{label:"Description"},e.description),De.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?De.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):De.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),De.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):De.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&De.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),De.default.createElement(o,{label:"Call breakdown"},De.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&De.default.createElement(o,{label:"Last arguments"},De.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&De.default.createElement(o,{label:"Last error"},De.default.createElement("span",{style:{color:t.error}},e.last_error)),De.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var ze=V(Y());var V1e=6e4,G1e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],Y1e=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],X1e=["http","streamable_http","sse"],EY={active:{light:"#15803d",dark:"#86efac",bgLight:"#f0fdf4",bgDark:"rgba(34,197,94,0.15)"},configured:{light:"#b45309",dark:"#fcd34d",bgLight:"#fffbeb",bgDark:"rgba(245,158,11,0.15)"},available:{light:"#4b5563",dark:"rgba(255,255,255,0.6)",bgLight:"#f3f4f6",bgDark:"rgba(255,255,255,0.08)"},idle:{light:"#4b5563",dark:"rgba(255,255,255,0.6)",bgLight:"#f3f4f6",bgDark:"rgba(255,255,255,0.08)"}},E0=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function FM({focusServer:e,onOpenTools:t}){let{darkMode:r}=lt(),[n,o]=(0,ze.useState)(null),[a,i]=(0,ze.useState)(!0),[s,l]=(0,ze.useState)(null),[u,c]=(0,ze.useState)("all"),[d,f]=(0,ze.useState)(168),[p,m]=(0,ze.useState)(e||null),[y,b]=(0,ze.useState)(null),[h,g]=(0,ze.useState)(null),v=(0,ze.useCallback)(async()=>{try{let D=await fetch(`/api/mcp_servers?hours=${d}`);if(!D.ok)throw new Error(`Request failed (${D.status})`);o(await D.json()),l(null)}catch(D){l(D.message)}finally{i(!1)}},[d]);(0,ze.useEffect)(()=>{v();let D=setInterval(v,V1e);return()=>clearInterval(D)},[v]),(0,ze.useEffect)(()=>{e&&m(e)},[e]);let x={bg:r?"transparent":"#f9fafb",cardBg:r?"rgba(255,255,255,0.05)":"#ffffff",border:r?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:r?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:r?"#ffffff":"#111827",textSecondary:r?"rgba(255,255,255,0.6)":"#6b7280",textMuted:r?"rgba(255,255,255,0.4)":"#9ca3af",textCell:r?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:r?"rgba(239,68,68,0.2)":"#fef2f2",codeBg:r?"rgba(0,0,0,0.35)":"#f9fafb"},S=D=>{let z=EY[D]||EY.available;return{fg:r?z.dark:z.light,bg:r?z.bgDark:z.bgLight}},w=async D=>{b(D.key),g(null);try{let z=await fetch(`/api/mcp_servers/${encodeURIComponent(D.key)}/launch`,{method:"POST",headers:{"Content-Type":"application/json"}}),N=await z.json();if(!z.ok)throw new Error(N.reason||N.error||`Launch failed (${z.status})`);g({kind:"ok",text:`${D.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),v()}catch(z){g({kind:"error",text:z.message})}finally{b(null)}};if(a&&!n)return ze.default.createElement("div",{className:"flex items-center justify-center h-64"},ze.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(s&&!n)return ze.default.createElement("div",{style:{padding:"24px"}},ze.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:x.textPrimary,margin:0}},"MCP Services"),ze.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:x.errorBg,borderRadius:"8px",color:x.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:A=[],summary:k={},sandboxes:_=[],statuses:C={}}=n||{},E=u==="all"?A:A.filter(D=>D.status===u),j=new Set(_.flatMap(D=>D.mcp_servers||[])),F=({label:D,value:z,hint:N})=>ze.default.createElement("div",{style:{background:x.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${x.border}`}},ze.default.createElement("div",{style:{fontSize:"11px",color:x.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},D),ze.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:x.textPrimary}},z),N&&ze.default.createElement("div",{style:{fontSize:"13px",color:x.textSecondary,marginTop:"8px"}},N));return ze.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:x.bg}},ze.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${x.border}`,marginBottom:"16px"}},ze.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},ze.default.createElement("div",null,ze.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:x.textPrimary,margin:0}},"MCP Services"),ze.default.createElement("p",{style:{fontSize:"14px",color:x.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),ze.default.createElement("div",{style:{display:"flex",gap:"4px"}},G1e.map(D=>ze.default.createElement("button",{key:D.value,onClick:()=>f(D.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${d===D.value?"#ef4444":x.border}`,background:d===D.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===D.value?"#ef4444":x.textSecondary}},D.label))))),ze.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},ze.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},ze.default.createElement(F,{label:"Active",value:E0(k.active),hint:"called in this window"}),ze.default.createElement(F,{label:"Configured",value:E0(k.configured),hint:"declared, no traffic yet"}),ze.default.createElement(F,{label:"Available",value:E0(k.available),hint:"defaults you can connect"}),ze.default.createElement(F,{label:"Tool Calls",value:E0(k.total_calls),hint:"through MCP servers"})),h&&ze.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?x.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?x.error:r?"#86efac":"#15803d"}},h.text),ze.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},Y1e.map(D=>ze.default.createElement("button",{key:D.value,onClick:()=>c(D.value),title:C[D.value]||"Every MCP service known to this workspace",style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${u===D.value?"#ef4444":x.border}`,background:u===D.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===D.value?"#ef4444":x.textSecondary}},D.label))),ze.default.createElement("div",{style:{display:"grid",gap:"12px"}},E.length===0?ze.default.createElement("div",{style:{background:x.cardBg,borderRadius:"12px",border:`1px solid ${x.border}`,textAlign:"center",padding:"48px 24px",color:x.textSecondary,fontSize:"14px"}},"No MCP services in this state"):E.map(D=>{let z=S(D.status),N=p===D.key,O=j.has(D.key);return ze.default.createElement("div",{key:D.key,style:{background:x.cardBg,borderRadius:"12px",border:`1px solid ${N?z.fg:x.border}`,overflow:"hidden"}},ze.default.createElement("div",{onClick:()=>m(N?null:D.key),style:{padding:"16px 20px",cursor:"pointer",display:"flex",alignItems:"center",gap:"16px",flexWrap:"wrap"}},ze.default.createElement("div",{style:{flex:1,minWidth:"220px"}},ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},ze.default.createElement("span",{style:{fontSize:"15px",fontWeight:"600",color:x.textPrimary}},D.name),ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:z.bg,color:z.fg,textTransform:"uppercase",letterSpacing:"0.04em"}},D.status),D.first_party&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(239,68,68,0.15)":"#fef2f2",color:"#ef4444"}},"first-party"),ef(D)&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(59,130,246,0.15)":"#eff6ff",color:r?"#93c5fd":"#1d4ed8"},title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Fv(D)&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(245,158,11,0.15)":"#fffbeb",color:r?"#fcd34d":"#b45309"},title:"This checkout sandbox has stopped; agents may still name its runtime"},"not running"),S_(D)&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:x.borderLight,color:x.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),O&&ze.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:r?"#86efac":"#15803d"}},"\u25CF sandbox running")),D.description&&ze.default.createElement("div",{style:{fontSize:"13px",color:x.textSecondary,marginTop:"4px"}},D.description)),ze.default.createElement("div",{style:{display:"flex",gap:"24px",alignItems:"center"}},ze.default.createElement("div",{style:{textAlign:"right"}},ze.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:x.textPrimary}},E0(D.calls)),ze.default.createElement("div",{style:{fontSize:"11px",color:x.textMuted}},"calls")),ze.default.createElement("div",{style:{textAlign:"right"}},ze.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:D.errors>0?x.error:x.textPrimary}},D.errors||0),ze.default.createElement("div",{style:{fontSize:"11px",color:x.textMuted}},"errors")),D.launchable&&ze.default.createElement("button",{onClick:$=>{$.stopPropagation(),w(D)},disabled:y===D.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:y===D.key?x.borderLight:"#ef4444",color:y===D.key?x.textMuted:"#ffffff",cursor:y===D.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${D.name} in a sandbox session`},y===D.key?"Starting\u2026":O?"Start another":"Start in sandbox"))),N&&ze.default.createElement(Z1e,{server:D,colors:x,tone:z,onOpenTools:t}))})),_.length>0&&ze.default.createElement("div",{style:{marginTop:"24px",background:x.cardBg,borderRadius:"12px",border:`1px solid ${x.border}`,padding:"20px"}},ze.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:x.textPrimary,margin:"0 0 12px 0"}},"Running sandboxes"),ze.default.createElement("div",{style:{display:"grid",gap:"8px"}},_.map(D=>ze.default.createElement("div",{key:D.session_id,style:{display:"flex",justifyContent:"space-between",gap:"12px",fontSize:"13px",color:x.textCell,flexWrap:"wrap"}},ze.default.createElement("span",{style:{fontFamily:"monospace"}},(D.mcp_servers||[]).join(", ")||D.sandbox_type),ze.default.createElement("span",{style:{color:x.textMuted}},D.status," \xB7 ",D.runs_count,"/",D.max_runs," runs \xB7 expires ",new Date(D.expires_at).toLocaleTimeString())))))))}function Z1e({server:e,colors:t,tone:r,onOpenTools:n}){let o=({label:i,children:s})=>ze.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},ze.default.createElement("span",{style:{color:t.textMuted,minWidth:"120px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},i),ze.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},s)),a=e.command||e.url;return ze.default.createElement("div",{style:{padding:"0 20px 20px 20px",display:"grid",gap:"10px"}},ze.default.createElement("div",{style:{height:"1px",background:t.borderLight,marginBottom:"4px"}}),a&&ze.default.createElement(o,{label:X1e.includes(e.transport)?"Endpoint":"Command"},ze.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",background:t.codeBg,display:"inline-block"}},a)),e.transport&&ze.default.createElement(o,{label:"Transport"},e.transport),e.categories?.length>0&&ze.default.createElement(o,{label:"Categories"},e.categories.join(", ")),e.requires_credentials?.length>0&&ze.default.createElement(o,{label:"Requires"},e.requires_credentials.join(", ")),ze.default.createElement(o,{label:e.tool_count>0?"Tools used":"Tools offered"},e.tools?.length>0?ze.default.createElement("span",{style:{display:"flex",gap:"6px",flexWrap:"wrap"}},e.tools.map(i=>ze.default.createElement("code",{key:i,style:{fontFamily:"monospace",fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r.bg,color:r.fg}},i))):ze.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),e.agents?.length>0&&ze.default.createElement(o,{label:"Used by"},e.agents.join(", ")),e.configured_by?.length>0&&ze.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),e.last_seen&&ze.default.createElement(o,{label:"Last call"},new Date(e.last_seen).toLocaleString()),ze.default.createElement("div",{style:{display:"flex",gap:"12px",marginTop:"4px",flexWrap:"wrap"}},e.docs_url&&ze.default.createElement("a",{href:e.docs_url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:"13px",color:"#ef4444",textDecoration:"none"}},"Documentation \u2192"),e.calls>0&&n&&ze.default.createElement("button",{onClick:()=>n(e.key),style:{fontSize:"13px",color:"#ef4444",background:"none",border:"none",padding:0,cursor:"pointer"}},"View its tools \u2192")))}var J=V(Y());var Ac=V(Y());var u2={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},wn={log(...e){this.enabled&&(e.push(Date.now()),u2.logger.log("[ActionCable]",...e))}},T0=()=>new Date().getTime(),l2=e=>(T0()-e)/1e3,O0=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=T0(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),wn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=T0(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),wn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=T0()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,wn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=T0(),wn.log("ConnectionMonitor recorded disconnect")}startPolling(){this.stopPolling(),this.poll()}stopPolling(){clearTimeout(this.pollTimeout)}poll(){this.pollTimeout=setTimeout((()=>{this.reconnectIfStale(),this.poll()}),this.getPollInterval())}getPollInterval(){let{staleThreshold:t,reconnectionBackoffRate:r}=this.constructor,n=Math.pow(1+r,Math.min(this.reconnectAttempts,10)),a=(this.reconnectAttempts===0?1:r)*Math.random();return t*1e3*n*(1+a)}reconnectIfStale(){this.connectionIsStale()&&(wn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${l2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?wn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${l2(this.disconnectedAt)} s`):(wn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return l2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&l2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(wn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};O0.staleThreshold=6;O0.reconnectionBackoffRate=.15;var TY={message_types:{welcome:"welcome",disconnect:"disconnect",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},disconnect_reasons:{unauthorized:"unauthorized",invalid_request:"invalid_request",server_restart:"server_restart",remote:"remote"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]},{message_types:N0,protocols:UM}=TY,J1e=UM.slice(0,UM.length-1),NY=[].indexOf,P0=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new O0(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return wn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...UM,...this.consumer.subprotocols||[]];return wn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new u2.WebSocket(this.consumer.url,t),this.installEventHandlers(),this.monitor.start(),!0}}close({allowReconnect:t}={allowReconnect:!0}){if(t||this.monitor.stop(),this.isOpen())return this.webSocket.close()}reopen(){if(wn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){wn.log("Failed to reopen WebSocket",t)}finally{wn.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`),setTimeout(this.open,this.constructor.reopenDelay)}else return this.open()}getProtocol(){if(this.webSocket)return this.webSocket.protocol}isOpen(){return this.isState("open")}isActive(){return this.isState("open","connecting")}triedToReconnect(){return this.monitor.reconnectAttempts>0}isProtocolSupported(){return NY.call(J1e,this.getProtocol())>=0}isState(...t){return NY.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in u2.WebSocket)if(u2.WebSocket[t]===this.webSocket.readyState)return t.toLowerCase()}return null}installEventHandlers(){for(let t in this.events){let r=this.events[t].bind(this);this.webSocket[`on${t}`]=r}}uninstallEventHandlers(){for(let t in this.events)this.webSocket[`on${t}`]=function(){}}};P0.reopenDelay=500;P0.prototype.events={message(e){if(!this.isProtocolSupported())return;let{identifier:t,message:r,reason:n,reconnect:o,type:a}=JSON.parse(e.data);switch(this.monitor.recordMessage(),a){case N0.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case N0.disconnect:return wn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case N0.ping:return null;case N0.confirmation:return this.subscriptions.confirmSubscription(t),this.reconnectAttempted?(this.reconnectAttempted=!1,this.subscriptions.notify(t,"connected",{reconnected:!0})):this.subscriptions.notify(t,"connected",{reconnected:!1});case N0.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(wn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return wn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(wn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){wn.log("WebSocket onerror event")}};var Q1e=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},WM=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),Q1e(this,n)}perform(t,r={}){return r.action=t,this.send(r)}send(t){return this.consumer.send({command:"message",identifier:this.identifier,data:JSON.stringify(t)})}unsubscribe(){return this.consumer.subscriptions.remove(this)}},HM=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(wn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):wn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){wn.log(`SubscriptionGuarantor forgetting ${t.identifier}`),this.pendingSubscriptions=this.pendingSubscriptions.filter((r=>r!==t))}startGuaranteeing(){this.stopGuaranteeing(),this.retrySubscribing()}stopGuaranteeing(){clearTimeout(this.retryTimeout)}retrySubscribing(){this.retryTimeout=setTimeout((()=>{this.subscriptions&&typeof this.subscriptions.subscribe=="function"&&this.pendingSubscriptions.map((t=>{wn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},KM=class{constructor(t){this.consumer=t,this.guarantor=new HM(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new WM(this.consumer,o,r);return this.add(a)}add(t){return this.subscriptions.push(t),this.consumer.ensureActiveConnection(),this.notify(t,"initialized"),this.subscribe(t),t}remove(t){return this.forget(t),this.findAll(t.identifier).length||this.sendCommand(t,"unsubscribe"),t}reject(t){return this.findAll(t).map((r=>(this.forget(r),this.notify(r,"rejected"),r)))}forget(t){return this.guarantor.forget(t),this.subscriptions=this.subscriptions.filter((r=>r!==t)),t}findAll(t){return this.subscriptions.filter((r=>r.identifier===t))}reload(){return this.subscriptions.map((t=>this.subscribe(t)))}notifyAll(t,...r){return this.subscriptions.map((n=>this.notify(n,t,...r)))}notify(t,r,...n){let o;return typeof t=="string"?o=this.findAll(t):o=[t],o.map((a=>typeof a[r]=="function"?a[r](...n):void 0))}subscribe(t){this.sendCommand(t,"subscribe")&&this.guarantor.guarantee(t)}confirmSubscription(t){wn.log(`Subscription confirmed ${t}`),this.findAll(t).map((r=>this.guarantor.forget(r)))}sendCommand(t,r){let{identifier:n}=t;return this.consumer.send({command:r,identifier:n})}},qM=class{constructor(t){this._url=t,this.subscriptions=new KM(this),this.connection=new P0(this),this.subprotocols=[]}get url(){return R1e(this._url)}send(t){return this.connection.send(t)}connect(){return this.connection.open()}disconnect(){return this.connection.close({allowReconnect:!1})}ensureActiveConnection(){if(!this.connection.isActive())return this.connection.open()}addSubProtocol(t){this.subprotocols=[...this.subprotocols,t]}};function R1e(e){if(typeof e=="function"&&(e=e()),e&&!/^wss?:/i.test(e)){let t=document.createElement("a");return t.href=e,t.href=t.href,t.protocol=t.protocol.replace("http","ws"),t.href}else return e}function OY(e=ewe("url")||TY.default_mount_path){return new qM(e)}function ewe(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var c2=null;function twe(){if(c2===null)try{c2=OY()}catch{c2=!1}return c2||null}function Og(e,t,r,n=!0){let o=(0,Ac.useRef)(null),a=(0,Ac.useRef)(r);return(0,Ac.useEffect)(()=>{a.current=r},[r]),(0,Ac.useEffect)(()=>{if(!n||!e)return;let s=twe();if(s)return o.current=s.subscriptions.create({channel:e,...t},{connected(){console.log(`[ActionCable] Connected to ${e}`,t)},disconnected(){console.log(`[ActionCable] Disconnected from ${e}`)},received(l){console.log(`[ActionCable] Received on ${e}:`,l),a.current&&a.current(l)},rejected(){console.warn(`[ActionCable] Subscription rejected for ${e}`)}}),()=>{o.current&&(console.log(`[ActionCable] Unsubscribing from ${e}`),o.current.unsubscribe(),o.current=null)}},[e,JSON.stringify(t),n]),{send:(0,Ac.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function Pg(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var d2=[{id:"anthropic",name:"Anthropic",model:"claude-haiku-4-5",color:"bg-orange-500"},{id:"openai",name:"OpenAI",model:"gpt-4o",color:"bg-green-500"},{id:"ollama",name:"Ollama",model:"llama3.1:8b",color:"bg-purple-500"}],rwe={playwright_mcp:[{name:"Screenshot Example.com",task:"Take a screenshot of https://example.com",description:"Navigate to example.com and capture a screenshot"},{name:"Extract Hacker News Headlines",task:"Go to https://news.ycombinator.com and list the top 5 story titles with their scores",description:"Scrape the front page of Hacker News"},{name:"Check Wikipedia",task:"Navigate to https://en.wikipedia.org/wiki/Artificial_intelligence and extract the first paragraph",description:"Extract content from Wikipedia"},{name:"GitHub Trending",task:"Visit https://github.com/trending and list the top 3 trending repositories",description:"Check GitHub's trending repositories"}],comparison:[{name:"Explain Ruby Blocks",task:"Explain how Ruby blocks work with a simple example",description:"Compare how each model explains Ruby concepts"},{name:"Write a Haiku",task:"Write a haiku about programming",description:"Compare creative output across models"},{name:"Debug This Code",task:"What's wrong with this code? def add(a, b); a - b; end; puts add(2, 3)",description:"Compare debugging abilities"},{name:"Summarize AI",task:"Summarize the current state of AI in 3 sentences",description:"Compare factual knowledge and conciseness"}]},PY={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function VM({initialType:e="playwright_mcp",onClose:t}){let[r,n]=(0,J.useState)(e),[o,a]=(0,J.useState)(null),[i,s]=(0,J.useState)(""),[l,u]=(0,J.useState)([]),[c,d]=(0,J.useState)(null),[f,p]=(0,J.useState)(!1),[m,y]=(0,J.useState)(!1),[b,h]=(0,J.useState)(null),[g,v]=(0,J.useState)(null),[x,S]=(0,J.useState)(!1),[w,A]=(0,J.useState)(null),[k,_]=(0,J.useState)(!1),C=(0,J.useRef)(null),[E,j]=(0,J.useState)(["anthropic"]),[F,D]=(0,J.useState)(!1),[z,N]=(0,J.useState)({}),[O,$]=(0,J.useState)([]),T=(0,J.useCallback)(async q=>{try{let M=await fetch(`/api/sandboxes/${q}`);if(!M.ok)return;let ne=await M.json();a(ne.sandbox),u(ne.sandbox.runs||[])}catch(M){console.error("Could not refresh the sandbox session:",M)}},[]),I=(0,J.useCallback)(q=>{!Pg(q)||!o?.session_id||T(o.session_id)},[T,o?.session_id]);Og("SandboxChannel",{session_id:o?.session_id},I,!!o?.session_id),(0,J.useEffect)(()=>{H(),P()},[r]);let P=async()=>{try{let q=await fetch("/api/usage");if(q.ok){let M=await q.json();A(M.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,J.useEffect)(()=>{if(!o?.expires_at)return;let q=setInterval(()=>{let M=new Date,ne=new Date(o.expires_at),U=Math.max(0,Math.floor((ne-M)/1e3));v(U),U===0&&(a(oe=>({...oe,status:"expired"})),clearInterval(q))},1e3);return()=>clearInterval(q)},[o?.expires_at]),(0,J.useEffect)(()=>{C.current&&(C.current.scrollTop=C.current.scrollHeight)},[c?.result]);let H=async()=>{y(!0),h(null);try{let q=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:r})});if(!q.ok)throw new Error("Failed to create sandbox session");let M=await q.json();a(M.sandbox),u([]),d(null)}catch(q){h(q.message)}finally{y(!1)}},Q=async()=>{!i.trim()||f||!o||(F&&E.length>1?await ue():await K(E[0]||"anthropic"))},K=async q=>{p(!0),d({status:"running",task:i,provider:q,result:"",started_at:new Date().toISOString()});try{let M=await fetch(`/api/sandboxes/${o.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:i,provider:q})}),ne=await M.json();if(M.status===402&&ne.upgrade_required){A(ne.usage),S(!0),d(U=>({...U,status:"failed",error:ne.message||"Plan limit reached"})),p(!1);return}if(!M.ok)throw new Error(ne.error||"Task execution failed");ne.usage&&A(ne.usage),de(ne.run_id)}catch(M){d(ne=>({...ne,status:"failed",error:M.message})),p(!1)}},ue=async()=>{p(!0),$([...E]),N({});let q={};E.forEach(M=>{q[M]={status:"running",result:"",started_at:new Date().toISOString()}}),N(q);try{let M=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:i,providers:E,sandbox_id:o?.session_id,sandbox_type:r})});if(!M.ok){let U=await M.json();throw new Error(U.error||"Comparison failed")}let ne=await M.json();ne.sandbox&&a(ne.sandbox),pe(E,ne.sandbox?.session_id||o?.session_id,ne.sandbox?.runs_count??o?.runs_count??0)}catch(M){E.forEach(ne=>{N(U=>({...U,[ne]:{status:"failed",error:M.message}}))}),p(!1),$([])}},pe=(q,M,ne)=>{if(!M)return;let U=async()=>{try{let oe=await fetch(`/api/sandboxes/${M}`);if(!oe.ok)throw new Error(`HTTP ${oe.status}`);let ve=await oe.json();a(ve.sandbox);let Ze=ve.sandbox.runs||[];u(Ze);let Ht=new Set;if(Ze.slice(ne).forEach(Mt=>{Mt.provider&&(N(fe=>({...fe,[Mt.provider]:{...Mt,provider:Mt.provider}})),(Mt.status==="completed"||Mt.status==="failed")&&Ht.add(Mt.provider))}),q.every(Mt=>Ht.has(Mt))){p(!1),$([]);return}setTimeout(U,1e3)}catch(oe){console.error("Comparison polling failed:",oe),p(!1),$([])}};setTimeout(U,1e3)},re=async()=>{if(o?.session_id)try{let M=await(await fetch(`/api/sandboxes/${o.session_id}`)).json();a(M.sandbox),u(M.sandbox.runs||[]),(M.sandbox.runs||[]).forEach(oe=>{oe.provider&&N(ve=>({...ve,[oe.provider]:{...oe,provider:oe.provider}}))}),E.every(oe=>{let ve=z[oe];return ve?.status==="completed"||ve?.status==="failed"})&&(p(!1),$([]))}catch(q){console.error("Polling error:",q)}},_e=q=>{j(M=>M.includes(q)?M.length===1?M:M.filter(ne=>ne!==q):[...M,q])},de=async q=>{let M=async()=>{try{let U=await(await fetch(`/api/sandboxes/${o.session_id}`)).json();a(U.sandbox);let oe=U.sandbox.runs||[],ve=oe[oe.length-1];if(ve&&(d(ve),u(oe),ve.status==="completed"||ve.status==="failed")){p(!1);return}setTimeout(M,1e3)}catch{p(!1)}};M()},le=q=>{q.key==="Enter"&&(q.metaKey||q.ctrlKey)&&Q()},Z=q=>{if(!q)return"--:--";let M=Math.floor(q/60),ne=q%60;return`${M}:${ne.toString().padStart(2,"0")}`},ee=q=>{switch(q){case"completed":return"text-green-600 bg-green-100";case"failed":return"text-red-600 bg-red-100";case"running":return"text-blue-600 bg-blue-100";case"ready":return"text-emerald-600 bg-emerald-100";case"expired":return"text-orange-600 bg-orange-100";default:return"text-gray-600 bg-gray-100"}},L=o?.status==="ready"&&o?.runs_count{_(!0);try{await Cg({planSlug:"pro",billingInterval:q})}catch(M){console.error("Checkout error:",M),h(M.message||"Failed to initiate checkout. Please try again."),_(!1)}};return J.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},J.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},J.default.createElement("div",{className:"flex items-center justify-between"},J.default.createElement("div",{className:"flex items-center space-x-4"},J.default.createElement(yn,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),J.default.createElement("div",null,J.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),J.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),J.default.createElement("div",{className:"flex items-center space-x-4"},o&&J.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},J.default.createElement("span",{className:`px-2 py-1 rounded-full text-xs font-medium ${ee(o.status)}`},o.status),J.default.createElement("span",{className:"text-gray-500"},o.runs_count,"/",o.max_runs," runs"),J.default.createElement("span",{className:`font-mono ${g<60?"text-red-500":"text-gray-500"}`},Z(g))),t&&J.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},J.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},J.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),J.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},J.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},J.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},J.default.createElement("textarea",{value:i,onChange:q=>s(q.target.value),onKeyDown:le,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!L,className:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-rose-500 focus:border-transparent resize-none disabled:bg-gray-100"}),J.default.createElement("div",{className:"flex items-center justify-between mt-3"},J.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",J.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",J.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),J.default.createElement("button",{onClick:Q,disabled:!i.trim()||!L,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${i.trim()&&L?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},f?J.default.createElement(J.default.Fragment,null,J.default.createElement("span",{className:"animate-spin"},"\u25E0"),J.default.createElement("span",null,"Running...")):J.default.createElement(J.default.Fragment,null,J.default.createElement("span",null,"\u25B6"),J.default.createElement("span",null,"Run"))))),J.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},J.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},J.default.createElement("h3",{className:"font-medium text-gray-900"},F&&Object.keys(z).length>0?"Comparison Results":"Output"),c&&!F&&J.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(c.status)}`},c.status),F&&O.length>0&&J.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",O.length," provider(s)...")),J.default.createElement("div",{ref:C,className:"flex-1 overflow-auto bg-gray-50"},m?J.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},J.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):b?J.default.createElement("div",{className:"text-red-600 p-4"},b):F&&Object.keys(z).length>0?J.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},E.map(q=>{let M=d2.find(U=>U.id===q),ne=z[q];return J.default.createElement("div",{key:q,className:"p-4"},J.default.createElement("div",{className:"flex items-center justify-between mb-2"},J.default.createElement("div",{className:"flex items-center space-x-2"},J.default.createElement("div",{className:`w-3 h-3 rounded-full ${M?.color||"bg-gray-400"}`}),J.default.createElement("span",{className:"font-medium text-gray-900"},M?.name||q),J.default.createElement("span",{className:"text-xs text-gray-500"},M?.model)),ne&&J.default.createElement("div",{className:"flex items-center space-x-2"},J.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(ne.status)}`},ne.status),ne.tokens&&J.default.createElement("span",{className:"text-xs text-gray-500"},ne.tokens," tokens"),ne.duration_ms&&J.default.createElement("span",{className:"text-xs text-gray-500"},(ne.duration_ms/1e3).toFixed(1),"s"))),J.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},ne?.status==="running"?J.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},J.default.createElement("span",{className:"animate-pulse"},"\u25CF"),J.default.createElement("span",null,"Processing...")):ne?.error?J.default.createElement("div",{className:"text-red-600"},ne.error):ne?.result?J.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},ne.result):J.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):c?J.default.createElement("div",{className:"p-4 font-mono text-sm"},c.provider&&J.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},J.default.createElement("div",{className:`w-2 h-2 rounded-full ${d2.find(q=>q.id===c.provider)?.color||"bg-gray-400"}`}),J.default.createElement("span",{className:"text-sm text-gray-600"},d2.find(q=>q.id===c.provider)?.name||c.provider)),c.status==="running"?J.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},J.default.createElement("span",{className:"animate-pulse"},"\u25CF"),J.default.createElement("span",null,"Executing task...")):c.error?J.default.createElement("div",{className:"text-red-600"},J.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),J.default.createElement("pre",{className:"whitespace-pre-wrap"},c.error)):J.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},c.result||"Processing...")):J.default.createElement("div",{className:"text-gray-400 text-center py-12"},J.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),J.default.createElement("p",{className:"text-xs"},F?`Compare results across ${E.length} providers`:"Task will execute using the selected provider"))))),J.default.createElement("div",{className:"space-y-4 overflow-auto"},J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},J.default.createElement("div",{className:"flex items-center justify-between mb-3"},J.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),J.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},J.default.createElement("input",{type:"checkbox",checked:F,onChange:q=>D(q.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),J.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),J.default.createElement("div",{className:"space-y-2"},d2.map(q=>J.default.createElement("label",{key:q.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${E.includes(q.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},J.default.createElement("div",{className:"flex items-center space-x-3"},J.default.createElement("input",{type:"checkbox",checked:E.includes(q.id),onChange:()=>_e(q.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),J.default.createElement("div",{className:`w-2 h-2 rounded-full ${q.color}`}),J.default.createElement("span",{className:"text-sm font-medium text-gray-900"},q.name)),J.default.createElement("span",{className:"text-xs text-gray-500"},q.model)))),F&&E.length>1&&J.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},J.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",E.length," providers simultaneously"))),J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},J.default.createElement("div",{className:"flex items-center justify-between mb-3"},J.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),F&&J.default.createElement("button",{onClick:()=>n(r==="playwright_mcp"?"comparison":"playwright_mcp"),className:"text-xs text-rose-600 hover:text-rose-700"},r==="comparison"?"Browser Tasks":"Comparison Tasks")),J.default.createElement("div",{className:"space-y-2"},rwe[r]?.map((q,M)=>J.default.createElement("button",{key:M,onClick:()=>s(q.task),disabled:!L,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},J.default.createElement("div",{className:"font-medium text-sm text-gray-900"},q.name),J.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},q.description))))),J.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},J.default.createElement("h4",{className:"font-medium text-gray-900 mb-3"},w?.unlimited?"Unlimited":w?.plan==="free"?"Free Tier":`${w?.plan?.toUpperCase()||"FREE"} Plan`),w&&!w.unlimited&&w.runs_limit!=null&&J.default.createElement("div",{className:"mb-4"},J.default.createElement("div",{className:"flex justify-between text-sm mb-1"},J.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),J.default.createElement("span",{className:`font-medium ${w.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},w.runs_used," / ",w.runs_limit)),J.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},J.default.createElement("div",{className:`h-2 rounded-full transition-all ${w.runs_remaining<=1?"bg-rose-500":"bg-emerald-500"}`,style:{width:`${Math.min(w.runs_used/w.runs_limit*100,100)}%`}})),w.runs_remaining<=1&&J.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},w.runs_remaining===0?"Limit reached!":"Almost at limit!")),J.default.createElement("dl",{className:"space-y-2 text-sm"},J.default.createElement("div",{className:"flex justify-between"},J.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),J.default.createElement("dd",{className:"text-gray-900"},o?.runs_count||0,"/",o?.max_runs||PY.max_runs)),J.default.createElement("div",{className:"flex justify-between"},J.default.createElement("dt",{className:"text-gray-500"},"Timeout"),J.default.createElement("dd",{className:"text-gray-900"},PY.timeout_seconds,"s per task"))),w?.plan==="free"&&J.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},J.default.createElement("button",{onClick:()=>S(!0),className:"w-full text-center text-sm text-rose-600 hover:text-rose-700 font-medium"},"Upgrade to PRO \u2192"))),l.length>0&&J.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},J.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},J.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),J.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},l.slice().reverse().map((q,M)=>J.default.createElement("div",{key:q.id||M,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>d(q)},J.default.createElement("div",{className:"flex items-center justify-between mb-1"},J.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(q.status||"completed")}`},q.status||"completed"),J.default.createElement("span",{className:"text-xs text-gray-400"},q.tokens||0," tokens")),J.default.createElement("p",{className:"text-sm text-gray-600 truncate"},q.task))))),o?.status==="expired"&&J.default.createElement("button",{onClick:H,className:"w-full px-4 py-3 bg-rose-500 text-white rounded-lg hover:bg-rose-600 transition-colors"},"Start New Session")))),x&&J.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},J.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},J.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},J.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),J.default.createElement("p",{className:"text-rose-100 text-sm"},"You've used ",w?.runs_used||0," of ",w?.runs_limit||25," trial runs. Choose a plan to continue.")),J.default.createElement("div",{className:"p-6"},J.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},J.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},J.default.createElement("div",{className:"text-center mb-4"},J.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),J.default.createElement("div",{className:"mt-2"},J.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),J.default.createElement("span",{className:"text-gray-500"},"/mo"))),J.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),J.default.createElement("button",{disabled:!0,className:"w-full py-2 px-4 border border-gray-300 text-gray-400 rounded-lg text-sm cursor-not-allowed"},"Current Plan")),J.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},J.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},J.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),J.default.createElement("div",{className:"text-center mb-4 mt-2"},J.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),J.default.createElement("div",{className:"mt-2"},J.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),J.default.createElement("span",{className:"text-gray-500"},"/mo")),J.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),J.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),J.default.createElement("button",{onClick:()=>B("monthly"),disabled:k,className:"w-full py-2 px-4 bg-rose-500 text-white rounded-lg text-sm font-semibold hover:bg-rose-600 transition-colors disabled:opacity-50"},k?"Loading...":"Upgrade to Pro")),J.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},J.default.createElement("div",{className:"text-center mb-4"},J.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),J.default.createElement("div",{className:"mt-2"},J.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),J.default.createElement("span",{className:"text-gray-500"},"/mo")),J.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),J.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),J.default.createElement("li",{className:"flex items-start"},J.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),J.default.createElement("a",{href:"mailto:sales@activeagents.ai",className:"block w-full py-2 px-4 border border-gray-300 text-gray-700 rounded-lg text-sm font-semibold text-center hover:bg-gray-50 transition-colors"},"Contact Sales")))),J.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},J.default.createElement("button",{onClick:()=>S(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ot=V(Y());var uo=V(Y());var GM=["message","llm","tool","browser"];function f2(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function MY(e={}){let t=[];return GM.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=f2(o?.start);if(i===null)return;let s=Math.max(0,Number(o.duration_ms)||0);t.push({entry:{...o,lane:r,startMs:i,endMs:i+s},laneIndex:n,index:a})})}),t.sort((r,n)=>r.entry.startMs-n.entry.startMs||r.laneIndex-n.laneIndex||r.index-n.index),t.map(({entry:r})=>r)}function IY(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&f2(t.rrweb.first_at)!==null).map(t=>{let r=f2(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,f2(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function DY(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function jY(e=[],{maxGapMs:t=1e4,gapMs:r=1e3,minSegmentMs:n=1e3}={}){let o=e.filter(([u,c])=>Number.isFinite(u)&&Number.isFinite(c)).map(([u,c])=>[u,Math.max(u,c)]).sort((u,c)=>u[0]-c[0]),a=[];for(let[u,c]of o){let d=a[a.length-1];d&&u-d[1]<=t?d[1]=Math.max(d[1],c):a.push([u,c])}let i=0,s=a.map(([u,c])=>{let d=Math.max(c,u+n),f={startMs:u,endMs:d,axisStart:i,axisEnd:i+(d-u)};return i=f.axisEnd+r,f}),l=s[s.length-1];return{segments:s,gapMs:r,totalMs:l?l.axisEnd:0,startMs:s[0]?.startMs??null,endMs:l?.endMs??null}}function $Y(e){return e.segments.slice(1).map((t,r)=>{let n=e.segments[r];return{axisStart:n.axisEnd,axisEnd:t.axisStart,skippedMs:t.startMs-n.endMs}})}function LY(e,t){let{segments:r}=e;if(!r.length)return null;let n=Math.min(Math.max(t,0),e.totalMs);for(let o=0;ot<=n.axisEnd);return r===-1?Math.max(0,e.segments.length*2-2):t>=e.segments[r].axisStart?r*2:Math.max(0,r*2-1)}function YM(e,t){let r=0,n=e.length-1,o=-1;for(;r<=n;){let a=r+n>>1;e[a].startMs<=t?(o=a,r=a+1):n=a-1}return o}function BY(e,t,r){if(r>0)return e.find(n=>n.startMs>t)?.startMs??null;for(let n=e.length-1;n>=0;n-=1)if(e[n].startMst>=o.startMs&&t<=o.endMs);if(r)return r;let n=e.filter(o=>o.startMs<=t);return n[n.length-1]||e[0]}function UY(e,t){let r=Math.max(0,e.endMs-e.startMs);return te.endMs?{phase:"after",offsetMs:r}:{phase:"during",offsetMs:t-e.startMs}}function Mg(e){let t=Math.max(0,Math.floor((Number(e)||0)/1e3)),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=String(t%60).padStart(2,"0");return r?`${r}:${String(n).padStart(2,"0")}:${o}`:`${n}:${o}`}function p2(e){let t=Math.max(0,Math.round((Number(e)||0)/1e3)),r=[["d",86400],["h",3600],["m",60],["s",1]],n=[],o=t;for(let[a,i]of r){let s=Math.floor(o/i);if(o-=s*i,(s||n.length)&&n.push(`${s}${a}`),n.length===2)break}return n.filter(a=>!a.startsWith("0")).join(" ")||"0s"}function XM(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function nwe(e){if(!e)return"";let t=Number(e.input??e.input_tokens)||0,r=Number(e.output??e.output_tokens)||0;return t||r?`${t} in / ${r} out`:""}function WY(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=XM(e.content);return!r&&t.length?`${e.role} called ${t.join(", ")}`:e.role==="tool"?`${e.tool_name||"tool"} result: ${r}`:`${e.role}: ${r}`}case"llm":return[e.model||e.name||"model call",nwe(e.tokens)].filter(Boolean).join(" \xB7 ");case"tool":return`${e.name||"tool"}${e.error?" (failed)":""}`;case"browser":{let t=e.data||{};return e.kind==="console"?`console ${t.level||"log"}: ${XM(t.message??t.value)}`:e.kind==="marker"?`marker: ${XM(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function Ig(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function owe(e=[]){return e.filter(t=>t?.kind==="rrweb").flatMap(t=>t.events||[]).filter(t=>t&&Number.isFinite(t.at)&&t.data&&typeof t.data=="object").map(t=>({...t.data,timestamp:t.at})).sort((t,r)=>t.timestamp-r.timestamp)}function awe(e,t=null,r=50){let n=new URLSearchParams({kind:"rrweb",limit:String(r)});return t!=null&&n.set("after",String(t)),`/api/session_recordings/${encodeURIComponent(e)}/events?${n}`}async function HY(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(awe(e,a));if(o())return{count:i,truncated:!1};let l=owe(s?.events);if(l.length&&(r(l,i===0),i+=l.length),!s?.has_more||s.next_after==null)return{count:i,truncated:!1};if(i>=n)return{count:i,truncated:!0};a=s.next_after}}var Rl=[{lane:"message",label:"messages",color:"var(--color-info)"},{lane:"llm",label:"model",color:"var(--color-token-out)"},{lane:"tool",label:"tools",color:"var(--color-warning)"},{lane:"browser",label:"browser",color:"var(--color-success)"}],M0=18,iwe=76,mf=(e,t)=>e.totalMs?t/e.totalMs*100:0,swe=(0,uo.memo)(function({axis:t,entries:r,recordings:n}){let o=$Y(t);return uo.default.createElement(uo.default.Fragment,null,o.map(a=>uo.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${p2(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${mf(t,a.axisStart)}%`,width:`${mf(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Rl.map((a,i)=>uo.default.createElement(uo.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=Ec(t,s.startMs);return uo.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*M0+7,height:4,borderRadius:2,left:`${mf(t,l)}%`,width:`${Math.max(mf(t,Ec(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=Ec(t,s.startMs);return uo.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*M0+4,height:M0-8,borderRadius:2,left:`${mf(t,l)}%`,width:`max(3px, ${mf(t,Ec(t,s.endMs)-l)}%)`,background:Ig(s)?"var(--color-error)":a.color}})}))))});function ZM({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,uo.useRef)(null),i=Rl.length*M0,s=u=>{let c=a.current?.getBoundingClientRect();if(!c?.width)return;let d=Math.min(Math.max((u.clientX-c.left)/c.width,0),1);o(d*e.totalMs)},l=u=>{let c=e.totalMs/100;if(u.key==="ArrowRight")o(n+c);else if(u.key==="ArrowLeft")o(n-c);else if(u.key==="Home")o(0);else if(u.key==="End")o(e.totalMs);else return;u.preventDefault()};return uo.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},uo.default.createElement("div",{style:{width:iwe,flexShrink:0}},Rl.map(u=>uo.default.createElement("div",{key:u.lane,style:{height:M0,display:"flex",alignItems:"center",gap:6,fontFamily:X,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},uo.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),uo.default.createElement("div",{ref:a,role:"slider",tabIndex:0,"aria-label":"Session position","aria-valuemin":0,"aria-valuemax":Math.round(e.totalMs),"aria-valuenow":Math.round(n),onPointerDown:u=>{u.currentTarget.setPointerCapture?.(u.pointerId),s(u)},onPointerMove:u=>{u.buttons===1&&s(u)},onKeyDown:l,style:{position:"relative",flex:1,height:i,cursor:"pointer",borderRadius:6,overflow:"hidden",background:"var(--color-background)",border:"1px solid var(--color-border-light)",touchAction:"none"}},uo.default.createElement(swe,{axis:e,entries:t,recordings:r}),uo.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${mf(e,n)}%`,background:"var(--color-text-primary)"}})))}var jo=V(Y());var lwe=Object.fromEntries(Rl.map(e=>[e.lane,e])),uwe=(0,jo.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=lwe[t.lane],l=Ig(t);return jo.default.createElement("button",{type:"button",ref:i,"data-testid":"replay-entry","aria-current":n?"step":void 0,onClick:()=>a(t),style:{display:"flex",alignItems:"baseline",gap:10,width:"100%",textAlign:"left",cursor:"pointer",padding:"6px 12px",border:"none",borderLeft:`3px solid ${n?s.color:"transparent"}`,background:o?"var(--color-accent-ui-tint)":n?"var(--color-hover)":"transparent",fontFamily:"inherit"}},jo.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},Mg(t.startMs-r)),jo.default.createElement("span",{style:{fontFamily:X,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),jo.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},WY(t)),t.duration_ms>0&&jo.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),KY=(0,jo.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,jo.useRef)(null),l=(0,jo.useRef)(null);return(0,jo.useEffect)(()=>{let u=l.current,c=s.current;if(!a||!u||!c)return;let d=u.offsetTop;(dc.scrollTop+c.clientHeight)&&(c.scrollTop=Math.max(0,d-c.clientHeight/3))},[n,a]),t.length?jo.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>jo.default.createElement(uwe,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):jo.default.createElement("div",{style:{padding:20,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var si=V(Y());var cwe=Object.fromEntries(Rl.map(e=>[e.lane,e.label])),dwe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:X,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function fwe(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function pwe({label:e,value:t}){let r=fwe(t);return r==null?null:si.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},si.default.createElement(Ve,{size:10},e),si.default.createElement("pre",{style:dwe},r))}function mwe(e){switch(e.lane){case"message":return[["content",e.content],["tool calls",e.tool_calls?.length?e.tool_calls:null]];case"llm":return[["model",[e.provider,e.model].filter(Boolean).join(" / ")],["finish reason",e.finish_reason],["tokens",e.tokens]];case"tool":return[["arguments",e.arguments],["result",e.result??e.detail]];case"browser":return[["event",e.data]];default:return[]}}function JM({entry:e}){return e?si.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},si.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},si.default.createElement(Ee,{tone:Ig(e)?"error":"muted"},cwe[e.lane]),e.role&&si.default.createElement(Ee,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&si.default.createElement("span",{style:{fontFamily:X,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),si.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},title:e.start},new Date(e.startMs).toLocaleTimeString(),e.duration_ms>0?` \xB7 ${Math.round(e.duration_ms)}ms`:"")),e.trace_id&&si.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),mwe(e).map(([t,r])=>si.default.createElement(pwe,{key:t,label:t,value:r}))):si.default.createElement("div",{style:{padding:16,fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var Un=V(Y());var qY="action-agent-session-player",VY="/session_player",GY="allow-scripts allow-same-origin";function YY(e,t={}){return{...t,channel:qY,type:e}}function XY(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===qY&&typeof e.data.type=="string"}async function hwe(e){let t=await fetch(e);if(!t.ok)throw new Error(`Could not load the browser recording (HTTP ${t.status})`);return t.json()}var ywe="the session player did not start",vwe={loading:"loading the browser recording\u2026",empty:"this recording has too few browser events to replay",truncated:"showing the start of a long recording"};function QM({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,Un.useRef)(null),s=(0,Un.useRef)(null),[l,u]=(0,Un.useState)(!1),[c,d]=(0,Un.useState)(!1),[f,p]=(0,Un.useState)(null),[m,y]=(0,Un.useState)({state:"loading"}),b=FY(e,t),h=b?.id,g=f!==null&&f===s.current,v=b?UY(b,t):null,x=(A,k)=>{i.current?.contentWindow?.postMessage(YY(A,k),window.location.origin)};(0,Un.useEffect)(()=>{let A=k=>{if(!XY(k,i.current?.contentWindow,window.location.origin))return;let{type:_}=k.data;_==="ready"?d(!0):_==="loaded"?p(k.data.token):_==="error"&&y({state:"error",message:k.data.message})};return window.addEventListener("message",A),()=>window.removeEventListener("message",A)},[]),(0,Un.useEffect)(()=>{if(!l||c)return;let A=setTimeout(()=>y({state:"error",message:ywe}),5e3);return()=>clearTimeout(A)},[l,c]),(0,Un.useEffect)(()=>{if(!c||h==null)return;let A=!1,k=[],_=`${h}:${Date.now()}`;return s.current=_,p(null),y({state:"loading"}),HY(h,{fetchPage:hwe,isCancelled:()=>A,onEvents:C=>{if(k===null){x("append",{events:C});return}k=k.concat(C),!(k.length<2)&&(x("load",{events:k,token:_}),k=null)}}).then(({truncated:C})=>{A||y(k!==null?{state:"empty"}:{state:C?"truncated":"ready"})}).catch(C=>{A||y({state:"error",message:C.message})}),()=>{A=!0}},[c,h]);let S=v?.phase;(0,Un.useEffect)(()=>{!g||!v||x("seek",{offset:v.offsetMs,playing:n&&S==="during"})},[g,a,n,S]),(0,Un.useEffect)(()=>{g&&x("speed",{speed:o})},[g,o]);let w=m.state==="error"?m.message:S==="before"?`the browser recording starts at ${Mg(b.startMs-r)}`:vwe[m.state];return Un.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},Un.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},Un.default.createElement(Ve,null,"browser"),b&&Un.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},b.name||`recording ${b.id}`,e.length>1?` \xB7 ${e.indexOf(b)+1} of ${e.length}`:""),w&&Un.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},w)),Un.default.createElement("iframe",{ref:i,title:"Browser recording",src:ct(VY),sandbox:GY,referrerPolicy:"no-referrer",onLoad:()=>u(!0),style:{width:"100%",height:480,border:"1px solid var(--color-border-light)",borderRadius:10,background:"var(--color-background)",opacity:S==="before"?.4:1}}))}var ua=V(Y());function RM(e){let[t,r]=(0,ua.useState)(0),[n,o]=(0,ua.useState)(!1),[a,i]=(0,ua.useState)(1),[s,l]=(0,ua.useState)(0),u=(0,ua.useRef)(0),c=(0,ua.useRef)(0),d=(0,ua.useCallback)((y,b)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=zY(e,h);return u.current=h,r(h),(b||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,ua.useEffect)(()=>{if(!n)return;let y=null,b=performance.now(),h=g=>{let v=d(u.current+(g-b)*a,!1);if(b=g,v>=e.totalMs){o(!1);return}y=requestAnimationFrame(h)};return y=requestAnimationFrame(h),()=>cancelAnimationFrame(y)},[n,a,e,d]);let f=(0,ua.useCallback)(y=>d(y,!0),[d]),p=(0,ua.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,ua.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:f,togglePlay:p,pause:m,setSpeed:i}}var xwe=[.5,1,2,4,8,16],bwe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function wwe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function Swe(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function kwe({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ot.useMemo)(()=>MY(r.lanes),[r]),i=(0,ot.useMemo)(()=>IY(r.recordings),[r]),s=(0,ot.useMemo)(()=>jY(DY(a,i)),[a,i]),l=RM(s),{seek:u,pause:c}=l,[d,f]=(0,ot.useState)(()=>new Set(GM)),[p,m]=(0,ot.useState)(null),y=LY(s,l.position)??s.startMs,b=(0,ot.useMemo)(()=>a.filter(E=>d.has(E.lane)),[a,d]),h=a[YM(a,y)]||null,g=b[YM(b,y)]?.id??null,v=a.find(E=>E.id===p)||h,x=(0,ot.useMemo)(()=>Swe(a),[a]),S=(0,ot.useCallback)(E=>{c(),m(E.id),u(Ec(s,E.startMs))},[s,c,u]),w=E=>{let j=BY(b,y,E);j!==null&&(c(),m(null),u(Ec(s,j)))},A=()=>{m(null),l.togglePlay()},k=E=>f(j=>{let F=new Set(j);return F.has(E)?F.delete(E):F.add(E),F}),_=r.session||{},C=a.length===0&&i.length===0;return ot.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1400}},ot.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},ot.default.createElement("div",{style:{minWidth:0}},ot.default.createElement(se,{variant:"ghost",size:"sm",onClick:n,style:{padding:"2px 0",marginBottom:6}},"<- Sessions"),ot.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},bwe[e]||"Session"," #",t),ot.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},_.started_at&&ot.default.createElement("span",{title:_.started_at},"started ",new Date(_.started_at).toLocaleString()),s.startMs!==null&&ot.default.createElement("span",null,p2(s.endMs-s.startMs)," long"),ot.default.createElement("span",null,x.message||0," messages \xB7 ",x.llm||0," model calls \xB7 ",x.tool||0," tool calls"),i.length>0&&ot.default.createElement("span",null,"browser recorded"))),ot.default.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},_.truncated&&ot.default.createElement(Ee,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?ot.default.createElement(He,{testId:"replay-empty"},ot.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"Nothing to replay yet."),ot.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",marginTop:6}},"This session has no messages, model calls, tool calls or browser events.")):ot.default.createElement(ot.default.Fragment,null,ot.default.createElement(He,{padding:14,style:{display:"flex",flexDirection:"column",gap:12}},ot.default.createElement("div",{"data-testid":"replay-controls",style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ot.default.createElement(se,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>w(-1)},"|<"),ot.default.createElement(se,{size:"sm",variant:"primary",testId:"replay-play",onClick:A,style:{minWidth:72}},l.playing?"Pause":"Play"),ot.default.createElement(se,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>w(1)},">|"),ot.default.createElement("select",{"aria-label":"Playback speed",value:l.speed,onChange:E=>l.setSpeed(Number(E.target.value)),style:{padding:"6px 8px",borderRadius:8,fontFamily:X,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},xwe.map(E=>ot.default.createElement("option",{key:E,value:E},E,"x"))),ot.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:X,fontSize:12,color:"var(--color-text-primary)"}},Mg(y-s.startMs)),ot.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"},title:"Idle stretches longer than 10 seconds play as one second"},Number.isFinite(y)?new Date(y).toLocaleTimeString():"")),ot.default.createElement(ZM,{axis:s,entries:a,recordings:i,position:l.position,onSeek:u})),ot.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 3fr) minmax(0, 2fr)",gap:16,alignItems:"start"}},ot.default.createElement(He,{padding:0,style:{overflow:"hidden"}},ot.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ot.default.createElement(Ve,{style:{marginRight:6}},"timeline"),Rl.map(E=>ot.default.createElement(io,{key:E.lane,mono:!0,selected:d.has(E.lane),onClick:()=>k(E.lane)},E.label," ",x[E.lane]||0))),ot.default.createElement(KY,{entries:b,startMs:s.startMs,currentId:g,selectedId:p,playing:l.playing,onChoose:S})),ot.default.createElement(He,{padding:0},ot.default.createElement(JM,{entry:v}))),i.length>0&&ot.default.createElement(He,{padding:14},ot.default.createElement(QM,{recordings:i,time:y,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function e3({kind:e,id:t,onBack:r,onHandoff:n}){let[o,a]=(0,ot.useState)({status:"loading"}),[i,s]=(0,ot.useState)(!1);(0,ot.useEffect)(()=>{let c=!1;return a({status:"loading"}),fetch(wwe(e,t)).then(async d=>{if(c)return;if(d.status===404)return a({status:"missing"});let f=await d.json().catch(()=>({}));return d.ok?a({status:"ready",timeline:f.timeline||{}}):a({status:"error",message:f.error||`Could not load this session (HTTP ${d.status})`})}).catch(()=>{c||a({status:"error",message:"Could not load this session: the request did not complete"})}),e==="recording"&&fetch(`/api/session_recordings/${encodeURIComponent(t)}`).then(d=>d.ok?d.json():null).then(d=>{c||s(!!d?.recording?.handoff_state)}).catch(()=>{}),()=>{c=!0}},[e,t]);let l=async()=>{let c=await fetch(`/api/session_recordings/${encodeURIComponent(t)}/handoff`,{method:"POST",headers:{"Content-Type":"application/json"}});c.ok&&n?.(await c.json())};if(o.status==="ready")return ot.default.createElement(kwe,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ot.default.createElement(se,{size:"sm",variant:"primary",testId:"replay-take-over",onClick:l},"Take over session")});let u=o.status==="loading"?"loading the session\u2026":o.status==="missing"?"This session does not exist, or you cannot open it.":o.message;return ot.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:12,maxWidth:1400}},ot.default.createElement(se,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ot.default.createElement(He,{testId:`replay-${o.status}`},ot.default.createElement("div",{style:{fontSize:13,color:o.status==="loading"?"var(--color-text-muted)":"var(--color-text-primary)"}},u)))}var Re=V(Y());function ZY(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var r3=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],n3=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],I0=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),QY={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},t3=/^(\d{4})-(\d{2})-(\d{2})$/,_we={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>r3.some(t=>t.value&&t.value===e),outcome:e=>n3.some(t=>t.value&&t.value===e),from:e=>t3.test(e),to:e=>t3.test(e)};function m2(e={}){let t={...I0};for(let r of Object.keys(I0)){let n=String(e[r]??"");n&&_we[r](n)&&(t[r]=n)}return t}function o3(e={}){return Object.values(m2(e)).some(Boolean)}function RY(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(QY))r[n]=t.get(o)||"";return m2(r)}function eX(e={}){let t=new URLSearchParams,r=m2(e);for(let[o,a]of Object.entries(QY))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function JY(e,t=0){let[,r,n,o]=e.match(t3);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var tX=Object.freeze({openedFromSessions:!0});function rX(e){return e?.openedFromSessions===!0}function nX(e={},{before:t=null,perPage:r=25}={}){let n=m2(e),o=new URLSearchParams;return n.agentId&&o.set("agent_id",n.agentId),n.user&&o.set("user",n.user),n.source&&o.set("source",n.source),n.outcome&&o.set("outcome",n.outcome),n.from&&o.set("from",JY(n.from)),n.to&&o.set("to",JY(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var oX={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},Cwe={failed:"error",passed:"success"},Dg={padding:"7px 10px",borderRadius:8,fontSize:13,fontFamily:"inherit",boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};async function aX(e,t){let r=await fetch(nX(e,{before:t})),n=await r.json().catch(()=>({}));if(!r.ok)throw new Error(n.error||`Could not load sessions (HTTP ${r.status})`);return n}function Awe(e){let t=[];return e.kind==="context"&&(t.push(`${e.message_count} message${e.message_count===1?"":"s"}`),e.recording_count&&t.push("browser recorded")),e.kind==="scenario_result"&&(e.evaluation?.name&&t.push(e.evaluation.name),e.model&&t.push(e.model)),e.kind==="recording"&&(t.push(`${e.event_count||0} events`),e.action_count&&t.push(`${e.action_count} actions`)),t.join(" \xB7 ")}function Ewe({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return Re.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},Re.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:Dg},Re.default.createElement("option",{value:""},"Every agent"),r.map(a=>Re.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&&Re.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:Dg},Re.default.createElement("option",{value:""},"Run by anyone"),Re.default.createElement("option",{value:"me"},"Run by me")),Re.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:Dg},r3.map(a=>Re.default.createElement("option",{key:a.value,value:a.value},a.label))),Re.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:Dg},n3.map(a=>Re.default.createElement("option",{key:a.value,value:a.value},a.label))),Re.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",Re.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:Dg})),Re.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",Re.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:Dg})),o3(e)&&Re.default.createElement(se,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(I0)},"Clear filters"))}function Nwe({session:e}){let t=ig(e.kind,e.id),r=oX[e.source]||oX.agent,n=Awe(e);return Re.default.createElement("a",{href:ct(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),kt(t,tX))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},Re.default.createElement(Ee,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),Re.default.createElement("div",{style:{minWidth:0,flex:1}},Re.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},Re.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&&Re.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&&Re.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&&Re.default.createElement("div",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&Re.default.createElement(Ee,{tone:Cwe[e.outcome]||"muted"},e.outcome),Re.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},_o(e.last_activity_at)),Re.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function a3({agents:e=[],user:t=null}){let[r,n]=(0,Re.useState)(()=>RY(window.location.search)),[o,a]=(0,Re.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,Re.useState)("loading"),[l,u]=(0,Re.useState)(null),[c,d]=(0,Re.useState)(!1),[f,p]=(0,Re.useState)(null),[m,y]=(0,Re.useState)(0),[b]=(0,Re.useState)(ZY);(0,Re.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${eX(r)}`);let v=b.next();return s("loading"),d(!1),p(null),aX(r,null).then(x=>{v()&&(a({sessions:x.sessions||[],total:x.total||0,nextBefore:x.next_before||null}),s("ready"))}).catch(x=>{v()&&(u(x.message),s("error"))}),()=>{b.next()}},[r,m]);let h=async()=>{let v=b.latest();d(!0),p(null);try{let x=await aX(r,o.nextBefore);if(!v())return;a(S=>({sessions:[...S.sessions,...x.sessions||[]],total:x.total??S.total,nextBefore:x.next_before||null}))}catch(x){v()&&p(x.message)}finally{v()&&d(!1)}},g=o3(r);return Re.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},Re.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Re.default.createElement("div",null,Re.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),Re.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Replay what an agent did: its messages, model calls and tool calls, and its browser when one was recorded.")),i==="ready"&&Re.default.createElement(Ve,null,o.total," session",o.total===1?"":"s")),Re.default.createElement(Ewe,{filters:r,onChange:n,agents:e,user:t}),Re.default.createElement(He,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&Re.default.createElement(Zn,null,"loading sessions\u2026"),i==="error"&&Re.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,Re.default.createElement(se,{size:"sm",onClick:()=>y(v=>v+1)},"Retry")),i==="ready"&&o.sessions.length===0&&Re.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},g?Re.default.createElement(Re.default.Fragment,null,Re.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),Re.default.createElement(se,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(I0)},"Clear filters")):Re.default.createElement(Re.default.Fragment,null,Re.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),Re.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",marginTop:6}},"Every conversation in an agent's Run workbench and every evaluation replay appears here, ready to replay."))),i==="ready"&&o.sessions.map(v=>Re.default.createElement(Nwe,{key:`${v.kind}-${v.id}`,session:v}))),i==="ready"&&o.nextBefore&&Re.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},f&&Re.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},f),Re.default.createElement(se,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":f?"Try again":"Load more")))}var Ce=V(Y());var Tt=V(Y());var Twe={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function iX(e){return Twe[e]||null}function g2(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function sX({set_by:e,updated_at:t}={},r=n=>new Date(n).toLocaleDateString()){let n=[];return e?.name&&n.push(`Set by ${e.name}`),t&&n.push(`${n.length?"updated":"Updated"} ${r(t)}`),n.length?n.join(" \xB7 "):null}var Owe="Setting your own host needs permission to manage the organization's keys.";function lX({editable:e=!0,scope:t,row:r={}}){let n=t==="personal"&&r.editable===!1;return{canChange:e&&!n,canRemove:e&&!!r.configured,note:e&&n&&r.host_based?Owe:null}}var cX={openai:{label:"OpenAI",icon:"\u{1F916}",placeholder:"sk-\u2026"},anthropic:{label:"Anthropic",icon:"\u{1F9E0}",placeholder:"sk-ant-\u2026"},openrouter:{label:"OpenRouter",icon:"\u{1F500}",placeholder:"sk-or-\u2026"},ollama:{label:"Ollama",icon:"\u{1F999}",placeholder:"http://localhost:11434/v1"}};function h2({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,Tt.useState)(null),[a,i]=(0,Tt.useState)(""),[s,l]=(0,Tt.useState)(""),[u,c]=(0,Tt.useState)(!1),[d,f]=(0,Tt.useState)({}),[p,m]=(0,Tt.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:p,saveProviderKey:async(g,{hostBased:v=!1,clearApiKey:x=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let S={provider:g,credential:a.trim()};r&&(S.scope=r),v&&(s.trim()||x)&&(S.api_key=x?"":s.trim());let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(S)});if(!w.ok){let A=await w.json().catch(()=>({}));throw new Error(Array.isArray(A.error)?A.error.join(", "):"save failed")}o(null),i(""),l(""),f(A=>({...A,[g]:null})),EE(),await e()}catch(S){t(`Could not save the ${cX[g]?.label||g} credential${S.message!=="save failed"?`: ${S.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(g,{editing:v=!1}={})=>{if(!p){m(g),t(null);try{let x={provider:g};r&&(x.scope=r),v&&(a.trim()&&(x.credential=a.trim()),s.trim()&&(x.api_key=s.trim()));let S=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(x)}),w=await S.json().catch(()=>({}));if(!S.ok)throw new Error(w.error||"test failed");f(A=>({...A,[g]:w}))}catch(x){f(S=>({...S,[g]:{ok:!1,models:[],error:x.message}}))}finally{m(null)}}},removeProviderKey:async g=>{if(await Br(r==="personal"?{title:"Remove your key?",message:"Your runs will use the organization's key, or the platform default.",confirmLabel:"Remove key",danger:!0}:{title:"Remove this provider credential?",message:"Runs fall back to the platform default credentials, or fail until a key is configured.",confirmLabel:"Remove credential",danger:!0}))try{if(!(await fetch(g2(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");f(S=>({...S,[g]:null})),EE(),await e()}catch{t("Could not remove the provider credential.")}}}}var uX={default:{title:"Provider API Keys",description:"Configure your own LLM provider credentials. Agent runs and evaluations on this account use these instead of the platform defaults. Keys are encrypted at rest."},organization:{title:"Provider Keys",description:"Shared by everyone in this organization. Agent runs and evaluations use these instead of the platform defaults. Keys are encrypted at rest."},personal:{title:"Your Provider Keys",description:"Your own credentials, used by the runs you start. Where you have none, the organization's key applies. Keys are encrypted at rest."}};function D0({providerKeys:e,editor:t,scope:r,editable:n=!0}){let{darkMode:o}=lt(),{editingProvider:a,setEditingProvider:i,providerInput:s,setProviderInput:l,providerApiKeyInput:u,setProviderApiKeyInput:c,savingProvider:d,testResults:f,testingProvider:p,saveProviderKey:m,testProviderHost:y,removeProviderKey:b}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},g=uX[r]||uX.default;return Tt.default.createElement("div",{className:"border rounded-lg p-6",style:h},Tt.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},g.title),Tt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},g.description),!n&&Tt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),Tt.default.createElement("div",{className:"space-y-4"},e.filter(({kind:v})=>v!=="connection").map(v=>{let{provider:x,host_based:S,configured:w,hint:A,api_key_configured:k,api_key_hint:_,platform_default:C}=v,E=cX[x]||{label:x,icon:"\u{1F511}",placeholder:""},j=a===x,F=f[x],D=p===x,z=S&&(j?s.trim():w||C),N=w?S?`${A}${k?` \xB7 key ${_}`:""}`:`Configured (${A})`:S&&C?`Platform default: ${C}`:"Not configured",O=r==="personal"?iX(v.effective_source):null,{canChange:$,canRemove:T,note:I}=lX({editable:n,scope:r,row:v}),P=r==="organization"&&w?sX(v):null;return Tt.default.createElement("div",{key:x,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Tt.default.createElement("div",{className:"flex items-center justify-between"},Tt.default.createElement("div",{className:"flex items-center space-x-3"},Tt.default.createElement("span",{className:"text-xl"},E.icon),Tt.default.createElement("div",null,Tt.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},E.label),Tt.default.createElement("p",{className:`text-sm ${w?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),P&&Tt.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},P)),O&&Tt.default.createElement("span",{className:`px-2 py-0.5 rounded text-xs ${o?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-700"}`,"data-testid":"provider-key-source"},O)),($||T)&&Tt.default.createElement("div",{className:"flex items-center space-x-2"},$&&S&&!j&&z&&Tt.default.createElement("button",{onClick:()=>y(x),disabled:D,className:`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},D?"Testing\u2026":"Test connection"),T&&!j&&Tt.default.createElement("button",{onClick:()=>b(x),className:`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Remove"),$&&Tt.default.createElement("button",{onClick:()=>{i(j?null:x),l(!j&&S&&w?A:""),c("")},className:`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},j?"Cancel":w?"Update":"Configure"))),I&&Tt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},I),j&&Tt.default.createElement("div",{className:"mt-3 space-y-2"},Tt.default.createElement("div",{className:"flex items-center space-x-2"},Tt.default.createElement("input",{type:S?"text":"password","data-aa-secret":S?void 0:"",value:s,onChange:H=>l(H.target.value),onKeyDown:H=>H.key==="Enter"&&m(x,{hostBased:S}),placeholder:S?E.placeholder:`${E.label} API key (${E.placeholder})`,"aria-label":S?`${E.label} host URL`:`${E.label} API key`,autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),S&&Tt.default.createElement("button",{onClick:()=>y(x,{editing:!0}),disabled:!s.trim()||D,className:`px-3 py-2 text-sm rounded-lg disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},D?"Testing\u2026":"Test"),Tt.default.createElement("button",{onClick:()=>m(x,{hostBased:S}),disabled:!s.trim()||d,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},d?"Saving\u2026":"Save")),S&&Tt.default.createElement("div",{className:"flex items-center space-x-2"},Tt.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:H=>c(H.target.value),onKeyDown:H=>H.key==="Enter"&&m(x,{hostBased:S}),placeholder:k?`API key (stored: ${_} \u2014 type to replace)`:"API key (optional \u2014 only for remote servers that require one)","aria-label":`${E.label} API key`,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),k&&Tt.default.createElement("button",{onClick:()=>m(x,{hostBased:S,clearApiKey:!0}),disabled:!s.trim()||d,className:`px-3 py-2 text-sm rounded-lg disabled:opacity-50 ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Clear key"))),S&&j&&Tt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"Your Ollama server's address \u2014 the OpenAI-compatible /v1 path is added if you leave it off. Local: http://localhost:11434. Remote: a LAN host, a tunnel URL, or Ollama Cloud (https://ollama.com), which needs an API key. Test lists the models the server currently serves."),S&&F&&Tt.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:F.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:F.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},F.ok?Tt.default.createElement(Tt.default.Fragment,null,Tt.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",F.host,typeof F.latency_ms=="number"?` in ${F.latency_ms} ms`:""," \xB7 ",F.models.length===0?"no models pulled yet (run `ollama pull ` on the server)":`${F.models.length} model${F.models.length===1?"":"s"}`,F.models.length>0&&Tt.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},F.models.join(" \xB7 "))):Tt.default.createElement(Tt.default.Fragment,null,Tt.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",F.error)))})))}async function dX(e=fetch){let t=await e("/api/telemetry_key",{cache:"no-store"});if(!t.ok)throw new Error(`Could not load the telemetry key (HTTP ${t.status})`);return(await t.json().catch(()=>null))?.telemetry_api_key||null}var y2=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function i3({account:e,user:t,subscription:r,agentCount:n=0}){let{darkMode:o}=lt(),[a,i]=(0,Ce.useState)(null),[s,l]=(0,Ce.useState)(!1),[u,c]=(0,Ce.useState)(!1),[d,f]=(0,Ce.useState)({status:"idle",value:null,error:null}),[p,m]=(0,Ce.useState)(!1),[y,b]=(0,Ce.useState)(null),[h,g]=(0,Ce.useState)(null),[v,x]=(0,Ce.useState)([]),[S,w]=(0,Ce.useState)(!1),[A,k]=(0,Ce.useState)(null),_=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Ce.useEffect)(()=>{fetch("/api/usage").then(P=>P.ok?P.json():null).then(P=>i(P?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(P=>P.ok?P.json():null).then(P=>g(P?.members||[])).catch(()=>g([]))},[]);let C=(0,Ce.useCallback)(async()=>{try{let P=await fetch("/api/provider_keys?scope=organization");if(!P.ok)throw new Error("load failed");let H=await P.json();x(H.provider_keys||[]),w(!!H.can_manage_organization_keys),k(null)}catch{k("Could not load the organization's provider keys.")}},[]);(0,Ce.useEffect)(()=>{C()},[C]);let E=h2({onKeysChanged:C,onError:k,scope:"organization"}),j=async()=>{m(!0),b(null);try{await Cg({planSlug:"pro"})}catch(P){b(P.message),m(!1)}},F=async()=>{if(d.status==="ready")return d.value;f({status:"loading",value:null,error:null});try{let P=await dX();return f({status:"ready",value:P,error:null}),P}catch(P){return f({status:"error",value:null,error:P.message}),null}},D=async()=>{u?c(!1):await F()&&c(!0)},z=async()=>{let P=await F();if(P)try{await navigator.clipboard.writeText(P),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,O={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},$=r?.plan_name||"Free",T={free:{seats:1,workspaces:1,agents:3,traces:"250/mo trial"},pro:{seats:5,workspaces:3,agents:"Unlimited",traces:"25,000/mo"},enterprise:{seats:"Unlimited",workspaces:"Unlimited",agents:"Unlimited",traces:"500,000+/mo"}},I=T[$.toLowerCase()]||T.free;return Ce.default.createElement("div",{className:"p-6 space-y-6"},Ce.default.createElement("div",null,Ce.default.createElement("h2",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},"Organization"),Ce.default.createElement("p",{className:`mt-1 ${o?"text-gray-400":"text-gray-500"}`},"Manage your workspace, team, and billing")),Ce.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ce.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ce.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Workspace"),Ce.default.createElement("div",{className:"space-y-3"},Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Name"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.name||"My Workspace")),Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Owner"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},t?.email||"you@example.com")),Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Created"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.created_at?new Date(e.created_at).toLocaleDateString():"Today")))),Ce.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ce.default.createElement("div",{className:"flex items-center justify-between mb-4"},Ce.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Current Plan"),Ce.default.createElement("span",{className:"px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm font-medium"},$)),Ce.default.createElement("div",{className:"space-y-3"},Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Team Seats"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.seats)),Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Workspaces"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.workspaces)),Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Agents"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.agents)),Ce.default.createElement("div",{className:"flex justify-between items-center"},Ce.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Traces"),Ce.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},I.traces))),$.toLowerCase()!=="enterprise"&&Ce.default.createElement(Ce.default.Fragment,null,Ce.default.createElement("button",{onClick:j,disabled:p,className:"mt-4 w-full px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},p?"Redirecting to checkout\u2026":"Upgrade Plan"),y&&Ce.default.createElement("p",{className:"mt-2 text-sm text-red-500 text-center"},y)))),Ce.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ce.default.createElement("div",{className:"flex items-center justify-between mb-4"},Ce.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Team Members"),_&&Ce.default.createElement("a",{href:_,className:"px-4 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors"},"+ Invite Member")),Ce.default.createElement("div",{className:"overflow-hidden"},Ce.default.createElement("table",{className:"min-w-full"},Ce.default.createElement("thead",null,Ce.default.createElement("tr",{className:o?"border-b border-gray-700":"border-b border-gray-200"},Ce.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Member"),Ce.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Role"))),Ce.default.createElement("tbody",null,(h||[]).map(P=>Ce.default.createElement("tr",{key:P.id??P.email},Ce.default.createElement("td",{className:"py-3 px-4"},Ce.default.createElement("div",{className:"flex items-center space-x-3"},Ce.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},Ce.default.createElement("span",{className:"text-red-600 font-medium text-sm"},(P.name||P.email||"?").charAt(0).toUpperCase())),Ce.default.createElement("div",null,Ce.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},P.name||P.email,P.id!=null&&P.id===t?.id&&Ce.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),P.name&&P.email&&Ce.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},P.email)))),Ce.default.createElement("td",{className:"py-3 px-4"},P.role?Ce.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(P.role).charAt(0).toUpperCase()+String(P.role).slice(1)):Ce.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Ce.default.createElement("div",{className:"space-y-2"},A&&Ce.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},A),Ce.default.createElement(D0,{providerKeys:v,editor:E,scope:"organization",editable:S})),Ce.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ce.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Usage This Month"),Ce.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4"},Ce.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ce.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},n),Ce.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Agents")),Ce.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ce.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},y2(a?.traces_used),a?.traces_limit>0&&Ce.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",y2(a.traces_limit))),Ce.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Traces")),Ce.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ce.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},y2(a?.runs_used)),Ce.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Executions")),Ce.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ce.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},y2(a?.tokens_used)),Ce.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Tokens")))),Ce.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ce.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${o?"text-white":"text-gray-900"}`},"Telemetry"),Ce.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},"Send traces from your own ActiveAgent app to this workspace. Add this to your"," ",Ce.default.createElement("code",{className:`px-1 rounded text-xs ${o?"bg-gray-800 text-gray-300":"bg-gray-100 text-gray-700"}`},"config/active_agent.yml"),":"),Ce.default.createElement("pre",{className:`text-xs rounded-lg p-4 overflow-x-auto mb-4 ${o?"bg-black text-gray-300":"bg-gray-900 text-gray-100"}`},`telemetry: enabled: true endpoint: ${window.location.origin}/v1/traces - api_key: <%= ENV["ACTIVEAGENTS_API_KEY"] %>`),Ae.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ae.default.createElement("div",{className:"min-w-0 flex-1"},Ae.default.createElement("p",{className:`text-xs uppercase tracking-wide mb-1 ${o?"text-gray-500":"text-gray-400"}`},"API Key"),Ae.default.createElement("code",{"data-testid":"telemetry-key","data-aa-secret":"",className:`block truncate text-sm font-mono px-3 py-2 rounded-lg border ${o?"bg-gray-900 border-gray-700 text-gray-300":"bg-gray-50 border-gray-200 text-gray-700"}`},N?"Not available":u?d.value:"\u2022".repeat(24))),Ae.default.createElement("div",{className:"flex gap-2 flex-shrink-0 self-end"},Ae.default.createElement("button",{onClick:P,disabled:N||d.status==="loading",className:"px-3 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},u?"Hide":"Show"),Ae.default.createElement("button",{onClick:z,disabled:N||d.status==="loading",className:"px-3 py-2 text-sm bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},s?"Copied!":"Copy"))),d.error&&Ae.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Ee=G(Y());var Be=G(Y());var twe=/^[A-Za-z_][A-Za-z0-9_]*$/,rwe=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,nwe={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},owe=["sk_live_","rk_live_"],JY=8,QY=2e3;function s_(e){return e?twe.test(e)?rwe.test(e)?`${e} is set by the sandbox or changes how code is loaded, so a project cannot set it.`:null:"Use letters, digits and _ only, not starting with a digit.":"Name the variable."}function l_(e,t){let r=[],n=typeof t=="string"?t:"";return owe.some(o=>n.startsWith(o))&&r.push({code:"live_credential",message:"This looks like a live-mode key. A sandbox runs the repository's code with it: use a test-mode key."}),n.length>0&&n.lengthn.name));return e.map(n=>({name:n.name,required:!!n.required,sources:n.sources||[],description:n.description||null,organizationKey:n.organization_key||nwe[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function RY(e,t){return[...e,..._0([{name:t}])]}function eX({name:e,edited:t,fullName:r}){return t?e:r}function A0(e){return e.flatMap(t=>t.useOrganizationKey?[{name:t.name,source:"organization_key",consent:t.consent===!0}]:t.value?[{name:t.name,value:t.value}]:[])}function _g(e){for(let t of e){let r=s_(t.name);if(r&&(t.value||t.useOrganizationKey))return r;if(t.useOrganizationKey&&!t.consent)return`Confirm that ${t.name}'s organization key may be read by the repository's code.`}return null}function tX({github:e,repositories:t,reconnectRequired:r=!1,pendingApproval:n=!1}={}){return e?e.mode==="none"?"not_configured":e.connected?r?"reconnect_required":n?"pending_approval":t==null?"loading":t.length===0?"empty":"ready":"not_connected":"loading"}function XM(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function awe(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function rX({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=awe(e);return n.length>0?`Fix first: ${n.map(o=>o.label).join(", ")}.`:t?t.status==="unsupported"?t.summary:r||null:"Pick a repository."}var u_={supported:"success",bootstrap:"info",unsupported:"error"};function nX(e){return e==="checkout"?"Checkout":e==="preflight"?"Preflight":e==="setup"?"Setup":/^bundle_/.test(e)?"Bundle":/^(add|install)_/.test(e)?"Install":/_build$/.test(e)?"Assets":e==="db_prepare"?"Database":e==="manifest"?"Manifest":e==="start"||e==="server"?"Start and start URL":"Step"}function oX(e){if(e==null||Number.isNaN(Number(e)))return"\u2014";let t=Number(e);if(t<1e3)return`${Math.round(t)}ms`;if(t<6e4)return`${(t/1e3).toFixed(1)}s`;let r=Math.floor(t/6e4),n=Math.round(t%6e4/1e3);return`${r}m ${String(n).padStart(2,"0")}s`}var aX={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function iX(e){return e?.sandbox_state==="booting"}function sf(e){return e==null?"/projects/new":`/projects/${e}`}function C0(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var sX=["overview","explorations","environment","browser"];function lX(e=""){let t=new URLSearchParams(e).get("tab");return sX.includes(t)?t:"overview"}function uX(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!sX.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function c_(e){if(!e?.project?.id)return null;let t=sf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function cX(e,t=[]){return e?.sandbox_state!=="ready"||!e.sandbox?.session_id||t.length===0?null:e.sandbox.browser?.status==="running"?{label:"Watch live",watch:!0}:{label:"Open browser",watch:!1}}var dn=G(Y());function d_(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var dX=["left","middle","right"];function fX(e,t,r){if(!r||!(r.width>0)||!(r.height>0))return null;let n=(e-r.left)/r.width,o=(t-r.top)/r.height;return n<0||n>1||o<0||o>1?null:{x:n,y:o}}function f_(e,t,r){let n=fX(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:d_(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:dX[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function pX(e,t,r){let n=f_("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:d_(e),button:dX[e.button]||"left",clickCount:1}}var iwe=16,swe=800;function mX(e,t){let r=fX(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?iwe:e.deltaMode===2?swe:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:d_(e)}}function ZM(e,t){return t.isComposing||t.key==="Process"||t.key==="Unidentified"||!t.key?null:{type:"key",action:e,key:t.key,code:t.code||"",keyCode:t.keyCode||void 0,modifiers:d_(t)}}function gX(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var lwe=600;function hX(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=lwe}var E0={ready:!1,control:{held:!1,mine:!1,yours:!1,by:null,since:null},agent:{waiting:!1,tool:null,since:null},page:null,frameSize:null,error:null};function yX(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...E0.control,...t.control},agent:t.agent||E0.agent,page:t.page||null};case"frame":return e.frameSize?.width===t.width&&e.frameSize?.height===t.height?e:{...e,frameSize:{width:t.width,height:t.height}};case"control":return{...e,control:{held:t.held,mine:t.mine,yours:t.yours===!0,by:t.by,since:t.since}};case"agent":return{...e,agent:{waiting:t.waiting,tool:t.tool,since:t.since}};case"page":return{...e,page:t.page||null};case"error":return{...e,error:t.message||"The browser refused that"};case"clear_error":return{...e,error:null};case"reset":return E0;default:return e}}function vX(e){if(!e.agent.waiting||!e.control.held)return null;let t=e.agent.tool?` (${e.agent.tool})`:"";return e.control.mine?`The agent is waiting for you to hand back control${t}.`:e.control.yours?`The agent is waiting for you to hand back control in your other view${t}.`:`The agent is waiting for ${e.control.by||"the person driving"} to hand back control${t}.`}function xX(e){return e.control.held?e.control.mine?"You are driving":e.control.yours?"You are driving in another view":`Held by ${e.control.by||"someone else"}`:null}function bX(e,{taking:t=!1}={}){let{held:r,yours:n}=e.control,o="Take over";return t?o="Taking over\u2026":r&&n&&(o="Continue driving here"),{label:o,disabled:t||r&&!n}}function wX(e){if(!e)return null;let t=e.tabs>1?` \xB7 tab ${e.tab} of ${e.tabs}`:"";return`${e.url||"a page with no address to show"}${t}`}var uwe={1001:"The browser stopped.",4401:"The live view did not accept the ticket. Try again.",4408:"The live view timed out before it opened. Try again.",4429:"Too many people are watching this browser."};function SX(e,{requested:t=!1}={}){return t?null:uwe[e]||"The live view lost its connection to the browser."}var cwe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function kX(e){return e?.status?cwe[e.status]||{label:e.status,tone:"neutral"}:null}function _X(e){return e?.status==="starting"||e?.status==="running"}function AX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}var Et=G(Y());async function CX(e,t){let r=await fetch(`/api/sandboxes/${encodeURIComponent(e)}/browser/tickets`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:t})}),n=await r.json().catch(()=>({}));if(r.status===403&&n.code==="forbidden")throw new Error("You do not have permission to take over this browser.");if(!r.ok)throw new Error(Xe(n,`Could not open the live view (HTTP ${r.status}).`));return n}var EX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v";function JM({sessionId:e,headed:t=!1,watchOnOpen:r=!1}){let{darkMode:n}=st(),[o,a]=(0,Et.useReducer)(yX,E0),[i,s]=(0,Et.useState)("idle"),[l,u]=(0,Et.useState)(null),[c,d]=(0,Et.useState)(!1),f=(0,Et.useRef)(null),p=(0,Et.useRef)(!1),m=(0,Et.useRef)(0),y=(0,Et.useRef)(!1),x=(0,Et.useRef)(null),h=(0,Et.useRef)(null),g=(0,Et.useRef)({pending:null,decoding:!1}),v=(0,Et.useRef)({message:null,scheduled:!1}),b=(0,Et.useRef)(null),_=(0,Et.useRef)(null),w=o.control.mine,C=(0,Et.useCallback)(re=>{let _e=f.current;re&&_e?.readyState===WebSocket.OPEN&&_e.send(JSON.stringify(re))},[]),S=(0,Et.useCallback)(re=>{let _e=g.current;if(_e.pending=re,_e.decoding)return;let ue=()=>{let se=_e.pending;if(_e.pending=null,_e.decoding=!!se,!se)return;let Z=new Image;Z.onload=()=>{let R=x.current;R&&((R.width!==Z.naturalWidth||R.height!==Z.naturalHeight)&&(R.width=Z.naturalWidth,R.height=Z.naturalHeight),R.getContext("2d")?.drawImage(Z,0,0)),ue()},Z.onerror=ue,Z.src=`data:image/jpeg;base64,${se.data}`};ue()},[]),k=(0,Et.useCallback)(()=>{m.current+=1;let re=f.current;if(!re){s("idle");return}y.current&&re.readyState===WebSocket.OPEN&&re.send(JSON.stringify({type:"hand_back"})),p.current=!0,re.close(1e3)},[]);(0,Et.useEffect)(()=>k,[k]);let A=async()=>{m.current+=1;let re=m.current;u(null),s("connecting");try{let{ticket:_e,url:ue}=await CX(e,"view");if(m.current!==re)return;let se=new WebSocket(ue);f.current=se,p.current=!1,se.onopen=()=>se.send(JSON.stringify({type:"auth",ticket:_e})),se.onmessage=Z=>{let R;try{R=JSON.parse(Z.data)}catch{return}R.type==="ready"&&s("open"),R.type==="frame"&&S(R),a(R)},se.onclose=Z=>{f.current===se&&(f.current=null,s("idle"),a({type:"reset"}),u(SX(Z.code,{requested:p.current})))}}catch(_e){if(m.current!==re)return;s("idle"),u(_e.message)}},O=(0,Et.useRef)(!1);(0,Et.useEffect)(()=>{!r||O.current||(O.current=!0,A())},[r]);let $=async()=>{a({type:"clear_error"}),d(!0);try{let{ticket:re}=await CX(e,"control");C({type:"take_control",ticket:re})}catch(re){u(re.message)}finally{d(!1)}},F=()=>{C({type:"hand_back"}),x.current?.blur()};(0,Et.useEffect)(()=>{y.current=w,w?x.current?.focus():x.current?.blur()},[w]),(0,Et.useEffect)(()=>{let re=x.current;if(!re||!w)return;let _e=ue=>{ue.preventDefault(),C(mX(ue,re.getBoundingClientRect()))};return re.addEventListener("wheel",_e,{passive:!1}),()=>re.removeEventListener("wheel",_e)},[w,C,i]);let P=()=>x.current?.getBoundingClientRect(),z=re=>{re&&(b.current={x:re.x,y:re.y},C(re))},N=w?{onMouseDown:re=>{re.preventDefault(),x.current?.focus(),z(f_("down",re,P())),window.addEventListener("mouseup",_e=>z(pX(_e,P(),b.current)),{once:!0})},onMouseMove:re=>{let _e=v.current;_e.message=f_("move",re,P()),!_e.scheduled&&(_e.scheduled=!0,requestAnimationFrame(()=>{_e.scheduled=!1,z(_e.message),_e.message=null}))},onContextMenu:re=>re.preventDefault(),onKeyDown:re=>{if(hX(re,_.current)){re.preventDefault(),_.current=null,h.current?.focus();return}if(_.current=re.key==="Escape"&&!re.repeat?re.timeStamp:null,EX(re))return;let _e=ZM("down",re);_e&&(re.preventDefault(),C(_e))},onKeyUp:re=>{if(EX(re))return;let _e=ZM("up",re);_e&&(re.preventDefault(),C(_e))},onPaste:re=>{re.preventDefault(),C(gX(re.clipboardData?.getData("text/plain")))}}:{},D=n?"text-gray-400":"text-gray-500",T=n?"text-white":"text-gray-900",E=`px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,I="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",j=vX(o),q=xX(o),te=bX(o,{taking:c}),K=wX(o.page),le=i==="open",{frameSize:pe}=o;return Et.default.createElement("div",{className:"space-y-2"},Et.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},i==="idle"?Et.default.createElement("button",{type:"button",onClick:A,className:E},"Watch live"):Et.default.createElement("button",{type:"button",onClick:k,className:E},"Stop watching"),le&&(w?Et.default.createElement("button",{ref:h,type:"button",onClick:F,className:I},"Hand back"):Et.default.createElement("button",{ref:h,type:"button",onClick:$,disabled:te.disabled,className:I},te.label)),q&&Et.default.createElement("span",{className:`text-xs font-medium ${T}`},q),i==="connecting"&&Et.default.createElement("span",{className:`text-xs ${D}`},"Connecting\u2026")),l&&Et.default.createElement("p",{className:`text-xs ${D}`,role:"status"},l),o.error&&Et.default.createElement("p",{className:`text-xs ${n?"text-red-400":"text-red-600"}`,role:"alert"},o.error),j&&Et.default.createElement("p",{role:"status",className:`p-2 rounded text-xs border ${n?"bg-amber-900/20 border-amber-800 text-amber-300":"bg-amber-50 border-amber-200 text-amber-800"}`},j),i!=="idle"&&Et.default.createElement("div",{className:"space-y-1"},K&&Et.default.createElement("p",{className:`text-xs font-mono truncate ${D}`,title:K},K),Et.default.createElement("canvas",{ref:x,tabIndex:w?0:-1,role:w?"application":"img","aria-label":w?"The sandbox's browser: your mouse and keys go to it. Press Escape twice to leave it.":"Live view of the sandbox's browser",className:`block w-full rounded border bg-black ${w?"cursor-default outline-none focus:ring-2 focus:ring-blue-500":""} ${n?"border-gray-700":"border-gray-200"}`,style:{aspectRatio:pe?`${pe.width} / ${pe.height}`:"16 / 10"},...N}),w&&Et.default.createElement("p",{className:`text-xs ${D}`},"Your mouse and keys go to the browser, and the agent waits until you hand back. Press Escape twice to move focus out of the view. That, or clicking outside it, only stops your keys reaching the browser: the agent keeps waiting until you press Hand back or Stop watching.")),t&&Et.default.createElement("p",{className:`text-xs ${D}`},"This browser also has a window open on this machine. Clicking or typing in that window changes the page too, but the agent does not wait for it: take over here first."))}function N0({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=st(),[a,i]=(0,dn.useState)(e.browser||null),[s,l]=(0,dn.useState)(!1),[u,c]=(0,dn.useState)(null),[d,f]=(0,dn.useState)(null),p=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,dn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(S,k,A)=>{c(S),f(null);try{let O=await fetch(p,k),$=await O.json().catch(()=>({}));if($.browser&&(i($.browser),n?.($.browser)),!O.ok)throw new Error($.message||Xe($,`${A} (HTTP ${O.status}).`))}catch(O){f(O.message)}finally{c(null)}},y=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(AX({inWindow:s,modes:t}))},"Could not start the browser"),x=()=>m("stop",{method:"DELETE"},"Could not stop the browser"),h=o?"text-gray-400":"text-gray-500",g=o?"text-white":"text-gray-900",v=o?"border-gray-700":"border-gray-200",b=`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,_=kX(a),w=_X(a),C=a?.status==="running";return dn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},dn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},dn.default.createElement("div",{className:"flex items-center gap-2"},dn.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),_&&dn.default.createElement(fc,{tone:_.tone},_.label)),w?dn.default.createElement("button",{type:"button",onClick:x,disabled:u!==null,className:b},u==="stop"?"Stopping\u2026":"Stop browser"):dn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&dn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},dn.default.createElement("input",{type:"checkbox",checked:s,onChange:S=>l(S.target.checked),disabled:u!==null}),"Open a window on this machine"),dn.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:b},u==="start"?"Starting\u2026":"Start browser"))),d&&dn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!w&&!d&&dn.default.createElement("p",{className:`text-xs ${h}`},"A browser of this sandbox's own, opened on its app and recorded. Agent runs against the sandbox can drive it."),C&&a.server_key&&dn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",dn.default.createElement("code",{className:"font-mono"},a.server_key),"."),C&&a.live_url&&dn.default.createElement(JM,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),C&&!a.live_url&&dn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var Bt=G(Y());var Wr=G(Y());function NX(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function p_(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var TX={loading:"Loading repositories\u2026",not_configured:"GitHub is not configured on this dashboard.",not_connected:"Connect GitHub to pick a repository.",reconnect_required:"GitHub rejected the stored token. Reconnect GitHub to list repositories again.",pending_approval:"The GitHub installation is waiting for an owner of the account to approve it. Check again once it is approved.",empty:"This GitHub connection reaches no repositories yet."};function lf({repositories:e,selection:t,onToggle:r,filter:n,onFilterChange:o,mode:a="multiple",selected:i=null,onSelect:s,state:l="ready",settingsHref:u,missingRepositoryUrl:c,onRefresh:d,onTypeName:f,typedNameError:p}){let{darkMode:m}=st(),[y,x]=(0,Wr.useState)(""),[h,g]=(0,Wr.useState)(!1),v=m?"text-gray-400":"text-gray-500",b=m?"text-white":"text-gray-900",_={backgroundColor:m?"#252525":"#f9fafb"},w=`w-full px-3 py-2 border rounded-lg text-sm ${m?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`,C=NX(e,n);(0,Wr.useEffect)(()=>{if(!h||!d)return;let A=()=>{g(!1),d()};return window.addEventListener("focus",A),()=>window.removeEventListener("focus",A)},[h,d]);let S=c?Wr.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>g(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,k=f?Wr.default.createElement("form",{className:"flex items-center gap-2",onSubmit:A=>{A.preventDefault(),XM(y)&&f(y)}},Wr.default.createElement("input",{type:"text",value:y,onChange:A=>x(A.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:w,"data-testid":"repo-picker-typed-name"}),Wr.default.createElement("button",{type:"submit",disabled:!XM(y),className:`px-3 py-2 border rounded-lg text-sm ${b}`},"Look up")):null;if(l!=="ready"){let A=["not_connected","reconnect_required"].includes(l)&&u;return Wr.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},Wr.default.createElement("p",{className:`text-sm ${v}`},TX[l]||TX.loading),A&&Wr.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&Wr.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${b}`},"Check again"),l==="empty"&&S,l==="empty"&&k,p&&Wr.default.createElement("p",{className:"text-sm text-red-500"},p))}return Wr.default.createElement("div",{className:"space-y-2"},Wr.default.createElement("input",{type:"text",value:n,onChange:A=>o(A.target.value),placeholder:"Filter repositories",className:w}),Wr.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},C.map(A=>Wr.default.createElement("label",{key:A.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:_},a==="single"?Wr.default.createElement("input",{type:"radio",name:"repository",checked:i===A.full_name,onChange:()=>s(A.full_name)}):Wr.default.createElement("input",{type:"checkbox",checked:t.has(A.full_name),onChange:()=>r(A.full_name)}),Wr.default.createElement("span",{className:`text-sm font-mono ${b}`},A.full_name),A.private&&Wr.default.createElement("span",{className:`text-xs ${v}`},"private"))),C.length===0&&Wr.default.createElement("p",{className:`text-sm ${v}`},"No repositories match.")),(S||k)&&Wr.default.createElement("div",{className:"space-y-2"},S,k,p&&Wr.default.createElement("p",{className:"text-sm text-red-500"},p)))}var OX={linked:{tone:"success",text:"GitHub App installation linked. Choose the repositories this workspace may use on it."},pending:{tone:"success",text:"Installation requested. Once an owner of the organization approves it on GitHub, that owner has to link it from this page."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub App return expired or was not started here. Try again from this page."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try again."},missing_installation:{tone:"error",text:"GitHub did not say which installation to link. Try installing again."},not_found:{tone:"error",text:"Your GitHub account cannot reach that installation, so it was not linked."},not_admin:{tone:"error",text:"Only the account the App is installed on, or an admin of its organization, can link an installation."},taken:{tone:"error",text:"That installation is already linked to another workspace."},not_configured:{tone:"error",text:"No GitHub App is configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub App."},manifest_error:{tone:"error",text:"GitHub did not finish creating the App. Try again."},manifest_unavailable:{tone:"error",text:"Creating a GitHub App is not available on this dashboard."},error:{tone:"error",text:"Could not finish linking the GitHub App. Try again."}};function PX(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function m_(e){return e.status==="removed"?{label:"Removed from GitHub: reinstall or unlink",tone:"error"}:e.status==="suspended"?{label:"Suspended on GitHub",tone:"warning"}:null}function MX(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>m_(a)).length,n=t.length===1?"GitHub App installation":"GitHub App installations",o=r>0?` (${r} ${r===1?"needs":"need"} attention)`:"";return{text:`${t.length} ${n}${o}`,active:t.length-r}}function DX(e,t){let r=new Map;return(t||[]).forEach(n=>{m_(n)||(n.repositories||[]).forEach(o=>{let a=o.full_name.toLowerCase();r.has(a)||r.set(a,{...o,source:"app",installation:n})})}),(e?.repositories||[]).forEach(n=>{let o=n.full_name.toLowerCase();r.has(o)||r.set(o,{...n,source:"oauth",installation:null})}),[...r.values()]}function IX(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function jX(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function $X(e,t,r){let n=e.createElement("form");n.method="post",n.action=t,n.style.display="none";let o=e.createElement("input");return o.type="hidden",o.name="manifest",o.value=JSON.stringify(r),n.appendChild(o),e.body.appendChild(n),n.submit(),n}function QM({app:e,onChanged:t,onError:r,onNotice:n}){let{darkMode:o}=st(),[a,i]=(0,Bt.useState)(null),[s,l]=(0,Bt.useState)(null),[u,c]=(0,Bt.useState)(new Set),[d,f]=(0,Bt.useState)(""),[p,m]=(0,Bt.useState)(!1),[y,x]=(0,Bt.useState)(null),[h,g]=(0,Bt.useState)(""),[v,b]=(0,Bt.useState)(!1);if(!e||!e.configured&&!e.manifest_available)return null;let _=o?"text-gray-400":"text-gray-500",w=o?"text-white":"text-gray-900",C={backgroundColor:o?"#252525":"#f9fafb"},S=`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,k=`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`,A={error:o?"text-red-400":"text-red-600",warning:o?"text-amber-300":"text-amber-700"},O=async T=>{r(null);try{let E=await fetch(`/api/github_installations/${T.id}/repositories`),I=await E.json().catch(()=>({}));if(!E.ok)throw I.reinstall_required&&t(),new Error(I.error||"Could not list the installation's repositories.");l(I.repositories||[]),c(new Set((T.repositories||[]).map(j=>j.full_name))),f(""),i(T.id)}catch(E){r(E.message)}},$=async T=>{x(T.id),r(null);try{let E=await fetch(`/api/github_installations/${T.id}/repositories`),I=await E.json().catch(()=>({}));if(!E.ok)throw new Error(I.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${T.account_login} is active again.`})}catch(E){r(E.message)}finally{x(null),t()}},F=()=>{i(null),l(null)},P=async()=>{m(!0),r(null);try{let T=await fetch(`/api/github_installations/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...u]})}),E=await T.json().catch(()=>({}));if(!T.ok)throw new Error(E.error||"Could not save the selection.");F(),n({tone:"success",text:"Repository selection saved."}),t()}catch(T){r(T.message)}finally{m(!1)}},z=async T=>{if(await cn({title:`Unlink @${T.account_login}?`,message:"New sandboxes can no longer check out its repositories. The App stays installed on GitHub; uninstall it there to remove its access.",confirmLabel:"Unlink",danger:!0})){r(null);try{let E=await fetch(`/api/github_installations/${T.id}`,{method:"DELETE"});if(!E.ok&&E.status!==404)throw new Error("Could not unlink the installation.");a===T.id&&F(),t()}catch(E){r(E.message)}}},N=async()=>{let T=h.trim();if(T&&!jX(T)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}b(!0),r(null);try{let E=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(T?{organization:T}:{})}),I=await E.json().catch(()=>({}));if(!E.ok)throw new Error(I.error||"Could not start creating the GitHub App.");$X(document,I.url,I.manifest)}catch(E){r(E.message),b(!1)}};if(!e.configured)return Bt.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:C},Bt.default.createElement("p",{className:`text-sm font-medium ${w}`},"Use a GitHub App"),Bt.default.createElement("p",{className:`text-xs ${_}`},"A GitHub App gives each checkout a one-hour token limited to its one repository. Create one for this dashboard: GitHub registers it, and this page shows its settings once to add to your configuration."),Bt.default.createElement("div",{className:"flex items-center gap-2"},Bt.default.createElement("input",{type:"text",value:h,onChange:T=>g(T.target.value),placeholder:"Organization (optional)",className:`flex-1 px-3 py-1 border rounded text-sm ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),Bt.default.createElement("button",{type:"button",onClick:N,disabled:v,className:`${S} disabled:opacity-50`},v?"Opening GitHub\u2026":"Create GitHub App")));let D=e.installations||[];return Bt.default.createElement("div",{className:"space-y-3"},Bt.default.createElement("div",{className:"flex items-center justify-between"},Bt.default.createElement("div",null,Bt.default.createElement("p",{className:`text-sm font-medium ${w}`},"GitHub App"),Bt.default.createElement("p",{className:`text-xs ${_}`},"Each checkout gets a one-hour token limited to its repository. When a repository is reachable both ways, the App is used.")),Bt.default.createElement("a",{href:ct("/api/github_installations/install"),className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600"},"Install the GitHub App")),D.length===0&&Bt.default.createElement("p",{className:`text-sm ${_}`},"No installation is linked yet. Install the App on the repositories this workspace should use."),D.map(T=>{let E=m_(T),I=T.repositories||[];return Bt.default.createElement("div",{key:T.id,className:"p-3 rounded-lg space-y-2",style:C},Bt.default.createElement("div",{className:"flex items-center justify-between gap-3"},Bt.default.createElement("div",{className:"min-w-0"},Bt.default.createElement("p",{className:`text-sm font-mono ${w}`},PX(T)),Bt.default.createElement("p",{className:`text-xs ${E?A[E.tone]:_}`},E?E.label:`${I.length} selected for sandboxes`)),Bt.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===T.id?Bt.default.createElement(Bt.default.Fragment,null,Bt.default.createElement("button",{type:"button",onClick:F,className:S},"Cancel"),Bt.default.createElement("button",{type:"button",onClick:P,disabled:p,className:"px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},p?"Saving\u2026":`Save (${u.size})`)):Bt.default.createElement(Bt.default.Fragment,null,E?Bt.default.createElement("button",{type:"button",onClick:()=>$(T),disabled:y===T.id,className:`${S} disabled:opacity-50`},y===T.id?"Checking\u2026":"Check again"):Bt.default.createElement("button",{type:"button",onClick:()=>O(T),className:S},"Choose repositories"),T.settings_url&&Bt.default.createElement("a",{href:T.settings_url,target:"_blank",rel:"noreferrer",className:S},"Access on GitHub"),Bt.default.createElement("button",{type:"button",onClick:()=>z(T),className:k},"Unlink")))),a===T.id&&s&&Bt.default.createElement(lf,{repositories:s,selection:u,onToggle:j=>c(q=>p_(q,j)),filter:d,onFilterChange:f}))}))}var fwe={connected:{tone:"success",text:"GitHub connected. Choose the repositories this workspace may use."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub sign-in expired or was not started here. Try connecting again."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try connecting again."},not_configured:{tone:"error",text:"GitHub OAuth is not configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub connection."},error:{tone:"error",text:"Could not finish connecting GitHub. Try again."}};function RM({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=st(),[o,a]=(0,Be.useState)(null),[i,s]=(0,Be.useState)(null),[l,u]=(0,Be.useState)(new Set),[c,d]=(0,Be.useState)(""),[f,p]=(0,Be.useState)(!1),[m,y]=(0,Be.useState)(null),[x,h]=(0,Be.useState)(fwe[e]||OX[t]||null),[g,v]=(0,Be.useState)([]),[b,_]=(0,Be.useState)(null),[w,C]=(0,Be.useState)({}),[S,k]=(0,Be.useState)(null),[A,O]=(0,Be.useState)(null),[$,F]=(0,Be.useState)(0),[P,z]=(0,Be.useState)({}),N=(0,Be.useRef)({}),D=(0,Be.useCallback)(async()=>{try{let ce=await fetch("/api/github_connection");if(!ce.ok)throw new Error("status failed");let Ze=await ce.json();a(Ze),u(new Set((Ze.connection?.repositories||[]).map(fr=>fr.full_name)))}catch{y("Could not load the GitHub connection. Are you signed in?")}},[]);(0,Be.useEffect)(()=>{D()},[D]);let T=(0,Be.useCallback)(async()=>{try{let ce=await fetch("/api/sandboxes?sandbox_type=app_runtime"),Ze=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(Xe(Ze,`Could not list your sandboxes (HTTP ${ce.status}).`));v(Ze.sandboxes||[]),_({codeSessions:!!Ze.code_sessions_supported,claudeCode:{...T2(Ze),sandboxes:Ze.claude_code_sandboxes||[]},codex:{supported:Ze.codex_sessions_supported===!0,connected:Ze.codex_connected===!0},pullRequests:Ze.pull_requests_supported===!0,browserModes:Array.isArray(Ze.browser_modes)?Ze.browser_modes:[]})}catch(ce){y(ce.message)}},[]),E=o!==null,I=!!o?.connected;(0,Be.useEffect)(()=>{E&&T()},[E,I,T,r]);let j=g.filter(ce=>C2(ce)&&!P[ce.session_id]?.stopped).map(ce=>ce.session_id).join(" ");(0,Be.useEffect)(()=>{if(!j)return;let ce=!1,Ze=setTimeout(async()=>{let fr=await Promise.all(j.split(" ").map(async er=>{try{let Ke=await fetch(`/api/sandboxes/${encodeURIComponent(er)}`);if(Ke.status===404)return{id:er,gone:!0};let Kt=await Ke.json().catch(()=>({}));return Ke.ok?{id:er,sandbox:Kt.sandbox||null}:{id:er,status:Ke.status,error:Xe(Kt,`Could not check on this sandbox (HTTP ${Ke.status}).`)}}catch{return{id:er,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(ce)return;let Rt={};fr.forEach(({id:er,status:Ke,error:Kt})=>{if(!Kt){delete N.current[er],Rt[er]=null;return}let Or=(N.current[er]||0)+1;N.current[er]=Or,Rt[er]={message:Kt,stopped:_2(Ke,Or)}}),z(er=>Object.entries(Rt).reduce((Ke,[Kt,Or])=>{if(Or)return{...Ke,[Kt]:Or};if(!(Kt in Ke))return Ke;let{[Kt]:oo,...us}=Ke;return us},er)),v(er=>fr.reduce((Ke,Kt)=>Kt.gone?Ke.filter(Or=>Or.session_id!==Kt.id):Kt.sandbox?TV(Ke,Kt.sandbox,"session_id"):Ke,er)),F(er=>er+1)},2e3);return()=>{ce=!0,clearTimeout(Ze)}},[j,$]);let q=ce=>{delete N.current[ce],z(Ze=>{let{[ce]:fr,...Rt}=Ze;return Rt})},te=(ce,Ze)=>{C(fr=>({...fr,[ce]:Ze}))},K=async()=>{y(null);try{let ce=await fetch("/api/github_connection/repositories"),Ze=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(Ze.error||"Could not list repositories.");s(Ze.repositories||[])}catch(ce){y(ce.message)}},le=ce=>{u(Ze=>p_(Ze,ce))},pe=async()=>{p(!0),y(null);try{let ce=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),Ze=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(Ze.error||"Could not save the selection.");a(fr=>({...fr,connection:Ze.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(ce){y(ce.message)}finally{p(!1)}},re=async()=>{if(await cn({title:"Disconnect GitHub?",message:"New checkout sandboxes can no longer clone its repositories. Sandboxes already running keep running until you stop them or they expire.",confirmLabel:"Disconnect",danger:!0}))try{if(!(await fetch("/api/github_connection",{method:"DELETE"})).ok)throw new Error("disconnect failed");s(null),h(null),await D()}catch{y("Could not disconnect GitHub.")}},_e=async ce=>{k(ce),te(ce,null);try{let Ze=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:ce})}),fr=await Ze.json().catch(()=>({}));if(!Ze.ok)throw new Error(Xe(fr,`Could not start the sandbox (HTTP ${Ze.status}).`));v(Rt=>dc(Rt,fr.sandbox,"session_id"))}catch(Ze){te(ce,Ze.message)}finally{k(null)}},ue=async ce=>{if(!(ce.status!=="failed"&&!await cn({title:"Stop this sandbox?",message:"Its app stops and its checkout is deleted, including any changes Claude Code made there.",confirmLabel:"Stop sandbox",danger:!0}))){O(ce.session_id),te(ce.repository,null);try{let Ze=await fetch(`/api/sandboxes/${encodeURIComponent(ce.session_id)}`,{method:"DELETE"}),fr=await Ze.json().catch(()=>({}));if(!Ze.ok&&Ze.status!==404)throw new Error(Xe(fr,`Could not stop the sandbox (HTTP ${Ze.status}).`));v(Rt=>Rt.filter(er=>er.session_id!==ce.session_id)),q(ce.session_id)}catch(Ze){te(ce.repository,Ze.message)}finally{O(null)}}},se=n?"text-gray-400":"text-gray-500",Z=n?"text-white":"text-gray-900",R={backgroundColor:n?"#252525":"#f9fafb"},L=`px-3 py-1 text-sm rounded ${n?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,B=o?.connection,H=B?.repositories||[],M=o?.app?.configured?o.app.installations||[]:[],ne=DX(B,M),{byRepository:U,others:oe}=PV(g,ne.map(ce=>ce.full_name)),ye=M.length>0,Je=MX(M),Ft=n?"text-red-400":"text-red-600",Nt=(ce,{standalone:Ze=!1}={})=>{let{label:fr,tone:Rt}=_V(ce.status),er=C2(ce),Ke=AV(ce),Kt=Ke?kV(ce.expires_at):null,Or=er?P[ce.session_id]:null;return Be.default.createElement("div",{key:ce.session_id,className:Ze?"p-3 rounded-lg space-y-2":`mt-3 pt-3 border-t space-y-2 ${n?"border-gray-700":"border-gray-200"}`,style:Ze?R:void 0},Be.default.createElement("div",{className:"flex items-center justify-between gap-3"},Be.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},Be.default.createElement(fc,{tone:Rt},fr),Be.default.createElement("span",{className:`font-mono truncate ${se}`},Ze?ce.repository:"","@",ce.repository_ref),Kt&&Be.default.createElement("span",{className:`shrink-0 ${se}`},"\xB7 ",Kt),c_(ce)&&Be.default.createElement("a",{href:ct(c_(ce)),onClick:oo=>{oo.preventDefault(),It(c_(ce))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:ce.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",ce.project.name," \u2192")),Be.default.createElement("button",{onClick:()=>ue(ce),disabled:A===ce.session_id,className:`shrink-0 px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},A===ce.session_id?"Stopping\u2026":ce.status==="failed"?"Dismiss":"Stop")),er&&!Or?.stopped&&Be.default.createElement("p",{className:`text-xs ${se}`},"Checking out the repository and booting its app; this can take a few minutes."),Or&&Be.default.createElement("p",{className:`text-xs ${Ft}`},Or.message," ",Or.stopped?Be.default.createElement(Be.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",Be.default.createElement("button",{type:"button",onClick:()=>q(ce.session_id),className:"underline"},"Retry")):"Trying again\u2026"),ce.error_message&&Be.default.createElement("pre",{className:`p-2 rounded text-xs font-mono whitespace-pre-wrap break-words max-h-48 overflow-y-auto border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},ce.error_message),ce.runtime_server_key&&Be.default.createElement("p",{className:`text-xs ${se}`},"Enable ",Be.default.createElement("code",{className:"font-mono"},ce.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),Ke&&b?.codeSessions&&Be.default.createElement(o0,{sandbox:ce,claudeCode:b.claudeCode?.mode==="sandbox_login"?{...b.claudeCode,connected:!!b.claudeCode.sandboxes.find(oo=>oo.session_id===ce.session_id)?.credential_mode}:b.claudeCode,codex:b.codex,onRecheckConnection:T}),Ke&&b&&!b.codeSessions&&Be.default.createElement("p",{className:`text-xs ${se}`},"The configured sandbox backend cannot run Claude Code sessions."),Ke&&b?.pullRequests&&Be.default.createElement(a0,{sandbox:ce}),Ke&&b?.browserModes.length>0&&Be.default.createElement(N0,{sandbox:ce,modes:b.browserModes}))};return Be.default.createElement("div",{className:"space-y-4"},Be.default.createElement("div",{className:"flex items-center justify-between"},Be.default.createElement("div",{className:"flex items-center space-x-3"},Be.default.createElement("span",{className:"text-xl"},"\u{1F419}"),Be.default.createElement("div",null,Be.default.createElement("p",{className:`font-medium ${Z}`},"GitHub"),Be.default.createElement("p",{className:`text-sm ${o?.connected||Je.active>0?n?"text-green-400":"text-green-600":se}`},o?[o.connected?`Connected as @${B.login}`:null,Je.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?Be.default.createElement("button",{onClick:re,className:`px-3 py-1 text-sm rounded ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},o.app?.configured?"Disconnect OAuth":"Disconnect"):o?.configured?Be.default.createElement("a",{href:ct("/api/github_connection/connect"),className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 text-sm"},o.app?.configured?"Connect with OAuth":"Connect GitHub"):null),o&&!o.configured&&!o.connected&&!o.app?.configured&&Be.default.createElement("p",{className:`text-sm ${se}`},"The operator has not configured a GitHub OAuth app. Set ",Be.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",Be.default.createElement("code",null,"github_client_secret")," (or ",Be.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",Be.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",Be.default.createElement("code",null,ct("/api/github_connection/callback"))," as its callback URL."),x&&Be.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${x.tone==="success"?n?"bg-green-900/20 border-green-800 text-green-300":"bg-green-50 border-green-200 text-green-800":n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},x.text),m&&Be.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},m),Be.default.createElement(QM,{app:o?.app,onChanged:D,onError:y,onNotice:h}),o?.connected&&Be.default.createElement("div",{className:"space-y-3"},Be.default.createElement("div",{className:"flex items-center justify-between"},Be.default.createElement("div",null,Be.default.createElement("p",{className:`text-sm font-medium ${Z}`},"OAuth connection"),Be.default.createElement("p",{className:`text-xs ${se}`},H.length," selected for sandboxes, cloned with @",B.login,"'s token.")),i?Be.default.createElement("div",{className:"flex items-center space-x-2"},Be.default.createElement("button",{onClick:()=>{s(null),u(new Set(H.map(ce=>ce.full_name)))},className:L},"Cancel"),Be.default.createElement("button",{onClick:pe,disabled:f,className:"px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},f?"Saving\u2026":`Save (${l.size})`)):Be.default.createElement("button",{onClick:K,className:L},"Choose repositories")),i&&Be.default.createElement(lf,{repositories:i,selection:l,onToggle:le,filter:c,onFilterChange:d})),(o?.connected||ye)&&!i&&Be.default.createElement("div",{className:"space-y-3"},Be.default.createElement("p",{className:`text-sm font-medium ${Z}`},"Available repositories"),ne.length===0?Be.default.createElement("p",{className:`text-sm ${se}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Be.default.createElement("div",{className:"space-y-2"},ne.map(ce=>{let Ze=U[ce.full_name]||[],fr=Ze.some(C2),Rt=o.app?.configured?` \xB7 via ${IX(ce)}`:"";return Be.default.createElement("div",{key:ce.full_name,className:"p-3 rounded-lg",style:R},Be.default.createElement("div",{className:"flex items-center justify-between"},Be.default.createElement("div",null,Be.default.createElement("p",{className:`text-sm font-mono ${Z}`},ce.full_name),Be.default.createElement("p",{className:`text-xs ${se}`},ce.private?"private":"public"," \xB7 ",ce.default_branch,Rt)),Be.default.createElement("button",{onClick:()=>_e(ce.full_name),disabled:S===ce.full_name||fr,className:`${L} disabled:opacity-50`},S===ce.full_name?"Starting\u2026":fr?"Booting\u2026":"Start sandbox")),w[ce.full_name]&&Be.default.createElement("p",{className:`mt-2 text-xs ${Ft}`},w[ce.full_name]),Ze.map(er=>Nt(er)))}))),!i&&oe.length>0&&Be.default.createElement("div",{className:"space-y-2"},Be.default.createElement("p",{className:`text-sm font-medium ${Z}`},I||ye?"Other sandboxes":"Checkout sandboxes"),Be.default.createElement("p",{className:`text-xs ${se}`},I||ye?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),oe.map(ce=>Be.default.createElement(Be.default.Fragment,{key:ce.session_id},w[ce.repository]&&Be.default.createElement("p",{className:`text-xs ${Ft}`},w[ce.repository]),Nt(ce,{standalone:!0})))))}var yt=G(Y());var e3="claude_code";function t3({onChange:e}){let{darkMode:t}=st(),[r,n]=(0,yt.useState)(null),[o,a]=(0,yt.useState)(null),[i,s]=(0,yt.useState)(!1),[l,u]=(0,yt.useState)(""),[c,d]=(0,yt.useState)(!1),[f,p]=(0,yt.useState)(null),[m,y]=(0,yt.useState)([]),[x,h]=(0,yt.useState)(""),g=(0,yt.useCallback)(async()=>{try{let[A,O]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!A.ok||!O.ok)throw new Error("load failed");let[$,F]=await Promise.all([A.json(),O.json()]);n(($.provider_keys||[]).find(z=>z.provider===e3)||{configured:!1}),a(T2(F));let P=(F.sandboxes||[]).filter(z=>z.status==="ready");y(P),h(z=>P.some(N=>N.session_id===z)?z:P[0]?.session_id||"")}catch{p("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,yt.useEffect)(()=>{g()},[g]);let v=async()=>{if(!(!l.trim()||c)){d(!0),p(null);try{let A=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e3,credential:l.trim()})});if(!A.ok){let O=await A.json().catch(()=>({}));throw new Error(Array.isArray(O.error)?O.error.join(", "):"Could not save the API key.")}s(!1),u(""),await g(),e?.()}catch(A){p(A.message)}finally{d(!1)}}},b=async()=>{if(await cn({title:"Remove the Claude Code API key?",message:"Sessions using a sandbox subscription keep their login.",confirmLabel:"Remove key",danger:!0}))try{if(!(await fetch(`/api/provider_keys/${e3}`,{method:"DELETE"})).ok)throw new Error("delete failed");await g(),e?.()}catch{p("Could not disconnect Claude Code.")}},_=t?"text-gray-400":"text-gray-500",w=qV(o,r),C=w.keyForm&&r?.configured,S={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:_}[w.tone],k=`underline ${t?"text-gray-300":"text-gray-700"}`;return yt.default.createElement("div",{className:"space-y-3"},yt.default.createElement("div",{className:"flex items-center justify-between"},yt.default.createElement("div",{className:"flex items-center space-x-3"},yt.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),yt.default.createElement("div",null,yt.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),yt.default.createElement("p",{className:`text-sm ${S}`},w.status))),w.keyForm&&yt.default.createElement("div",{className:"flex items-center space-x-2"},C&&!i&&yt.default.createElement("button",{onClick:b,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},w.view==="sandbox_login"?"Remove API key":"Disconnect"),yt.default.createElement("button",{onClick:()=>{s(!i),u(""),p(null)},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},i?"Cancel":w.view==="sandbox_login"?C?"Update API key":"Add API key":w.needsReplacing?"Replace":C?"Update":"Connect")),w.view==="local_login"&&yt.default.createElement("button",{onClick:()=>{p(null),g(),e?.()},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},"Check again")),w.view==="local_login"&&yt.default.createElement("p",{className:`text-xs ${_}`},"Sessions run ",yt.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",w.loginHint&&yt.default.createElement(yt.default.Fragment,null,"Run ",yt.default.createElement("code",{className:"font-mono"},w.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),w.needsReplacing&&!i&&yt.default.createElement("p",{className:`text-xs ${t?"text-amber-300":"text-amber-700"}`},"The Claude subscription token stored here is no longer used: Anthropic does not allow third-party apps to hold Claude.ai credentials. Replace it with an Anthropic API key to run Claude Code sessions."),w.keyForm&&i&&yt.default.createElement(yt.default.Fragment,null,yt.default.createElement("div",{className:"flex items-center space-x-2"},yt.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:A=>u(A.target.value),onKeyDown:A=>A.key==="Enter"&&v(),placeholder:WV,"aria-label":"Anthropic API key",autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${t?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),yt.default.createElement("button",{onClick:v,disabled:!l.trim()||c,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},c?"Saving\u2026":"Save")),yt.default.createElement("p",{className:`text-xs ${_}`},"Paste an Anthropic API key from the"," ",yt.default.createElement("a",{href:HV,target:"_blank",rel:"noreferrer",className:k},"Claude Console"),". It is encrypted at rest and passed to checkout sandboxes so they can run Claude Code sessions against the repository. Claude subscription logins cannot be stored here (",yt.default.createElement("a",{href:KV,target:"_blank",rel:"noreferrer",className:k},"why"),"); to use your own subscription, use the sandbox sign-in below when enabled by this installation.")),w.view==="sandbox_login"&&yt.default.createElement("div",{className:"space-y-3"},m.length>0?yt.default.createElement(yt.default.Fragment,null,yt.default.createElement("label",{className:`block text-xs ${_}`},"Sandbox",yt.default.createElement("select",{"aria-label":"Claude subscription sandbox",value:x,onChange:A=>h(A.target.value),className:"w-full mt-2 p-2 border rounded",style:{background:"var(--color-background)",color:"var(--color-text-primary)",borderColor:"var(--color-border)"}},m.map(A=>yt.default.createElement("option",{key:A.session_id,value:A.session_id},A.repository," \xB7 ",A.session_id.slice(0,8))))),m.find(A=>A.session_id===x)&&yt.default.createElement(Rd,{key:x,sandbox:m.find(A=>A.session_id===x),onChange:()=>{g(),e?.()}})):yt.default.createElement("p",{className:`text-sm ${_}`},"Start a checkout sandbox in ",yt.default.createElement("a",{className:"underline",href:ct("/projects")},"Projects")," to connect your Claude subscription."),yt.default.createElement("p",{className:`text-xs ${_}`},"Each member uses their own sandbox login. Sessions without a personal login use the account\u2019s Anthropic API key when one is connected.")),f&&yt.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${t?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},f))}var en=G(Y());function r3({onChange:e}){let{darkMode:t}=st(),[r,n]=(0,en.useState)(null),[o,a]=(0,en.useState)(!1),[i,s]=(0,en.useState)(""),[l,u]=(0,en.useState)(!1),[c,d]=(0,en.useState)(null),f=(0,en.useCallback)(async()=>{let h=await fetch("/api/provider_keys");if(!h.ok)throw new Error("Could not load the Codex connection.");let g=await h.json();n((g.provider_keys||[]).find(v=>v.provider==="codex")||{configured:!1})},[]);(0,en.useEffect)(()=>{f().catch(h=>d(h.message))},[f]);let p=async h=>{if(h.preventDefault(),!(l||!i.trim())){u(!0),d(null);try{let g=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:"codex",credential:i.trim()})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(Array.isArray(v.error)?v.error.join(", "):v.error||"Could not save the API key.");s(""),a(!1),await f(),e?.()}catch(g){d(g.message)}finally{u(!1)}}},m=async()=>{if(await cn({title:"Disconnect Codex?",message:"New Codex sessions will need an API key connected again.",confirmLabel:"Disconnect",danger:!0})){u(!0),d(null);try{if(!(await fetch("/api/provider_keys/codex",{method:"DELETE"})).ok)throw new Error("Could not disconnect Codex.");await f(),e?.()}catch(h){d(h.message)}finally{u(!1)}}},y=t?"text-gray-400":"text-gray-500",x=`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-800"}`;return en.default.createElement("div",{className:"space-y-3"},en.default.createElement("div",{className:"flex items-center justify-between gap-3"},en.default.createElement("div",null,en.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),en.default.createElement("p",{className:`text-sm ${y}`},r==null?"Loading\u2026":r.configured?`Connected \xB7 ${r.hint}`:"Not connected")),en.default.createElement("div",{className:"flex gap-2"},r?.configured&&!o&&en.default.createElement("button",{className:x,disabled:l,onClick:m},"Disconnect"),en.default.createElement("button",{className:x,disabled:l||r==null,onClick:()=>{a(!o),s(""),d(null)}},o?"Cancel":r?.configured?"Update":"Connect"))),en.default.createElement("p",{className:`text-sm ${y}`},"Run Codex in a repository checkout using an OpenAI API key. API usage is billed to that key's project."),o&&en.default.createElement("form",{onSubmit:p,className:"flex flex-wrap gap-2"},en.default.createElement("label",{className:`flex-1 text-sm ${y}`},"OpenAI API key for Codex",en.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:i,onChange:h=>s(h.target.value),placeholder:"sk-\u2026",disabled:l,className:`block w-full mt-1 px-3 py-2 border rounded ${t?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),en.default.createElement("button",{type:"submit",className:`${x} self-end`,disabled:l||!i.trim()},l?"Saving\u2026":"Save API key")),c&&en.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},c))}var pwe=["profile","api-keys","integrations","notifications","billing"];function mwe(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:pwe.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function n3({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=st(),[o]=(0,Ee.useState)(()=>window.ACTIVE_AGENT_DASHBOARD?.meta?.personalProviderKeys?"personal":void 0),[{tab:a,github:i,githubApp:s}]=(0,Ee.useState)(mwe),[l,u]=(0,Ee.useState)(a),[c,d]=(0,Ee.useState)(0),[f,p]=(0,Ee.useState)([]),[m,y]=(0,Ee.useState)([]),[x,h]=(0,Ee.useState)(!1),[g,v]=(0,Ee.useState)(""),[b,_]=(0,Ee.useState)(!1),[w,C]=(0,Ee.useState)(null),[S,k]=(0,Ee.useState)(!1),[A,O]=(0,Ee.useState)(null),$=(0,Ee.useCallback)(async()=>{try{let[E,I]=await Promise.all([fetch("/api/api_keys"),fetch(o_("/api/provider_keys",o))]);if(!E.ok||!I.ok)throw new Error("Failed to load keys");let j=await E.json(),q=await I.json();p(j.api_keys||[]),y(q.provider_keys||[]),O(null)}catch{O("Could not load API keys. Are you signed in?")}finally{h(!0)}},[o]);(0,Ee.useEffect)(()=>{l==="api-keys"&&!x&&$()},[l,x,$]);let F=a_({onKeysChanged:$,onError:O,scope:o}),P=async()=>{if(!(!g.trim()||b)){_(!0),O(null);try{let E=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.trim()})});if(!E.ok)throw new Error("create failed");let I=await E.json();C(I.api_key),k(!1),v(""),await $()}catch{O("Could not create the API key.")}finally{_(!1)}}},z=async E=>{if(await cn({title:"Revoke this API key?",message:"Requests using it stop working immediately. This cannot be undone.",confirmLabel:"Revoke key",danger:!0}))try{if(!(await fetch(`/api/api_keys/${E}`,{method:"DELETE"})).ok)throw new Error("delete failed");w&&w.id===E&&C(null),await $()}catch{O("Could not revoke the API key.")}},N=async E=>{try{await navigator.clipboard.writeText(E),k(!0),setTimeout(()=>k(!1),2e3)}catch{}},D={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};return Ee.default.createElement("div",{className:"p-6 space-y-6"},Ee.default.createElement("div",null,Ee.default.createElement("h2",{className:`text-2xl font-bold ${r?"text-white":"text-gray-900"}`},"Settings"),Ee.default.createElement("p",{className:`mt-1 ${r?"text-gray-400":"text-gray-500"}`},"Manage your account and preferences")),Ee.default.createElement("div",{className:"border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Ee.default.createElement("nav",{className:"flex space-x-8"},[{id:"profile",label:"Profile"},{id:"api-keys",label:"API Keys"},{id:"integrations",label:"Integrations"},{id:"notifications",label:"Notifications"},{id:"billing",label:"Billing"}].map(E=>Ee.default.createElement("button",{key:E.id,onClick:()=>u(E.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${l===E.id?"border-red-500 text-red-500":`border-transparent ${r?"text-gray-400 hover:text-gray-300":"text-gray-500 hover:text-gray-700"}`}`},E.label)))),l==="profile"&&Ee.default.createElement("div",{className:"space-y-6"},Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Profile Information"),Ee.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ee.default.createElement("div",null,Ee.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"First Name"),Ee.default.createElement("input",{type:"text",defaultValue:e?.name?.split(" ")[0]||"",className:`w-full px-3 py-2 border rounded-lg ${r?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),Ee.default.createElement("div",null,Ee.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Last Name"),Ee.default.createElement("input",{type:"text",defaultValue:e?.name?.split(" ")[1]||"",className:`w-full px-3 py-2 border rounded-lg ${r?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),Ee.default.createElement("div",{className:"md:col-span-2"},Ee.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Email"),Ee.default.createElement("input",{type:"email",defaultValue:e?.email||"",disabled:!0,className:`w-full px-3 py-2 border rounded-lg cursor-not-allowed ${r?"bg-gray-900 border-gray-700 text-gray-500":"bg-gray-100 border-gray-300 text-gray-500"}`}))),Ee.default.createElement("button",{className:"mt-4 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Save Changes")),Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Appearance"),Ee.default.createElement("div",{className:"flex items-center justify-between"},Ee.default.createElement("div",null,Ee.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Dark Mode"),Ee.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Use dark theme across the dashboard")),Ee.default.createElement("button",{onClick:n,className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${r?"bg-red-500":"bg-gray-300"}`},Ee.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${r?"translate-x-6":"translate-x-1"}`}))))),l==="api-keys"&&Ee.default.createElement("div",{className:"space-y-6"},Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("div",{className:"flex items-center justify-between mb-4"},Ee.default.createElement("h3",{className:`text-lg font-semibold ${r?"text-white":"text-gray-900"}`},"API Keys"),Ee.default.createElement("div",{className:"flex items-center space-x-2"},Ee.default.createElement("input",{type:"text",value:g,onChange:E=>v(E.target.value),onKeyDown:E=>E.key==="Enter"&&P(),placeholder:"Key name (e.g. production)",className:`px-3 py-2 border rounded-lg text-sm ${r?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),Ee.default.createElement("button",{onClick:P,disabled:!g.trim()||b,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},b?"Creating\u2026":"+ Create New Key"))),Ee.default.createElement("div",{className:`p-4 rounded-lg mb-4 ${r?"bg-yellow-900/20 border border-yellow-800":"bg-yellow-50 border border-yellow-200"}`},Ee.default.createElement("p",{className:`text-sm ${r?"text-yellow-300":"text-yellow-800"}`},"\u26A0\uFE0F API keys are secrets. Never share them or commit them to version control.")),A&&Ee.default.createElement("div",{className:`p-4 rounded-lg mb-4 text-sm ${r?"bg-red-900/20 border border-red-800 text-red-300":"bg-red-50 border border-red-200 text-red-700"}`},A),w&&Ee.default.createElement("div",{className:`p-4 rounded-lg mb-4 border ${r?"bg-green-900/20 border-green-800":"bg-green-50 border-green-200"}`},Ee.default.createElement("p",{className:`text-sm font-medium mb-2 ${r?"text-green-300":"text-green-800"}`},"Key \u201C",w.name,"\u201D created. Copy it now \u2014 it won't be shown again."),Ee.default.createElement("div",{className:"flex items-center space-x-2"},Ee.default.createElement("code",{"data-aa-secret":"",className:`flex-1 px-3 py-2 rounded text-sm font-mono break-all ${r?"bg-gray-900 text-green-300":"bg-white text-green-800 border border-green-200"}`},w.token),Ee.default.createElement("button",{onClick:()=>N(w.token),className:`px-3 py-2 text-sm rounded ${r?"bg-gray-700 text-gray-200 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},S?"Copied!":"Copy"),Ee.default.createElement("button",{onClick:()=>C(null),className:`px-3 py-2 text-sm rounded ${r?"text-gray-400 hover:text-gray-200":"text-gray-500 hover:text-gray-700"}`},"Dismiss"))),f.length===0?Ee.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Ee.default.createElement("p",null,x?"No API keys yet":"Loading\u2026"),x&&Ee.default.createElement("p",{className:"text-sm"},"Create your first API key to authenticate requests")):Ee.default.createElement("div",{className:"space-y-2"},f.map(E=>Ee.default.createElement("div",{key:E.id,className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Ee.default.createElement("div",null,Ee.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},E.name),Ee.default.createElement("p",{className:`text-sm font-mono ${r?"text-gray-400":"text-gray-500"}`},E.masked_token,Ee.default.createElement("span",{className:"font-sans"}," \xB7 created ",new Date(E.created_at).toLocaleDateString(),E.last_used_at?` \xB7 last used ${new Date(E.last_used_at).toLocaleDateString()}`:" \xB7 never used"))),Ee.default.createElement("button",{onClick:()=>z(E.id),className:`px-3 py-1 text-sm rounded ${r?"bg-red-900/40 text-red-300 hover:bg-red-900/60":"bg-red-50 text-red-600 hover:bg-red-100"}`},"Revoke"))))),Ee.default.createElement(k0,{providerKeys:m,editor:F,scope:o})),l==="integrations"&&Ee.default.createElement("div",{className:"space-y-6"},Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${r?"text-white":"text-gray-900"}`},"Integrations"),Ee.default.createElement("p",{className:`text-sm mb-4 ${r?"text-gray-400":"text-gray-500"}`},"Connect GitHub to choose which repositories this workspace may use. A sandbox started from one boots that app's own runtime, so agents and evaluations can run with its tools, and Claude Code or Codex can work on the checkout."),Ee.default.createElement(RM,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement(t3,{onChange:()=>d(E=>E+1)})),Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement(r3,{onChange:()=>d(E=>E+1)}))),l==="notifications"&&Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Email Notifications"),Ee.default.createElement("div",{className:"space-y-4"},[{label:"Agent execution alerts",desc:"Get notified when agents fail or complete",enabled:!0},{label:"Weekly usage reports",desc:"Summary of traces, costs, and performance",enabled:!0},{label:"Security alerts",desc:"Important security notifications",enabled:!0},{label:"Product updates",desc:"New features and improvements",enabled:!1}].map((E,I)=>Ee.default.createElement("div",{key:I,className:"flex items-center justify-between py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Ee.default.createElement("div",null,Ee.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},E.label),Ee.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},E.desc)),Ee.default.createElement("button",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${E.enabled?"bg-red-500":r?"bg-gray-700":"bg-gray-300"}`},Ee.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${E.enabled?"translate-x-6":"translate-x-1"}`})))))),l==="billing"&&Ee.default.createElement("div",{className:"space-y-6"},Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Subscription"),Ee.default.createElement("div",{className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Ee.default.createElement("div",null,Ee.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Free Plan"),Ee.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Current plan")),Ee.default.createElement("button",{className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Upgrade to Pro"))),Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Payment Method"),Ee.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No payment method on file"),Ee.default.createElement("button",{className:`mt-4 px-4 py-2 rounded-lg ${r?"bg-gray-700 text-gray-300":"bg-gray-200 text-gray-700"}`},"Add Payment Method")),Ee.default.createElement("div",{className:"border rounded-lg p-6",style:D},Ee.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Invoices"),Ee.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No invoices yet"))))}var He=G(Y());var gwe=[{label:"Find demo questions",message:"What demo questions worked in our latest evaluations? Show the evidence and tell me whether they are verified on current main."},{label:"Explain a failed eval",message:"Show my latest evaluation reports and explain which failures need attention."},{label:"Draft an agent",message:"Prepare a read-only support agent that cites available evidence and explains missing information instead of inventing answers."}],o3={width:"100%",background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border-strong)",borderRadius:8,padding:"9px 12px",font:"inherit"},ss={color:"var(--color-text-muted)",fontSize:12};function LX(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?ct(t):null}function hwe({card:e,onAsk:t,busy:r}){let n=LX(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return He.default.createElement(Ve,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},He.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},He.default.createElement(Te,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&He.default.createElement(Te,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&He.default.createElement("span",{style:ss},String(e.check_strength).replaceAll("_"," "))),He.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),He.default.createElement("div",{style:{...ss,fontFamily:X}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&He.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&He.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&He.default.createElement("div",{style:ss},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&He.default.createElement("div",{style:ss},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&He.default.createElement("div",{style:ss},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&He.default.createElement("details",{style:ss},He.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),He.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>He.default.createElement("li",{key:u},l)))),He.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&He.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===ct("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&He.default.createElement(de,{size:"sm",disabled:r,onClick:()=>t(`Read evaluation ${e.evaluation_id}, run ${a}. Explain its results, the strength of its checks, and what needs fixing.`)},"Explain this run")))}function ywe({draft:e,onReview:t}){return He.default.createElement(Ve,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},He.default.createElement(qe,null,"Agent draft \xB7 not saved"),He.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),He.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),He.default.createElement("div",{style:{...ss,fontFamily:X}},e.provider," / ",e.model),He.default.createElement("details",null,He.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),He.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),He.default.createElement("p",{style:ss},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),He.default.createElement(de,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function a3({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[a,i]=(0,He.useState)(null),[s,l]=(0,He.useState)(""),[u,c]=(0,He.useState)(!1),[d,f]=(0,He.useState)(null),[p,m]=(0,He.useState)(!1),y=(0,He.useRef)(null),x=(0,He.useRef)(null),h=(0,He.useRef)(e);h.current=e,(0,He.useEffect)(()=>{let S=new AbortController;return fetch("/api/dashboard_assistant",{signal:S.signal}).then(async k=>{let A=await k.json();if(!k.ok)throw new Error(A.error||"Could not load assistant configuration.");i(A),h.current.provider||t({...h.current,...A.defaults})}).catch(k=>{k.name!=="AbortError"&&f({message:k.message})}),()=>{S.abort(),y.current?.abort()}},[]);let g=e.messages||[],v=e.provider||a?.defaults?.provider||"",b=e.model||"",_=a?.limits?.message_characters||8e3,w=a?.providers?.find(S=>S.id===v),C=async S=>{let k=S.trim();if(!k||u||!a||!o||!b.trim()||!p)return;let A=g.map(F=>({role:F.role,content:F.content})).slice(-12);for(;A.reduce((F,P)=>F+P.content.length,0)>24e3;)A.shift();let O=[...g,{role:"user",content:k}];t({...e,messages:O}),l(""),f(null),c(!0);let $=new AbortController;y.current=$;try{let F=await fetch("/api/dashboard_assistant",{method:"POST",signal:$.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:k,history:A,provider:v,model:b.trim(),allow_provider_processing:!0})}),P=await F.json();if(!F.ok){f({message:typeof P.error=="string"?P.error:"The assistant could not complete this request.",setup:P.setup_required,retry:k}),t({...e,messages:g}),l(k);return}t({...e,messages:[...O,{role:"assistant",content:P.answer,cards:P.cards||[],references:P.references||[],drafts:P.drafts||[],limitations:P.limitations||[]}]})}catch(F){F.name!=="AbortError"&&(f({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:g}),l(k))}finally{c(!1)}};return He.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},He.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},He.default.createElement("div",null,He.default.createElement(qe,null,"Workspace assistant"),He.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),He.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:14}},"Find evaluation evidence. Understand failures. Build the next agent.")),g.length>0&&He.default.createElement(de,{disabled:u,onClick:()=>{t({...e,messages:[]}),f(null),l(""),m(!1)}},"New conversation")),!g.length&&He.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},gwe.map(S=>He.default.createElement("button",{key:S.label,onClick:()=>{l(S.message),x.current?.querySelector("textarea")?.focus()},style:{textAlign:"left",padding:20,background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border)",borderRadius:12,cursor:"pointer"}},He.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},S.label," \u2197"),He.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},S.message)))),He.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},g.map((S,k)=>He.default.createElement("div",{key:k,style:{display:"grid",gap:12}},He.default.createElement(qe,{color:S.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},S.role==="user"?"You":"ActiveAgents"),He.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},S.content),S.cards?.map(A=>He.default.createElement(hwe,{key:A.id,card:A,onAsk:O=>{l(O),x.current?.querySelector("textarea")?.focus()},busy:u})),S.references?.length>0&&He.default.createElement("div",{"aria-label":"Evidence references",style:{...ss,display:"flex",gap:12,flexWrap:"wrap"}},S.references.map(A=>{let O=LX(A);return O&&He.default.createElement("a",{key:A.id,href:O,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-accent-ui)"}},A.id)})),S.drafts?.map(A=>He.default.createElement(ywe,{key:A.id,draft:A,onReview:r})),S.limitations?.length>0&&He.default.createElement("details",{style:ss},He.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),He.default.createElement("ul",{style:{paddingLeft:18}},S.limitations.map((A,O)=>He.default.createElement("li",{key:O},A)))))),u&&He.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&He.default.createElement(Ve,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},He.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&He.default.createElement(de,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),He.default.createElement(Ve,{padding:18},He.default.createElement("form",{ref:x,onSubmit:S=>{S.preventDefault(),C(s)},style:{display:"grid",gap:14}},He.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),He.default.createElement("textarea",{id:"assistant-question",placeholder:"Ask about your evals, or describe an agent to build\u2026",value:s,onChange:S=>l(S.target.value),maxLength:_,rows:3,disabled:u,style:{...o3,resize:"vertical",boxSizing:"border-box"}}),He.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},He.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",He.default.createElement("select",{"aria-label":"Assistant provider",value:v,disabled:u||!a,onChange:S=>{let k=a.providers.find(A=>A.id===S.target.value);m(!1),t({...e,provider:k?.id||"",model:k?.default_model||""})},style:o3},He.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(S=>He.default.createElement("option",{key:S.id,value:S.id},S.id,S.configured?"":" \xB7 setup needed")))),He.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",He.default.createElement("input",{"aria-label":"Assistant model",value:b,disabled:u||!a,maxLength:160,onChange:S=>{m(!1),t({...e,model:S.target.value})},style:o3})),He.default.createElement(de,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!b.trim()||!o||!p},u?"Working\u2026":"Ask ActiveAgents \u2192")),He.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},He.default.createElement("input",{type:"checkbox",checked:p,disabled:u||!a,onChange:S=>m(S.target.checked),style:{marginTop:4}}),He.default.createElement("span",null,"Allow ",v||"the selected provider"," / ",b||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),He.default.createElement("div",{style:{...ss,lineHeight:1.5}},o?w&&!w.configured?"This provider needs a credential in Settings before the assistant can respond.":"Uses your configured model provider. Agent drafts are reviewed before saving.":"Agent execution is disabled on this dashboard."," ","Reloading or starting a new conversation clears this conversation view. Your provider's data retention settings still apply."))))}var Wo=G(Y());var at=G(Y());var Po=G(Y());function vwe(e){let t=e.filter(o=>!o.ok);if(t.length===0)return"ready";let r=t.filter(o=>o.blocking).length,n=`${t.length} ${t.length===1?"item needs":"items need"} action`;return r?`${n} \xB7 ${r} ${r===1?"blocks":"block"} creating a project`:n}function i3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,Po.useState)(r),a=vwe(t);return Po.default.createElement(En,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},Po.default.createElement("button",{type:"button","data-testid":"capabilities-toggle","aria-expanded":n,onClick:()=>o(!n),style:{display:"flex",width:"100%",alignItems:"center",gap:8,padding:"8px 12px",border:0,background:"transparent",cursor:"pointer",fontSize:13,color:r?"var(--color-error-text)":"var(--color-text-secondary)",textAlign:"left"}},Po.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),Po.default.createElement("span",{"data-testid":"capabilities-summary"},a),Po.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&Po.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>Po.default.createElement("li",{key:i.key,"data-testid":`capability-${i.key}`,style:{display:"flex",gap:10,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Po.default.createElement(Ra,{kind:i.ok?"pass":i.blocking?"fault":"info"}),Po.default.createElement("div",{style:{minWidth:0,flex:1}},Po.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},Po.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&Po.default.createElement(qe,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&Po.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&Po.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:X,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var $r=G(Y());var zX={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:X,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function T0({rows:e,onChange:t,repository:r}){let[n,o]=(0,$r.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?s_(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return $r.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&$r.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"No environment variables were found in .env.example, .env.sample, .activeagents/sandbox.yml or ENV call sites."),e.map((s,l)=>{let u=s_(s.name),c=s.useOrganizationKey?[]:l_(s.name,s.value);return $r.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},$r.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},$r.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&$r.default.createElement(Te,{tone:"warning"},"required"),s.set&&$r.default.createElement(Te,{tone:"success"},"set"),s.sources?.length>0&&$r.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&$r.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?$r.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):$r.default.createElement($r.default.Fragment,null,!s.useOrganizationKey&&$r.default.createElement("input",{type:"password",autoComplete:"off",value:s.value,onChange:d=>a(l,{value:d.target.value}),placeholder:s.set?"Leave empty to keep the current value":"Value","aria-label":`${s.name} value`,style:{...zX,marginTop:6}}),s.organizationKey&&$r.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},$r.default.createElement("input",{type:"checkbox",checked:s.useOrganizationKey,onChange:d=>a(l,{useOrganizationKey:d.target.checked,consent:!1,value:""})}),"Use the organization's ",s.organizationKey," key"),s.useOrganizationKey&&$r.default.createElement("label",{"data-testid":`secret-consent-${s.name}`,style:{display:"flex",gap:6,alignItems:"flex-start",marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},$r.default.createElement("input",{type:"checkbox",checked:s.consent,onChange:d=>a(l,{consent:d.target.checked})}),"I understand ",r||"the repository","'s code can read the organization's ",s.organizationKey," key. It is read when the sandbox boots and never copied into the project."),c.map(d=>$r.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),$r.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},$r.default.createElement("div",{style:{flex:1}},$r.default.createElement(qe,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),$r.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...zX,marginTop:4}}),i&&$r.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),$r.default.createElement(de,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(RY(e,n)),o("")}},"Add")))}var BX={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function xwe({repository:e,preflight:t}){return t?at.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},at.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},at.default.createElement("span",{style:{fontFamily:X,fontSize:13,color:"var(--color-text-primary)"}},e),at.default.createElement(Te,{tone:u_[t.status]||"muted"},t.summary)),at.default.createElement("div",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},"Ruby ",t.ruby||"unpinned",t.ruby_source?` (${t.ruby_source})`:""," \xB7 railties ",t.railties||"not locked"," ","\xB7 engine ",t.actionagent||"not bundled"," \xB7 ref ",t.ref),t.reasons?.slice(1).map(r=>at.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>at.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function s3({onCreated:e,onCancel:t}){let[r,n]=(0,at.useState)(null),[o,a]=(0,at.useState)(null),[i,s]=(0,at.useState)(!1),[l,u]=(0,at.useState)(""),[c,d]=(0,at.useState)(null),[f,p]=(0,at.useState)(null),[m,y]=(0,at.useState)(null),[x,h]=(0,at.useState)(!1),[g,v]=(0,at.useState)([]),[b,_]=(0,at.useState)(""),[w,C]=(0,at.useState)(!1),[S,k]=(0,at.useState)("/"),[A,O]=(0,at.useState)(!1),[$,F]=(0,at.useState)(null),P=(0,at.useCallback)(async()=>{let j=await fetch("/api/projects/capabilities"),q=await j.json().catch(()=>({}));if(!j.ok)throw new Error(Xe(q,`Could not check what this dashboard can do (HTTP ${j.status}).`));return n(q),q},[]),z=(0,at.useCallback)(async()=>{a(null);let j=await fetch("/api/github_connection/repositories"),q=await j.json().catch(()=>({}));if(q.reconnect_required){s(!0);return}if(!j.ok)throw new Error(Xe(q,`Could not list repositories (HTTP ${j.status}).`));s(!1),a(q.repositories||[])},[]);(0,at.useEffect)(()=>{P().then(j=>j.github?.connected?z():null).catch(j=>F(j.message))},[P,z]);let N=(0,at.useCallback)(async(j,{typed:q=!1}={})=>{F(null),p(null),h(!0);try{let te=`repository=${encodeURIComponent(j)}`,K=await fetch(`/api/projects/preflight?${te}`),le=await K.json().catch(()=>({}));if(le.reconnect_required){s(!0);return}if(!K.ok){let _e=Xe(le,`Could not check ${j} (HTTP ${K.status}).`);q?p(_e):F(_e);return}if(d(le.repository.full_name),y(le.preflight),_(_e=>eX({name:_e,edited:w,fullName:le.repository.full_name})),v([]),le.preflight.status==="unsupported")return;let pe=await fetch(`/api/projects/discover_secrets?${te}`),re=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(Xe(re,`Could not read ${j}'s environment variables (HTTP ${pe.status}).`));v(_0(re.variables||[]))}catch(te){F(te.message)}finally{h(!1)}},[w]),D=async()=>{O(!0),F(null);try{let j=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:b,start_url:S,secrets:A0(g)})}),q=await j.json().catch(()=>({}));if(!j.ok)throw new Error(Xe(q,`Could not create the project (HTTP ${j.status}).`));e(q.project)}catch(j){F(j.message)}finally{O(!1)}},T=r?.github,E=tX({github:T,repositories:o,reconnectRequired:i,pendingApproval:T?.pending_approval===!0}),I=x?"Checking the repository\u2026":rX({capabilities:r,preflight:m,secretsProblem:_g(g)});return at.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},at.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},at.default.createElement("div",{style:{flex:1}},at.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),at.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Boot a repository in a sandbox, installing the engine there when it does not have it, and evaluate an agent against the running app.")),at.default.createElement(de,{onClick:t},"Cancel")),$&&at.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},$),at.default.createElement(Ve,null,at.default.createElement(qe,null,"Repository"),at.default.createElement("div",{style:{marginTop:8}},at.default.createElement(lf,{mode:"single",state:E,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:j=>N(j),settingsHref:ct("/settings?tab=integrations"),missingRepositoryUrl:T?.access_settings_url,onRefresh:()=>z().catch(j=>F(j.message)),onTypeName:j=>N(j,{typed:!0}),typedNameError:f})),m&&at.default.createElement("div",{style:{marginTop:12}},at.default.createElement(xwe,{repository:c,preflight:m}))),r&&at.default.createElement(i3,{capabilities:r}),m&&m.status!=="unsupported"&&at.default.createElement(Ve,null,at.default.createElement(qe,null,"Project"),at.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},at.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",at.default.createElement("input",{type:"text",value:b,onChange:j=>{_(j.target.value),C(j.target.value!=="")},style:{...BX,marginTop:4}})),at.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",at.default.createElement("input",{type:"text",value:S,onChange:j=>k(j.target.value),style:{...BX,marginTop:4,fontFamily:X}}))),at.default.createElement("div",{style:{marginTop:16}},at.default.createElement(qe,null,"Secrets the boot needs"),at.default.createElement("div",{style:{marginTop:8}},at.default.createElement(T0,{rows:g,onChange:v,repository:c})))),at.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},I&&at.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},I),at.default.createElement(de,{variant:"primary",onClick:D,disabled:!!I||A,testId:"create-project"},A?"Creating\u2026":"Create project")))}var We=G(Y());var Gt=G(Y());function FX(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function l3(e){return(e?.options||[]).map(t=>{if(t&&typeof t=="object"){let r=String(t.value??t.label??"");return{value:r,label:String(t.label??r)}}return{value:String(t),label:String(t)}})}function UX(e,t){if(!e||e.kind==="confirm")return null;let r=typeof t=="string"?t:"";return r.trim()?e.kind==="secret"&&r.length<8?"A secret is at least 8 characters.":e.kind==="choice"&&!l3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function WX(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function HX(e){return e?e.available?e.last_run?`The setup assistant ${{awaiting_input:"is waiting for you",running:"is working",pending:"is starting",complete:"finished",failed:"failed"}[e.last_run.status]||e.last_run.status}.`:e.auto?"When a boot fails, the setup assistant reads its logs and asks for what is missing.":"The setup assistant starts only when you ask for it.":e.reason||"The setup assistant is not available.":null}function KX(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||u3(e)||(Number(e?.pending_input_requests)||0)>0}var bwe=6e4;function qX(e,t,r=Date.now()){return e?.sandbox_state!=="failed"||e?.setup?.auto===!1||t==null||!e.setup?.claude_code?.available&&!e.setup?.available?!1:r-t[n.name,o]));return Object.keys(e).sort((n,o)=>(r.get(n)??1/0)-(r.get(o)??1/0)||n.localeCompare(o)).map(n=>{let o=(t.find(i=>i.name===n)?.columns||[]).map(i=>i.name),a=i=>[...i].sort((s,l)=>(o.indexOf(s)+1||1/0)-(o.indexOf(l)+1||1/0));return{model:n,filterable:a(e[n].filterable),returns:a(e[n].returns)}})}function ZX(e,t=[],r=[]){let n=o=>JSON.stringify(o.map(a=>({model:a.model,filterable:[...a.filterable||[]].sort(),returns:[...a.returns||[]].sort()})).sort((a,i)=>a.model.localeCompare(i.model)));return n(d3(e,r))!==n(t)}function JX(e){return e?e.status==="queued"||e.status==="publishing"?{label:"publishing\u2026",tone:"info"}:e.status==="failed"?e.head_commit&&!e.number?{label:"branch published, pull request not opened",tone:"error"}:{label:"failed",tone:"error"}:e.state==="merged"?{label:"merged",tone:"success"}:e.state==="closed"?{label:"closed",tone:"muted"}:e.number?{label:e.draft?"draft open":"open",tone:"accent"}:{label:"branch published",tone:"warning"}:{label:"not opened",tone:"muted"}}function QX(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function RX(e){let t=e?.status==="queued"||e?.status==="publishing",r=!!e?.number&&!["merged","closed"].includes(e?.state),n=!e||["merged","closed"].includes(e.state)||!e.number&&!e.head_commit&&e.status==="failed",o=null;return!t&&e?.head_commit&&!e.number&&(o=e.status==="draft_refused"?"regular":"draft"),{canOpen:!t&&n,canUpdate:!t&&r,openBranch:o}}function eZ(e,t=[],r=""){let n=new URLSearchParams;for(let a of t)n.append("paths[]",a);r&&n.set("title",r);let o=n.toString();return`/api/projects/${e}/install_pull_request/patch${o?`?${o}`:""}`}async function tZ(e){return e.json().catch(()=>({}))}function f3({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,Gt.useState)(null),[a,i]=(0,Gt.useState)({}),[s,l]=(0,Gt.useState)(null),[u,c]=(0,Gt.useState)(!1),d=e.schema_tools||[],f=(0,Gt.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),y=await tZ(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(Xe(y,`Could not list the app's models (HTTP ${m.status}).`));o(y.models||[]),i(YX(y.schema_tools||[]))},[e.id]);(0,Gt.useEffect)(()=>{e.app_models_listed&&f().catch(m=>l(m.message))},[f,e.app_models_listed]);let p=async(m,y=!1)=>{c(!0),l(null);try{let x=await fetch(`/api/projects/${e.id}/schema_tools`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({schema_tools:d3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await tZ(x);if(x.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>p(m,!0));return}if(!x.ok)throw new Error(Xe(h,`Could not save what the assistant may read (HTTP ${x.status}).`));t?.(h.project)}catch(x){l(x.message)}finally{c(!1)}};return Gt.default.createElement(wwe,{listed:e.app_models_listed,models:n,selection:a,changed:n?ZX(a,d,n):!1,busy:u,error:s,onToggle:(m,y,x)=>i(h=>XX(h,m,y,x)),onSave:()=>p(!1),onSaveAndRestart:()=>p(!0)})}function wwe({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,Gt.useMemo)(()=>Object.keys(r||{}),[r]);return Gt.default.createElement(En,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},Gt.default.createElement("p",{style:{margin:0,padding:"10px 12px",fontSize:13,color:"var(--color-text-secondary)"}},"Each model you choose gets find, count and get tools that filter on and return only the columns ticked here. Columns that look like secrets are never listed. The tools are written into the sandbox's checkout on every boot, and go into the install pull request."),!e&&Gt.default.createElement("p",{style:{margin:0,padding:"0 12px 12px",fontSize:13,color:"var(--color-text-secondary)"}},"Boot the project first: a boot lists the app's models."),a&&Gt.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&Gt.default.createElement("p",{style:{margin:0,padding:"0 12px 12px",fontSize:13,color:"var(--color-text-secondary)"}},"The app has no models with a table."),(t||[]).map(c=>{let d=r?.[c.name];return Gt.default.createElement("details",{key:c.name,open:!!d,"data-testid":`assistant-model-${c.name}`,style:{borderTop:"1px solid var(--color-border-light)",padding:"8px 12px"}},Gt.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},Gt.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),Gt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&Gt.default.createElement(Te,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),Gt.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},Gt.default.createElement("thead",null,Gt.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},Gt.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),Gt.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),Gt.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),Gt.default.createElement("tbody",null,c.columns.map(f=>Gt.default.createElement("tr",{key:f.name},Gt.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:X,color:"var(--color-text-primary)"}},f.name," ",Gt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},f.type)),["filterable","returns"].map(p=>Gt.default.createElement("td",{key:p,style:{padding:"2px 12px",textAlign:"center"}},Gt.default.createElement("input",{type:"checkbox","aria-label":`${p==="filterable"?"Filter on":"Read back"} ${c.name}.${f.name}`,checked:!!d?.[p]?.has(f.name),disabled:o,onChange:()=>i(c.name,p,f.name)}))))))))}),e&&t&&t.length>0&&Gt.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Gt.default.createElement(de,{size:"sm",onClick:s,disabled:o||!n},"Save"),Gt.default.createElement(de,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var _a=G(Y());function p3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return _a.default.createElement(En,{title:"Boot",meta:FX(o)||n||"none",testId:"project-boot-progress"},a.length===0&&_a.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},n==="booting"?"Waiting for the sandbox to report its steps\u2026":"No boot to show yet."),a.length>0&&_a.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>_a.default.createElement("li",{key:i.name,"data-testid":`boot-step-${i.name}`,style:{display:"grid",gridTemplateColumns:"92px 170px 1fr 80px",gap:10,alignItems:"baseline",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},_a.default.createElement(Te,{tone:aX[i.status]||"muted"},i.status),_a.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},nX(i.name)," ",_a.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},i.name)),_a.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),_a.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":oX(i.duration_ms))))),r&&_a.default.createElement("div",{"data-testid":"boot-error",style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)",whiteSpace:"pre-wrap"}},r),t?.text&&_a.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},_a.default.createElement("div",{style:{padding:"6px 12px",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),_a.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:X,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Bs=G(Y());var rZ="/settings?tab=integrations";function m3({project:e,modes:t=[],watchOnOpen:r=!1,onChange:n}){let o=e.sandbox,a=e.sandbox_state==="ready"&&!!o?.session_id,i={margin:0,fontSize:13,color:"var(--color-text-secondary)"},s;return t.length===0?s=Bs.default.createElement("p",{style:i},"This dashboard's sandbox backend runs no browsers. The project's agent works through the app's tools."):a?s=Bs.default.createElement(Bs.default.Fragment,null,Bs.default.createElement("p",{style:i},"A browser of the sandbox's own, opened on ",e.repository,"'s running app. Watch it live, take over to click and type, and hand back. Agent runs reach it as ",Bs.default.createElement("span",{style:{fontFamily:X}},"browser:",o.session_id),"."),Bs.default.createElement(N0,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Bs.default.createElement("p",{style:i},"Boot the sandbox to start its browser. It opens on the running app, and you can watch it live and take over."),Bs.default.createElement(En,{title:"Browser",meta:Bs.default.createElement(Ii,{href:ct(rZ),onClick:()=>It(rZ)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var yn=G(Y());var Swe=e=>e?new Date(e).toLocaleString():"\u2014",kwe={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function g3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,yn.useState)(null),[i,s]=(0,yn.useState)(""),[l,u]=(0,yn.useState)(!1),c=o?l_(o,i):[],d=async f=>{u(!0);try{await f()}catch{return}finally{u(!1)}};return yn.default.createElement(En,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&yn.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&yn.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),yn.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(f=>yn.default.createElement("li",{key:f.name,"data-testid":`environment-${f.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},yn.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},yn.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},f.name),yn.default.createElement(Te,{tone:f.source==="organization_key"?"info":"muted"},kwe[f.source]?.(f)||"entered"),yn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},f.set_by?.name?`set by ${f.set_by.name}`:"set"," \xB7 ",Swe(f.updated_at)),yn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},f.source!=="organization_key"&&yn.default.createElement(de,{size:"sm",onClick:()=>{a(f.name),s("")},disabled:l},"Replace"),yn.default.createElement(de,{size:"sm",variant:"danger",onClick:()=>d(()=>r(f.name)),disabled:l},"Delete"))),f.source==="setup_assistant"&&typeof f.value=="string"&&yn.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},f.name,"=",f.value),o===f.name&&yn.default.createElement("form",{style:{display:"flex",gap:6,marginTop:8,flexWrap:"wrap"},onSubmit:p=>{p.preventDefault(),i&&d(async()=>{await t(f.name,i),a(null),s("")})}},yn.default.createElement("input",{type:"password",autoComplete:"off",value:i,onChange:p=>s(p.target.value),placeholder:"New value","aria-label":`New value for ${f.name}`,style:{flex:1,minWidth:200,padding:"6px 10px",borderRadius:6,fontFamily:X,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),yn.default.createElement(de,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),yn.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(p=>yn.default.createElement("div",{key:p.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},p.message)))))))}var vn=G(Y());var wc=G(Y());var _we=["proposed","edited"],v3={answerable:{label:"answerable",tone:"success",title:"Every expected tool is one the agent can call."},needs_tool:{label:"needs a tool",tone:"warning",title:"The agent cannot call every tool a good answer needs."},unverified:{label:"unverified",tone:"muted",title:"The agent's tools could not be read when this was checked."}},g_={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},nZ={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function aZ(e){return e?.status==="pending"||e?.status==="running"}function h_(e){return _we.includes(e.state)}function x3(e=[],t=null){let r=e.filter(n=>h_(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function iZ(e=[],t=[]){let r=new Set(t.filter(h_).map(n=>n.id));return e.filter(n=>r.has(n))}function oZ(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function sZ(e={},t={}){return Object.keys(nZ).flatMap(r=>{let n=Number(e?.[r]);if(!Number.isFinite(n)||n<=0)return[];let o=Math.max(Number(t?.[r])||0,0);return[{key:r,label:nZ[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${oZ(r,o)} / ${oZ(r,n)}`}]})}function lZ(e){let t=e?.provenance||{},r=t.recording_id;if(!Number.isInteger(r)||r<=0)return null;let n=t.range||{},o=["from_ms","to_ms"].filter(a=>Number.isInteger(n[a])).map(a=>`${a}=${n[a]}`);return`/replay/${r}${o.length?`?${o.join("&")}`:""}`}function uZ({evaluation:e=null,candidates:t=[],selectedIds:r=[]}={}){let n=new Set(r),o=t.filter(s=>n.has(s.id)&&!s.scenario_key).length,a=(e?.enabled_scenario_count||0)+o,i=Math.max(e?.model_count||1,1);return{added:o,scenarios:a,models:i,executions:a*i}}function cZ(e,t=null){let r=`${e.scenarios} scenario${e.scenarios===1?"":"s"}`,n=`${e.models} model${e.models===1?"":"s"}`,o=`The run uses ${e.executions} execution${e.executions===1?"":"s"} (${r} \xD7 ${n}).`;return Number.isFinite(t)?`${o} ${t} remaining on your plan.`:o}function h3(e){return(e||[]).join(", ")}function y3(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function dZ(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:h3(t.tools),contains:h3(t.contains),not_contains:h3(t.not_contains)}}function fZ(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:y3(e.tools),contains:y3(e.contains),not_contains:y3(e.not_contains)}}function y_(e){return`/explorations/${e}`}function v_(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function O0({explorations:e,onOpen:t,selectedId:r=null}){return wc.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"exploration-list"},e.map(n=>{let o=n.counts||{},a=String(n.id)===String(r);return wc.default.createElement(Ve,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},wc.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},wc.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),wc.default.createElement(Te,{tone:g_[n.status]||"muted"},n.status),wc.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),wc.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",vo(n.created_at))))}))}var mt=G(Y());var uf=G(Y());function b3({budget:e,usage:t}){let r=sZ(e,t);return r.length===0?null:uf.default.createElement(En,{title:"Budget",testId:"exploration-budget",bodyStyle:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:8}},r.map(n=>{let o=n.ratio>=1?ra.error:n.ratio>=.8?ra.warning:ra.info;return uf.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},uf.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),uf.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},uf.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),uf.default.createElement("span",{style:{fontFamily:X,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var vt=G(Y());var Awe={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},Ag={width:"100%",boxSizing:"border-box",padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:"inherit",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};function Cg({label:e,children:t}){return vt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function w3({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,vt.useState)(null),c=v3[e.verdict]||v3.unverified,d=e.expectations||{},f=new Set(e.missing_tools||[]),p=e.provenance||{},m=lZ(e),y=h_(e),x=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,fZ(l))&&u(null)};return vt.default.createElement("li",{"data-testid":`exploration-candidate-${e.id}`,style:{listStyle:"none",padding:"12px 0",borderTop:"1px solid var(--color-border-light)",display:"flex",gap:10}},vt.default.createElement("input",{type:"checkbox","aria-label":`Accept candidate ${e.id}`,checked:t,disabled:!y||a,onChange:()=>r(e.id),style:{marginTop:3,alignSelf:"flex-start"}}),vt.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},vt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},vt.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),vt.default.createElement(Te,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),vt.default.createElement(Te,{tone:Awe[e.state]||"muted"},e.state),e.group&&vt.default.createElement(Te,null,e.group),e.scenario_key&&vt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?vt.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},vt.default.createElement(Cg,{label:"Prompt"},vt.default.createElement("input",{style:Ag,value:l.prompt,onChange:x("prompt")})),vt.default.createElement(Cg,{label:"Rubric: what a good answer does (the judge grades against it)"},vt.default.createElement("textarea",{style:{...Ag,minHeight:60},value:l.rubric,onChange:x("rubric")})),vt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},vt.default.createElement(Cg,{label:"Group"},vt.default.createElement("input",{style:Ag,value:l.group,onChange:x("group")})),vt.default.createElement(Cg,{label:"Tools (comma-separated)"},vt.default.createElement("input",{style:Ag,value:l.tools,onChange:x("tools")})),vt.default.createElement(Cg,{label:"Contains"},vt.default.createElement("input",{style:Ag,value:l.contains,onChange:x("contains")})),vt.default.createElement(Cg,{label:"Does not contain"},vt.default.createElement("input",{style:Ag,value:l.not_contains,onChange:x("not_contains")}))),vt.default.createElement("div",{style:{display:"flex",gap:8}},vt.default.createElement(de,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),vt.default.createElement(de,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):vt.default.createElement(vt.default.Fragment,null,vt.default.createElement("div",{style:{fontSize:13,color:e.notes?"var(--color-text-cell)":"var(--color-text-muted)"}},e.notes||"No rubric yet: the judge has nothing to grade the answer against."),(d.tools?.length>0||d.contains?.length>0||d.not_contains?.length>0)&&vt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:X,fontSize:11}},(d.tools||[]).map(g=>vt.default.createElement(Te,{key:g,tone:f.has(g)?"warning":"muted",title:f.has(g)?"The agent cannot call this tool":void 0},f.has(g)?`missing ${g}`:g)),(d.contains||[]).map(g=>vt.default.createElement(Te,{key:`c-${g}`},"contains \u201C",g,"\u201D")),(d.not_contains||[]).map(g=>vt.default.createElement(Te,{key:`n-${g}`},"not \u201C",g,"\u201D")))),i&&vt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i),(p.steps?.length>0||p.urls?.length>0||p.screenshots?.length>0||m)&&vt.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},vt.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),p.urls?.length>0&&vt.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11}},p.urls.join(" \xB7 ")),p.steps?.length>0&&vt.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},p.steps.map((g,v)=>vt.default.createElement("li",{key:v},g))),p.screenshots?.length>0&&vt.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11}},"Screenshots: ",p.screenshots.join(", "))),!l&&vt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&vt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&vt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&vt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>u(dZ(e)),disabled:a},"Edit"),y&&vt.default.createElement(de,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&vt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var S3={minutes:15,steps:150},pZ={minutes:120,steps:1e3,cost:100},mZ={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function hZ(e={}){let t={};for(let r of["minutes","steps","cost"]){let n=String(e[r]??"").trim();if(n==="")continue;let o=Number(n),a=r!=="cost";if(!Number.isFinite(o)||o<=0||a&&!Number.isInteger(o))return{error:`${mZ[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>pZ[r])return{error:`${mZ[r]} may be at most ${pZ[r]}.`};t[r]=o}return{budget:t}}var gZ={sandbox_not_ready:"Boot the project first: the explorer walks the app its sandbox serves.",exploration_running:"An exploration of this project is already walking the app. Stop it or wait for it to finish.",no_target:"Choose the agent to evaluate first: the explorer proposes questions for that agent.",browser_unavailable:null};function yZ(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&gZ[t.code]?gZ[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var Cwe={finished:"The explorer finished.",budget_minutes:"Its time budget ran out.",budget_steps:"Its browser step budget ran out.",budget_cost:"Its cost budget ran out.",budget_context:"Its conversation grew too long for the model.",stopped:"Stopped for review.",error:"It failed."};function vZ(e){return e?Cwe[e]||e:null}var Ewe={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function xZ(e){return e?{tone:Ewe[e.status]||"muted",text:e.message||e.status}:null}function bZ(e={},{passwordSaved:t=!1}={}){let r={};for(let n of["login_url","login","password","login_field","password_field","submit_field"]){let o=String(e[n]??"").trim();o&&(r[n]=n==="password"?String(e[n]):o)}return!r.password&&!t?{error:"Enter the test account's password."}:r.login_url&&(!r.login_url.startsWith("/")||r.login_url.startsWith("//"))?{error:"The login URL must be a path on the app, such as /users/sign_in."}:{payload:r}}function k3(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function wZ(e){return e.json().catch(()=>({}))}var Twe={explorer:"explorer agent",external:"submitted from outside the dashboard"};function P0({explorationId:e,onLoaded:t}){let[r,n]=(0,mt.useState)(null),[o,a]=(0,mt.useState)(null),[i,s]=(0,mt.useState)([]),[l,u]=(0,mt.useState)(!1),[c,d]=(0,mt.useState)(!1),[f,p]=(0,mt.useState)({}),[m,y]=(0,mt.useState)(null),[x,h]=(0,mt.useState)(null),g=(0,mt.useRef)(t);g.current=t;let v=(0,mt.useCallback)(async()=>{let T=await fetch(`/api/explorations/${e}`),E=await wZ(T);if(!T.ok)throw new Error(Xe(E,`Could not load the exploration (HTTP ${T.status}).`));return n(E),g.current?.(E),E},[e]);(0,mt.useEffect)(()=>{v().catch(T=>a(T.message))},[v]);let b=r?.candidates||[];(0,mt.useEffect)(()=>{r&&s(T=>l?iZ(T,b):x3(b,r.preselect_limit))},[r,l]);let _=aZ(r?.exploration);(0,mt.useEffect)(()=>{if(!_)return;let T=setInterval(()=>v().catch(E=>a(E.message)),3e3);return()=>clearInterval(T)},[_,v]),xg("ExplorationChannel",{exploration_id:e},T=>{bg(T)&&v().catch(()=>{})},!!e);let w=async(T,E,I)=>{d(!0),a(null);try{let j=await fetch(T,{method:E,headers:{"Content-Type":"application/json"},body:JSON.stringify(I||{})}),q=await wZ(j);return{res:j,data:q}}finally{d(!1)}},C=async(T,E)=>{let{res:I,data:j}=await w(`/api/explorations/${e}/candidates/${T}`,"PATCH",E);return I.ok?(p({...f,[T]:null}),await v(),!0):(p({...f,[T]:Xe(j,`Could not save the candidate (HTTP ${I.status}).`)}),!1)},S=async(T,E)=>C(T,{state:E}),k=T=>{u(!0),s(E=>E.includes(T)?E.filter(I=>I!==T):[...E,T])},A=async()=>{let{res:T,data:E}=await w(`/api/explorations/${e}/accept`,"POST",{candidate_ids:i});return T.ok?(p({}),y({accepted:E.accepted,evaluation:E.evaluation}),u(!1),n(E),g.current?.(E),E):(p(E.problems||{}),a(Xe(E,`Could not accept the candidates (HTTP ${T.status}).`)),null)},O=async(T,E,{confirm:I=!1}={})=>{let j=E?`/api/projects/${E.id}/run_evaluation`:`/api/evaluations/${T.id}/run`,{res:q,data:te}=await w(j,"POST",I?{confirm:!0}:{});if(q.status===409&&te.code==="confirmation_required"){h({question:te.confirmation,evaluation:T,project:E});return}if(!q.ok){a(Xe(te,`The scenarios were accepted, but the run did not start (HTTP ${q.status}).`));return}h(null),It(`/evaluations/${te.run?.evaluation_id||T.id}/runs/${te.run.id}`)},$=async()=>{let T=await A();T?.evaluation&&await O(T.evaluation,T.project)},F=async()=>{let{res:T,data:E}=await w(`/api/explorations/${e}/stop`,"POST");if(!T.ok&&T.status!==409){a(Xe(E,`Could not stop the exploration (HTTP ${T.status}).`));return}await v()};if(!r)return o?mt.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},o):mt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:P}=r,z=P.counts||{},N=uZ({evaluation:r.evaluation,candidates:b,selectedIds:i}),D=x3(b);return mt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},mt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},mt.default.createElement(qe,null,"Exploration ",P.id),mt.default.createElement(Te,{tone:g_[P.status]||"muted",testId:"exploration-status"},P.status),mt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},Twe[P.source]||P.source," \xB7 ",vo(P.created_at),P.start_url?` \xB7 from ${P.start_url}`:""),_&&mt.default.createElement(de,{size:"sm",onClick:F,disabled:c,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),P.stop_reason&&mt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},vZ(P.stop_reason)),P.error_message&&mt.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},P.error_message),mt.default.createElement(b3,{budget:P.budget,usage:P.usage}),o&&mt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},o),m&&mt.default.createElement(Ve,{padding:12,testId:"exploration-accepted"},mt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},"Added ",m.accepted?.added?.length||0," and updated ",m.accepted?.updated?.length||0," scenarios in ",m.evaluation?.name,".")," ",m.evaluation&&mt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/evaluations/${m.evaluation.id}`)},"Open evaluation")),x&&mt.default.createElement(Ve,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},mt.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},x.question),mt.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},mt.default.createElement(de,{variant:"primary",onClick:()=>O(x.evaluation,x.project,{confirm:!0}),disabled:c},"Run it on this machine"),mt.default.createElement(de,{onClick:()=>h(null)},"Cancel"))),mt.default.createElement(En,{title:"Found so far",meta:`${z.total||0} found \xB7 ${z.answerable||0} answerable \xB7 ${z.accepted||0} accepted`,testId:"exploration-candidates",bodyStyle:{padding:"0 12px"}},b.length===0?mt.default.createElement("div",{style:{padding:"12px 0",fontSize:13,color:"var(--color-text-secondary)"}},_?"Nothing yet. Candidates appear here as they are found.":"This exploration found nothing."):mt.default.createElement("ul",{style:{margin:0,padding:0}},b.map(T=>mt.default.createElement(w3,{key:T.id,candidate:T,selected:i.includes(T.id),onToggle:k,onSave:C,onState:S,busy:c,problem:f?.[T.id]||f?.[String(T.id)],agentId:r.target_agent?.id})))),b.length>0&&mt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},mt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},mt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>{u(!0),s(D)},disabled:c},"Select every answerable"),mt.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>{u(!0),s([])},disabled:c},"Clear"),r.preselect_limit!=null&&D.length>r.preselect_limit&&mt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",r.preselect_limit," selected.")),mt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},mt.default.createElement(de,{variant:"primary",onClick:A,disabled:c||i.length===0,testId:"exploration-accept"},"Accept ",i.length),mt.default.createElement(de,{onClick:$,disabled:c||i.length===0,testId:"exploration-accept-run"},"Accept and run"),mt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},cZ(N,r.runs_remaining)))))}var Aa=G(Y());var Owe={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:X,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function _3({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,Aa.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,Aa.useState)(null),[s,l]=(0,Aa.useState)(!1),{error:u,budget:c}=hZ(n),d=async()=>{l(!0),i(null);try{let p=await fetch(`/api/projects/${e}/explorations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({budget:c})}),m=await p.json().catch(()=>({}));if(!p.ok)throw new Error(yZ(p.status,m));r?.(m.exploration)}catch(p){i(p.message)}finally{l(!1)}},f=(p,m,y)=>Aa.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},Aa.default.createElement(qe,null,m),Aa.default.createElement("input",{type:"number",min:"0",value:n[p],placeholder:y,onChange:x=>o({...n,[p]:x.target.value}),"aria-label":m,style:Owe}));return Aa.default.createElement(En,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Aa.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"The explorer walks the app in the sandbox's browser and proposes the questions a user would ask the project's agent, each with a rubric. They wait here for review; nothing reaches the evaluation until you accept it."),Aa.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},f("minutes","Minutes",String(S3.minutes)),f("steps","Browser steps",String(S3.steps)),f("cost","Cost cap ($)","none"),Aa.default.createElement(de,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&Aa.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Boot the project first: the explorer walks the app its sandbox serves."),(u||a)&&Aa.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var Pt=G(Y());var Pwe={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:X,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},Mwe=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],SZ=e=>e?new Date(e).toLocaleString():"\u2014";async function cf(e,t,r){let n=await fetch(e,{method:t,headers:{"Content-Type":"application/json"},body:r?JSON.stringify(r):void 0}),o=await n.json().catch(()=>({}));if(!n.ok)throw new Error(Xe(o,`The request failed (HTTP ${n.status}).`));return o}function A3({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,Pt.useState)(null),[a,i]=(0,Pt.useState)(null),[s,l]=(0,Pt.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,Pt.useState)(null),[d,f]=(0,Pt.useState)(null),[p,m]=(0,Pt.useState)(null),[y,x]=(0,Pt.useState)(!1),h=(0,Pt.useCallback)(async()=>{let P=await cf(`/api/projects/${e}/sign_in`,"GET");o(P.sign_in);let z=P.sign_in?.credentials;z&&l(N=>({...N,login_url:z.login_url||"",login:z.login||"",...z.fields})),i(N=>N||(z?"credentials":P.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,Pt.useEffect)(()=>{h().catch(P=>f(P.message))},[h]);let g=async P=>{x(!0),f(null),m(null);try{await P()}catch(z){f(z.message)}finally{x(!1)}},v=n?.credentials,{error:b,payload:_}=bZ(s,{passwordSaved:!!v?.password_set}),w=xZ(u),C=()=>g(async()=>{let P=await cf(`/api/projects/${e}/sign_in`,"PUT",_);o(P.sign_in),l(z=>({...z,password:""})),m(P.warnings?.length?P.warnings.map(z=>z.message).join(" "):"Saved. The explorer signs in with them.")}),S=()=>g(async()=>{let P=await cf(`/api/projects/${e}/sign_in/check`,"POST");c(P.result),o(P.sign_in)}),k=()=>g(async()=>{await cf(`/api/sandboxes/${t}/browser`,"POST",{mode:"headed"}),await h(),m("A browser window opened on the app. Sign in there, then save its sign-in.")}),A=()=>g(async()=>{let P=await cf(`/api/projects/${e}/sign_in/save_browser`,"POST");o(P.sign_in),m("Saved. Every browser of this project now starts signed in.")}),O=()=>g(async()=>{await cf(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),$=()=>g(async()=>{let P=await cf(`/api/projects/${e}/sign_in`,"DELETE");o(P.sign_in),c(null),m("The explorer explores what is reachable without signing in.")}),F=(P,z,N="text",D="")=>Pt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},Pt.default.createElement(qe,null,z),Pt.default.createElement("input",{type:N,autoComplete:"off",value:s[P],placeholder:D,onChange:T=>l({...s,[P]:T.target.value}),"aria-label":z,style:Pwe}));return Pt.default.createElement(En,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Pt.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"How the explorer and the evaluation's replays sign in to the app. Credentials are typed into the app by the dashboard itself and never reach a model."),Pt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v&&Pt.default.createElement(Te,{tone:"success"},"credentials saved ",SZ(v.updated_at)),n?.storage_state&&Pt.default.createElement(Te,{tone:"success"},"browser sign-in saved ",SZ(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&Pt.default.createElement(Te,null,"no sign-in")),Pt.default.createElement(sc,{options:Mwe,value:a||"none",onChange:i}),a==="credentials"&&Pt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},Pt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},F("login_url","Login URL","text","/users/sign_in"),F("login","Login","text","dev@example.com"),F("password","Password","password",v?.password_set?"Saved; leave empty to keep it":"")),Pt.default.createElement("details",null,Pt.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),Pt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},F("login_field","Login field","text","#user_email"),F("password_field","Password field","text","#user_password"),F("submit_field","Submit button","text","button[type=submit]"))),Pt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Pt.default.createElement(de,{variant:"primary",size:"sm",onClick:C,disabled:y||!!b},"Save credentials"),Pt.default.createElement(de,{size:"sm",onClick:S,disabled:y||!v||!r,testId:"sign-in-check"},"Check sign-in"),b&&Pt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},b))),a==="by_hand"&&Pt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},Pt.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"Open the sandbox's browser in a window, sign in to the app there, then save its sign-in. Later browsers of this project start with it."),Pt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Pt.default.createElement(de,{size:"sm",onClick:k,disabled:y||!r||n?.browser_running},"Open a browser window"),Pt.default.createElement(de,{variant:"primary",size:"sm",onClick:A,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&Pt.default.createElement(de,{size:"sm",variant:"ghost",onClick:O,disabled:y},"Stop the browser"))),a==="none"&&(v||n?.storage_state)&&Pt.default.createElement("div",null,Pt.default.createElement(de,{size:"sm",variant:"danger",onClick:$,disabled:y},"Remove the saved sign-in")),w&&Pt.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:ra[w.tone]?.text||"var(--color-text-secondary)"}},w.text),p&&Pt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},p),d&&Pt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function C3({projectId:e,project:t,onCount:r}){let[n,o]=(0,vn.useState)(null),[a,i]=(0,vn.useState)(null),[s,l]=(0,vn.useState)(null),u=(0,vn.useCallback)(async()=>{let p=await fetch(`/api/explorations?project_id=${e}`),m=await p.json().catch(()=>({}));if(!p.ok)throw new Error(Xe(m,`Could not list the project's explorations (HTTP ${p.status}).`));o(m.explorations||[]),r?.(m.explorations?.length||0)},[e,r]);(0,vn.useEffect)(()=>{u().catch(p=>l(p.message))},[u]);let c=t?.sandbox_state==="ready",d=vn.default.createElement(vn.default.Fragment,null,vn.default.createElement(_3,{projectId:e,sandboxReady:c,onStarted:p=>{i(p.id),u().catch(m=>l(m.message))}}),vn.default.createElement(A3,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return vn.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return vn.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return vn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,vn.default.createElement(Ve,{testId:"project-explorations-empty"},vn.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No explorations yet. Explore the app above, or have an agent that explores it, such as a coding agent driving a browser, submit the questions it found with the explorations_submit MCP tool. They are reviewed here before any reaches the evaluation.")));let f=a||n[0].id;return vn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,vn.default.createElement(O0,{explorations:n,selectedId:f,onOpen:p=>i(p.id)}),vn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},vn.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(y_(f))},"Open on its own page")),vn.default.createElement(P0,{key:f,explorationId:f,onLoaded:()=>u().catch(()=>{})}))}var Zt=G(Y());var Dwe={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function kZ(e){return e.json().catch(()=>({}))}function E3({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,Zt.useState)(null),[i,s]=(0,Zt.useState)(null),l=(0,Zt.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await kZ(c);if(!c.ok)throw new Error(Xe(d,`Could not list what the project is waiting for (HTTP ${c.status}).`));a(d.input_requests||[])},[e]);(0,Zt.useEffect)(()=>{l().catch(c=>s(c.message))},[l,r]);let u=async(c,d,f)=>{let p=await fetch(`/api/input_requests/${c.id}/${d}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),m=await kZ(p);if(!p.ok)throw new Error(Xe(m,`Could not send the answer (HTTP ${p.status}).`));await l(),n?.()};return!o?.length&&!i?null:Zt.default.createElement(En,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&Zt.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>Zt.default.createElement(Iwe,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function Iwe({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,Zt.useState)(""),[a,i]=(0,Zt.useState)(!1),[s,l]=(0,Zt.useState)(null),u=async(c,d)=>{i(!0),l(null);try{await t(e,c,d),o("")}catch(f){l(f.message)}finally{i(!1)}};return Zt.default.createElement(jwe,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",WX(e,c)),onDecline:()=>u("decline")})}function jwe({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=UX(e,r),u=`project-answer-${e.id}`;return Zt.default.createElement("form",{"data-testid":`project-input-request-${e.id}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)",display:"flex",flexDirection:"column",gap:8},onSubmit:c=>{c.preventDefault(),e.kind!=="confirm"&&!l&&i(r)}},Zt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Zt.default.createElement(Te,{tone:e.kind==="secret"?"warning":"info"},Dwe[e.kind]||e.kind),Zt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),Zt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),Zt.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&Zt.default.createElement("select",{id:u,value:r,onChange:c=>n(c.target.value),disabled:o,style:{padding:"6px 8px",borderRadius:6,border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:"var(--color-text-primary)"}},Zt.default.createElement("option",{value:""},"Choose\u2026"),l3(e).map(c=>Zt.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&Zt.default.createElement("input",{id:u,type:e.kind==="secret"?"password":"text",autoComplete:e.kind==="secret"?"new-password":"off","data-aa-secret":e.kind==="secret"?"":void 0,value:r,onChange:c=>n(c.target.value),disabled:o,style:{padding:"6px 8px",borderRadius:6,border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:"var(--color-text-primary)",fontFamily:e.kind==="secret"?X:"inherit"}}),e.kind==="secret"&&Zt.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},t?"The assistant never sees this value: it is stored as one of the project's secrets.":"The agent never sees this value."),Zt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?Zt.default.createElement(Zt.default.Fragment,null,Zt.default.createElement(de,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),Zt.default.createElement(de,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):Zt.default.createElement(Zt.default.Fragment,null,Zt.default.createElement(de,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),Zt.default.createElement(de,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&Zt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&Zt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var St=G(Y());async function x_(e){return e.json().catch(()=>({}))}function N3({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,St.useState)(null),[i,s]=(0,St.useState)(null),[l,u]=(0,St.useState)(null),[c,d]=(0,St.useState)(0),[f,p]=(0,St.useState)(!1),m=(0,St.useCallback)(async()=>{let h=await fetch(n),g=await x_(h);if(!h.ok)throw new Error(Xe(g,`Could not read the install pull request (HTTP ${h.status}).`));return g},[n]);(0,St.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await m();if(h)return;a(b),s(null),b.project&&t?.(b.project);let _=QX(b.pull_request);_&&(g=setTimeout(v,_))}catch(b){h||s(b.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[m,c]);let y=async h=>{p(!0),s(null);try{let g=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await x_(g);if(!g.ok)throw new Error(Xe(v,`Could not open the pull request (HTTP ${g.status}).`));d(b=>b+1)}catch(g){s(g.message)}finally{p(!1)}},x=o?.pull_request||null;return e.install_state==="installed"&&!x?null:St.default.createElement(St.default.Fragment,null,St.default.createElement($we,{project:e,pullRequest:x,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:f,onOpenDialog:u,onOpenBranch:y}),l&&St.default.createElement(Lwe,{project:e,base:n,pullRequest:x,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function $we({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=JX(t),{canOpen:c,canUpdate:d,openBranch:f}=RX(t);return St.default.createElement(Ve,{testId:"project-install-pull-request"},St.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},St.default.createElement(qe,null,"Install pull request"),St.default.createElement(Te,{tone:u},l),t?.url&&St.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),St.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&St.default.createElement(de,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&St.default.createElement(de,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),f&&St.default.createElement(de,{size:"sm",onClick:()=>s(f==="regular"),disabled:a,testId:"open-install-branch"},a?"Opening\u2026":f==="regular"?"Open as a regular pull request":"Open the draft PR again"))),St.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.install_state==="installed"?"The pull request merged: the repository bundles the engine, and boots its own branch.":"Publishes what the sandbox installed as a draft pull request, from this dashboard, after you check the exact diff. Once it exists, every boot checks its branch out."),t?.branch&&St.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&St.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&St.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&St.default.createElement("details",{style:{marginTop:6}},St.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),St.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:X,fontSize:12,color:"var(--color-text-secondary)"}},n.map(p=>St.default.createElement("li",{key:p},p)))),o&&St.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function Lwe({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,St.useState)(null),[c,d]=(0,St.useState)(null),[f,p]=(0,St.useState)(!0),[m,y]=(0,St.useState)(null),[x,h]=(0,St.useState)(new Set),[g,v]=(0,St.useState)(s?r?.title||"":"Install ActiveAgent"),[b,_]=(0,St.useState)(""),[w,C]=(0,St.useState)(s&&r?.branch||""),[S,k]=(0,St.useState)(O2),[A,O]=(0,St.useState)(!1),[$,F]=(0,St.useState)(0);(0,St.useEffect)(()=>{let z=!1,N=null;p(!0);let D=async(T=!1)=>{try{let E=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(T?{confirm:!0}:{})}),I=await x_(E);if(z)return;if(E.status===409&&I.code==="confirmation_required"){o?.(I.confirmation,()=>D(!0));return}if(E.status===202){y(I.error),N=setTimeout(()=>D(),3e3);return}if(!E.ok)throw new Error(Xe(I,`Could not read the sandbox's changes (HTTP ${E.status}).`));y(null),u(I.preview),d(I.publishing),h(M2(I.preview.files)),C(j=>j||I.preview.suggested_branch||""),p(!1)}catch(E){z||(y(E.message),p(!1))}};return D(),()=>{z=!0,clearTimeout(N)}},[t,$]);let P=async()=>{O(!0),y(null);try{let z=I2({files:l?.files,selection:x,title:g,body:b,branch:w,message:S,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(z)}),D=await x_(N);if(!N.ok)throw P2(D.code)&&F(T=>T+1),new Error(Xe(D,`Could not publish (HTTP ${N.status}).`));i(D.pull_request)}catch(z){y(z.message)}finally{O(!1)}};return St.default.createElement(WP,{sandbox:{repository:e.repository,repository_ref:e.sandbox?.repository_ref||e.checkout_ref||"its default branch"},preview:l,loading:f,error:m,publishing:c,pullRequest:r,selection:x,onToggle:z=>h(N=>D2(N,z)),fields:{title:g,body:b,branch:w,message:S,allowlist:""},onField:(z,N)=>({title:v,body:_,branch:C,message:k})[z]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:A,onSubmit:P,onCancel:a,patchHref:(z,N)=>eZ(e.id,z,N)})}var tn=G(Y());var zwe={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},Bwe={progress:"info",success:"success",error:"error",neutral:"muted"};function T3({project:e,busy:t,onAsk:r,onFixWithClaudeCode:n,onToggleAuto:o}){let a=e?.setup;if(!a)return null;let i=a.last_run,s=a.claude_code,l=s?.last_session;return tn.default.createElement(Ve,{testId:"project-setup"},tn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},tn.default.createElement(qe,null,"Setup"),tn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},tn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},tn.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&tn.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},tn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},tn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&tn.default.createElement(Te,{tone:"muted"},"not used"),l&&tn.default.createElement(Te,{tone:Bwe[tf(l.status).tone]||"muted"},tf(l.status).label),c3(e)&&n&&tn.default.createElement(de,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),tn.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},VX(e)),l?.sandbox_session_id&&tn.default.createElement(o0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),tn.default.createElement("div",{style:{marginTop:12}},tn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},tn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&tn.default.createElement(Te,{tone:"muted"},"unavailable"),i&&tn.default.createElement(Te,{tone:zwe[i.status]||"muted"},i.status.replace("_"," ")),tn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&tn.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/agents/${a.agent_id}/interactions`)},"Open its runs"),GX(e)&&tn.default.createElement(de,{size:"sm",variant:c3(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),tn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},HX(a),!a.available&&" Set the variables the boot needs in the Environment tab.",a.available&&s?.available&&" Claude Code goes first when a boot fails; the setup assistant is the fallback."),tn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--color-text-muted)"}},"It reads the failed step's log, sets variables that are not secret, asks you for secrets, and retries the boot. It runs no commands and reads no files.")))}var _Z="/settings?tab=integrations",Fwe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},Uwe={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function ls(e){return e.json().catch(()=>({}))}function O3({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,We.useState)(null),[a,i]=(0,We.useState)(null),[s,l]=(0,We.useState)([]),[u,c]=(0,We.useState)(()=>lX(window.location.search)),[d,f]=(0,We.useState)(!1),[p,m]=(0,We.useState)(null),[y,x]=(0,We.useState)(null),[h,g]=(0,We.useState)(null),[v,b]=(0,We.useState)(!1),[_,w]=(0,We.useState)(null),[C,S]=(0,We.useState)(null),[k,A]=(0,We.useState)(null),O=(0,We.useCallback)(async()=>{let M=await fetch(`/api/projects/${e}/boot`),ne=await ls(M);if(!M.ok)throw new Error(Xe(ne,`Could not load the project (HTTP ${M.status}).`));o(ne.project),i(ne)},[e]),$=(0,We.useCallback)(async()=>{let M=await fetch(`/api/projects/${e}/secrets`),ne=await ls(M);if(!M.ok)throw new Error(Xe(ne,`Could not list the project's secrets (HTTP ${M.status}).`));l(ne.secrets||[])},[e]);(0,We.useEffect)(()=>{O().catch(M=>m(M.message)),$().catch(M=>x(M.message))},[O,$]);let F=M=>{c(M),M!=="browser"&&f(!1);let{pathname:ne,search:U}=window.location;window.history.replaceState(window.history.state,"",`${ne}${uX(U,M)}`)},P=n?.sandbox_state==="failed",[z,N]=(0,We.useState)(null);(0,We.useEffect)(()=>{N(P?Date.now():null)},[P,n?.sandbox?.session_id]);let D=iX(n),T=D||KX(n)||qX(n,z);(0,We.useEffect)(()=>{if(!T)return;let M=setTimeout(()=>O().catch(ne=>m(ne.message)),QY);return()=>clearTimeout(M)},[T,a,O]);let E=n?.sandbox?.session_id;xg("SandboxChannel",{session_id:E},M=>{bg(M)&&O().catch(()=>{})},!!E);let I=async(M,{confirm:ne=!1,onDone:U}={})=>{b(!0),m(null);try{let oe=await fetch(M,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ne?{confirm:!0}:{})}),ye=await ls(oe);if(oe.status===409&&ye.code==="confirmation_required")return g({question:ye.confirmation,retry:()=>I(M,{confirm:!0,onDone:U})}),null;if(!oe.ok)throw new Error(Xe(ye,`The request failed (HTTP ${oe.status}).`));return g(null),ye.project&&o(ye.project),await O(),U?.(ye),ye}catch(oe){return m(oe.message),null}finally{b(!1)}},j=()=>I(`/api/projects/${e}/run_evaluation`,{onDone:M=>{M.run&&w(M.run)}}),q=(M,ne)=>g({question:M,retry:ne}),te=async(M,ne,U="setup")=>{b(!0),m(null);try{let oe=await fetch(`/api/projects/${e}/${U}`,{method:M,headers:{"Content-Type":"application/json"},body:JSON.stringify(ne||{})}),ye=await ls(oe);if(!oe.ok)throw new Error(Xe(ye,`The setup request failed (HTTP ${oe.status}).`));ye.project&&o(ye.project),await O()}catch(oe){m(oe.message)}finally{b(!1)}},K=async()=>{m(null);let M=await fetch(`/api/projects/${e}/synced_agents`),ne=await ls(M);if(!M.ok){m(Xe(ne,`Could not list the checkout's agents (HTTP ${M.status}).`));return}S(ne.synced_agents||[])},le=async M=>{b(!0);try{let ne=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)}),U=await ls(ne);if(!ne.ok)throw new Error(Xe(U,`Could not choose the agent (HTTP ${ne.status}).`));o(U.project),S(null)}catch(ne){m(ne.message)}finally{b(!1)}},pe=async M=>{x(null);let ne=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:M})}),U=await ls(ne);return ne.ok?(l(U.secrets||[]),!0):(x(Xe(U,`Could not save the secrets (HTTP ${ne.status}).`)),!1)},re=async(M,ne)=>{x(null);let U=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(M)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:ne})}),oe=await ls(U);if(!U.ok){let ye=Xe(oe,`Could not replace ${M} (HTTP ${U.status}).`);throw x(ye),new Error(ye)}await $()},_e=async M=>{x(null);let ne=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(M)}`,{method:"DELETE"});if(!ne.ok){x(Xe(await ls(ne),`Could not delete ${M} (HTTP ${ne.status}).`));return}await $()},ue=async()=>{x(null);let M=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,ne=await fetch(`/api/projects/discover_secrets?${M}`),U=await ls(ne);if(!ne.ok){x(Xe(U,`Could not read the repository's environment variables (HTTP ${ne.status}).`));return}A(_0(U.variables||[],s))},se=async()=>{if(!await cn({title:`Delete ${n.name}?`,message:"Its secrets, agent and evaluation are deleted, and its sandbox is stopped. This cannot be undone.",confirmLabel:"Delete project",danger:!0,requireText:n.name}))return;let M=await fetch(`/api/projects/${e}`,{method:"DELETE"});M.ok?r():m(Xe(await ls(M),`Could not delete the project (HTTP ${M.status}).`))};if(!n)return p?We.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},p):We.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let Z=a?.browser_modes||[],R=cX(n,Z),L=M=>{M&&f(!0),F("browser")},B=n.target_agent,H=!B&&n.install_state==="installed";return We.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},We.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},We.default.createElement("div",{style:{flex:1,minWidth:260}},We.default.createElement(de,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),We.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),We.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},We.default.createElement("span",{style:{fontFamily:X,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),We.default.createElement(Te,{tone:Fwe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),We.default.createElement(Te,{tone:u_[n.install_state==="installed"?"supported":"bootstrap"]},Uwe[n.install_state]),We.default.createElement(Ii,{href:ct(_Z),onClick:()=>It(_Z),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),We.default.createElement("div",{style:{display:"flex",gap:8}},We.default.createElement(de,{onClick:()=>I(`/api/projects/${e}/boot`),disabled:v||D,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":D?"Booting\u2026":"Boot sandbox"),R&&We.default.createElement(de,{onClick:()=>L(R.watch),testId:"project-watch-live"},R.label),We.default.createElement(de,{variant:"primary",onClick:()=>j(),disabled:v||!B,testId:"run-project-evaluation",title:B?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&We.default.createElement(Ve,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},We.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),We.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},We.default.createElement(de,{variant:"primary",onClick:()=>{let{retry:M}=h;g(null),M?.()},disabled:v},"Run it on this machine"),We.default.createElement(de,{onClick:()=>g(null)},"Cancel"))),p&&We.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},p),We.default.createElement(sc,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${k3(s).length})`},...Z.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[]],value:u,onChange:F}),u==="overview"&&We.default.createElement(We.default.Fragment,null,We.default.createElement(p3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),We.default.createElement(E3,{projectId:e,setupAgentId:n.setup?.agent_id,version:`${n.pending_input_requests}:${n.setup?.last_run?.id}:${n.setup?.last_run?.status}`,onSettled:()=>O().catch(()=>{})}),We.default.createElement(T3,{project:n,busy:v,onAsk:()=>te("POST"),onFixWithClaudeCode:()=>te("POST",null,"setup/claude_code"),onToggleAuto:M=>te("PATCH",{auto:M})}),We.default.createElement(Ve,null,We.default.createElement(qe,null,"Agent under evaluation"),B&&We.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},We.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},B.name),We.default.createElement(Te,{tone:"accent"},B.kind==="app_assistant"?"App assistant":`synced agent ${B.synced_agent}`),We.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/agents/${B.id}/edit`)},"Open agent"),n.evaluation&&We.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&We.default.createElement(de,{size:"sm",onClick:K},"Change")),H&&!C&&We.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},"This repository has its own agents. Boot the sandbox, then pick the one to evaluate.",We.default.createElement("div",{style:{marginTop:8}},We.default.createElement(de,{size:"sm",onClick:K,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),C&&We.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},C.length===0&&We.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),C.map(M=>We.default.createElement("li",{key:M.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},We.default.createElement("span",{style:{fontFamily:X,fontSize:13}},M.tool),We.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},M.description),We.default.createElement(de,{size:"sm",onClick:()=>le({synced_agent:M.slug}),disabled:v},"Evaluate this agent")))),_&&We.default.createElement("div",{"data-testid":"project-run",style:{marginTop:10,fontSize:13,color:"var(--color-text-secondary)"}},"Run ",_.id," is ",_.status,D?": it starts once the sandbox is ready":"","."," ",We.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/evaluations/${_.evaluation_id}/runs/${_.id}`)},"Open run"))),B?.kind==="app_assistant"&&We.default.createElement(f3,{project:n,onSaved:M=>{M&&o(M),O().catch(()=>{})},onConfirmationRequired:q}),We.default.createElement(N3,{project:n,onProjectChanged:M=>o(ne=>ne&&M.install_state!==ne.install_state?M:ne),onConfirmationRequired:q}),We.default.createElement("div",null,We.default.createElement(de,{variant:"danger",size:"sm",onClick:se},"Delete project"))),u==="explorations"&&We.default.createElement(C3,{projectId:e,project:n}),u==="browser"&&We.default.createElement(m3,{project:n,modes:Z,watchOnOpen:d,onChange:()=>O().catch(()=>{})}),u==="environment"&&We.default.createElement(We.default.Fragment,null,We.default.createElement(g3,{secrets:k3(s),onReplace:re,onDelete:_e,error:y}),k?We.default.createElement(Ve,null,We.default.createElement(qe,null,"Add secrets"),We.default.createElement("div",{style:{marginTop:8}},We.default.createElement(T0,{rows:k,onChange:A,repository:n.repository})),We.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},We.default.createElement(de,{variant:"primary",disabled:!!_g(k)||A0(k).length===0,onClick:async()=>{await pe(A0(k))&&A(null)}},"Save secrets"),We.default.createElement(de,{onClick:()=>A(null)},"Cancel"),_g(k)&&We.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},_g(k)))):We.default.createElement("div",null,We.default.createElement(de,{size:"sm",onClick:ue},"Add secrets"))))}var Uo=G(Y());var Wwe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function P3({projects:e,onOpen:t,onNew:r}){return Uo.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},Uo.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},Uo.default.createElement("div",{style:{flex:1}},Uo.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),Uo.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"A repository booted in a sandbox, with the secrets it needs and an agent evaluated against the running app.")),Uo.default.createElement(de,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&Uo.default.createElement(Ve,null,Uo.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No projects yet. Pick a repository to boot it in a sandbox, even one that does not use ActiveAgent.")),e.map(n=>Uo.default.createElement(Ve,{key:n.id,padding:14,testId:`project-${n.id}`},Uo.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},Uo.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),Uo.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},n.repository),Uo.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},Uo.default.createElement(Te,{tone:Wwe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&Uo.default.createElement(Te,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function M3({visit:e=0}){let[t,r]=(0,Wo.useState)(()=>C0(Eo())),[n,o]=(0,Wo.useState)(null),[a,i]=(0,Wo.useState)(null);(0,Wo.useEffect)(()=>{r(C0(Eo()))},[e]),(0,Wo.useEffect)(()=>{let u=()=>r(C0(Eo()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,Wo.useCallback)(async()=>{try{let u=await fetch("/api/projects"),c=await u.json().catch(()=>({}));if(!u.ok)throw new Error(Xe(c,`Could not list projects (HTTP ${u.status}).`));o(c.projects||[])}catch(u){i(u.message)}},[]);(0,Wo.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{Gm(u),r(C0(u))};return t.creating?Wo.default.createElement(s3,{onCreated:u=>l(sf(u.id)),onCancel:()=>l("/projects")}):t.projectId?Wo.default.createElement(O3,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?Wo.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?Wo.default.createElement(P3,{projects:n,onOpen:u=>l(sf(u.id)),onNew:()=>l(sf(null))}):Wo.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Tr=G(Y());function D3({visit:e=0}){let[t,r]=(0,Tr.useState)(()=>v_(Eo())),[n,o]=(0,Tr.useState)(null),[a,i]=(0,Tr.useState)(null),[s,l]=(0,Tr.useState)(null);(0,Tr.useEffect)(()=>{r(v_(Eo()))},[e]),(0,Tr.useEffect)(()=>{let c=()=>r(v_(Eo()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Tr.useCallback)(async()=>{try{let c=await fetch("/api/explorations"),d=await c.json().catch(()=>({}));if(!c.ok)throw new Error(Xe(d,`Could not list explorations (HTTP ${c.status}).`));o(d.explorations||[])}catch(c){l(c.message)}},[]);if((0,Tr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Tr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Tr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Tr.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(sf(c.id)),style:{padding:0}},"\u2190 ",c.name):Tr.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Tr.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>It(`/evaluations/${d.id}`)},"Open ",d.name)),Tr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Tr.default.createElement(P0,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Tr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Tr.default.createElement("div",null,Tr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Tr.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Questions found by walking an app, waiting to be reviewed and accepted into an evaluation.")),s&&Tr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Tr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Tr.default.createElement(Ve,null,Tr.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No explorations yet. An agent that explores a project's app submits what it found with the explorations_submit MCP tool.")),n?.length>0&&Tr.default.createElement(O0,{explorations:n,onOpen:c=>It(y_(c.id))}))}var xe=G(Y());function j3({visit:e=0}){let[t,r]=(0,xe.useState)(null),[n,o]=(0,xe.useState)(!1),[a,i]=(0,xe.useState)(null),[s,l]=(0,xe.useState)(null),[u,c]=(0,xe.useState)(null),[d,f]=(0,xe.useState)([]),[p,m]=(0,xe.useState)([]),[y,x]=(0,xe.useState)(!1),[h,g]=(0,xe.useState)(!1),v=(0,xe.useCallback)(async()=>{try{let O=await fetch("/api/scenario_catalogs"),$=await O.json().catch(()=>({}));if(!O.ok)throw new Error(Xe($,`Could not list catalogs (HTTP ${O.status}).`));r($.catalogs||[]),o($.storage_available===!0),l(null)}catch(O){l(O.message)}},[]),b=(0,xe.useCallback)(async()=>{try{let[O,$]=await Promise.all([fetch("/api/agents"),fetch("/api/projects")]),F=await O.json().catch(()=>({})),P=await $.json().catch(()=>({}));f((F.agents||[]).filter(z=>!z.observed)),m(P.projects||[])}catch{}},[]);(0,xe.useEffect)(()=>{v(),b()},[v,b,e]);let _=(0,xe.useCallback)(async O=>{try{let $=await fetch(`/api/scenario_catalogs/${O}`),F=await $.json().catch(()=>({}));if(!$.ok)throw new Error(Xe(F,`Could not open the catalog (HTTP ${$.status}).`));i(F.catalog),l(null)}catch($){l($.message)}},[]),w=(0,xe.useCallback)(async()=>{await v(),a&&await _(a.id)},[v,_,a]),C=async O=>{x(!0),l(null);try{let $=await fetch("/api/scenario_catalogs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(O)}),F=await $.json().catch(()=>({}));if(!$.ok)throw new Error(Xe(F,`Import refused (HTTP ${$.status}).`));let P=F.catalogs||[];c(`Imported ${P.map(z=>z.key).join(", ")||"nothing"}.`),g(!1),await v(),P.length===1&&i(P[0])}catch($){l($.message)}finally{x(!1)}},S=async(O,$)=>{l(null);try{let F=await fetch(`/api/scenario_catalogs/${O.id}/sync`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({direction:$})}),P=await F.json().catch(()=>({}));if(!F.ok)throw new Error(Xe(P,`Sync failed (HTTP ${F.status}).`));i(P.catalog),c($==="pull"?"Catalog restored from storage.":"Catalog written to storage."),await v()}catch(F){l(F.message)}},k=async O=>{if(await cn({title:`Delete the catalog ${O.key}?`,message:"Its evaluations and their runs stay.",confirmLabel:"Delete catalog",danger:!0,requireText:O.key}))try{let $=await fetch(`/api/scenario_catalogs/${O.id}`,{method:"DELETE"});if(!$.ok){let F=await $.json().catch(()=>({}));throw new Error(Xe(F,`Delete failed (HTTP ${$.status}).`))}i(null),await v()}catch($){l($.message)}},A=async(O,$,F)=>{l(null),c(null);try{let P=await fetch(`/api/scenario_catalogs/${O.id}/sets/${$.id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(F)}),z=await P.json().catch(()=>({}));if(!P.ok)throw new Error(Xe(z,`The run could not start (HTTP ${P.status}).`));c(`Run #${z.run.id} of ${$.name} started; it shows under Evaluations as ${z.evaluation.name}.`),await w()}catch(P){l(P.message)}};return a?xe.default.createElement(Kwe,{catalog:a,agents:d,projects:p,storageAvailable:n,error:s,notice:u,onBack:()=>{i(null),c(null),l(null)},onRun:A,onSync:S,onDelete:k,onReimport:O=>C({document:O})}):xe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},xe.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xe.default.createElement("div",null,xe.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenario catalogs"),xe.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Scenarios kept as YAML, by product and set, imported from a document or a repository and run as evaluations.")),xe.default.createElement(de,{onClick:()=>g(O=>!O)},h?"Close":"Import catalog")),s&&xe.default.createElement(b_,{tone:"error"},s),u&&xe.default.createElement(b_,null,u),h&&xe.default.createElement(Hwe,{importing:y,onImport:C}),t===null?xe.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):t.length===0?xe.default.createElement(Ve,null,xe.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No catalogs yet. Import a YAML document, or read the ",xe.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):xe.default.createElement("div",{style:{display:"grid",gap:12}},t.map(O=>xe.default.createElement(Ve,{key:O.id,style:{cursor:"pointer"},onClick:()=>_(O.id)},xe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xe.default.createElement("div",null,xe.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},O.name),xe.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},xe.default.createElement("code",null,O.key),O.source_path?` \xB7 ${O.source_path}`:` \xB7 ${O.source_kind}`)),xe.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",textAlign:"right"}},O.product_count," ",O.product_count===1?"product":"products"," \xB7 ",O.scenario_count," scenarios",xe.default.createElement("div",null,O.synced?"synced to storage":n?"not synced":"database only")))))))}function Hwe({importing:e,onImport:t}){let[r,n]=(0,xe.useState)("document"),[o,a]=(0,xe.useState)(""),[i,s]=(0,xe.useState)(""),[l,u]=(0,xe.useState)(""),[c,d]=(0,xe.useState)(".activeagents/evals");return xe.default.createElement(Ve,null,xe.default.createElement("form",{onSubmit:p=>{p.preventDefault(),t(r==="repository"?{repository:i.trim(),ref:l.trim()||void 0,path:c.trim()||void 0}:{document:o})},style:{display:"flex",flexDirection:"column",gap:10}},xe.default.createElement("div",{style:{display:"flex",gap:8}},xe.default.createElement(de,{type:"button",size:"sm",variant:r==="document"?"primary":"ghost",onClick:()=>n("document")},"Paste YAML"),xe.default.createElement(de,{type:"button",size:"sm",variant:r==="repository"?"primary":"ghost",onClick:()=>n("repository")},"From a repository")),r==="document"?xe.default.createElement("textarea",{value:o,onChange:p=>a(p.target.value),rows:12,placeholder:`catalog: support_desk + api_key: <%= ENV["ACTIVEAGENTS_API_KEY"] %>`),Ce.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ce.default.createElement("div",{className:"min-w-0 flex-1"},Ce.default.createElement("p",{className:`text-xs uppercase tracking-wide mb-1 ${o?"text-gray-500":"text-gray-400"}`},"API Key"),Ce.default.createElement("code",{"data-testid":"telemetry-key","data-aa-secret":"",className:`block truncate text-sm font-mono px-3 py-2 rounded-lg border ${o?"bg-gray-900 border-gray-700 text-gray-300":"bg-gray-50 border-gray-200 text-gray-700"}`},N?"Not available":u?d.value:"\u2022".repeat(24))),Ce.default.createElement("div",{className:"flex gap-2 flex-shrink-0 self-end"},Ce.default.createElement("button",{onClick:D,disabled:N||d.status==="loading",className:"px-3 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},u?"Hide":"Show"),Ce.default.createElement("button",{onClick:z,disabled:N||d.status==="loading",className:"px-3 py-2 text-sm bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},s?"Copied!":"Copy"))),d.error&&Ce.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Ne=V(Y());var Be=V(Y());var Pwe=/^[A-Za-z_][A-Za-z0-9_]*$/,Mwe=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,Iwe={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},Dwe=["sk_live_","rk_live_"],fX=8,pX=2e3;function v2(e){return e?Pwe.test(e)?Mwe.test(e)?`${e} is set by the sandbox or changes how code is loaded, so a project cannot set it.`:null:"Use letters, digits and _ only, not starting with a digit.":"Name the variable."}function x2(e,t){let r=[],n=typeof t=="string"?t:"";return Dwe.some(o=>n.startsWith(o))&&r.push({code:"live_credential",message:"This looks like a live-mode key. A sandbox runs the repository's code with it: use a test-mode key."}),n.length>0&&n.lengthn.name));return e.map(n=>({name:n.name,required:!!n.required,sources:n.sources||[],description:n.description||null,organizationKey:n.organization_key||Iwe[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function mX(e,t){return[...e,...j0([{name:t}])]}function gX({name:e,edited:t,fullName:r}){return t?e:r}function $0(e){return e.flatMap(t=>t.useOrganizationKey?[{name:t.name,source:"organization_key",consent:t.consent===!0}]:t.value?[{name:t.name,value:t.value}]:[])}function jg(e){for(let t of e){let r=v2(t.name);if(r&&(t.value||t.useOrganizationKey))return r;if(t.useOrganizationKey&&!t.consent)return`Confirm that ${t.name}'s organization key may be read by the repository's code.`}return null}function hX({github:e,repositories:t,reconnectRequired:r=!1,pendingApproval:n=!1}={}){return e?e.mode==="none"?"not_configured":e.connected?r?"reconnect_required":n?"pending_approval":t==null?"loading":t.length===0?"empty":"ready":"not_connected":"loading"}function s3(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function jwe(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function yX({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=jwe(e);return n.length>0?`Fix first: ${n.map(o=>o.label).join(", ")}.`:t?t.status==="unsupported"?t.summary:r||null:"Pick a repository."}var b2={supported:"success",bootstrap:"info",unsupported:"error"};function vX(e){return e==="checkout"?"Checkout":e==="preflight"?"Preflight":e==="setup"?"Setup":/^bundle_/.test(e)?"Bundle":/^(add|install)_/.test(e)?"Install":/_build$/.test(e)?"Assets":e==="db_prepare"?"Database":e==="manifest"?"Manifest":e==="start"||e==="server"?"Start and start URL":"Step"}function xX(e){if(e==null||Number.isNaN(Number(e)))return"\u2014";let t=Number(e);if(t<1e3)return`${Math.round(t)}ms`;if(t<6e4)return`${(t/1e3).toFixed(1)}s`;let r=Math.floor(t/6e4),n=Math.round(t%6e4/1e3);return`${r}m ${String(n).padStart(2,"0")}s`}var bX={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function wX(e){return e?.sandbox_state==="booting"}function gf(e){return e==null?"/projects/new":`/projects/${e}`}function L0(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var SX=["overview","explorations","environment","browser"];function kX(e=""){let t=new URLSearchParams(e).get("tab");return SX.includes(t)?t:"overview"}function _X(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!SX.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function w2(e){if(!e?.project?.id)return null;let t=gf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function CX(e,t=[]){return e?.sandbox_state!=="ready"||!e.sandbox?.session_id||t.length===0?null:e.sandbox.browser?.status==="running"?{label:"Watch live",watch:!0}:{label:"Open browser",watch:!1}}var hn=V(Y());function S2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var AX=["left","middle","right"];function EX(e,t,r){if(!r||!(r.width>0)||!(r.height>0))return null;let n=(e-r.left)/r.width,o=(t-r.top)/r.height;return n<0||n>1||o<0||o>1?null:{x:n,y:o}}function k2(e,t,r){let n=EX(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:S2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:AX[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function NX(e,t,r){let n=k2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:S2(e),button:AX[e.button]||"left",clickCount:1}}var $we=16,Lwe=800;function TX(e,t){let r=EX(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?$we:e.deltaMode===2?Lwe:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:S2(e)}}function l3(e,t){return t.isComposing||t.key==="Process"||t.key==="Unidentified"||!t.key?null:{type:"key",action:e,key:t.key,code:t.code||"",keyCode:t.keyCode||void 0,modifiers:S2(t)}}function OX(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var zwe=600;function PX(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=zwe}var z0={ready:!1,control:{held:!1,mine:!1,yours:!1,by:null,since:null},agent:{waiting:!1,tool:null,since:null},page:null,frameSize:null,error:null};function MX(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...z0.control,...t.control},agent:t.agent||z0.agent,page:t.page||null};case"frame":return e.frameSize?.width===t.width&&e.frameSize?.height===t.height?e:{...e,frameSize:{width:t.width,height:t.height}};case"control":return{...e,control:{held:t.held,mine:t.mine,yours:t.yours===!0,by:t.by,since:t.since}};case"agent":return{...e,agent:{waiting:t.waiting,tool:t.tool,since:t.since}};case"page":return{...e,page:t.page||null};case"error":return{...e,error:t.message||"The browser refused that"};case"clear_error":return{...e,error:null};case"reset":return z0;default:return e}}function IX(e){if(!e.agent.waiting||!e.control.held)return null;let t=e.agent.tool?` (${e.agent.tool})`:"";return e.control.mine?`The agent is waiting for you to hand back control${t}.`:e.control.yours?`The agent is waiting for you to hand back control in your other view${t}.`:`The agent is waiting for ${e.control.by||"the person driving"} to hand back control${t}.`}function DX(e){return e.control.held?e.control.mine?"You are driving":e.control.yours?"You are driving in another view":`Held by ${e.control.by||"someone else"}`:null}function jX(e,{taking:t=!1}={}){let{held:r,yours:n}=e.control,o="Take over";return t?o="Taking over\u2026":r&&n&&(o="Continue driving here"),{label:o,disabled:t||r&&!n}}function $X(e){if(!e)return null;let t=e.tabs>1?` \xB7 tab ${e.tab} of ${e.tabs}`:"";return`${e.url||"a page with no address to show"}${t}`}var Bwe={1001:"The browser stopped.",4401:"The live view did not accept the ticket. Try again.",4408:"The live view timed out before it opened. Try again.",4429:"Too many people are watching this browser."};function LX(e,{requested:t=!1}={}){return t?null:Bwe[e]||"The live view lost its connection to the browser."}var Fwe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function zX(e){return e?.status?Fwe[e.status]||{label:e.status,tone:"neutral"}:null}function BX(e){return e?.status==="starting"||e?.status==="running"}function FX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}var Ot=V(Y());async function UX(e,t){let r=await fetch(`/api/sandboxes/${encodeURIComponent(e)}/browser/tickets`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:t})}),n=await r.json().catch(()=>({}));if(r.status===403&&n.code==="forbidden")throw new Error("You do not have permission to take over this browser.");if(!r.ok)throw new Error(Je(n,`Could not open the live view (HTTP ${r.status}).`));return n}var WX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v";function u3({sessionId:e,headed:t=!1,watchOnOpen:r=!1}){let{darkMode:n}=lt(),[o,a]=(0,Ot.useReducer)(MX,z0),[i,s]=(0,Ot.useState)("idle"),[l,u]=(0,Ot.useState)(null),[c,d]=(0,Ot.useState)(!1),f=(0,Ot.useRef)(null),p=(0,Ot.useRef)(!1),m=(0,Ot.useRef)(0),y=(0,Ot.useRef)(!1),b=(0,Ot.useRef)(null),h=(0,Ot.useRef)(null),g=(0,Ot.useRef)({pending:null,decoding:!1}),v=(0,Ot.useRef)({message:null,scheduled:!1}),x=(0,Ot.useRef)(null),S=(0,Ot.useRef)(null),w=o.control.mine,A=(0,Ot.useCallback)(re=>{let _e=f.current;re&&_e?.readyState===WebSocket.OPEN&&_e.send(JSON.stringify(re))},[]),k=(0,Ot.useCallback)(re=>{let _e=g.current;if(_e.pending=re,_e.decoding)return;let de=()=>{let le=_e.pending;if(_e.pending=null,_e.decoding=!!le,!le)return;let Z=new Image;Z.onload=()=>{let ee=b.current;ee&&((ee.width!==Z.naturalWidth||ee.height!==Z.naturalHeight)&&(ee.width=Z.naturalWidth,ee.height=Z.naturalHeight),ee.getContext("2d")?.drawImage(Z,0,0)),de()},Z.onerror=de,Z.src=`data:image/jpeg;base64,${le.data}`};de()},[]),_=(0,Ot.useCallback)(()=>{m.current+=1;let re=f.current;if(!re){s("idle");return}y.current&&re.readyState===WebSocket.OPEN&&re.send(JSON.stringify({type:"hand_back"})),p.current=!0,re.close(1e3)},[]);(0,Ot.useEffect)(()=>_,[_]);let C=async()=>{m.current+=1;let re=m.current;u(null),s("connecting");try{let{ticket:_e,url:de}=await UX(e,"view");if(m.current!==re)return;let le=new WebSocket(de);f.current=le,p.current=!1,le.onopen=()=>le.send(JSON.stringify({type:"auth",ticket:_e})),le.onmessage=Z=>{let ee;try{ee=JSON.parse(Z.data)}catch{return}ee.type==="ready"&&s("open"),ee.type==="frame"&&k(ee),a(ee)},le.onclose=Z=>{f.current===le&&(f.current=null,s("idle"),a({type:"reset"}),u(LX(Z.code,{requested:p.current})))}}catch(_e){if(m.current!==re)return;s("idle"),u(_e.message)}},E=(0,Ot.useRef)(!1);(0,Ot.useEffect)(()=>{!r||E.current||(E.current=!0,C())},[r]);let j=async()=>{a({type:"clear_error"}),d(!0);try{let{ticket:re}=await UX(e,"control");A({type:"take_control",ticket:re})}catch(re){u(re.message)}finally{d(!1)}},F=()=>{A({type:"hand_back"}),b.current?.blur()};(0,Ot.useEffect)(()=>{y.current=w,w?b.current?.focus():b.current?.blur()},[w]),(0,Ot.useEffect)(()=>{let re=b.current;if(!re||!w)return;let _e=de=>{de.preventDefault(),A(TX(de,re.getBoundingClientRect()))};return re.addEventListener("wheel",_e,{passive:!1}),()=>re.removeEventListener("wheel",_e)},[w,A,i]);let D=()=>b.current?.getBoundingClientRect(),z=re=>{re&&(x.current={x:re.x,y:re.y},A(re))},N=w?{onMouseDown:re=>{re.preventDefault(),b.current?.focus(),z(k2("down",re,D())),window.addEventListener("mouseup",_e=>z(NX(_e,D(),x.current)),{once:!0})},onMouseMove:re=>{let _e=v.current;_e.message=k2("move",re,D()),!_e.scheduled&&(_e.scheduled=!0,requestAnimationFrame(()=>{_e.scheduled=!1,z(_e.message),_e.message=null}))},onContextMenu:re=>re.preventDefault(),onKeyDown:re=>{if(PX(re,S.current)){re.preventDefault(),S.current=null,h.current?.focus();return}if(S.current=re.key==="Escape"&&!re.repeat?re.timeStamp:null,WX(re))return;let _e=l3("down",re);_e&&(re.preventDefault(),A(_e))},onKeyUp:re=>{if(WX(re))return;let _e=l3("up",re);_e&&(re.preventDefault(),A(_e))},onPaste:re=>{re.preventDefault(),A(OX(re.clipboardData?.getData("text/plain")))}}:{},O=n?"text-gray-400":"text-gray-500",$=n?"text-white":"text-gray-900",T=`px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,I="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",P=IX(o),H=DX(o),Q=jX(o,{taking:c}),K=$X(o.page),ue=i==="open",{frameSize:pe}=o;return Ot.default.createElement("div",{className:"space-y-2"},Ot.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},i==="idle"?Ot.default.createElement("button",{type:"button",onClick:C,className:T},"Watch live"):Ot.default.createElement("button",{type:"button",onClick:_,className:T},"Stop watching"),ue&&(w?Ot.default.createElement("button",{ref:h,type:"button",onClick:F,className:I},"Hand back"):Ot.default.createElement("button",{ref:h,type:"button",onClick:j,disabled:Q.disabled,className:I},Q.label)),H&&Ot.default.createElement("span",{className:`text-xs font-medium ${$}`},H),i==="connecting"&&Ot.default.createElement("span",{className:`text-xs ${O}`},"Connecting\u2026")),l&&Ot.default.createElement("p",{className:`text-xs ${O}`,role:"status"},l),o.error&&Ot.default.createElement("p",{className:`text-xs ${n?"text-red-400":"text-red-600"}`,role:"alert"},o.error),P&&Ot.default.createElement("p",{role:"status",className:`p-2 rounded text-xs border ${n?"bg-amber-900/20 border-amber-800 text-amber-300":"bg-amber-50 border-amber-200 text-amber-800"}`},P),i!=="idle"&&Ot.default.createElement("div",{className:"space-y-1"},K&&Ot.default.createElement("p",{className:`text-xs font-mono truncate ${O}`,title:K},K),Ot.default.createElement("canvas",{ref:b,tabIndex:w?0:-1,role:w?"application":"img","aria-label":w?"The sandbox's browser: your mouse and keys go to it. Press Escape twice to leave it.":"Live view of the sandbox's browser",className:`block w-full rounded border bg-black ${w?"cursor-default outline-none focus:ring-2 focus:ring-blue-500":""} ${n?"border-gray-700":"border-gray-200"}`,style:{aspectRatio:pe?`${pe.width} / ${pe.height}`:"16 / 10"},...N}),w&&Ot.default.createElement("p",{className:`text-xs ${O}`},"Your mouse and keys go to the browser, and the agent waits until you hand back. Press Escape twice to move focus out of the view. That, or clicking outside it, only stops your keys reaching the browser: the agent keeps waiting until you press Hand back or Stop watching.")),t&&Ot.default.createElement("p",{className:`text-xs ${O}`},"This browser also has a window open on this machine. Clicking or typing in that window changes the page too, but the agent does not wait for it: take over here first."))}function hf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=lt(),[a,i]=(0,hn.useState)(e.browser||null),[s,l]=(0,hn.useState)(!1),[u,c]=(0,hn.useState)(null),[d,f]=(0,hn.useState)(null),p=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,hn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(k,_,C)=>{c(k),f(null);try{let E=await fetch(p,_),j=await E.json().catch(()=>({}));if(j.browser&&(i(j.browser),n?.(j.browser)),!E.ok)throw new Error(j.message||Je(j,`${C} (HTTP ${E.status}).`))}catch(E){f(E.message)}finally{c(null)}},y=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(FX({inWindow:s,modes:t}))},"Could not start the browser"),b=()=>m("stop",{method:"DELETE"},"Could not stop the browser"),h=o?"text-gray-400":"text-gray-500",g=o?"text-white":"text-gray-900",v=o?"border-gray-700":"border-gray-200",x=`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,S=zX(a),w=BX(a),A=a?.status==="running";return hn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},hn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},hn.default.createElement("div",{className:"flex items-center gap-2"},hn.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),S&&hn.default.createElement(xc,{tone:S.tone},S.label)),w?hn.default.createElement("button",{type:"button",onClick:b,disabled:u!==null,className:x},u==="stop"?"Stopping\u2026":"Stop browser"):hn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&hn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},hn.default.createElement("input",{type:"checkbox",checked:s,onChange:k=>l(k.target.checked),disabled:u!==null}),"Open a window on this machine"),hn.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:x},u==="start"?"Starting\u2026":"Start browser"))),d&&hn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!w&&!d&&hn.default.createElement("p",{className:`text-xs ${h}`},"A browser of this sandbox's own, opened on its app and recorded. Agent runs against the sandbox can drive it."),A&&a.server_key&&hn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",hn.default.createElement("code",{className:"font-mono"},a.server_key),"."),A&&a.live_url&&hn.default.createElement(u3,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),A&&!a.live_url&&hn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var Wt=V(Y());var Vr=V(Y());function HX(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function _2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var KX={loading:"Loading repositories\u2026",not_configured:"GitHub is not configured on this dashboard.",not_connected:"Connect GitHub to pick a repository.",reconnect_required:"GitHub rejected the stored token. Reconnect GitHub to list repositories again.",pending_approval:"The GitHub installation is waiting for an owner of the account to approve it. Check again once it is approved.",empty:"This GitHub connection reaches no repositories yet."};function yf({repositories:e,selection:t,onToggle:r,filter:n,onFilterChange:o,mode:a="multiple",selected:i=null,onSelect:s,state:l="ready",settingsHref:u,missingRepositoryUrl:c,onRefresh:d,onTypeName:f,typedNameError:p}){let{darkMode:m}=lt(),[y,b]=(0,Vr.useState)(""),[h,g]=(0,Vr.useState)(!1),v=m?"text-gray-400":"text-gray-500",x=m?"text-white":"text-gray-900",S={backgroundColor:m?"#252525":"#f9fafb"},w=`w-full px-3 py-2 border rounded-lg text-sm ${m?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`,A=HX(e,n);(0,Vr.useEffect)(()=>{if(!h||!d)return;let C=()=>{g(!1),d()};return window.addEventListener("focus",C),()=>window.removeEventListener("focus",C)},[h,d]);let k=c?Vr.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>g(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,_=f?Vr.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),s3(y)&&f(y)}},Vr.default.createElement("input",{type:"text",value:y,onChange:C=>b(C.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:w,"data-testid":"repo-picker-typed-name"}),Vr.default.createElement("button",{type:"submit",disabled:!s3(y),className:`px-3 py-2 border rounded-lg text-sm ${x}`},"Look up")):null;if(l!=="ready"){let C=["not_connected","reconnect_required"].includes(l)&&u;return Vr.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},Vr.default.createElement("p",{className:`text-sm ${v}`},KX[l]||KX.loading),C&&Vr.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&Vr.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${x}`},"Check again"),l==="empty"&&k,l==="empty"&&_,p&&Vr.default.createElement("p",{className:"text-sm text-red-500"},p))}return Vr.default.createElement("div",{className:"space-y-2"},Vr.default.createElement("input",{type:"text",value:n,onChange:C=>o(C.target.value),placeholder:"Filter repositories",className:w}),Vr.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},A.map(C=>Vr.default.createElement("label",{key:C.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:S},a==="single"?Vr.default.createElement("input",{type:"radio",name:"repository",checked:i===C.full_name,onChange:()=>s(C.full_name)}):Vr.default.createElement("input",{type:"checkbox",checked:t.has(C.full_name),onChange:()=>r(C.full_name)}),Vr.default.createElement("span",{className:`text-sm font-mono ${x}`},C.full_name),C.private&&Vr.default.createElement("span",{className:`text-xs ${v}`},"private"))),A.length===0&&Vr.default.createElement("p",{className:`text-sm ${v}`},"No repositories match.")),(k||_)&&Vr.default.createElement("div",{className:"space-y-2"},k,_,p&&Vr.default.createElement("p",{className:"text-sm text-red-500"},p)))}var qX={linked:{tone:"success",text:"GitHub App installation linked. Choose the repositories this workspace may use on it."},pending:{tone:"success",text:"Installation requested. Once an owner of the organization approves it on GitHub, that owner has to link it from this page."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub App return expired or was not started here. Try again from this page."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try again."},missing_installation:{tone:"error",text:"GitHub did not say which installation to link. Try installing again."},not_found:{tone:"error",text:"Your GitHub account cannot reach that installation, so it was not linked."},not_admin:{tone:"error",text:"Only the account the App is installed on, or an admin of its organization, can link an installation."},taken:{tone:"error",text:"That installation is already linked to another workspace."},not_configured:{tone:"error",text:"No GitHub App is configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub App."},manifest_error:{tone:"error",text:"GitHub did not finish creating the App. Try again."},manifest_unavailable:{tone:"error",text:"Creating a GitHub App is not available on this dashboard."},error:{tone:"error",text:"Could not finish linking the GitHub App. Try again."}};function VX(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function C2(e){return e.status==="removed"?{label:"Removed from GitHub: reinstall or unlink",tone:"error"}:e.status==="suspended"?{label:"Suspended on GitHub",tone:"warning"}:null}function GX(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>C2(a)).length,n=t.length===1?"GitHub App installation":"GitHub App installations",o=r>0?` (${r} ${r===1?"needs":"need"} attention)`:"";return{text:`${t.length} ${n}${o}`,active:t.length-r}}function YX(e,t){let r=new Map;return(t||[]).forEach(n=>{C2(n)||(n.repositories||[]).forEach(o=>{let a=o.full_name.toLowerCase();r.has(a)||r.set(a,{...o,source:"app",installation:n})})}),(e?.repositories||[]).forEach(n=>{let o=n.full_name.toLowerCase();r.has(o)||r.set(o,{...n,source:"oauth",installation:null})}),[...r.values()]}function XX(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function ZX(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function JX(e,t,r){let n=e.createElement("form");n.method="post",n.action=t,n.style.display="none";let o=e.createElement("input");return o.type="hidden",o.name="manifest",o.value=JSON.stringify(r),n.appendChild(o),e.body.appendChild(n),n.submit(),n}function c3({app:e,onChanged:t,onError:r,onNotice:n}){let{darkMode:o}=lt(),[a,i]=(0,Wt.useState)(null),[s,l]=(0,Wt.useState)(null),[u,c]=(0,Wt.useState)(new Set),[d,f]=(0,Wt.useState)(""),[p,m]=(0,Wt.useState)(!1),[y,b]=(0,Wt.useState)(null),[h,g]=(0,Wt.useState)(""),[v,x]=(0,Wt.useState)(!1);if(!e||!e.configured&&!e.manifest_available)return null;let S=o?"text-gray-400":"text-gray-500",w=o?"text-white":"text-gray-900",A={backgroundColor:o?"#252525":"#f9fafb"},k=`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,_=`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`,C={error:o?"text-red-400":"text-red-600",warning:o?"text-amber-300":"text-amber-700"},E=async $=>{r(null);try{let T=await fetch(`/api/github_installations/${$.id}/repositories`),I=await T.json().catch(()=>({}));if(!T.ok)throw I.reinstall_required&&t(),new Error(I.error||"Could not list the installation's repositories.");l(I.repositories||[]),c(new Set(($.repositories||[]).map(P=>P.full_name))),f(""),i($.id)}catch(T){r(T.message)}},j=async $=>{b($.id),r(null);try{let T=await fetch(`/api/github_installations/${$.id}/repositories`),I=await T.json().catch(()=>({}));if(!T.ok)throw new Error(I.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${$.account_login} is active again.`})}catch(T){r(T.message)}finally{b(null),t()}},F=()=>{i(null),l(null)},D=async()=>{m(!0),r(null);try{let $=await fetch(`/api/github_installations/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...u]})}),T=await $.json().catch(()=>({}));if(!$.ok)throw new Error(T.error||"Could not save the selection.");F(),n({tone:"success",text:"Repository selection saved."}),t()}catch($){r($.message)}finally{m(!1)}},z=async $=>{if(await Br({title:`Unlink @${$.account_login}?`,message:"New sandboxes can no longer check out its repositories. The App stays installed on GitHub; uninstall it there to remove its access.",confirmLabel:"Unlink",danger:!0})){r(null);try{let T=await fetch(`/api/github_installations/${$.id}`,{method:"DELETE"});if(!T.ok&&T.status!==404)throw new Error("Could not unlink the installation.");a===$.id&&F(),t()}catch(T){r(T.message)}}},N=async()=>{let $=h.trim();if($&&!ZX($)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}x(!0),r(null);try{let T=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($?{organization:$}:{})}),I=await T.json().catch(()=>({}));if(!T.ok)throw new Error(I.error||"Could not start creating the GitHub App.");JX(document,I.url,I.manifest)}catch(T){r(T.message),x(!1)}};if(!e.configured)return Wt.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:A},Wt.default.createElement("p",{className:`text-sm font-medium ${w}`},"Use a GitHub App"),Wt.default.createElement("p",{className:`text-xs ${S}`},"A GitHub App gives each checkout a one-hour token limited to its one repository. Create one for this dashboard: GitHub registers it, and this page shows its settings once to add to your configuration."),Wt.default.createElement("div",{className:"flex items-center gap-2"},Wt.default.createElement("input",{type:"text",value:h,onChange:$=>g($.target.value),placeholder:"Organization (optional)",className:`flex-1 px-3 py-1 border rounded text-sm ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),Wt.default.createElement("button",{type:"button",onClick:N,disabled:v,className:`${k} disabled:opacity-50`},v?"Opening GitHub\u2026":"Create GitHub App")));let O=e.installations||[];return Wt.default.createElement("div",{className:"space-y-3"},Wt.default.createElement("div",{className:"flex items-center justify-between"},Wt.default.createElement("div",null,Wt.default.createElement("p",{className:`text-sm font-medium ${w}`},"GitHub App"),Wt.default.createElement("p",{className:`text-xs ${S}`},"Each checkout gets a one-hour token limited to its repository. When a repository is reachable both ways, the App is used.")),Wt.default.createElement("a",{href:ct("/api/github_installations/install"),className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600"},"Install the GitHub App")),O.length===0&&Wt.default.createElement("p",{className:`text-sm ${S}`},"No installation is linked yet. Install the App on the repositories this workspace should use."),O.map($=>{let T=C2($),I=$.repositories||[];return Wt.default.createElement("div",{key:$.id,className:"p-3 rounded-lg space-y-2",style:A},Wt.default.createElement("div",{className:"flex items-center justify-between gap-3"},Wt.default.createElement("div",{className:"min-w-0"},Wt.default.createElement("p",{className:`text-sm font-mono ${w}`},VX($)),Wt.default.createElement("p",{className:`text-xs ${T?C[T.tone]:S}`},T?T.label:`${I.length} selected for sandboxes`)),Wt.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===$.id?Wt.default.createElement(Wt.default.Fragment,null,Wt.default.createElement("button",{type:"button",onClick:F,className:k},"Cancel"),Wt.default.createElement("button",{type:"button",onClick:D,disabled:p,className:"px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},p?"Saving\u2026":`Save (${u.size})`)):Wt.default.createElement(Wt.default.Fragment,null,T?Wt.default.createElement("button",{type:"button",onClick:()=>j($),disabled:y===$.id,className:`${k} disabled:opacity-50`},y===$.id?"Checking\u2026":"Check again"):Wt.default.createElement("button",{type:"button",onClick:()=>E($),className:k},"Choose repositories"),$.settings_url&&Wt.default.createElement("a",{href:$.settings_url,target:"_blank",rel:"noreferrer",className:k},"Access on GitHub"),Wt.default.createElement("button",{type:"button",onClick:()=>z($),className:_},"Unlink")))),a===$.id&&s&&Wt.default.createElement(yf,{repositories:s,selection:u,onToggle:P=>c(H=>_2(H,P)),filter:d,onFilterChange:f}))}))}var Wwe={connected:{tone:"success",text:"GitHub connected. Choose the repositories this workspace may use."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub sign-in expired or was not started here. Try connecting again."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try connecting again."},not_configured:{tone:"error",text:"GitHub OAuth is not configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub connection."},error:{tone:"error",text:"Could not finish connecting GitHub. Try again."}};function d3({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=lt(),[o,a]=(0,Be.useState)(null),[i,s]=(0,Be.useState)(null),[l,u]=(0,Be.useState)(new Set),[c,d]=(0,Be.useState)(""),[f,p]=(0,Be.useState)(!1),[m,y]=(0,Be.useState)(null),[b,h]=(0,Be.useState)(Wwe[e]||qX[t]||null),[g,v]=(0,Be.useState)([]),[x,S]=(0,Be.useState)(null),[w,A]=(0,Be.useState)({}),[k,_]=(0,Be.useState)(null),[C,E]=(0,Be.useState)(null),[j,F]=(0,Be.useState)(0),[D,z]=(0,Be.useState)({}),N=(0,Be.useRef)({}),O=(0,Be.useCallback)(async()=>{try{let fe=await fetch("/api/github_connection");if(!fe.ok)throw new Error("status failed");let Xe=await fe.json();a(Xe),u(new Set((Xe.connection?.repositories||[]).map(gr=>gr.full_name)))}catch{y("Could not load the GitHub connection. Are you signed in?")}},[]);(0,Be.useEffect)(()=>{O()},[O]);let $=(0,Be.useCallback)(async()=>{try{let fe=await fetch("/api/sandboxes?sandbox_type=app_runtime"),Xe=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(Je(Xe,`Could not list your sandboxes (HTTP ${fe.status}).`));v(Xe.sandboxes||[]),S({codeSessions:!!Xe.code_sessions_supported,claudeCode:{...F_(Xe),sandboxes:Xe.claude_code_sandboxes||[]},codex:{supported:Xe.codex_sessions_supported===!0,connected:Xe.codex_connected===!0},pullRequests:Xe.pull_requests_supported===!0,browserModes:Array.isArray(Xe.browser_modes)?Xe.browser_modes:[]})}catch(fe){y(fe.message)}},[]),T=o!==null,I=!!o?.connected;(0,Be.useEffect)(()=>{T&&$()},[T,I,$,r]);let P=g.filter(fe=>L_(fe)&&!D[fe.session_id]?.stopped).map(fe=>fe.session_id).join(" ");(0,Be.useEffect)(()=>{if(!P)return;let fe=!1,Xe=setTimeout(async()=>{let gr=await Promise.all(P.split(" ").map(async nr=>{try{let qe=await fetch(`/api/sandboxes/${encodeURIComponent(nr)}`);if(qe.status===404)return{id:nr,gone:!0};let Gt=await qe.json().catch(()=>({}));return qe.ok?{id:nr,sandbox:Gt.sandbox||null}:{id:nr,status:qe.status,error:Je(Gt,`Could not check on this sandbox (HTTP ${qe.status}).`)}}catch{return{id:nr,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(fe)return;let rr={};gr.forEach(({id:nr,status:qe,error:Gt})=>{if(!Gt){delete N.current[nr],rr[nr]=null;return}let Ir=(N.current[nr]||0)+1;N.current[nr]=Ir,rr[nr]={message:Gt,stopped:j_(qe,Ir)}}),z(nr=>Object.entries(rr).reduce((qe,[Gt,Ir])=>{if(Ir)return{...qe,[Gt]:Ir};if(!(Gt in qe))return qe;let{[Gt]:co,...ys}=qe;return ys},nr)),v(nr=>gr.reduce((qe,Gt)=>Gt.gone?qe.filter(Ir=>Ir.session_id!==Gt.id):Gt.sandbox?KV(qe,Gt.sandbox,"session_id"):qe,nr)),F(nr=>nr+1)},2e3);return()=>{fe=!0,clearTimeout(Xe)}},[P,j]);let H=fe=>{delete N.current[fe],z(Xe=>{let{[fe]:gr,...rr}=Xe;return rr})},Q=(fe,Xe)=>{A(gr=>({...gr,[fe]:Xe}))},K=async()=>{y(null);try{let fe=await fetch("/api/github_connection/repositories"),Xe=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(Xe.error||"Could not list repositories.");s(Xe.repositories||[])}catch(fe){y(fe.message)}},ue=fe=>{u(Xe=>_2(Xe,fe))},pe=async()=>{p(!0),y(null);try{let fe=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),Xe=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(Xe.error||"Could not save the selection.");a(gr=>({...gr,connection:Xe.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(fe){y(fe.message)}finally{p(!1)}},re=async()=>{if(await Br({title:"Disconnect GitHub?",message:"New checkout sandboxes can no longer clone its repositories. Sandboxes already running keep running until you stop them or they expire.",confirmLabel:"Disconnect",danger:!0}))try{if(!(await fetch("/api/github_connection",{method:"DELETE"})).ok)throw new Error("disconnect failed");s(null),h(null),await O()}catch{y("Could not disconnect GitHub.")}},_e=async fe=>{_(fe),Q(fe,null);try{let Xe=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:fe})}),gr=await Xe.json().catch(()=>({}));if(!Xe.ok)throw new Error(Je(gr,`Could not start the sandbox (HTTP ${Xe.status}).`));v(rr=>vc(rr,gr.sandbox,"session_id"))}catch(Xe){Q(fe,Xe.message)}finally{_(null)}},de=async fe=>{if(!(fe.status!=="failed"&&!await Br({title:"Stop this sandbox?",message:"Its app stops and its checkout is deleted, including any changes Claude Code made there.",confirmLabel:"Stop sandbox",danger:!0}))){E(fe.session_id),Q(fe.repository,null);try{let Xe=await fetch(`/api/sandboxes/${encodeURIComponent(fe.session_id)}`,{method:"DELETE"}),gr=await Xe.json().catch(()=>({}));if(!Xe.ok&&Xe.status!==404)throw new Error(Je(gr,`Could not stop the sandbox (HTTP ${Xe.status}).`));v(rr=>rr.filter(nr=>nr.session_id!==fe.session_id)),H(fe.session_id)}catch(Xe){Q(fe.repository,Xe.message)}finally{E(null)}}},le=n?"text-gray-400":"text-gray-500",Z=n?"text-white":"text-gray-900",ee={backgroundColor:n?"#252525":"#f9fafb"},L=`px-3 py-1 text-sm rounded ${n?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,B=o?.connection,q=B?.repositories||[],M=o?.app?.configured?o.app.installations||[]:[],ne=YX(B,M),{byRepository:U,others:oe}=VV(g,ne.map(fe=>fe.full_name)),ve=M.length>0,Ze=GX(M),Ht=n?"text-red-400":"text-red-600",Mt=(fe,{standalone:Xe=!1}={})=>{let{label:gr,tone:rr}=BV(fe.status),nr=L_(fe),qe=FV(fe),Gt=qe?zV(fe.expires_at):null,Ir=nr?D[fe.session_id]:null;return Be.default.createElement("div",{key:fe.session_id,className:Xe?"p-3 rounded-lg space-y-2":`mt-3 pt-3 border-t space-y-2 ${n?"border-gray-700":"border-gray-200"}`,style:Xe?ee:void 0},Be.default.createElement("div",{className:"flex items-center justify-between gap-3"},Be.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},Be.default.createElement(xc,{tone:rr},gr),Be.default.createElement("span",{className:`font-mono truncate ${le}`},Xe?fe.repository:"","@",fe.repository_ref),Gt&&Be.default.createElement("span",{className:`shrink-0 ${le}`},"\xB7 ",Gt),w2(fe)&&Be.default.createElement("a",{href:ct(w2(fe)),onClick:co=>{co.preventDefault(),kt(w2(fe))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:fe.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",fe.project.name," \u2192")),Be.default.createElement("button",{onClick:()=>de(fe),disabled:C===fe.session_id,className:`shrink-0 px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},C===fe.session_id?"Stopping\u2026":fe.status==="failed"?"Dismiss":"Stop")),nr&&!Ir?.stopped&&Be.default.createElement("p",{className:`text-xs ${le}`},"Checking out the repository and booting its app; this can take a few minutes."),Ir&&Be.default.createElement("p",{className:`text-xs ${Ht}`},Ir.message," ",Ir.stopped?Be.default.createElement(Be.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",Be.default.createElement("button",{type:"button",onClick:()=>H(fe.session_id),className:"underline"},"Retry")):"Trying again\u2026"),fe.error_message&&Be.default.createElement("pre",{className:`p-2 rounded text-xs font-mono whitespace-pre-wrap break-words max-h-48 overflow-y-auto border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},fe.error_message),fe.runtime_server_key&&Be.default.createElement("p",{className:`text-xs ${le}`},"Enable ",Be.default.createElement("code",{className:"font-mono"},fe.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),qe&&x?.codeSessions&&Be.default.createElement(g0,{sandbox:fe,claudeCode:x.claudeCode?.mode==="sandbox_login"?{...x.claudeCode,connected:!!x.claudeCode.sandboxes.find(co=>co.session_id===fe.session_id)?.credential_mode}:x.claudeCode,codex:x.codex,onRecheckConnection:$}),qe&&x&&!x.codeSessions&&Be.default.createElement("p",{className:`text-xs ${le}`},"The configured sandbox backend cannot run Claude Code sessions."),qe&&x?.pullRequests&&Be.default.createElement(h0,{sandbox:fe}),qe&&x?.browserModes.length>0&&Be.default.createElement(hf,{sandbox:fe,modes:x.browserModes}))};return Be.default.createElement("div",{className:"space-y-4"},Be.default.createElement("div",{className:"flex items-center justify-between"},Be.default.createElement("div",{className:"flex items-center space-x-3"},Be.default.createElement("span",{className:"text-xl"},"\u{1F419}"),Be.default.createElement("div",null,Be.default.createElement("p",{className:`font-medium ${Z}`},"GitHub"),Be.default.createElement("p",{className:`text-sm ${o?.connected||Ze.active>0?n?"text-green-400":"text-green-600":le}`},o?[o.connected?`Connected as @${B.login}`:null,Ze.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?Be.default.createElement("button",{onClick:re,className:`px-3 py-1 text-sm rounded ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},o.app?.configured?"Disconnect OAuth":"Disconnect"):o?.configured?Be.default.createElement("a",{href:ct("/api/github_connection/connect"),className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 text-sm"},o.app?.configured?"Connect with OAuth":"Connect GitHub"):null),o&&!o.configured&&!o.connected&&!o.app?.configured&&Be.default.createElement("p",{className:`text-sm ${le}`},"The operator has not configured a GitHub OAuth app. Set ",Be.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",Be.default.createElement("code",null,"github_client_secret")," (or ",Be.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",Be.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",Be.default.createElement("code",null,ct("/api/github_connection/callback"))," as its callback URL."),b&&Be.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${b.tone==="success"?n?"bg-green-900/20 border-green-800 text-green-300":"bg-green-50 border-green-200 text-green-800":n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},b.text),m&&Be.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},m),Be.default.createElement(c3,{app:o?.app,onChanged:O,onError:y,onNotice:h}),o?.connected&&Be.default.createElement("div",{className:"space-y-3"},Be.default.createElement("div",{className:"flex items-center justify-between"},Be.default.createElement("div",null,Be.default.createElement("p",{className:`text-sm font-medium ${Z}`},"OAuth connection"),Be.default.createElement("p",{className:`text-xs ${le}`},q.length," selected for sandboxes, cloned with @",B.login,"'s token.")),i?Be.default.createElement("div",{className:"flex items-center space-x-2"},Be.default.createElement("button",{onClick:()=>{s(null),u(new Set(q.map(fe=>fe.full_name)))},className:L},"Cancel"),Be.default.createElement("button",{onClick:pe,disabled:f,className:"px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},f?"Saving\u2026":`Save (${l.size})`)):Be.default.createElement("button",{onClick:K,className:L},"Choose repositories")),i&&Be.default.createElement(yf,{repositories:i,selection:l,onToggle:ue,filter:c,onFilterChange:d})),(o?.connected||ve)&&!i&&Be.default.createElement("div",{className:"space-y-3"},Be.default.createElement("p",{className:`text-sm font-medium ${Z}`},"Available repositories"),ne.length===0?Be.default.createElement("p",{className:`text-sm ${le}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Be.default.createElement("div",{className:"space-y-2"},ne.map(fe=>{let Xe=U[fe.full_name]||[],gr=Xe.some(L_),rr=o.app?.configured?` \xB7 via ${XX(fe)}`:"";return Be.default.createElement("div",{key:fe.full_name,className:"p-3 rounded-lg",style:ee},Be.default.createElement("div",{className:"flex items-center justify-between"},Be.default.createElement("div",null,Be.default.createElement("p",{className:`text-sm font-mono ${Z}`},fe.full_name),Be.default.createElement("p",{className:`text-xs ${le}`},fe.private?"private":"public"," \xB7 ",fe.default_branch,rr)),Be.default.createElement("button",{onClick:()=>_e(fe.full_name),disabled:k===fe.full_name||gr,className:`${L} disabled:opacity-50`},k===fe.full_name?"Starting\u2026":gr?"Booting\u2026":"Start sandbox")),w[fe.full_name]&&Be.default.createElement("p",{className:`mt-2 text-xs ${Ht}`},w[fe.full_name]),Xe.map(nr=>Mt(nr)))}))),!i&&oe.length>0&&Be.default.createElement("div",{className:"space-y-2"},Be.default.createElement("p",{className:`text-sm font-medium ${Z}`},I||ve?"Other sandboxes":"Checkout sandboxes"),Be.default.createElement("p",{className:`text-xs ${le}`},I||ve?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),oe.map(fe=>Be.default.createElement(Be.default.Fragment,{key:fe.session_id},w[fe.repository]&&Be.default.createElement("p",{className:`text-xs ${Ht}`},w[fe.repository]),Mt(fe,{standalone:!0})))))}var xt=V(Y());var f3="claude_code";function p3({onChange:e}){let{darkMode:t}=lt(),[r,n]=(0,xt.useState)(null),[o,a]=(0,xt.useState)(null),[i,s]=(0,xt.useState)(!1),[l,u]=(0,xt.useState)(""),[c,d]=(0,xt.useState)(!1),[f,p]=(0,xt.useState)(null),[m,y]=(0,xt.useState)([]),[b,h]=(0,xt.useState)(""),g=(0,xt.useCallback)(async()=>{try{let[C,E]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!C.ok||!E.ok)throw new Error("load failed");let[j,F]=await Promise.all([C.json(),E.json()]);n((j.provider_keys||[]).find(z=>z.provider===f3)||{configured:!1}),a(F_(F));let D=(F.sandboxes||[]).filter(z=>z.status==="ready");y(D),h(z=>D.some(N=>N.session_id===z)?z:D[0]?.session_id||"")}catch{p("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,xt.useEffect)(()=>{g()},[g]);let v=async()=>{if(!(!l.trim()||c)){d(!0),p(null);try{let C=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:f3,credential:l.trim()})});if(!C.ok){let E=await C.json().catch(()=>({}));throw new Error(Array.isArray(E.error)?E.error.join(", "):"Could not save the API key.")}s(!1),u(""),await g(),e?.()}catch(C){p(C.message)}finally{d(!1)}}},x=async()=>{if(await Br({title:"Remove the Claude Code API key?",message:"Sessions using a sandbox subscription keep their login.",confirmLabel:"Remove key",danger:!0}))try{if(!(await fetch(`/api/provider_keys/${f3}`,{method:"DELETE"})).ok)throw new Error("delete failed");await g(),e?.()}catch{p("Could not disconnect Claude Code.")}},S=t?"text-gray-400":"text-gray-500",w=iG(o,r),A=w.keyForm&&r?.configured,k={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:S}[w.tone],_=`underline ${t?"text-gray-300":"text-gray-700"}`;return xt.default.createElement("div",{className:"space-y-3"},xt.default.createElement("div",{className:"flex items-center justify-between"},xt.default.createElement("div",{className:"flex items-center space-x-3"},xt.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),xt.default.createElement("div",null,xt.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),xt.default.createElement("p",{className:`text-sm ${k}`},w.status))),w.keyForm&&xt.default.createElement("div",{className:"flex items-center space-x-2"},A&&!i&&xt.default.createElement("button",{onClick:x,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},w.view==="sandbox_login"?"Remove API key":"Disconnect"),xt.default.createElement("button",{onClick:()=>{s(!i),u(""),p(null)},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},i?"Cancel":w.view==="sandbox_login"?A?"Update API key":"Add API key":w.needsReplacing?"Replace":A?"Update":"Connect")),w.view==="local_login"&&xt.default.createElement("button",{onClick:()=>{p(null),g(),e?.()},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},"Check again")),w.view==="local_login"&&xt.default.createElement("p",{className:`text-xs ${S}`},"Sessions run ",xt.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",w.loginHint&&xt.default.createElement(xt.default.Fragment,null,"Run ",xt.default.createElement("code",{className:"font-mono"},w.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),w.needsReplacing&&!i&&xt.default.createElement("p",{className:`text-xs ${t?"text-amber-300":"text-amber-700"}`},"The Claude subscription token stored here is no longer used: Anthropic does not allow third-party apps to hold Claude.ai credentials. Replace it with an Anthropic API key to run Claude Code sessions."),w.keyForm&&i&&xt.default.createElement(xt.default.Fragment,null,xt.default.createElement("div",{className:"flex items-center space-x-2"},xt.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:C=>u(C.target.value),onKeyDown:C=>C.key==="Enter"&&v(),placeholder:nG,"aria-label":"Anthropic API key",autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${t?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),xt.default.createElement("button",{onClick:v,disabled:!l.trim()||c,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},c?"Saving\u2026":"Save")),xt.default.createElement("p",{className:`text-xs ${S}`},"Paste an Anthropic API key from the"," ",xt.default.createElement("a",{href:oG,target:"_blank",rel:"noreferrer",className:_},"Claude Console"),". It is encrypted at rest and passed to checkout sandboxes so they can run Claude Code sessions against the repository. Claude subscription logins cannot be stored here (",xt.default.createElement("a",{href:aG,target:"_blank",rel:"noreferrer",className:_},"why"),"); to use your own subscription, use the sandbox sign-in below when enabled by this installation.")),w.view==="sandbox_login"&&xt.default.createElement("div",{className:"space-y-3"},m.length>0?xt.default.createElement(xt.default.Fragment,null,xt.default.createElement("label",{className:`block text-xs ${S}`},"Sandbox",xt.default.createElement("select",{"aria-label":"Claude subscription sandbox",value:b,onChange:C=>h(C.target.value),className:"w-full mt-2 p-2 border rounded",style:{background:"var(--color-background)",color:"var(--color-text-primary)",borderColor:"var(--color-border)"}},m.map(C=>xt.default.createElement("option",{key:C.session_id,value:C.session_id},C.repository," \xB7 ",C.session_id.slice(0,8))))),m.find(C=>C.session_id===b)&&xt.default.createElement(lf,{key:b,sandbox:m.find(C=>C.session_id===b),onChange:()=>{g(),e?.()}})):xt.default.createElement("p",{className:`text-sm ${S}`},"Start a checkout sandbox in ",xt.default.createElement("a",{className:"underline",href:ct("/projects")},"Projects")," to connect your Claude subscription."),xt.default.createElement("p",{className:`text-xs ${S}`},"Each member uses their own sandbox login. Sessions without a personal login use the account\u2019s Anthropic API key when one is connected.")),f&&xt.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${t?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},f))}var an=V(Y());function m3({onChange:e}){let{darkMode:t}=lt(),[r,n]=(0,an.useState)(null),[o,a]=(0,an.useState)(!1),[i,s]=(0,an.useState)(""),[l,u]=(0,an.useState)(!1),[c,d]=(0,an.useState)(null),f=(0,an.useCallback)(async()=>{let h=await fetch("/api/provider_keys");if(!h.ok)throw new Error("Could not load the Codex connection.");let g=await h.json();n((g.provider_keys||[]).find(v=>v.provider==="codex")||{configured:!1})},[]);(0,an.useEffect)(()=>{f().catch(h=>d(h.message))},[f]);let p=async h=>{if(h.preventDefault(),!(l||!i.trim())){u(!0),d(null);try{let g=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:"codex",credential:i.trim()})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(Array.isArray(v.error)?v.error.join(", "):v.error||"Could not save the API key.");s(""),a(!1),await f(),e?.()}catch(g){d(g.message)}finally{u(!1)}}},m=async()=>{if(await Br({title:"Disconnect Codex?",message:"New Codex sessions will need an API key connected again.",confirmLabel:"Disconnect",danger:!0})){u(!0),d(null);try{if(!(await fetch("/api/provider_keys/codex",{method:"DELETE"})).ok)throw new Error("Could not disconnect Codex.");await f(),e?.()}catch(h){d(h.message)}finally{u(!1)}}},y=t?"text-gray-400":"text-gray-500",b=`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-800"}`;return an.default.createElement("div",{className:"space-y-3"},an.default.createElement("div",{className:"flex items-center justify-between gap-3"},an.default.createElement("div",null,an.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),an.default.createElement("p",{className:`text-sm ${y}`},r==null?"Loading\u2026":r.configured?`Connected \xB7 ${r.hint}`:"Not connected")),an.default.createElement("div",{className:"flex gap-2"},r?.configured&&!o&&an.default.createElement("button",{className:b,disabled:l,onClick:m},"Disconnect"),an.default.createElement("button",{className:b,disabled:l||r==null,onClick:()=>{a(!o),s(""),d(null)}},o?"Cancel":r?.configured?"Update":"Connect"))),an.default.createElement("p",{className:`text-sm ${y}`},"Run Codex in a repository checkout using an OpenAI API key. API usage is billed to that key's project."),o&&an.default.createElement("form",{onSubmit:p,className:"flex flex-wrap gap-2"},an.default.createElement("label",{className:`flex-1 text-sm ${y}`},"OpenAI API key for Codex",an.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:i,onChange:h=>s(h.target.value),placeholder:"sk-\u2026",disabled:l,className:`block w-full mt-1 px-3 py-2 border rounded ${t?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),an.default.createElement("button",{type:"submit",className:`${b} self-end`,disabled:l||!i.trim()},l?"Saving\u2026":"Save API key")),c&&an.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},c))}var Hwe=["profile","api-keys","integrations","notifications","billing"];function Kwe(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:Hwe.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function g3({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=lt(),[o]=(0,Ne.useState)(()=>window.ACTIVE_AGENT_DASHBOARD?.meta?.personalProviderKeys?"personal":void 0),[{tab:a,github:i,githubApp:s}]=(0,Ne.useState)(Kwe),[l,u]=(0,Ne.useState)(a),[c,d]=(0,Ne.useState)(0),[f,p]=(0,Ne.useState)([]),[m,y]=(0,Ne.useState)([]),[b,h]=(0,Ne.useState)(!1),[g,v]=(0,Ne.useState)(""),[x,S]=(0,Ne.useState)(!1),[w,A]=(0,Ne.useState)(null),[k,_]=(0,Ne.useState)(!1),[C,E]=(0,Ne.useState)(null),j=(0,Ne.useCallback)(async()=>{try{let[T,I]=await Promise.all([fetch("/api/api_keys"),fetch(g2("/api/provider_keys",o))]);if(!T.ok||!I.ok)throw new Error("Failed to load keys");let P=await T.json(),H=await I.json();p(P.api_keys||[]),y(H.provider_keys||[]),E(null)}catch{E("Could not load API keys. Are you signed in?")}finally{h(!0)}},[o]);(0,Ne.useEffect)(()=>{l==="api-keys"&&!b&&j()},[l,b,j]);let F=h2({onKeysChanged:j,onError:E,scope:o}),D=async()=>{if(!(!g.trim()||x)){S(!0),E(null);try{let T=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.trim()})});if(!T.ok)throw new Error("create failed");let I=await T.json();A(I.api_key),_(!1),v(""),await j()}catch{E("Could not create the API key.")}finally{S(!1)}}},z=async T=>{if(await Br({title:"Revoke this API key?",message:"Requests using it stop working immediately. This cannot be undone.",confirmLabel:"Revoke key",danger:!0}))try{if(!(await fetch(`/api/api_keys/${T}`,{method:"DELETE"})).ok)throw new Error("delete failed");w&&w.id===T&&A(null),await j()}catch{E("Could not revoke the API key.")}},N=async T=>{try{await navigator.clipboard.writeText(T),_(!0),setTimeout(()=>_(!1),2e3)}catch{}},O={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};return Ne.default.createElement("div",{className:"p-6 space-y-6"},Ne.default.createElement("div",null,Ne.default.createElement("h2",{className:`text-2xl font-bold ${r?"text-white":"text-gray-900"}`},"Settings"),Ne.default.createElement("p",{className:`mt-1 ${r?"text-gray-400":"text-gray-500"}`},"Manage your account and preferences")),Ne.default.createElement("div",{className:"border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Ne.default.createElement("nav",{className:"flex space-x-8"},[{id:"profile",label:"Profile"},{id:"api-keys",label:"API Keys"},{id:"integrations",label:"Integrations"},{id:"notifications",label:"Notifications"},{id:"billing",label:"Billing"}].map(T=>Ne.default.createElement("button",{key:T.id,onClick:()=>u(T.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${l===T.id?"border-red-500 text-red-500":`border-transparent ${r?"text-gray-400 hover:text-gray-300":"text-gray-500 hover:text-gray-700"}`}`},T.label)))),l==="profile"&&Ne.default.createElement("div",{className:"space-y-6"},Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Profile Information"),Ne.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ne.default.createElement("div",null,Ne.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"First Name"),Ne.default.createElement("input",{type:"text",defaultValue:e?.name?.split(" ")[0]||"",className:`w-full px-3 py-2 border rounded-lg ${r?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),Ne.default.createElement("div",null,Ne.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Last Name"),Ne.default.createElement("input",{type:"text",defaultValue:e?.name?.split(" ")[1]||"",className:`w-full px-3 py-2 border rounded-lg ${r?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),Ne.default.createElement("div",{className:"md:col-span-2"},Ne.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Email"),Ne.default.createElement("input",{type:"email",defaultValue:e?.email||"",disabled:!0,className:`w-full px-3 py-2 border rounded-lg cursor-not-allowed ${r?"bg-gray-900 border-gray-700 text-gray-500":"bg-gray-100 border-gray-300 text-gray-500"}`}))),Ne.default.createElement("button",{className:"mt-4 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Save Changes")),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Appearance"),Ne.default.createElement("div",{className:"flex items-center justify-between"},Ne.default.createElement("div",null,Ne.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Dark Mode"),Ne.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Use dark theme across the dashboard")),Ne.default.createElement("button",{onClick:n,className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${r?"bg-red-500":"bg-gray-300"}`},Ne.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${r?"translate-x-6":"translate-x-1"}`}))))),l==="api-keys"&&Ne.default.createElement("div",{className:"space-y-6"},Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("div",{className:"flex items-center justify-between mb-4"},Ne.default.createElement("h3",{className:`text-lg font-semibold ${r?"text-white":"text-gray-900"}`},"API Keys"),Ne.default.createElement("div",{className:"flex items-center space-x-2"},Ne.default.createElement("input",{type:"text",value:g,onChange:T=>v(T.target.value),onKeyDown:T=>T.key==="Enter"&&D(),placeholder:"Key name (e.g. production)",className:`px-3 py-2 border rounded-lg text-sm ${r?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),Ne.default.createElement("button",{onClick:D,disabled:!g.trim()||x,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},x?"Creating\u2026":"+ Create New Key"))),Ne.default.createElement("div",{className:`p-4 rounded-lg mb-4 ${r?"bg-yellow-900/20 border border-yellow-800":"bg-yellow-50 border border-yellow-200"}`},Ne.default.createElement("p",{className:`text-sm ${r?"text-yellow-300":"text-yellow-800"}`},"\u26A0\uFE0F API keys are secrets. Never share them or commit them to version control.")),C&&Ne.default.createElement("div",{className:`p-4 rounded-lg mb-4 text-sm ${r?"bg-red-900/20 border border-red-800 text-red-300":"bg-red-50 border border-red-200 text-red-700"}`},C),w&&Ne.default.createElement("div",{className:`p-4 rounded-lg mb-4 border ${r?"bg-green-900/20 border-green-800":"bg-green-50 border-green-200"}`},Ne.default.createElement("p",{className:`text-sm font-medium mb-2 ${r?"text-green-300":"text-green-800"}`},"Key \u201C",w.name,"\u201D created. Copy it now \u2014 it won't be shown again."),Ne.default.createElement("div",{className:"flex items-center space-x-2"},Ne.default.createElement("code",{"data-aa-secret":"",className:`flex-1 px-3 py-2 rounded text-sm font-mono break-all ${r?"bg-gray-900 text-green-300":"bg-white text-green-800 border border-green-200"}`},w.token),Ne.default.createElement("button",{onClick:()=>N(w.token),className:`px-3 py-2 text-sm rounded ${r?"bg-gray-700 text-gray-200 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},k?"Copied!":"Copy"),Ne.default.createElement("button",{onClick:()=>A(null),className:`px-3 py-2 text-sm rounded ${r?"text-gray-400 hover:text-gray-200":"text-gray-500 hover:text-gray-700"}`},"Dismiss"))),f.length===0?Ne.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Ne.default.createElement("p",null,b?"No API keys yet":"Loading\u2026"),b&&Ne.default.createElement("p",{className:"text-sm"},"Create your first API key to authenticate requests")):Ne.default.createElement("div",{className:"space-y-2"},f.map(T=>Ne.default.createElement("div",{key:T.id,className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Ne.default.createElement("div",null,Ne.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.name),Ne.default.createElement("p",{className:`text-sm font-mono ${r?"text-gray-400":"text-gray-500"}`},T.masked_token,Ne.default.createElement("span",{className:"font-sans"}," \xB7 created ",new Date(T.created_at).toLocaleDateString(),T.last_used_at?` \xB7 last used ${new Date(T.last_used_at).toLocaleDateString()}`:" \xB7 never used"))),Ne.default.createElement("button",{onClick:()=>z(T.id),className:`px-3 py-1 text-sm rounded ${r?"bg-red-900/40 text-red-300 hover:bg-red-900/60":"bg-red-50 text-red-600 hover:bg-red-100"}`},"Revoke"))))),Ne.default.createElement(D0,{providerKeys:m,editor:F,scope:o})),l==="integrations"&&Ne.default.createElement("div",{className:"space-y-6"},Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${r?"text-white":"text-gray-900"}`},"Integrations"),Ne.default.createElement("p",{className:`text-sm mb-4 ${r?"text-gray-400":"text-gray-500"}`},"Connect GitHub to choose which repositories this workspace may use. A sandbox started from one boots that app's own runtime, so agents and evaluations can run with its tools, and Claude Code or Codex can work on the checkout."),Ne.default.createElement(d3,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement(p3,{onChange:()=>d(T=>T+1)})),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement(m3,{onChange:()=>d(T=>T+1)}))),l==="notifications"&&Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Email Notifications"),Ne.default.createElement("div",{className:"space-y-4"},[{label:"Agent execution alerts",desc:"Get notified when agents fail or complete",enabled:!0},{label:"Weekly usage reports",desc:"Summary of traces, costs, and performance",enabled:!0},{label:"Security alerts",desc:"Important security notifications",enabled:!0},{label:"Product updates",desc:"New features and improvements",enabled:!1}].map((T,I)=>Ne.default.createElement("div",{key:I,className:"flex items-center justify-between py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Ne.default.createElement("div",null,Ne.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.label),Ne.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},T.desc)),Ne.default.createElement("button",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${T.enabled?"bg-red-500":r?"bg-gray-700":"bg-gray-300"}`},Ne.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${T.enabled?"translate-x-6":"translate-x-1"}`})))))),l==="billing"&&Ne.default.createElement("div",{className:"space-y-6"},Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Subscription"),Ne.default.createElement("div",{className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Ne.default.createElement("div",null,Ne.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Free Plan"),Ne.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Current plan")),Ne.default.createElement("button",{className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Upgrade to Pro"))),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Payment Method"),Ne.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No payment method on file"),Ne.default.createElement("button",{className:`mt-4 px-4 py-2 rounded-lg ${r?"bg-gray-700 text-gray-300":"bg-gray-200 text-gray-700"}`},"Add Payment Method")),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Invoices"),Ne.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No invoices yet"))))}var Ke=V(Y());var qwe=[{label:"Find demo questions",message:"What demo questions worked in our latest evaluations? Show the evidence and tell me whether they are verified on current main."},{label:"Explain a failed eval",message:"Show my latest evaluation reports and explain which failures need attention."},{label:"Draft an agent",message:"Prepare a read-only support agent that cites available evidence and explains missing information instead of inventing answers."}],h3={width:"100%",background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border-strong)",borderRadius:8,padding:"9px 12px",font:"inherit"},gs={color:"var(--color-text-muted)",fontSize:12};function QX(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?ct(t):null}function Vwe({card:e,onAsk:t,busy:r}){let n=QX(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Ke.default.createElement(He,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Ke.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ke.default.createElement(Ee,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Ke.default.createElement(Ee,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Ke.default.createElement("span",{style:gs},String(e.check_strength).replaceAll("_"," "))),Ke.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Ke.default.createElement("div",{style:{...gs,fontFamily:X}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Ke.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Ke.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Ke.default.createElement("div",{style:gs},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Ke.default.createElement("div",{style:gs},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Ke.default.createElement("div",{style:gs},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Ke.default.createElement("details",{style:gs},Ke.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Ke.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Ke.default.createElement("li",{key:u},l)))),Ke.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Ke.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===ct("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Ke.default.createElement(se,{size:"sm",disabled:r,onClick:()=>t(`Read evaluation ${e.evaluation_id}, run ${a}. Explain its results, the strength of its checks, and what needs fixing.`)},"Explain this run")))}function Gwe({draft:e,onReview:t}){return Ke.default.createElement(He,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Ke.default.createElement(Ve,null,"Agent draft \xB7 not saved"),Ke.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Ke.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Ke.default.createElement("div",{style:{...gs,fontFamily:X}},e.provider," / ",e.model),Ke.default.createElement("details",null,Ke.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Ke.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Ke.default.createElement("p",{style:gs},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Ke.default.createElement(se,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function y3({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[a,i]=(0,Ke.useState)(null),[s,l]=(0,Ke.useState)(""),[u,c]=(0,Ke.useState)(!1),[d,f]=(0,Ke.useState)(null),[p,m]=(0,Ke.useState)(!1),y=(0,Ke.useRef)(null),b=(0,Ke.useRef)(null),h=(0,Ke.useRef)(e);h.current=e,(0,Ke.useEffect)(()=>{let k=new AbortController;return fetch("/api/dashboard_assistant",{signal:k.signal}).then(async _=>{let C=await _.json();if(!_.ok)throw new Error(C.error||"Could not load assistant configuration.");i(C),h.current.provider||t({...h.current,...C.defaults})}).catch(_=>{_.name!=="AbortError"&&f({message:_.message})}),()=>{k.abort(),y.current?.abort()}},[]);let g=e.messages||[],v=e.provider||a?.defaults?.provider||"",x=e.model||"",S=a?.limits?.message_characters||8e3,w=a?.providers?.find(k=>k.id===v),A=async k=>{let _=k.trim();if(!_||u||!a||!o||!x.trim()||!p)return;let C=g.map(F=>({role:F.role,content:F.content})).slice(-12);for(;C.reduce((F,D)=>F+D.content.length,0)>24e3;)C.shift();let E=[...g,{role:"user",content:_}];t({...e,messages:E}),l(""),f(null),c(!0);let j=new AbortController;y.current=j;try{let F=await fetch("/api/dashboard_assistant",{method:"POST",signal:j.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:_,history:C,provider:v,model:x.trim(),allow_provider_processing:!0})}),D=await F.json();if(!F.ok){f({message:typeof D.error=="string"?D.error:"The assistant could not complete this request.",setup:D.setup_required,retry:_}),t({...e,messages:g}),l(_);return}t({...e,messages:[...E,{role:"assistant",content:D.answer,cards:D.cards||[],references:D.references||[],drafts:D.drafts||[],limitations:D.limitations||[]}]})}catch(F){F.name!=="AbortError"&&(f({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:g}),l(_))}finally{c(!1)}};return Ke.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Ke.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Ke.default.createElement("div",null,Ke.default.createElement(Ve,null,"Workspace assistant"),Ke.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Ke.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:14}},"Find evaluation evidence. Understand failures. Build the next agent.")),g.length>0&&Ke.default.createElement(se,{disabled:u,onClick:()=>{t({...e,messages:[]}),f(null),l(""),m(!1)}},"New conversation")),!g.length&&Ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},qwe.map(k=>Ke.default.createElement("button",{key:k.label,onClick:()=>{l(k.message),b.current?.querySelector("textarea")?.focus()},style:{textAlign:"left",padding:20,background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border)",borderRadius:12,cursor:"pointer"}},Ke.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},k.label," \u2197"),Ke.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},k.message)))),Ke.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},g.map((k,_)=>Ke.default.createElement("div",{key:_,style:{display:"grid",gap:12}},Ke.default.createElement(Ve,{color:k.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},k.role==="user"?"You":"ActiveAgents"),Ke.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},k.content),k.cards?.map(C=>Ke.default.createElement(Vwe,{key:C.id,card:C,onAsk:E=>{l(E),b.current?.querySelector("textarea")?.focus()},busy:u})),k.references?.length>0&&Ke.default.createElement("div",{"aria-label":"Evidence references",style:{...gs,display:"flex",gap:12,flexWrap:"wrap"}},k.references.map(C=>{let E=QX(C);return E&&Ke.default.createElement("a",{key:C.id,href:E,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-accent-ui)"}},C.id)})),k.drafts?.map(C=>Ke.default.createElement(Gwe,{key:C.id,draft:C,onReview:r})),k.limitations?.length>0&&Ke.default.createElement("details",{style:gs},Ke.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Ke.default.createElement("ul",{style:{paddingLeft:18}},k.limitations.map((C,E)=>Ke.default.createElement("li",{key:E},C)))))),u&&Ke.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Ke.default.createElement(He,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Ke.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Ke.default.createElement(se,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Ke.default.createElement(He,{padding:18},Ke.default.createElement("form",{ref:b,onSubmit:k=>{k.preventDefault(),A(s)},style:{display:"grid",gap:14}},Ke.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Ke.default.createElement("textarea",{id:"assistant-question",placeholder:"Ask about your evals, or describe an agent to build\u2026",value:s,onChange:k=>l(k.target.value),maxLength:S,rows:3,disabled:u,style:{...h3,resize:"vertical",boxSizing:"border-box"}}),Ke.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Ke.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Ke.default.createElement("select",{"aria-label":"Assistant provider",value:v,disabled:u||!a,onChange:k=>{let _=a.providers.find(C=>C.id===k.target.value);m(!1),t({...e,provider:_?.id||"",model:_?.default_model||""})},style:h3},Ke.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(k=>Ke.default.createElement("option",{key:k.id,value:k.id},k.id,k.configured?"":" \xB7 setup needed")))),Ke.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Ke.default.createElement("input",{"aria-label":"Assistant model",value:x,disabled:u||!a,maxLength:160,onChange:k=>{m(!1),t({...e,model:k.target.value})},style:h3})),Ke.default.createElement(se,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!x.trim()||!o||!p},u?"Working\u2026":"Ask ActiveAgents \u2192")),Ke.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Ke.default.createElement("input",{type:"checkbox",checked:p,disabled:u||!a,onChange:k=>m(k.target.checked),style:{marginTop:4}}),Ke.default.createElement("span",null,"Allow ",v||"the selected provider"," / ",x||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),Ke.default.createElement("div",{style:{...gs,lineHeight:1.5}},o?w&&!w.configured?"This provider needs a credential in Settings before the assistant can respond.":"Uses your configured model provider. Agent drafts are reviewed before saving.":"Agent execution is disabled on this dashboard."," ","Reloading or starting a new conversation clears this conversation view. Your provider's data retention settings still apply."))))}var Go=V(Y());var at=V(Y());var $o=V(Y());function Ywe(e){let t=e.filter(o=>!o.ok);if(t.length===0)return"ready";let r=t.filter(o=>o.blocking).length,n=`${t.length} ${t.length===1?"item needs":"items need"} action`;return r?`${n} \xB7 ${r} ${r===1?"blocks":"block"} creating a project`:n}function v3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,$o.useState)(r),a=Ywe(t);return $o.default.createElement(on,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},$o.default.createElement("button",{type:"button","data-testid":"capabilities-toggle","aria-expanded":n,onClick:()=>o(!n),style:{display:"flex",width:"100%",alignItems:"center",gap:8,padding:"8px 12px",border:0,background:"transparent",cursor:"pointer",fontSize:13,color:r?"var(--color-error-text)":"var(--color-text-secondary)",textAlign:"left"}},$o.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),$o.default.createElement("span",{"data-testid":"capabilities-summary"},a),$o.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&$o.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>$o.default.createElement("li",{key:i.key,"data-testid":`capability-${i.key}`,style:{display:"flex",gap:10,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},$o.default.createElement(ii,{kind:i.ok?"pass":i.blocking?"fault":"info"}),$o.default.createElement("div",{style:{minWidth:0,flex:1}},$o.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},$o.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&$o.default.createElement(Ve,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&$o.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&$o.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:X,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var Fr=V(Y());var RX={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:X,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function B0({rows:e,onChange:t,repository:r}){let[n,o]=(0,Fr.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?v2(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return Fr.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&Fr.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"No environment variables were found in .env.example, .env.sample, .activeagents/sandbox.yml or ENV call sites."),e.map((s,l)=>{let u=v2(s.name),c=s.useOrganizationKey?[]:x2(s.name,s.value);return Fr.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},Fr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Fr.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&Fr.default.createElement(Ee,{tone:"warning"},"required"),s.set&&Fr.default.createElement(Ee,{tone:"success"},"set"),s.sources?.length>0&&Fr.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&Fr.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?Fr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):Fr.default.createElement(Fr.default.Fragment,null,!s.useOrganizationKey&&Fr.default.createElement("input",{type:"password",autoComplete:"off",value:s.value,onChange:d=>a(l,{value:d.target.value}),placeholder:s.set?"Leave empty to keep the current value":"Value","aria-label":`${s.name} value`,style:{...RX,marginTop:6}}),s.organizationKey&&Fr.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},Fr.default.createElement("input",{type:"checkbox",checked:s.useOrganizationKey,onChange:d=>a(l,{useOrganizationKey:d.target.checked,consent:!1,value:""})}),"Use the organization's ",s.organizationKey," key"),s.useOrganizationKey&&Fr.default.createElement("label",{"data-testid":`secret-consent-${s.name}`,style:{display:"flex",gap:6,alignItems:"flex-start",marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},Fr.default.createElement("input",{type:"checkbox",checked:s.consent,onChange:d=>a(l,{consent:d.target.checked})}),"I understand ",r||"the repository","'s code can read the organization's ",s.organizationKey," key. It is read when the sandbox boots and never copied into the project."),c.map(d=>Fr.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),Fr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},Fr.default.createElement("div",{style:{flex:1}},Fr.default.createElement(Ve,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),Fr.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...RX,marginTop:4}}),i&&Fr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),Fr.default.createElement(se,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(mX(e,n)),o("")}},"Add")))}var eZ={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function Xwe({repository:e,preflight:t}){return t?at.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},at.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},at.default.createElement("span",{style:{fontFamily:X,fontSize:13,color:"var(--color-text-primary)"}},e),at.default.createElement(Ee,{tone:b2[t.status]||"muted"},t.summary)),at.default.createElement("div",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},"Ruby ",t.ruby||"unpinned",t.ruby_source?` (${t.ruby_source})`:""," \xB7 railties ",t.railties||"not locked"," ","\xB7 engine ",t.actionagent||"not bundled"," \xB7 ref ",t.ref),t.reasons?.slice(1).map(r=>at.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>at.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function x3({onCreated:e,onCancel:t}){let[r,n]=(0,at.useState)(null),[o,a]=(0,at.useState)(null),[i,s]=(0,at.useState)(!1),[l,u]=(0,at.useState)(""),[c,d]=(0,at.useState)(null),[f,p]=(0,at.useState)(null),[m,y]=(0,at.useState)(null),[b,h]=(0,at.useState)(!1),[g,v]=(0,at.useState)([]),[x,S]=(0,at.useState)(""),[w,A]=(0,at.useState)(!1),[k,_]=(0,at.useState)("/"),[C,E]=(0,at.useState)(!1),[j,F]=(0,at.useState)(null),D=(0,at.useCallback)(async()=>{let P=await fetch("/api/projects/capabilities"),H=await P.json().catch(()=>({}));if(!P.ok)throw new Error(Je(H,`Could not check what this dashboard can do (HTTP ${P.status}).`));return n(H),H},[]),z=(0,at.useCallback)(async()=>{a(null);let P=await fetch("/api/github_connection/repositories"),H=await P.json().catch(()=>({}));if(H.reconnect_required){s(!0);return}if(!P.ok)throw new Error(Je(H,`Could not list repositories (HTTP ${P.status}).`));s(!1),a(H.repositories||[])},[]);(0,at.useEffect)(()=>{D().then(P=>P.github?.connected?z():null).catch(P=>F(P.message))},[D,z]);let N=(0,at.useCallback)(async(P,{typed:H=!1}={})=>{F(null),p(null),h(!0);try{let Q=`repository=${encodeURIComponent(P)}`,K=await fetch(`/api/projects/preflight?${Q}`),ue=await K.json().catch(()=>({}));if(ue.reconnect_required){s(!0);return}if(!K.ok){let _e=Je(ue,`Could not check ${P} (HTTP ${K.status}).`);H?p(_e):F(_e);return}if(d(ue.repository.full_name),y(ue.preflight),S(_e=>gX({name:_e,edited:w,fullName:ue.repository.full_name})),v([]),ue.preflight.status==="unsupported")return;let pe=await fetch(`/api/projects/discover_secrets?${Q}`),re=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(Je(re,`Could not read ${P}'s environment variables (HTTP ${pe.status}).`));v(j0(re.variables||[]))}catch(Q){F(Q.message)}finally{h(!1)}},[w]),O=async()=>{E(!0),F(null);try{let P=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:x,start_url:k,secrets:$0(g)})}),H=await P.json().catch(()=>({}));if(!P.ok)throw new Error(Je(H,`Could not create the project (HTTP ${P.status}).`));e(H.project)}catch(P){F(P.message)}finally{E(!1)}},$=r?.github,T=hX({github:$,repositories:o,reconnectRequired:i,pendingApproval:$?.pending_approval===!0}),I=b?"Checking the repository\u2026":yX({capabilities:r,preflight:m,secretsProblem:jg(g)});return at.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},at.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},at.default.createElement("div",{style:{flex:1}},at.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),at.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Boot a repository in a sandbox, installing the engine there when it does not have it, and evaluate an agent against the running app.")),at.default.createElement(se,{onClick:t},"Cancel")),j&&at.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},j),at.default.createElement(He,null,at.default.createElement(Ve,null,"Repository"),at.default.createElement("div",{style:{marginTop:8}},at.default.createElement(yf,{mode:"single",state:T,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:P=>N(P),settingsHref:ct("/settings?tab=integrations"),missingRepositoryUrl:$?.access_settings_url,onRefresh:()=>z().catch(P=>F(P.message)),onTypeName:P=>N(P,{typed:!0}),typedNameError:f})),m&&at.default.createElement("div",{style:{marginTop:12}},at.default.createElement(Xwe,{repository:c,preflight:m}))),r&&at.default.createElement(v3,{capabilities:r}),m&&m.status!=="unsupported"&&at.default.createElement(He,null,at.default.createElement(Ve,null,"Project"),at.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},at.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",at.default.createElement("input",{type:"text",value:x,onChange:P=>{S(P.target.value),A(P.target.value!=="")},style:{...eZ,marginTop:4}})),at.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",at.default.createElement("input",{type:"text",value:k,onChange:P=>_(P.target.value),style:{...eZ,marginTop:4,fontFamily:X}}))),at.default.createElement("div",{style:{marginTop:16}},at.default.createElement(Ve,null,"Secrets the boot needs"),at.default.createElement("div",{style:{marginTop:8}},at.default.createElement(B0,{rows:g,onChange:v,repository:c})))),at.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},I&&at.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},I),at.default.createElement(se,{variant:"primary",onClick:O,disabled:!!I||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var We=V(Y());var Zt=V(Y());function tZ(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function b3(e){return(e?.options||[]).map(t=>{if(t&&typeof t=="object"){let r=String(t.value??t.label??"");return{value:r,label:String(t.label??r)}}return{value:String(t),label:String(t)}})}function rZ(e,t){if(!e||e.kind==="confirm")return null;let r=typeof t=="string"?t:"";return r.trim()?e.kind==="secret"&&r.length<8?"A secret is at least 8 characters.":e.kind==="choice"&&!b3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function nZ(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function oZ(e){return e?e.available?e.last_run?`The setup assistant ${{awaiting_input:"is waiting for you",running:"is working",pending:"is starting",complete:"finished",failed:"failed"}[e.last_run.status]||e.last_run.status}.`:e.auto?"When a boot fails, the setup assistant reads its logs and asks for what is missing.":"The setup assistant starts only when you ask for it.":e.reason||"The setup assistant is not available.":null}function aZ(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||w3(e)||(Number(e?.pending_input_requests)||0)>0}var Zwe=6e4;function iZ(e,t,r=Date.now()){return e?.sandbox_state!=="failed"||e?.setup?.auto===!1||t==null||!e.setup?.claude_code?.available&&!e.setup?.available?!1:r-t[n.name,o]));return Object.keys(e).sort((n,o)=>(r.get(n)??1/0)-(r.get(o)??1/0)||n.localeCompare(o)).map(n=>{let o=(t.find(i=>i.name===n)?.columns||[]).map(i=>i.name),a=i=>[...i].sort((s,l)=>(o.indexOf(s)+1||1/0)-(o.indexOf(l)+1||1/0));return{model:n,filterable:a(e[n].filterable),returns:a(e[n].returns)}})}function dZ(e,t=[],r=[]){let n=o=>JSON.stringify(o.map(a=>({model:a.model,filterable:[...a.filterable||[]].sort(),returns:[...a.returns||[]].sort()})).sort((a,i)=>a.model.localeCompare(i.model)));return n(k3(e,r))!==n(t)}function fZ(e){return e?e.status==="queued"||e.status==="publishing"?{label:"publishing\u2026",tone:"info"}:e.status==="failed"?e.head_commit&&!e.number?{label:"branch published, pull request not opened",tone:"error"}:{label:"failed",tone:"error"}:e.state==="merged"?{label:"merged",tone:"success"}:e.state==="closed"?{label:"closed",tone:"muted"}:e.number?{label:e.draft?"draft open":"open",tone:"accent"}:{label:"branch published",tone:"warning"}:{label:"not opened",tone:"muted"}}function pZ(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function mZ(e){let t=e?.status==="queued"||e?.status==="publishing",r=!!e?.number&&!["merged","closed"].includes(e?.state),n=!e||["merged","closed"].includes(e.state)||!e.number&&!e.head_commit&&e.status==="failed",o=null;return!t&&e?.head_commit&&!e.number&&(o=e.status==="draft_refused"?"regular":"draft"),{canOpen:!t&&n,canUpdate:!t&&r,openBranch:o}}function gZ(e,t=[],r=""){let n=new URLSearchParams;for(let a of t)n.append("paths[]",a);r&&n.set("title",r);let o=n.toString();return`/api/projects/${e}/install_pull_request/patch${o?`?${o}`:""}`}async function hZ(e){return e.json().catch(()=>({}))}function _3({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,Zt.useState)(null),[a,i]=(0,Zt.useState)({}),[s,l]=(0,Zt.useState)(null),[u,c]=(0,Zt.useState)(!1),d=e.schema_tools||[],f=(0,Zt.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),y=await hZ(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(Je(y,`Could not list the app's models (HTTP ${m.status}).`));o(y.models||[]),i(uZ(y.schema_tools||[]))},[e.id]);(0,Zt.useEffect)(()=>{e.app_models_listed&&f().catch(m=>l(m.message))},[f,e.app_models_listed]);let p=async(m,y=!1)=>{c(!0),l(null);try{let b=await fetch(`/api/projects/${e.id}/schema_tools`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({schema_tools:k3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await hZ(b);if(b.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>p(m,!0));return}if(!b.ok)throw new Error(Je(h,`Could not save what the assistant may read (HTTP ${b.status}).`));t?.(h.project)}catch(b){l(b.message)}finally{c(!1)}};return Zt.default.createElement(Jwe,{listed:e.app_models_listed,models:n,selection:a,changed:n?dZ(a,d,n):!1,busy:u,error:s,onToggle:(m,y,b)=>i(h=>cZ(h,m,y,b)),onSave:()=>p(!1),onSaveAndRestart:()=>p(!0)})}function Jwe({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,Zt.useMemo)(()=>Object.keys(r||{}),[r]);return Zt.default.createElement(on,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},Zt.default.createElement("p",{style:{margin:0,padding:"10px 12px",fontSize:13,color:"var(--color-text-secondary)"}},"Each model you choose gets find, count and get tools that filter on and return only the columns ticked here. Columns that look like secrets are never listed. The tools are written into the sandbox's checkout on every boot, and go into the install pull request."),!e&&Zt.default.createElement("p",{style:{margin:0,padding:"0 12px 12px",fontSize:13,color:"var(--color-text-secondary)"}},"Boot the project first: a boot lists the app's models."),a&&Zt.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&Zt.default.createElement("p",{style:{margin:0,padding:"0 12px 12px",fontSize:13,color:"var(--color-text-secondary)"}},"The app has no models with a table."),(t||[]).map(c=>{let d=r?.[c.name];return Zt.default.createElement("details",{key:c.name,open:!!d,"data-testid":`assistant-model-${c.name}`,style:{borderTop:"1px solid var(--color-border-light)",padding:"8px 12px"}},Zt.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},Zt.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),Zt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&Zt.default.createElement(Ee,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),Zt.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},Zt.default.createElement("thead",null,Zt.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},Zt.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),Zt.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),Zt.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),Zt.default.createElement("tbody",null,c.columns.map(f=>Zt.default.createElement("tr",{key:f.name},Zt.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:X,color:"var(--color-text-primary)"}},f.name," ",Zt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},f.type)),["filterable","returns"].map(p=>Zt.default.createElement("td",{key:p,style:{padding:"2px 12px",textAlign:"center"}},Zt.default.createElement("input",{type:"checkbox","aria-label":`${p==="filterable"?"Filter on":"Read back"} ${c.name}.${f.name}`,checked:!!d?.[p]?.has(f.name),disabled:o,onChange:()=>i(c.name,p,f.name)}))))))))}),e&&t&&t.length>0&&Zt.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Zt.default.createElement(se,{size:"sm",onClick:s,disabled:o||!n},"Save"),Zt.default.createElement(se,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var Oa=V(Y());function C3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return Oa.default.createElement(on,{title:"Boot",meta:tZ(o)||n||"none",testId:"project-boot-progress"},a.length===0&&Oa.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},n==="booting"?"Waiting for the sandbox to report its steps\u2026":"No boot to show yet."),a.length>0&&Oa.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>Oa.default.createElement("li",{key:i.name,"data-testid":`boot-step-${i.name}`,style:{display:"grid",gridTemplateColumns:"92px 170px 1fr 80px",gap:10,alignItems:"baseline",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},Oa.default.createElement(Ee,{tone:bX[i.status]||"muted"},i.status),Oa.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},vX(i.name)," ",Oa.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},i.name)),Oa.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),Oa.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":xX(i.duration_ms))))),r&&Oa.default.createElement("div",{"data-testid":"boot-error",style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)",whiteSpace:"pre-wrap"}},r),t?.text&&Oa.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Oa.default.createElement("div",{style:{padding:"6px 12px",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),Oa.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:X,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Gs=V(Y());var yZ="/settings?tab=integrations";function A3({project:e,modes:t=[],watchOnOpen:r=!1,onChange:n}){let o=e.sandbox,a=e.sandbox_state==="ready"&&!!o?.session_id,i={margin:0,fontSize:13,color:"var(--color-text-secondary)"},s;return t.length===0?s=Gs.default.createElement("p",{style:i},"This dashboard's sandbox backend runs no browsers. The project's agent works through the app's tools."):a?s=Gs.default.createElement(Gs.default.Fragment,null,Gs.default.createElement("p",{style:i},"A browser of the sandbox's own, opened on ",e.repository,"'s running app. Watch it live, take over to click and type, and hand back. Agent runs reach it as ",Gs.default.createElement("span",{style:{fontFamily:X}},"browser:",o.session_id),"."),Gs.default.createElement(hf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Gs.default.createElement("p",{style:i},"Boot the sandbox to start its browser. It opens on the running app, and you can watch it live and take over."),Gs.default.createElement(on,{title:"Browser",meta:Gs.default.createElement(Wi,{href:ct(yZ),onClick:()=>kt(yZ)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var Sn=V(Y());var Qwe=e=>e?new Date(e).toLocaleString():"\u2014",Rwe={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function E3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,Sn.useState)(null),[i,s]=(0,Sn.useState)(""),[l,u]=(0,Sn.useState)(!1),c=o?x2(o,i):[],d=async f=>{u(!0);try{await f()}catch{return}finally{u(!1)}};return Sn.default.createElement(on,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&Sn.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&Sn.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),Sn.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(f=>Sn.default.createElement("li",{key:f.name,"data-testid":`environment-${f.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Sn.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},Sn.default.createElement("span",{style:{fontFamily:X,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},f.name),Sn.default.createElement(Ee,{tone:f.source==="organization_key"?"info":"muted"},Rwe[f.source]?.(f)||"entered"),Sn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},f.set_by?.name?`set by ${f.set_by.name}`:"set"," \xB7 ",Qwe(f.updated_at)),Sn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},f.source!=="organization_key"&&Sn.default.createElement(se,{size:"sm",onClick:()=>{a(f.name),s("")},disabled:l},"Replace"),Sn.default.createElement(se,{size:"sm",variant:"danger",onClick:()=>d(()=>r(f.name)),disabled:l},"Delete"))),f.source==="setup_assistant"&&typeof f.value=="string"&&Sn.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},f.name,"=",f.value),o===f.name&&Sn.default.createElement("form",{style:{display:"flex",gap:6,marginTop:8,flexWrap:"wrap"},onSubmit:p=>{p.preventDefault(),i&&d(async()=>{await t(f.name,i),a(null),s("")})}},Sn.default.createElement("input",{type:"password",autoComplete:"off",value:i,onChange:p=>s(p.target.value),placeholder:"New value","aria-label":`New value for ${f.name}`,style:{flex:1,minWidth:200,padding:"6px 10px",borderRadius:6,fontFamily:X,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),Sn.default.createElement(se,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),Sn.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(p=>Sn.default.createElement("div",{key:p.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},p.message)))))))}var kn=V(Y());var Nc=V(Y());var eSe=["proposed","edited"],O3={answerable:{label:"answerable",tone:"success",title:"Every expected tool is one the agent can call."},needs_tool:{label:"needs a tool",tone:"warning",title:"The agent cannot call every tool a good answer needs."},unverified:{label:"unverified",tone:"muted",title:"The agent's tools could not be read when this was checked."}},A2={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},vZ={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function bZ(e){return e?.status==="pending"||e?.status==="running"}function E2(e){return eSe.includes(e.state)}function P3(e=[],t=null){let r=e.filter(n=>E2(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function wZ(e=[],t=[]){let r=new Set(t.filter(E2).map(n=>n.id));return e.filter(n=>r.has(n))}function xZ(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function SZ(e={},t={}){return Object.keys(vZ).flatMap(r=>{let n=Number(e?.[r]);if(!Number.isFinite(n)||n<=0)return[];let o=Math.max(Number(t?.[r])||0,0);return[{key:r,label:vZ[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${xZ(r,o)} / ${xZ(r,n)}`}]})}function kZ(e){let t=e?.provenance||{},r=t.recording_id;if(!Number.isInteger(r)||r<=0)return null;let n=t.range||{},o=["from_ms","to_ms"].filter(a=>Number.isInteger(n[a])).map(a=>`${a}=${n[a]}`);return`/replay/${r}${o.length?`?${o.join("&")}`:""}`}function _Z({evaluation:e=null,candidates:t=[],selectedIds:r=[]}={}){let n=new Set(r),o=t.filter(s=>n.has(s.id)&&!s.scenario_key).length,a=(e?.enabled_scenario_count||0)+o,i=Math.max(e?.model_count||1,1);return{added:o,scenarios:a,models:i,executions:a*i}}function CZ(e,t=null){let r=`${e.scenarios} scenario${e.scenarios===1?"":"s"}`,n=`${e.models} model${e.models===1?"":"s"}`,o=`The run uses ${e.executions} execution${e.executions===1?"":"s"} (${r} \xD7 ${n}).`;return Number.isFinite(t)?`${o} ${t} remaining on your plan.`:o}function N3(e){return(e||[]).join(", ")}function T3(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function AZ(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:N3(t.tools),contains:N3(t.contains),not_contains:N3(t.not_contains)}}function EZ(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:T3(e.tools),contains:T3(e.contains),not_contains:T3(e.not_contains)}}function N2(e){return`/explorations/${e}`}function T2(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function vf({explorations:e,onOpen:t,selectedId:r=null}){return Nc.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"exploration-list"},e.map(n=>{let o=n.counts||{},a=String(n.id)===String(r);return Nc.default.createElement(He,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},Nc.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},Nc.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),Nc.default.createElement(Ee,{tone:A2[n.status]||"muted"},n.status),Nc.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),Nc.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",_o(n.created_at))))}))}var ft=V(Y());var xf=V(Y());function M3({budget:e,usage:t}){let r=SZ(e,t);return r.length===0?null:xf.default.createElement(on,{title:"Budget",testId:"exploration-budget",bodyStyle:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:8}},r.map(n=>{let o=n.ratio>=1?la.error:n.ratio>=.8?la.warning:la.info;return xf.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},xf.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),xf.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},xf.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),xf.default.createElement("span",{style:{fontFamily:X,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var bt=V(Y());var tSe={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},$g={width:"100%",boxSizing:"border-box",padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:"inherit",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};function Lg({label:e,children:t}){return bt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function I3({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,bt.useState)(null),c=O3[e.verdict]||O3.unverified,d=e.expectations||{},f=new Set(e.missing_tools||[]),p=e.provenance||{},m=kZ(e),y=E2(e),b=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,EZ(l))&&u(null)};return bt.default.createElement("li",{"data-testid":`exploration-candidate-${e.id}`,style:{listStyle:"none",padding:"12px 0",borderTop:"1px solid var(--color-border-light)",display:"flex",gap:10}},bt.default.createElement("input",{type:"checkbox","aria-label":`Accept candidate ${e.id}`,checked:t,disabled:!y||a,onChange:()=>r(e.id),style:{marginTop:3,alignSelf:"flex-start"}}),bt.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},bt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},bt.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),bt.default.createElement(Ee,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),bt.default.createElement(Ee,{tone:tSe[e.state]||"muted"},e.state),e.group&&bt.default.createElement(Ee,null,e.group),e.scenario_key&&bt.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?bt.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},bt.default.createElement(Lg,{label:"Prompt"},bt.default.createElement("input",{style:$g,value:l.prompt,onChange:b("prompt")})),bt.default.createElement(Lg,{label:"Rubric: what a good answer does (the judge grades against it)"},bt.default.createElement("textarea",{style:{...$g,minHeight:60},value:l.rubric,onChange:b("rubric")})),bt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},bt.default.createElement(Lg,{label:"Group"},bt.default.createElement("input",{style:$g,value:l.group,onChange:b("group")})),bt.default.createElement(Lg,{label:"Tools (comma-separated)"},bt.default.createElement("input",{style:$g,value:l.tools,onChange:b("tools")})),bt.default.createElement(Lg,{label:"Contains"},bt.default.createElement("input",{style:$g,value:l.contains,onChange:b("contains")})),bt.default.createElement(Lg,{label:"Does not contain"},bt.default.createElement("input",{style:$g,value:l.not_contains,onChange:b("not_contains")}))),bt.default.createElement("div",{style:{display:"flex",gap:8}},bt.default.createElement(se,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),bt.default.createElement(se,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):bt.default.createElement(bt.default.Fragment,null,bt.default.createElement("div",{style:{fontSize:13,color:e.notes?"var(--color-text-cell)":"var(--color-text-muted)"}},e.notes||"No rubric yet: the judge has nothing to grade the answer against."),(d.tools?.length>0||d.contains?.length>0||d.not_contains?.length>0)&&bt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:X,fontSize:11}},(d.tools||[]).map(g=>bt.default.createElement(Ee,{key:g,tone:f.has(g)?"warning":"muted",title:f.has(g)?"The agent cannot call this tool":void 0},f.has(g)?`missing ${g}`:g)),(d.contains||[]).map(g=>bt.default.createElement(Ee,{key:`c-${g}`},"contains \u201C",g,"\u201D")),(d.not_contains||[]).map(g=>bt.default.createElement(Ee,{key:`n-${g}`},"not \u201C",g,"\u201D")))),i&&bt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i),(p.steps?.length>0||p.urls?.length>0||p.screenshots?.length>0||m)&&bt.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},bt.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),p.urls?.length>0&&bt.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11}},p.urls.join(" \xB7 ")),p.steps?.length>0&&bt.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},p.steps.map((g,v)=>bt.default.createElement("li",{key:v},g))),p.screenshots?.length>0&&bt.default.createElement("div",{style:{marginTop:4,fontFamily:X,fontSize:11}},"Screenshots: ",p.screenshots.join(", "))),!l&&bt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&bt.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&bt.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&bt.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>u(AZ(e)),disabled:a},"Edit"),y&&bt.default.createElement(se,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&bt.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var D3={minutes:15,steps:150},NZ={minutes:120,steps:1e3,cost:100},TZ={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function PZ(e={}){let t={};for(let r of["minutes","steps","cost"]){let n=String(e[r]??"").trim();if(n==="")continue;let o=Number(n),a=r!=="cost";if(!Number.isFinite(o)||o<=0||a&&!Number.isInteger(o))return{error:`${TZ[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>NZ[r])return{error:`${TZ[r]} may be at most ${NZ[r]}.`};t[r]=o}return{budget:t}}var OZ={sandbox_not_ready:"Boot the project first: the explorer walks the app its sandbox serves.",exploration_running:"An exploration of this project is already walking the app. Stop it or wait for it to finish.",no_target:"Choose the agent to evaluate first: the explorer proposes questions for that agent.",browser_unavailable:null};function MZ(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&OZ[t.code]?OZ[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var rSe={finished:"The explorer finished.",budget_minutes:"Its time budget ran out.",budget_steps:"Its browser step budget ran out.",budget_cost:"Its cost budget ran out.",budget_context:"Its conversation grew too long for the model.",stopped:"Stopped for review.",error:"It failed."};function IZ(e){return e?rSe[e]||e:null}var nSe={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function DZ(e){return e?{tone:nSe[e.status]||"muted",text:e.message||e.status}:null}function jZ(e={},{passwordSaved:t=!1}={}){let r={};for(let n of["login_url","login","password","login_field","password_field","submit_field"]){let o=String(e[n]??"").trim();o&&(r[n]=n==="password"?String(e[n]):o)}return!r.password&&!t?{error:"Enter the test account's password."}:r.login_url&&(!r.login_url.startsWith("/")||r.login_url.startsWith("//"))?{error:"The login URL must be a path on the app, such as /users/sign_in."}:{payload:r}}function j3(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function $Z(e){return e.json().catch(()=>({}))}var aSe={explorer:"explorer agent",external:"submitted from outside the dashboard"};function bf({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,ft.useState)(null),[s,l]=(0,ft.useState)(null),[u,c]=(0,ft.useState)([]),[d,f]=(0,ft.useState)(!1),[p,m]=(0,ft.useState)(!1),[y,b]=(0,ft.useState)({}),[h,g]=(0,ft.useState)(null),[v,x]=(0,ft.useState)(null),S=(0,ft.useRef)(t);S.current=t;let w=(0,ft.useCallback)(async()=>{let P=await fetch(`/api/explorations/${e}`),H=await $Z(P);if(!P.ok)throw new Error(Je(H,`Could not load the exploration (HTTP ${P.status}).`));return i(H),S.current?.(H),H},[e]);(0,ft.useEffect)(()=>{w().catch(P=>l(P.message))},[w]);let A=a?.candidates||[];(0,ft.useEffect)(()=>{a&&c(P=>d?wZ(P,A):P3(A,a.preselect_limit))},[a,d]);let k=bZ(a?.exploration);(0,ft.useEffect)(()=>{if(!k)return;let P=setInterval(()=>w().catch(H=>l(H.message)),3e3);return()=>clearInterval(P)},[k,w]),Og("ExplorationChannel",{exploration_id:e},P=>{Pg(P)&&w().catch(()=>{})},!!e);let _=async(P,H,Q)=>{m(!0),l(null);try{let K=await fetch(P,{method:H,headers:{"Content-Type":"application/json"},body:JSON.stringify(Q||{})}),ue=await $Z(K);return{res:K,data:ue}}finally{m(!1)}},C=async(P,H)=>{let{res:Q,data:K}=await _(`/api/explorations/${e}/candidates/${P}`,"PATCH",H);return Q.ok?(b({...y,[P]:null}),await w(),!0):(b({...y,[P]:Je(K,`Could not save the candidate (HTTP ${Q.status}).`)}),!1)},E=async(P,H)=>C(P,{state:H}),j=P=>{f(!0),c(H=>H.includes(P)?H.filter(Q=>Q!==P):[...H,P])},F=async()=>{let P={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:H,data:Q}=await _(`/api/explorations/${e}/accept`,"POST",P);return H.ok?(b({}),g({accepted:Q.accepted,evaluation:r?null:Q.evaluation,scenarioSet:Q.scenario_set||null}),o?.(Q),f(!1),i(Q),S.current?.(Q),Q):(b(Q.problems||{}),l(Je(Q,`Could not accept the candidates (HTTP ${H.status}).`)),null)},D=async(P,H,{confirm:Q=!1}={})=>{let K=H?`/api/projects/${H.id}/run_evaluation`:`/api/evaluations/${P.id}/run`,{res:ue,data:pe}=await _(K,"POST",Q?{confirm:!0}:{});if(ue.status===409&&pe.code==="confirmation_required"){x({question:pe.confirmation,evaluation:P,project:H});return}if(!ue.ok){l(Je(pe,`The scenarios were accepted, but the run did not start (HTTP ${ue.status}).`));return}x(null),kt(`/evaluations/${pe.run?.evaluation_id||P.id}/runs/${pe.run.id}`)},z=async()=>{let P=await F();P?.evaluation&&await D(P.evaluation,P.project)},N=async()=>{let{res:P,data:H}=await _(`/api/explorations/${e}/stop`,"POST");if(!P.ok&&P.status!==409){l(Je(H,`Could not stop the exploration (HTTP ${P.status}).`));return}await w()};if(!a)return s?ft.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):ft.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:O}=a,$=O.counts||{},T=_Z({evaluation:a.evaluation,candidates:A,selectedIds:u}),I=P3(A);return ft.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},ft.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ft.default.createElement(Ve,null,"Exploration ",O.id),ft.default.createElement(Ee,{tone:A2[O.status]||"muted",testId:"exploration-status"},O.status),ft.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},aSe[O.source]||O.source," \xB7 ",_o(O.created_at),O.start_url?` \xB7 from ${O.start_url}`:""),k&&ft.default.createElement(se,{size:"sm",onClick:N,disabled:p,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),O.stop_reason&&ft.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},IZ(O.stop_reason)),O.error_message&&ft.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},O.error_message),ft.default.createElement(M3,{budget:O.budget,usage:O.usage}),s&&ft.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&ft.default.createElement(He,{padding:12,testId:"exploration-accepted"},ft.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},"Added ",h.accepted?.added?.length||0," and updated ",h.accepted?.updated?.length||0," scenarios in"," ",h.scenarioSet?`${h.scenarioSet.catalog?.name} / ${h.scenarioSet.name}`:h.evaluation?.name,".")," ",h.evaluation&&ft.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),v&&ft.default.createElement(He,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},ft.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},v.question),ft.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},ft.default.createElement(se,{variant:"primary",onClick:()=>D(v.evaluation,v.project,{confirm:!0}),disabled:p},"Run it on this machine"),ft.default.createElement(se,{onClick:()=>x(null)},"Cancel"))),ft.default.createElement(on,{title:"Found so far",meta:`${$.total||0} found \xB7 ${$.answerable||0} answerable \xB7 ${$.accepted||0} accepted`,testId:"exploration-candidates",bodyStyle:{padding:"0 12px"}},A.length===0?ft.default.createElement("div",{style:{padding:"12px 0",fontSize:13,color:"var(--color-text-secondary)"}},k?"Nothing yet. Candidates appear here as they are found.":"This exploration found nothing."):ft.default.createElement("ul",{style:{margin:0,padding:0}},A.map(P=>ft.default.createElement(I3,{key:P.id,candidate:P,selected:u.includes(P.id),onToggle:j,onSave:C,onState:E,busy:p,problem:y?.[P.id]||y?.[String(P.id)],agentId:a.target_agent?.id})))),A.length>0&&ft.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},ft.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ft.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>{f(!0),c(I)},disabled:p},"Select every answerable"),ft.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>{f(!0),c([])},disabled:p},"Clear"),a.preselect_limit!=null&&I.length>a.preselect_limit&&ft.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),ft.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ft.default.createElement(se,{variant:"primary",onClick:F,disabled:p||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&ft.default.createElement(ft.default.Fragment,null,ft.default.createElement(se,{onClick:z,disabled:p||u.length===0,testId:"exploration-accept-run"},"Accept and run"),ft.default.createElement("span",{style:{fontFamily:X,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},CZ(T,a.runs_remaining))))))}var Pa=V(Y());var iSe={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:X,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function F0({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,Pa.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,Pa.useState)(null),[s,l]=(0,Pa.useState)(!1),{error:u,budget:c}=PZ(n),d=async()=>{l(!0),i(null);try{let p=await fetch(`/api/projects/${e}/explorations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({budget:c})}),m=await p.json().catch(()=>({}));if(!p.ok)throw new Error(MZ(p.status,m));r?.(m.exploration)}catch(p){i(p.message)}finally{l(!1)}},f=(p,m,y)=>Pa.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},Pa.default.createElement(Ve,null,m),Pa.default.createElement("input",{type:"number",min:"0",value:n[p],placeholder:y,onChange:b=>o({...n,[p]:b.target.value}),"aria-label":m,style:iSe}));return Pa.default.createElement(on,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Pa.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"The explorer walks the app in the sandbox's browser and proposes the questions a user would ask the project's agent, each with a rubric. They wait here for review; nothing reaches the evaluation until you accept it."),Pa.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},f("minutes","Minutes",String(D3.minutes)),f("steps","Browser steps",String(D3.steps)),f("cost","Cost cap ($)","none"),Pa.default.createElement(se,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&Pa.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Boot the project first: the explorer walks the app its sandbox serves."),(u||a)&&Pa.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var jt=V(Y());var sSe={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:X,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},lSe=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],LZ=e=>e?new Date(e).toLocaleString():"\u2014";async function wf(e,t,r){let n=await fetch(e,{method:t,headers:{"Content-Type":"application/json"},body:r?JSON.stringify(r):void 0}),o=await n.json().catch(()=>({}));if(!n.ok)throw new Error(Je(o,`The request failed (HTTP ${n.status}).`));return o}function $3({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,jt.useState)(null),[a,i]=(0,jt.useState)(null),[s,l]=(0,jt.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,jt.useState)(null),[d,f]=(0,jt.useState)(null),[p,m]=(0,jt.useState)(null),[y,b]=(0,jt.useState)(!1),h=(0,jt.useCallback)(async()=>{let D=await wf(`/api/projects/${e}/sign_in`,"GET");o(D.sign_in);let z=D.sign_in?.credentials;z&&l(N=>({...N,login_url:z.login_url||"",login:z.login||"",...z.fields})),i(N=>N||(z?"credentials":D.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,jt.useEffect)(()=>{h().catch(D=>f(D.message))},[h]);let g=async D=>{b(!0),f(null),m(null);try{await D()}catch(z){f(z.message)}finally{b(!1)}},v=n?.credentials,{error:x,payload:S}=jZ(s,{passwordSaved:!!v?.password_set}),w=DZ(u),A=()=>g(async()=>{let D=await wf(`/api/projects/${e}/sign_in`,"PUT",S);o(D.sign_in),l(z=>({...z,password:""})),m(D.warnings?.length?D.warnings.map(z=>z.message).join(" "):"Saved. The explorer signs in with them.")}),k=()=>g(async()=>{let D=await wf(`/api/projects/${e}/sign_in/check`,"POST");c(D.result),o(D.sign_in)}),_=()=>g(async()=>{await wf(`/api/sandboxes/${t}/browser`,"POST",{mode:"headed"}),await h(),m("A browser window opened on the app. Sign in there, then save its sign-in.")}),C=()=>g(async()=>{let D=await wf(`/api/projects/${e}/sign_in/save_browser`,"POST");o(D.sign_in),m("Saved. Every browser of this project now starts signed in.")}),E=()=>g(async()=>{await wf(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),j=()=>g(async()=>{let D=await wf(`/api/projects/${e}/sign_in`,"DELETE");o(D.sign_in),c(null),m("The explorer explores what is reachable without signing in.")}),F=(D,z,N="text",O="")=>jt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},jt.default.createElement(Ve,null,z),jt.default.createElement("input",{type:N,autoComplete:"off",value:s[D],placeholder:O,onChange:$=>l({...s,[D]:$.target.value}),"aria-label":z,style:sSe}));return jt.default.createElement(on,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},jt.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"How the explorer and the evaluation's replays sign in to the app. Credentials are typed into the app by the dashboard itself and never reach a model."),jt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v&&jt.default.createElement(Ee,{tone:"success"},"credentials saved ",LZ(v.updated_at)),n?.storage_state&&jt.default.createElement(Ee,{tone:"success"},"browser sign-in saved ",LZ(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&jt.default.createElement(Ee,null,"no sign-in")),jt.default.createElement(Ui,{options:lSe,value:a||"none",onChange:i}),a==="credentials"&&jt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},jt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},F("login_url","Login URL","text","/users/sign_in"),F("login","Login","text","dev@example.com"),F("password","Password","password",v?.password_set?"Saved; leave empty to keep it":"")),jt.default.createElement("details",null,jt.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),jt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},F("login_field","Login field","text","#user_email"),F("password_field","Password field","text","#user_password"),F("submit_field","Submit button","text","button[type=submit]"))),jt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},jt.default.createElement(se,{variant:"primary",size:"sm",onClick:A,disabled:y||!!x},"Save credentials"),jt.default.createElement(se,{size:"sm",onClick:k,disabled:y||!v||!r,testId:"sign-in-check"},"Check sign-in"),x&&jt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},x))),a==="by_hand"&&jt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},jt.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"Open the sandbox's browser in a window, sign in to the app there, then save its sign-in. Later browsers of this project start with it."),jt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},jt.default.createElement(se,{size:"sm",onClick:_,disabled:y||!r||n?.browser_running},"Open a browser window"),jt.default.createElement(se,{variant:"primary",size:"sm",onClick:C,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&jt.default.createElement(se,{size:"sm",variant:"ghost",onClick:E,disabled:y},"Stop the browser"))),a==="none"&&(v||n?.storage_state)&&jt.default.createElement("div",null,jt.default.createElement(se,{size:"sm",variant:"danger",onClick:j,disabled:y},"Remove the saved sign-in")),w&&jt.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:la[w.tone]?.text||"var(--color-text-secondary)"}},w.text),p&&jt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},p),d&&jt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function L3({projectId:e,project:t,onCount:r}){let[n,o]=(0,kn.useState)(null),[a,i]=(0,kn.useState)(null),[s,l]=(0,kn.useState)(null),u=(0,kn.useCallback)(async()=>{let p=await fetch(`/api/explorations?project_id=${e}`),m=await p.json().catch(()=>({}));if(!p.ok)throw new Error(Je(m,`Could not list the project's explorations (HTTP ${p.status}).`));o(m.explorations||[]),r?.(m.explorations?.length||0)},[e,r]);(0,kn.useEffect)(()=>{u().catch(p=>l(p.message))},[u]);let c=t?.sandbox_state==="ready",d=kn.default.createElement(kn.default.Fragment,null,kn.default.createElement(F0,{projectId:e,sandboxReady:c,onStarted:p=>{i(p.id),u().catch(m=>l(m.message))}}),kn.default.createElement($3,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return kn.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return kn.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return kn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,kn.default.createElement(He,{testId:"project-explorations-empty"},kn.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No explorations yet. Explore the app above, or have an agent that explores it, such as a coding agent driving a browser, submit the questions it found with the explorations_submit MCP tool. They are reviewed here before any reaches the evaluation.")));let f=a||n[0].id;return kn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,kn.default.createElement(vf,{explorations:n,selectedId:f,onOpen:p=>i(p.id)}),kn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},kn.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(N2(f))},"Open on its own page")),kn.default.createElement(bf,{key:f,explorationId:f,onLoaded:()=>u().catch(()=>{})}))}var Rt=V(Y());var uSe={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function zZ(e){return e.json().catch(()=>({}))}function z3({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,Rt.useState)(null),[i,s]=(0,Rt.useState)(null),l=(0,Rt.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await zZ(c);if(!c.ok)throw new Error(Je(d,`Could not list what the project is waiting for (HTTP ${c.status}).`));a(d.input_requests||[])},[e]);(0,Rt.useEffect)(()=>{l().catch(c=>s(c.message))},[l,r]);let u=async(c,d,f)=>{let p=await fetch(`/api/input_requests/${c.id}/${d}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),m=await zZ(p);if(!p.ok)throw new Error(Je(m,`Could not send the answer (HTTP ${p.status}).`));await l(),n?.()};return!o?.length&&!i?null:Rt.default.createElement(on,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&Rt.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>Rt.default.createElement(cSe,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function cSe({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,Rt.useState)(""),[a,i]=(0,Rt.useState)(!1),[s,l]=(0,Rt.useState)(null),u=async(c,d)=>{i(!0),l(null);try{await t(e,c,d),o("")}catch(f){l(f.message)}finally{i(!1)}};return Rt.default.createElement(dSe,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",nZ(e,c)),onDecline:()=>u("decline")})}function dSe({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=rZ(e,r),u=`project-answer-${e.id}`;return Rt.default.createElement("form",{"data-testid":`project-input-request-${e.id}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)",display:"flex",flexDirection:"column",gap:8},onSubmit:c=>{c.preventDefault(),e.kind!=="confirm"&&!l&&i(r)}},Rt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Rt.default.createElement(Ee,{tone:e.kind==="secret"?"warning":"info"},uSe[e.kind]||e.kind),Rt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),Rt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:X,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),Rt.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&Rt.default.createElement("select",{id:u,value:r,onChange:c=>n(c.target.value),disabled:o,style:{padding:"6px 8px",borderRadius:6,border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:"var(--color-text-primary)"}},Rt.default.createElement("option",{value:""},"Choose\u2026"),b3(e).map(c=>Rt.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&Rt.default.createElement("input",{id:u,type:e.kind==="secret"?"password":"text",autoComplete:e.kind==="secret"?"new-password":"off","data-aa-secret":e.kind==="secret"?"":void 0,value:r,onChange:c=>n(c.target.value),disabled:o,style:{padding:"6px 8px",borderRadius:6,border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:"var(--color-text-primary)",fontFamily:e.kind==="secret"?X:"inherit"}}),e.kind==="secret"&&Rt.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},t?"The assistant never sees this value: it is stored as one of the project's secrets.":"The agent never sees this value."),Rt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(se,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),Rt.default.createElement(se,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(se,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),Rt.default.createElement(se,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&Rt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&Rt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var Ct=V(Y());async function O2(e){return e.json().catch(()=>({}))}function B3({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,Ct.useState)(null),[i,s]=(0,Ct.useState)(null),[l,u]=(0,Ct.useState)(null),[c,d]=(0,Ct.useState)(0),[f,p]=(0,Ct.useState)(!1),m=(0,Ct.useCallback)(async()=>{let h=await fetch(n),g=await O2(h);if(!h.ok)throw new Error(Je(g,`Could not read the install pull request (HTTP ${h.status}).`));return g},[n]);(0,Ct.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let x=await m();if(h)return;a(x),s(null),x.project&&t?.(x.project);let S=pZ(x.pull_request);S&&(g=setTimeout(v,S))}catch(x){h||s(x.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[m,c]);let y=async h=>{p(!0),s(null);try{let g=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await O2(g);if(!g.ok)throw new Error(Je(v,`Could not open the pull request (HTTP ${g.status}).`));d(x=>x+1)}catch(g){s(g.message)}finally{p(!1)}},b=o?.pull_request||null;return e.install_state==="installed"&&!b?null:Ct.default.createElement(Ct.default.Fragment,null,Ct.default.createElement(fSe,{project:e,pullRequest:b,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:f,onOpenDialog:u,onOpenBranch:y}),l&&Ct.default.createElement(pSe,{project:e,base:n,pullRequest:b,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function fSe({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=fZ(t),{canOpen:c,canUpdate:d,openBranch:f}=mZ(t);return Ct.default.createElement(He,{testId:"project-install-pull-request"},Ct.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ct.default.createElement(Ve,null,"Install pull request"),Ct.default.createElement(Ee,{tone:u},l),t?.url&&Ct.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),Ct.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&Ct.default.createElement(se,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&Ct.default.createElement(se,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),f&&Ct.default.createElement(se,{size:"sm",onClick:()=>s(f==="regular"),disabled:a,testId:"open-install-branch"},a?"Opening\u2026":f==="regular"?"Open as a regular pull request":"Open the draft PR again"))),Ct.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.install_state==="installed"?"The pull request merged: the repository bundles the engine, and boots its own branch.":"Publishes what the sandbox installed as a draft pull request, from this dashboard, after you check the exact diff. Once it exists, every boot checks its branch out."),t?.branch&&Ct.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&Ct.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&Ct.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&Ct.default.createElement("details",{style:{marginTop:6}},Ct.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),Ct.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:X,fontSize:12,color:"var(--color-text-secondary)"}},n.map(p=>Ct.default.createElement("li",{key:p},p)))),o&&Ct.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function pSe({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,Ct.useState)(null),[c,d]=(0,Ct.useState)(null),[f,p]=(0,Ct.useState)(!0),[m,y]=(0,Ct.useState)(null),[b,h]=(0,Ct.useState)(new Set),[g,v]=(0,Ct.useState)(s?r?.title||"":"Install ActiveAgent"),[x,S]=(0,Ct.useState)(""),[w,A]=(0,Ct.useState)(s&&r?.branch||""),[k,_]=(0,Ct.useState)(U_),[C,E]=(0,Ct.useState)(!1),[j,F]=(0,Ct.useState)(0);(0,Ct.useEffect)(()=>{let z=!1,N=null;p(!0);let O=async($=!1)=>{try{let T=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($?{confirm:!0}:{})}),I=await O2(T);if(z)return;if(T.status===409&&I.code==="confirmation_required"){o?.(I.confirmation,()=>O(!0));return}if(T.status===202){y(I.error),N=setTimeout(()=>O(),3e3);return}if(!T.ok)throw new Error(Je(I,`Could not read the sandbox's changes (HTTP ${T.status}).`));y(null),u(I.preview),d(I.publishing),h(H_(I.preview.files)),A(P=>P||I.preview.suggested_branch||""),p(!1)}catch(T){z||(y(T.message),p(!1))}};return O(),()=>{z=!0,clearTimeout(N)}},[t,j]);let D=async()=>{E(!0),y(null);try{let z=q_({files:l?.files,selection:b,title:g,body:x,branch:w,message:k,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(z)}),O=await O2(N);if(!N.ok)throw W_(O.code)&&F($=>$+1),new Error(Je(O,`Could not publish (HTTP ${N.status}).`));i(O.pull_request)}catch(z){y(z.message)}finally{E(!1)}};return Ct.default.createElement(eM,{sandbox:{repository:e.repository,repository_ref:e.sandbox?.repository_ref||e.checkout_ref||"its default branch"},preview:l,loading:f,error:m,publishing:c,pullRequest:r,selection:b,onToggle:z=>h(N=>K_(N,z)),fields:{title:g,body:x,branch:w,message:k,allowlist:""},onField:(z,N)=>({title:v,body:S,branch:A,message:_})[z]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:C,onSubmit:D,onCancel:a,patchHref:(z,N)=>gZ(e.id,z,N)})}var sn=V(Y());var mSe={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},gSe={progress:"info",success:"success",error:"error",neutral:"muted"};function F3({project:e,busy:t,onAsk:r,onFixWithClaudeCode:n,onToggleAuto:o}){let a=e?.setup;if(!a)return null;let i=a.last_run,s=a.claude_code,l=s?.last_session;return sn.default.createElement(He,{testId:"project-setup"},sn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},sn.default.createElement(Ve,null,"Setup"),sn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},sn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},sn.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&sn.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},sn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},sn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&sn.default.createElement(Ee,{tone:"muted"},"not used"),l&&sn.default.createElement(Ee,{tone:gSe[cf(l.status).tone]||"muted"},cf(l.status).label),S3(e)&&n&&sn.default.createElement(se,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),sn.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},sZ(e)),l?.sandbox_session_id&&sn.default.createElement(g0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),sn.default.createElement("div",{style:{marginTop:12}},sn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},sn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&sn.default.createElement(Ee,{tone:"muted"},"unavailable"),i&&sn.default.createElement(Ee,{tone:mSe[i.status]||"muted"},i.status.replace("_"," ")),sn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&sn.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/agents/${a.agent_id}/interactions`)},"Open its runs"),lZ(e)&&sn.default.createElement(se,{size:"sm",variant:S3(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),sn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},oZ(a),!a.available&&" Set the variables the boot needs in the Environment tab.",a.available&&s?.available&&" Claude Code goes first when a boot fails; the setup assistant is the fallback."),sn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--color-text-muted)"}},"It reads the failed step's log, sets variables that are not secret, asks you for secrets, and retries the boot. It runs no commands and reads no files.")))}var BZ="/settings?tab=integrations",hSe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},ySe={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function hs(e){return e.json().catch(()=>({}))}function U3({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,We.useState)(null),[a,i]=(0,We.useState)(null),[s,l]=(0,We.useState)([]),[u,c]=(0,We.useState)(()=>kX(window.location.search)),[d,f]=(0,We.useState)(!1),[p,m]=(0,We.useState)(null),[y,b]=(0,We.useState)(null),[h,g]=(0,We.useState)(null),[v,x]=(0,We.useState)(!1),[S,w]=(0,We.useState)(null),[A,k]=(0,We.useState)(null),[_,C]=(0,We.useState)(null),E=(0,We.useCallback)(async()=>{let M=await fetch(`/api/projects/${e}/boot`),ne=await hs(M);if(!M.ok)throw new Error(Je(ne,`Could not load the project (HTTP ${M.status}).`));o(ne.project),i(ne)},[e]),j=(0,We.useCallback)(async()=>{let M=await fetch(`/api/projects/${e}/secrets`),ne=await hs(M);if(!M.ok)throw new Error(Je(ne,`Could not list the project's secrets (HTTP ${M.status}).`));l(ne.secrets||[])},[e]);(0,We.useEffect)(()=>{E().catch(M=>m(M.message)),j().catch(M=>b(M.message))},[E,j]);let F=M=>{c(M),M!=="browser"&&f(!1);let{pathname:ne,search:U}=window.location;window.history.replaceState(window.history.state,"",`${ne}${_X(U,M)}`)},D=n?.sandbox_state==="failed",[z,N]=(0,We.useState)(null);(0,We.useEffect)(()=>{N(D?Date.now():null)},[D,n?.sandbox?.session_id]);let O=wX(n),$=O||aZ(n)||iZ(n,z);(0,We.useEffect)(()=>{if(!$)return;let M=setTimeout(()=>E().catch(ne=>m(ne.message)),pX);return()=>clearTimeout(M)},[$,a,E]);let T=n?.sandbox?.session_id;Og("SandboxChannel",{session_id:T},M=>{Pg(M)&&E().catch(()=>{})},!!T);let I=async(M,{confirm:ne=!1,onDone:U}={})=>{x(!0),m(null);try{let oe=await fetch(M,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ne?{confirm:!0}:{})}),ve=await hs(oe);if(oe.status===409&&ve.code==="confirmation_required")return g({question:ve.confirmation,retry:()=>I(M,{confirm:!0,onDone:U})}),null;if(!oe.ok)throw new Error(Je(ve,`The request failed (HTTP ${oe.status}).`));return g(null),ve.project&&o(ve.project),await E(),U?.(ve),ve}catch(oe){return m(oe.message),null}finally{x(!1)}},P=()=>I(`/api/projects/${e}/run_evaluation`,{onDone:M=>{M.run&&w(M.run)}}),H=(M,ne)=>g({question:M,retry:ne}),Q=async(M,ne,U="setup")=>{x(!0),m(null);try{let oe=await fetch(`/api/projects/${e}/${U}`,{method:M,headers:{"Content-Type":"application/json"},body:JSON.stringify(ne||{})}),ve=await hs(oe);if(!oe.ok)throw new Error(Je(ve,`The setup request failed (HTTP ${oe.status}).`));ve.project&&o(ve.project),await E()}catch(oe){m(oe.message)}finally{x(!1)}},K=async()=>{m(null);let M=await fetch(`/api/projects/${e}/synced_agents`),ne=await hs(M);if(!M.ok){m(Je(ne,`Could not list the checkout's agents (HTTP ${M.status}).`));return}k(ne.synced_agents||[])},ue=async M=>{x(!0);try{let ne=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)}),U=await hs(ne);if(!ne.ok)throw new Error(Je(U,`Could not choose the agent (HTTP ${ne.status}).`));o(U.project),k(null)}catch(ne){m(ne.message)}finally{x(!1)}},pe=async M=>{b(null);let ne=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:M})}),U=await hs(ne);return ne.ok?(l(U.secrets||[]),!0):(b(Je(U,`Could not save the secrets (HTTP ${ne.status}).`)),!1)},re=async(M,ne)=>{b(null);let U=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(M)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:ne})}),oe=await hs(U);if(!U.ok){let ve=Je(oe,`Could not replace ${M} (HTTP ${U.status}).`);throw b(ve),new Error(ve)}await j()},_e=async M=>{b(null);let ne=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(M)}`,{method:"DELETE"});if(!ne.ok){b(Je(await hs(ne),`Could not delete ${M} (HTTP ${ne.status}).`));return}await j()},de=async()=>{b(null);let M=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,ne=await fetch(`/api/projects/discover_secrets?${M}`),U=await hs(ne);if(!ne.ok){b(Je(U,`Could not read the repository's environment variables (HTTP ${ne.status}).`));return}C(j0(U.variables||[],s))},le=async()=>{if(!await Br({title:`Delete ${n.name}?`,message:"Its secrets, agent and evaluation are deleted, and its sandbox is stopped. This cannot be undone.",confirmLabel:"Delete project",danger:!0,requireText:n.name}))return;let M=await fetch(`/api/projects/${e}`,{method:"DELETE"});M.ok?r():m(Je(await hs(M),`Could not delete the project (HTTP ${M.status}).`))};if(!n)return p?We.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},p):We.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let Z=a?.browser_modes||[],ee=CX(n,Z),L=M=>{M&&f(!0),F("browser")},B=n.target_agent,q=!B&&n.install_state==="installed";return We.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},We.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},We.default.createElement("div",{style:{flex:1,minWidth:260}},We.default.createElement(se,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),We.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),We.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},We.default.createElement("span",{style:{fontFamily:X,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),We.default.createElement(Ee,{tone:hSe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),We.default.createElement(Ee,{tone:b2[n.install_state==="installed"?"supported":"bootstrap"]},ySe[n.install_state]),We.default.createElement(Wi,{href:ct(BZ),onClick:()=>kt(BZ),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),We.default.createElement("div",{style:{display:"flex",gap:8}},We.default.createElement(se,{onClick:()=>I(`/api/projects/${e}/boot`),disabled:v||O,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":O?"Booting\u2026":"Boot sandbox"),ee&&We.default.createElement(se,{onClick:()=>L(ee.watch),testId:"project-watch-live"},ee.label),We.default.createElement(se,{variant:"primary",onClick:()=>P(),disabled:v||!B,testId:"run-project-evaluation",title:B?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&We.default.createElement(He,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},We.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),We.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},We.default.createElement(se,{variant:"primary",onClick:()=>{let{retry:M}=h;g(null),M?.()},disabled:v},"Run it on this machine"),We.default.createElement(se,{onClick:()=>g(null)},"Cancel"))),p&&We.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},p),We.default.createElement(Ui,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${j3(s).length})`},...Z.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[]],value:u,onChange:F}),u==="overview"&&We.default.createElement(We.default.Fragment,null,We.default.createElement(C3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),We.default.createElement(z3,{projectId:e,setupAgentId:n.setup?.agent_id,version:`${n.pending_input_requests}:${n.setup?.last_run?.id}:${n.setup?.last_run?.status}`,onSettled:()=>E().catch(()=>{})}),We.default.createElement(F3,{project:n,busy:v,onAsk:()=>Q("POST"),onFixWithClaudeCode:()=>Q("POST",null,"setup/claude_code"),onToggleAuto:M=>Q("PATCH",{auto:M})}),We.default.createElement(He,null,We.default.createElement(Ve,null,"Agent under evaluation"),B&&We.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},We.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},B.name),We.default.createElement(Ee,{tone:"accent"},B.kind==="app_assistant"?"App assistant":`synced agent ${B.synced_agent}`),We.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/agents/${B.id}/edit`)},"Open agent"),n.evaluation&&We.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&We.default.createElement(se,{size:"sm",onClick:K},"Change")),q&&!A&&We.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},"This repository has its own agents. Boot the sandbox, then pick the one to evaluate.",We.default.createElement("div",{style:{marginTop:8}},We.default.createElement(se,{size:"sm",onClick:K,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),A&&We.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},A.length===0&&We.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),A.map(M=>We.default.createElement("li",{key:M.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},We.default.createElement("span",{style:{fontFamily:X,fontSize:13}},M.tool),We.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},M.description),We.default.createElement(se,{size:"sm",onClick:()=>ue({synced_agent:M.slug}),disabled:v},"Evaluate this agent")))),S&&We.default.createElement("div",{"data-testid":"project-run",style:{marginTop:10,fontSize:13,color:"var(--color-text-secondary)"}},"Run ",S.id," is ",S.status,O?": it starts once the sandbox is ready":"","."," ",We.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${S.evaluation_id}/runs/${S.id}`)},"Open run"))),B?.kind==="app_assistant"&&We.default.createElement(_3,{project:n,onSaved:M=>{M&&o(M),E().catch(()=>{})},onConfirmationRequired:H}),We.default.createElement(B3,{project:n,onProjectChanged:M=>o(ne=>ne&&M.install_state!==ne.install_state?M:ne),onConfirmationRequired:H}),We.default.createElement("div",null,We.default.createElement(se,{variant:"danger",size:"sm",onClick:le},"Delete project"))),u==="explorations"&&We.default.createElement(L3,{projectId:e,project:n}),u==="browser"&&We.default.createElement(A3,{project:n,modes:Z,watchOnOpen:d,onChange:()=>E().catch(()=>{})}),u==="environment"&&We.default.createElement(We.default.Fragment,null,We.default.createElement(E3,{secrets:j3(s),onReplace:re,onDelete:_e,error:y}),_?We.default.createElement(He,null,We.default.createElement(Ve,null,"Add secrets"),We.default.createElement("div",{style:{marginTop:8}},We.default.createElement(B0,{rows:_,onChange:C,repository:n.repository})),We.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},We.default.createElement(se,{variant:"primary",disabled:!!jg(_)||$0(_).length===0,onClick:async()=>{await pe($0(_))&&C(null)}},"Save secrets"),We.default.createElement(se,{onClick:()=>C(null)},"Cancel"),jg(_)&&We.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},jg(_)))):We.default.createElement("div",null,We.default.createElement(se,{size:"sm",onClick:de},"Add secrets"))))}var Vo=V(Y());var vSe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function W3({projects:e,onOpen:t,onNew:r}){return Vo.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},Vo.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},Vo.default.createElement("div",{style:{flex:1}},Vo.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),Vo.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"A repository booted in a sandbox, with the secrets it needs and an agent evaluated against the running app.")),Vo.default.createElement(se,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&Vo.default.createElement(He,null,Vo.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No projects yet. Pick a repository to boot it in a sandbox, even one that does not use ActiveAgent.")),e.map(n=>Vo.default.createElement(He,{key:n.id,padding:14,testId:`project-${n.id}`},Vo.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},Vo.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),Vo.default.createElement("span",{style:{fontFamily:X,fontSize:12,color:"var(--color-text-muted)"}},n.repository),Vo.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},Vo.default.createElement(Ee,{tone:vSe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&Vo.default.createElement(Ee,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function H3({visit:e=0}){let[t,r]=(0,Go.useState)(()=>L0(Xn())),[n,o]=(0,Go.useState)(null),[a,i]=(0,Go.useState)(null);(0,Go.useEffect)(()=>{r(L0(Xn()))},[e]),(0,Go.useEffect)(()=>{let u=()=>r(L0(Xn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,Go.useCallback)(async()=>{try{let u=await fetch("/api/projects"),c=await u.json().catch(()=>({}));if(!u.ok)throw new Error(Je(c,`Could not list projects (HTTP ${u.status}).`));o(c.projects||[])}catch(u){i(u.message)}},[]);(0,Go.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{og(u),r(L0(u))};return t.creating?Go.default.createElement(x3,{onCreated:u=>l(gf(u.id)),onCancel:()=>l("/projects")}):t.projectId?Go.default.createElement(U3,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?Go.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?Go.default.createElement(W3,{projects:n,onOpen:u=>l(gf(u.id)),onNew:()=>l(gf(null))}):Go.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Mr=V(Y());function K3({visit:e=0}){let[t,r]=(0,Mr.useState)(()=>T2(Xn())),[n,o]=(0,Mr.useState)(null),[a,i]=(0,Mr.useState)(null),[s,l]=(0,Mr.useState)(null);(0,Mr.useEffect)(()=>{r(T2(Xn()))},[e]),(0,Mr.useEffect)(()=>{let c=()=>r(T2(Xn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Mr.useCallback)(async()=>{try{let c=await fetch("/api/explorations"),d=await c.json().catch(()=>({}));if(!c.ok)throw new Error(Je(d,`Could not list explorations (HTTP ${c.status}).`));o(d.explorations||[])}catch(c){l(c.message)}},[]);if((0,Mr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Mr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Mr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Mr.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(gf(c.id)),style:{padding:0}},"\u2190 ",c.name):Mr.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Mr.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${d.id}`)},"Open ",d.name)),Mr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Mr.default.createElement(bf,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Mr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Mr.default.createElement("div",null,Mr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Mr.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Questions found by walking an app, waiting to be reviewed and accepted into an evaluation.")),s&&Mr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Mr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Mr.default.createElement(He,null,Mr.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No explorations yet. An agent that explores a project's app submits what it found with the explorations_submit MCP tool.")),n?.length>0&&Mr.default.createElement(vf,{explorations:n,onOpen:c=>kt(N2(c.id))}))}var it=V(Y());var ce=V(Y());var Ma=V(Y());var q3=e=>({padding:"6px 8px",borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)",fontSize:13,fontFamily:e?X:void 0}),FZ={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},UZ=e=>typeof e=="string"?e:void 0;function ln({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){let l=(0,Ma.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":UZ(e),"data-testid":s};return Ma.default.createElement("div",{style:FZ},Ma.default.createElement("label",{htmlFor:l},e),a?Ma.default.createElement("textarea",{...u,rows:i,style:{...q3(o),resize:"vertical"}}):Ma.default.createElement("input",{...u,style:q3(o)}))}function Tc({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,Ma.useId)();return Ma.default.createElement("div",{style:FZ},Ma.default.createElement("label",{htmlFor:a},e),Ma.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":UZ(e),style:q3(!1),"data-testid":o},n))}function U0({label:e,checked:t,onChange:r}){return Ma.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},Ma.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function Yo({tone:e="info",children:t}){let r=e==="error";return Ma.default.createElement("div",{role:r?"alert":"status",style:{fontSize:13,padding:"8px 10px",borderRadius:8,background:r?"var(--color-error-soft)":"transparent",color:r?"var(--color-error-text)":"var(--color-text-secondary)",border:r?"none":"1px solid var(--color-border)"}},t)}async function Mn(e,{method:t="GET",body:r,fallback:n="The request failed"}={}){let o={method:t};r!==void 0&&(o.headers={"Content-Type":"application/json"},o.body=JSON.stringify(r));let a=await fetch(e,o),i=await a.json().catch(()=>({}));if(!a.ok)throw new Error(Je(i,`${n} (HTTP ${a.status}).`));return i}async function WZ(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var xSe=["collections","generate","import"],bSe=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function V3(e=""){let r=String(e).match(bSe)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function HZ({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!xSe.includes(e)?"/scenarios":`/scenarios/${e}`}function G3(e,{productIds:t=[],setIds:r=[],scenarioIds:n=[]}={},{inline:o=!1}={}){let a=new URLSearchParams;t.length&&a.set("product_ids",t.join(",")),r.length&&a.set("set_ids",r.join(",")),n.length&&a.set("scenario_ids",n.join(",")),o&&a.set("disposition","inline");let i=a.toString();return`/api/scenario_catalogs/${e}/export${i?`?${i}`:""}`}function P2(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function KZ(e={}){let t=e.expectations||{};return{key:e.key||"",prompt:e.prompt||"",notes:e.notes||"",tools:(t.tools||[]).join(", "),contains:(t.contains||[]).join(", "),notContains:(t.not_contains||[]).join(", "),tags:(e.tags||[]).join(", "),productionOnly:!!e.production_only,enabled:e.enabled!==!1}}function qZ(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:P2(e.tools),contains:P2(e.contains),not_contains:P2(e.notContains)},tags:P2(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function VZ(e){return e.prompt.trim()?e.key.trim()&&!/^[^\s]+$/.test(e.key.trim())?"A key has no spaces.":null:"A scenario needs a prompt."}function GZ(e={}){let t=[];return e.tools?.length&&t.push(`tools ${e.tools.join(", ")}`),e.contains?.length&&t.push(`contains ${e.contains.join(", ")}`),e.not_contains?.length&&t.push(`never ${e.not_contains.join(", ")}`),t.join(" \xB7 ")}var wSe=["create","update","remove","keep"],SSe={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function YZ(e){let t=e?.changes||[];return wSe.map(r=>({action:r,label:SSe[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function XZ(e){if(!e)return"";let t=e.counts||{},r=e.catalog?.action==="create"?"Creates":"Updates",n=[`${t.create||0} new`,`${t.update||0} overwritten`,e.mode==="merge"?`${t.keep||0} kept`:`${t.remove||0} removed`];return`${r} ${e.catalog?.key}: ${n.join(", ")} (${e.scenario_count} scenarios in the document).`}function ZZ(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function JZ(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function Y3({collectionId:e,agents:t,projects:r,storageAvailable:n,onBack:o,onChanged:a,onDeleted:i}){let[s,l]=(0,ce.useState)(null),[u,c]=(0,ce.useState)(null),[d,f]=(0,ce.useState)(null),[p,m]=(0,ce.useState)({productIds:[],setIds:[],scenarioIds:[]}),[y,b]=(0,ce.useState)(!1),[h,g]=(0,ce.useState)(!1),v=`/api/scenario_catalogs/${e}`,x=(0,ce.useCallback)(async()=>{try{let E=await Mn(v,{fallback:"Could not open the collection"});l(E.catalog),c(null)}catch(E){c(E.message)}},[v]);(0,ce.useEffect)(()=>{x()},[x]);let S=async(E,j,F,D)=>{let z=await Mn(`${v}${E}`,{method:j,body:F,fallback:D});return z.catalog?l(z.catalog):await x(),a?.(),z},w=async E=>{c(null),f(null);try{await E()}catch(j){c(j.message)}},A=p.productIds.length+p.setIds.length+p.scenarioIds.length,k=(E,j)=>m(F=>({...F,[E]:JZ(F[E],j)})),_=E=>w(async()=>{let j=await WZ(G3(e,E,{inline:!0})),F=await M_(j);f(F?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=E=>window.open(G3(e,E),"_blank");return s?ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenario-collection"},ce.default.createElement("div",null,ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),y?ce.default.createElement(kSe,{collection:s,onCancel:()=>b(!1),onSave:async E=>{await S("","PATCH",{catalog:E},"Could not save the collection"),b(!1)}}):ce.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},ce.default.createElement("div",null,ce.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},s.name),ce.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},ce.default.createElement("code",null,s.key),s.source_path?` \xB7 ${s.source_path}`:"",s.description?` \xB7 ${s.description}`:""),ce.default.createElement("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},s.scenario_count," scenarios \xB7 digest ",s.digest?s.digest.slice(0,12):"\u2014"," \xB7"," ",s.synced?"synced to storage":n?"not synced to storage":"Active Storage is off for this dashboard")),ce.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>b(!0)},"Rename"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>_({})},"Copy YAML"),n&&ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>w(async()=>{await S("/sync","POST",{direction:"push"},"Sync failed"),f("Written to storage.")})},"Write to storage"),ce.default.createElement(se,{size:"sm",variant:"danger",onClick:()=>w(async()=>{await Br({title:`Delete the collection ${s.key}?`,message:"Its products, sets and scenarios are deleted. The evaluations its sets became stay, with their runs.",confirmLabel:"Delete collection",danger:!0,requireText:s.key})&&(await Mn(v,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&ce.default.createElement(Yo,{tone:"error"},u),d&&ce.default.createElement(Yo,null,d),A>0&&ce.default.createElement(He,{padding:12,testId:"scenarios-selection-bar",style:{position:"sticky",top:8,zIndex:1}},ce.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ce.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},A," selected"),ce.default.createElement(se,{size:"sm",onClick:()=>C(p),testId:"scenarios-export-selection"},"Download YAML"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>_(p)},"Copy YAML"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>m({productIds:[],setIds:[],scenarioIds:[]})},"Clear"),ce.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Import it back with \u201CKeep what the document leaves out\u201D to update only these."))),(s.products||[]).length===0&&!h&&ce.default.createElement(He,{testId:"scenarios-collection-empty"},ce.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No products yet. A product is what its sets run against: an agent, or a project whose booted app the replays reach.")),(s.products||[]).map(E=>ce.default.createElement(_Se,{key:E.id,product:E,collection:s,agents:t,projects:r,selection:p,onToggle:k,change:S,act:w,setNotice:f})),h?ce.default.createElement(RZ,{agents:t,projects:r,onCancel:()=>g(!1),onSave:async E=>{await S("/products","POST",{product:E},"Could not add the product"),g(!1)}}):ce.default.createElement("div",null,ce.default.createElement(se,{size:"sm",onClick:()=>g(!0),testId:"scenarios-add-product"},"Add product"))):u?ce.default.createElement(Yo,{tone:"error"},u):ce.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function kSe({collection:e,onSave:t,onCancel:r}){let[n,o]=(0,ce.useState)(e.name||""),[a,i]=(0,ce.useState)(e.description||"");return ce.default.createElement(M2,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},ce.default.createElement(ln,{label:"Name",value:n,onChange:o}),ce.default.createElement(ln,{label:"Description",value:a,onChange:i}))}function _Se({product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l}){let[u,c]=(0,ce.useState)(!1),[d,f]=(0,ce.useState)(!1),p=`/products/${e.id}`;return ce.default.createElement(He,{testId:"scenarios-product"},u?ce.default.createElement(RZ,{product:e,agents:r,projects:n,onCancel:()=>c(!1),onSave:async m=>{await i(p,"PATCH",{product:m},"Could not save the product"),c(!1)}}):ce.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},ce.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start"}},ce.default.createElement("input",{type:"checkbox","aria-label":`Select product ${e.key}`,checked:o.productIds.includes(e.id),onChange:()=>a("productIds",e.id),style:{marginTop:4}}),ce.default.createElement("div",null,ce.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ce.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},ce.default.createElement("code",null,e.key),e.agent?` \xB7 agent ${e.agent.name}`:e.agent_name?` \xB7 agent ${e.agent_name} (not on this dashboard)`:" \xB7 no agent chosen",e.project?` \xB7 project ${e.project.name}`:""),e.description&&ce.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.description))),ce.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ce.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},e.set_count," sets \xB7 ",e.scenario_count," scenarios"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),ce.default.createElement(se,{size:"sm",variant:"danger",onClick:()=>s(async()=>{await Br({title:`Delete product ${e.key}?`,message:`Its ${e.set_count} sets and their scenarios are deleted.`,confirmLabel:"Delete product",danger:!0})&&await i(p,"DELETE",void 0,"Could not delete the product")})},"Delete"))),ce.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>ce.default.createElement(CSe,{key:m.id,set:m,product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l})),d?ce.default.createElement(eJ,{onCancel:()=>f(!1),onSave:async m=>{await i(`${p}/sets`,"POST",{set:m},"Could not add the set"),f(!1)}}):ce.default.createElement("div",null,ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Add set"))))}function CSe({set:e,product:t,collection:r,agents:n,projects:o,selection:a,onToggle:i,change:s,act:l,setNotice:u}){let[c,d]=(0,ce.useState)((e.scenarios||[]).length<=5),[f,p]=(0,ce.useState)(!1),[m,y]=(0,ce.useState)(null),b=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,g]=(0,ce.useState)(b),v=`/sets/${e.id}`,x=()=>l(async()=>{let[S,w]=h.split(":"),A=S==="project"?{project_id:Number(w)}:S==="agent"?{agent_id:Number(w)}:{},k=await Mn(`/api/scenario_catalogs/${r.id}${v}/run`,{method:"POST",body:A,fallback:"The run could not start"});u(`Run #${k.run.id} of ${e.name} started; it shows under Evaluations as ${k.evaluation.name}.`)});return ce.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},f?ce.default.createElement(eJ,{set:e,onCancel:()=>p(!1),onSave:async S=>{await s(v,"PATCH",{set:S},"Could not save the set"),p(!1)}}):ce.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},ce.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ce.default.createElement("input",{type:"checkbox","aria-label":`Select set ${e.key}`,checked:a.setIds.includes(e.id),onChange:()=>i("setIds",e.id)}),ce.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ce.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},e.key),ce.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"\xB7 ",e.scenario_count," scenarios"),e.judge?.kind&&ce.default.createElement(Ee,null,`judge ${e.judge.kind}`),e.evaluation&&ce.default.createElement("a",{href:"#",style:{fontSize:12},onClick:S=>{S.preventDefault(),kt(`/evaluations/${e.evaluation.id}`)}},"evaluation",e.latest_run?` (latest run ${e.latest_run.status})`:"")),ce.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ce.default.createElement("select",{value:h,onChange:S=>g(S.target.value),style:{fontSize:12,padding:4,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}},ce.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&ce.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(S=>ce.default.createElement("option",{key:`project-${S.id}`,value:`project:${S.id}`},S.name))),n.length>0&&ce.default.createElement("optgroup",{label:"Agents"},n.map(S=>ce.default.createElement("option",{key:`agent-${S.id}`,value:`agent:${S.id}`},S.name)))),ce.default.createElement(se,{size:"sm",onClick:x,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>d(S=>!S)},c?"Hide":"Scenarios"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Edit"),ce.default.createElement(se,{size:"sm",variant:"danger",onClick:()=>l(async()=>{await Br({title:`Delete set ${e.key}?`,message:`Its ${e.scenario_count} scenarios are deleted. Its evaluation stays.`,confirmLabel:"Delete set",danger:!0})&&await s(v,"DELETE",void 0,"Could not delete the set")})},"Delete"))),c&&ce.default.createElement("ul",{style:{listStyle:"none",margin:"10px 0 0",padding:0,display:"grid",gap:6}},(e.scenarios||[]).map(S=>m===S.id?ce.default.createElement("li",{key:S.id},ce.default.createElement(QZ,{scenario:S,onCancel:()=>y(null),onSave:async w=>{await s(`${v}/scenarios/${S.id}`,"PATCH",w,"Could not save the scenario"),y(null)}})):ce.default.createElement(ASe,{key:S.id,scenario:S,selected:a.scenarioIds.includes(S.id),onToggle:()=>i("scenarioIds",S.id),onEdit:()=>y(S.id),onDelete:()=>l(async()=>{await Br({title:`Delete scenario ${S.key}?`,confirmLabel:"Delete scenario",danger:!0})&&await s(`${v}/scenarios/${S.id}`,"DELETE",void 0,"Could not delete the scenario")})})),ce.default.createElement("li",null,m==="new"?ce.default.createElement(QZ,{onCancel:()=>y(null),onSave:async S=>{await s(`${v}/scenarios`,"POST",S,"Could not add the scenario"),y(null)}}):ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:()=>{d(!0),y("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function ASe({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=GZ(e.expectations);return ce.default.createElement("li",{style:{display:"flex",gap:8,alignItems:"flex-start",padding:"6px 8px",borderRadius:6,background:"var(--color-surface)"},"data-testid":"scenarios-scenario"},ce.default.createElement("input",{type:"checkbox","aria-label":`Select scenario ${e.key}`,checked:t,onChange:r,style:{marginTop:3}}),ce.default.createElement("div",{style:{flex:1,minWidth:0}},ce.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)",opacity:e.enabled?1:.6}},ce.default.createElement("code",{style:{fontSize:11,color:"var(--color-text-secondary)"}},e.key)," ",e.prompt),(e.notes||a)&&ce.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginTop:2}},e.notes,e.notes&&a?" \xB7 ":"",a&&ce.default.createElement("span",{style:{fontFamily:X}},a)),ce.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>ce.default.createElement(Ee,{key:i},i)),e.production_only&&ce.default.createElement(Ee,{tone:"warning"},"production only"),!e.enabled&&ce.default.createElement(Ee,null,"disabled"))),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:n},"Edit"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function M2({children:e,onSave:t,onCancel:r,problem:n=null,testId:o}){let[a,i]=(0,ce.useState)(!1),[s,l]=(0,ce.useState)(null);return ce.default.createElement("form",{onSubmit:async c=>{if(c.preventDefault(),n){l(n);return}i(!0),l(null);try{await t()}catch(d){l(d.message)}finally{i(!1)}},style:{display:"flex",flexDirection:"column",gap:8,padding:10,border:"1px dashed var(--color-border)",borderRadius:8},"data-testid":o},e,s&&ce.default.createElement(Yo,{tone:"error"},s),ce.default.createElement("div",{style:{display:"flex",gap:8}},ce.default.createElement(se,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),ce.default.createElement(se,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function RZ({product:e=null,agents:t,projects:r,onSave:n,onCancel:o}){let[a,i]=(0,ce.useState)(e?.name||""),[s,l]=(0,ce.useState)(e?.key||""),[u,c]=(0,ce.useState)(e?.description||""),[d,f]=(0,ce.useState)(e?.agent?String(e.agent.id):""),[p,m]=(0,ce.useState)(e?.project?String(e.project.id):"");return ce.default.createElement(M2,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:p}),testId:"scenarios-product-form"},ce.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ce.default.createElement(ln,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),ce.default.createElement(ln,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),ce.default.createElement(Tc,{label:"Agent",value:d,onChange:f},ce.default.createElement("option",{value:""},"None"),t.map(y=>ce.default.createElement("option",{key:y.id,value:y.id},y.name))),ce.default.createElement(Tc,{label:"Project",value:p,onChange:m},ce.default.createElement("option",{value:""},"None"),r.map(y=>ce.default.createElement("option",{key:y.id,value:y.id},y.name)))),ce.default.createElement(ln,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function eJ({set:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ce.useState)(e?.name||""),[a,i]=(0,ce.useState)(e?.key||""),[s,l]=(0,ce.useState)(e?.description||""),[u,c]=(0,ce.useState)(e?.judge?.kind||"");return ce.default.createElement(M2,{onCancel:r,onSave:()=>t({name:n.trim(),key:a.trim(),description:s.trim(),...u?{judge:{kind:u}}:{}}),testId:"scenarios-set-form"},ce.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ce.default.createElement(ln,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),ce.default.createElement(ln,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),ce.default.createElement(Tc,{label:"Judge",value:u,onChange:c},ce.default.createElement("option",{value:""},"The evaluation's default"),ce.default.createElement("option",{value:"rules"},"Rules (expectations only)"),ce.default.createElement("option",{value:"llm"},"LLM judge (grades against the notes)"))),ce.default.createElement(ln,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function QZ({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ce.useState)(()=>KZ(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return ce.default.createElement(M2,{onCancel:r,onSave:()=>t(qZ(n)),problem:VZ(n),testId:"scenarios-scenario-form"},ce.default.createElement(ln,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),ce.default.createElement(ln,{label:"Notes: the rubric, what a good answer does",value:n.notes,onChange:a("notes"),multiline:!0,rows:2}),ce.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ce.default.createElement(ln,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),ce.default.createElement(ln,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),ce.default.createElement(ln,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),ce.default.createElement(ln,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),ce.default.createElement(ln,{label:"Key",value:n.key,onChange:a("key"),placeholder:"made from the prompt when empty",mono:!0})),ce.default.createElement("div",{style:{display:"flex",gap:16}},ce.default.createElement(U0,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),ce.default.createElement(U0,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var mt=V(Y());function X3({projects:e,collections:t,onAccepted:r}){let[n,o]=(0,mt.useState)(""),[a,i]=(0,mt.useState)(null),[s,l]=(0,mt.useState)(null),[u,c]=(0,mt.useState)({sandbox:null,modes:[]}),[d,f]=(0,mt.useState)([]),[p,m]=(0,mt.useState)(null),[y,b]=(0,mt.useState)({collectionId:"",setId:""}),[h,g]=(0,mt.useState)(null),[v,x]=(0,mt.useState)(null),S=(0,mt.useCallback)(async()=>{if(n)try{let[E,j,F,D]=await Promise.all([Mn(`/api/projects/${n}`,{fallback:"Could not load the project"}),Mn("/api/projects/capabilities").catch(()=>({})),Mn("/api/sandboxes").catch(()=>({})),Mn(`/api/explorations?project_id=${n}`,{fallback:"Could not list the project's explorations"})]),z=E.project;i(z),l((j.items||[]).find(O=>O.key==="model_credentials")||null);let N=z?.sandbox?.session_id;c({sandbox:(F.sandboxes||[]).find(O=>O.session_id===N)||null,modes:F.browser_modes||[]}),f(D.explorations||[]),x(null)}catch(E){x(E.message)}},[n]);(0,mt.useEffect)(()=>{i(null),m(null),S()},[S]),(0,mt.useEffect)(()=>{if(!y.collectionId){g(null);return}Mn(`/api/scenario_catalogs/${y.collectionId}`).then(E=>g(E.catalog)).catch(E=>x(E.message))},[y.collectionId]);let w=(h?.products||[]).flatMap(E=>(E.sets||[]).map(j=>({...j,product:E}))),A=w.find(E=>String(E.id)===String(y.setId)),k=async()=>{try{let j=(await Mn("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,F=await Mn(`/api/scenario_catalogs/${j}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),D=await Mn(`/api/scenario_catalogs/${j}/products/${F.product.id}/sets`,{method:"POST",body:{set:{name:"Explored",key:"explored",judge:{kind:"llm"}}},fallback:"Could not add the set"});r?.(),b({collectionId:String(j),setId:String(D.set.id)})}catch(E){x(E.message)}},_=a?.sandbox_state==="ready",C=p||d[0]?.id;return mt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-generator"},mt.default.createElement(He,null,mt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},mt.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"Pick a project. The explorer walks its running app in the sandbox's browser and proposes scenarios, which you edit and accept into a set below. Nothing is added until you accept it."),mt.default.createElement(Tc,{label:"Project",value:n,onChange:o,testId:"scenarios-generator-project"},mt.default.createElement("option",{value:""},"Choose a project\u2026"),e.map(E=>mt.default.createElement("option",{key:E.id,value:E.id},E.name))),e.length===0&&mt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"No projects yet. ",mt.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),kt("/projects/new")}},"Create one")," from a repository first."))),v&&mt.default.createElement(Yo,{tone:"error"},v),a&&mt.default.createElement(mt.default.Fragment,null,s&&!s.ok&&mt.default.createElement(Yo,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",mt.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),kt("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!_&&mt.default.createElement(Yo,null,a.name,"'s sandbox is ",a.sandbox_state||"not booted",". The explorer walks the app the sandbox serves:"," ",mt.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),kt(`/projects/${a.id}`)}},"boot it on the project's page"),"."),mt.default.createElement(F0,{projectId:a.id,sandboxReady:_,onStarted:E=>{m(E.id),S()}}),_&&u.sandbox&&u.modes.length>0&&mt.default.createElement(on,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},mt.default.createElement(hf,{sandbox:u.sandbox,modes:u.modes})),mt.default.createElement(on,{title:"Accept into",testId:"scenarios-generator-destination",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},mt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},mt.default.createElement(Tc,{label:"Collection",value:y.collectionId,onChange:E=>b({collectionId:E,setId:""})},mt.default.createElement("option",{value:""},"Choose a collection\u2026"),t.map(E=>mt.default.createElement("option",{key:E.id,value:E.id},E.name))),mt.default.createElement(Tc,{label:"Set",value:y.setId,onChange:E=>b(j=>({...j,setId:E}))},mt.default.createElement("option",{value:""},h&&w.length===0?"The collection has no sets yet":"Choose a set\u2026"),w.map(E=>mt.default.createElement("option",{key:E.id,value:E.id},E.product.name," / ",E.name)))),mt.default.createElement("div",null,mt.default.createElement(se,{size:"sm",variant:"ghost",onClick:k},"New collection for ",a.name))),d.length===0?mt.default.createElement(He,null,mt.default.createElement("p",{style:{margin:0,fontSize:13,color:"var(--color-text-secondary)"}},"No explorations of ",a.name," yet. Start the explorer above, or have a coding agent driving a browser submit what it found with the explorations_submit MCP tool.")):mt.default.createElement(mt.default.Fragment,null,mt.default.createElement(vf,{explorations:d,selectedId:C,onOpen:E=>m(E.id)}),!A&&mt.default.createElement(Yo,null,"Choose the set to accept into, above."),mt.default.createElement(bf,{key:`${C}-${A?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:A?{id:A.id,label:`${A.product.name} / ${A.name}`}:null,onAccepted:()=>r?.()}))))}var Pt=V(Y());var ESe=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],NSe=`catalog: support_desk products: - key: triage agent: TriageAgent @@ -100,7 +100,8 @@ products: scenarios: - key: refund prompt: A customer asks for a refund. - expect: { tools: [lookup_order] }`,style:{fontFamily:"var(--font-mono, monospace)",fontSize:12,padding:8,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}}):xe.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},xe.default.createElement(I3,{label:"Repository",value:i,onChange:s,placeholder:"owner/name"}),xe.default.createElement(I3,{label:"Ref",value:l,onChange:u,placeholder:"a branch, tag or commit; the default branch when empty"}),xe.default.createElement(I3,{label:"Path",value:c,onChange:d,placeholder:".activeagents/evals or one .yml file"})),xe.default.createElement("div",null,xe.default.createElement(de,{type:"submit",disabled:e||(r==="document"?!o.trim():!i.trim())},e?"Importing\u2026":"Import"))))}function I3({label:e,value:t,onChange:r,placeholder:n}){return xe.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,xe.default.createElement("input",{value:t,onChange:o=>r(o.target.value),placeholder:n,style:{padding:6,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)",fontSize:13}}))}function Kwe({catalog:e,agents:t,projects:r,storageAvailable:n,error:o,notice:a,onBack:i,onRun:s,onSync:l,onDelete:u,onReimport:c}){let[d,f]=(0,xe.useState)(!1),[p,m]=(0,xe.useState)(""),y=(0,xe.useMemo)(()=>`/api/scenario_catalogs/${e.id}/export`,[e.id]);return xe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},xe.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:i,style:{padding:0}},"\u2190 Catalogs")),xe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},xe.default.createElement("div",null,xe.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},e.name),xe.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},xe.default.createElement("code",null,e.key),e.source_path?` \xB7 ${e.source_path}`:"",e.description?` \xB7 ${e.description}`:""),xe.default.createElement("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},"digest ",e.digest?e.digest.slice(0,12):"\u2014"," \xB7"," ",e.synced?`synced to storage ${e.synced_at?new Date(e.synced_at).toLocaleString():""}`:n?"not synced to storage":"Active Storage is off for this dashboard")),xe.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>window.open(y,"_blank")},"Export YAML"),n&&xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>l(e,"push")},"Write to storage"),n&&e.synced_at&&xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>l(e,"pull")},"Restore from storage"),xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>f(x=>!x)},d?"Cancel":"Re-import YAML"),xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>u(e)},"Delete"))),o&&xe.default.createElement(b_,{tone:"error"},o),a&&xe.default.createElement(b_,null,a),d&&xe.default.createElement(Ve,null,xe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},xe.default.createElement("textarea",{value:p,onChange:x=>m(x.target.value),rows:14,placeholder:"Paste the catalog document; its products, sets and scenarios replace this catalog's.",style:{fontFamily:"var(--font-mono, monospace)",fontSize:12,padding:8,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}}),xe.default.createElement("div",null,xe.default.createElement(de,{size:"sm",disabled:!p.trim(),onClick:()=>{c(p),f(!1)}},"Import")))),(e.products||[]).map(x=>xe.default.createElement(Ve,{key:x.id},xe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xe.default.createElement("div",null,xe.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},x.name),xe.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},xe.default.createElement("code",null,x.key),x.agent?` \xB7 agent ${x.agent.name}`:x.agent_name?` \xB7 agent ${x.agent_name} (not on this dashboard)`:"",x.project?` \xB7 project ${x.project.name} (${x.project.repository}${x.project.ref?`@${x.project.ref}`:""})`:""),x.description&&xe.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},x.description)),xe.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},x.set_count," sets \xB7 ",x.scenario_count," scenarios")),xe.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(x.sets||[]).map(h=>xe.default.createElement(qwe,{key:h.id,catalog:e,product:x,set:h,agents:t,projects:r,onRun:s}))))))}function qwe({catalog:e,product:t,set:r,agents:n,projects:o,onRun:a}){let i=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[s,l]=(0,xe.useState)(i),[u,c]=(0,xe.useState)(!1),d=()=>{let[f,p]=s.split(":"),m=f==="project"?{project_id:Number(p)}:f==="agent"?{agent_id:Number(p)}:{};a(e,r,m)};return xe.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10}},xe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},xe.default.createElement("div",null,xe.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},r.name)," ",xe.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.key),xe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}}," \xB7 ",r.scenario_count," scenarios"),r.evaluation&&xe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}}," \xB7 ",xe.default.createElement("a",{href:"#",onClick:f=>{f.preventDefault(),It(`/evaluations/${r.evaluation.id}`)}},"evaluation ",r.evaluation.name),r.latest_run?` (latest run ${r.latest_run.status})`:"")),xe.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},xe.default.createElement("select",{value:s,onChange:f=>l(f.target.value),style:{fontSize:12,padding:4,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}},xe.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&xe.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(f=>xe.default.createElement("option",{key:`project-${f.id}`,value:`project:${f.id}`},f.name," (",f.repository,f.ref?`@${f.ref}`:"",")"))),n.length>0&&xe.default.createElement("optgroup",{label:"Agents"},n.map(f=>xe.default.createElement("option",{key:`agent-${f.id}`,value:`agent:${f.id}`},f.name)))),xe.default.createElement(de,{size:"sm",onClick:d,disabled:!s&&!t.agent&&!t.project},"Run set"),xe.default.createElement(de,{size:"sm",variant:"ghost",onClick:()=>c(f=>!f)},u?"Hide":"Scenarios"))),u&&xe.default.createElement("ol",{style:{margin:"10px 0 0",paddingLeft:20,display:"grid",gap:6}},(r.scenarios||[]).map(f=>xe.default.createElement("li",{key:f.id,style:{fontSize:13,color:"var(--color-text-primary)"}},xe.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f.key)," ",f.prompt,f.tags&&f.tags.length>0&&xe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}}," \xB7 ",f.tags.join(", ")),f.production_only&&xe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}}," \xB7 production only"),!f.enabled&&xe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}}," \xB7 disabled")))))}function b_({tone:e="info",children:t}){return xe.default.createElement("div",{role:e==="error"?"alert":"status",style:{fontSize:13,color:e==="error"?"var(--color-danger, #b91c1c)":"var(--color-text-secondary)",padding:"8px 10px",border:"1px solid var(--color-border)",borderRadius:8}},t)}var Hr=G(Y());var Vwe='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function Gwe({request:e,onSettle:t}){let[r,n]=(0,Hr.useState)(""),o=(0,Hr.useRef)(null),a=(0,Hr.useRef)(null),i=(0,Hr.useId)(),s=(0,Hr.useId)(),l=$G(e,r);(0,Hr.useEffect)(()=>{let f=document.activeElement;return e.requireText?a.current?.focus():o.current?.querySelector('[data-testid="confirm-cancel"]')?.focus(),()=>f?.focus?.()},[e]);let u=()=>{l&&t(!0)},c=f=>{if(f.key==="Escape"){f.preventDefault(),t(!1);return}if(f.key!=="Tab")return;let p=[...o.current?.querySelectorAll(Vwe)||[]];if(p.length===0)return;let m=p[0],y=p[p.length-1];f.shiftKey&&document.activeElement===m?(f.preventDefault(),y.focus()):!f.shiftKey&&document.activeElement===y&&(f.preventDefault(),m.focus())},d=e.danger?{background:"var(--color-error)",color:"#fff"}:void 0;return Hr.default.createElement("div",{"data-testid":"confirm-overlay",onMouseDown:f=>{f.target===f.currentTarget&&t(!1)},style:{position:"fixed",inset:0,zIndex:70,padding:16,background:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center"}},Hr.default.createElement("div",{ref:o,role:"alertdialog","aria-modal":"true","aria-labelledby":i,"aria-describedby":s,"data-testid":"confirm-dialog",onKeyDown:c,style:{width:"100%",maxWidth:440,padding:20,borderRadius:12,background:"var(--color-surface)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)",boxShadow:"0 20px 40px rgba(0, 0, 0, 0.25)"}},Hr.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),Hr.default.createElement("div",{id:s},e.message&&Hr.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&Hr.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",Hr.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",Hr.default.createElement("input",{ref:a,type:"text",value:r,autoComplete:"off",spellCheck:!1,"data-testid":"confirm-input","aria-label":`Type ${e.requireText} to confirm`,onChange:f=>n(f.target.value),onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),u())},style:{display:"block",width:"100%",marginTop:6,padding:"8px 10px",borderRadius:8,boxSizing:"border-box",fontFamily:"var(--font-mono)",fontSize:13,color:"var(--color-text-primary)",background:"var(--color-background-page)",border:"1px solid var(--color-border-strong)"}}))),Hr.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},Hr.default.createElement(de,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),Hr.default.createElement(de,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function AZ(){let[e,t]=(0,Hr.useState)(IG());return(0,Hr.useEffect)(()=>jG(t),[]),e?Hr.default.createElement(Gwe,{key:Xwe(e),request:e,onSettle:DG}):null}var $3=new WeakMap,Ywe=0;function Xwe(e){return $3.has(e)||$3.set(e,++Ywe),$3.get(e)}function Zwe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=st(),[i,s]=(0,ft.useState)(t),[l,u]=(0,ft.useState)("list"),[c,d]=(0,ft.useState)(null),[f,p]=(0,ft.useState)(!1),[m,y]=(0,ft.useState)(null),[x,h]=(0,ft.useState)(!1),[g,v]=(0,ft.useState)("recent"),[b,_]=(0,ft.useState)({messages:[]}),[w,C]=(0,ft.useState)(null),S=aq(r),[k,A]=(0,ft.useState)(null),{requests:O}=g2({refreshKey:l}),[$,F]=(0,ft.useState)(0),[P,z]=(0,ft.useState)(null);(0,ft.useEffect)(()=>{let se=()=>{let Z=iq(Eo(),S);Z.focusServer&&A(Z.focusServer),Z.sessionId&&z({kind:Z.sessionKind,id:Z.sessionId}),Z.replacePath&&window.history.replaceState({},"",Z.replacePath),Z.agentId?N(Z.agentId,Z.view):u(Z.view)};return se(),window.addEventListener("popstate",se),window.addEventListener("dashboard:navigate",se),()=>{window.removeEventListener("popstate",se),window.removeEventListener("dashboard:navigate",se)}},[]);let N=async(se,Z)=>{p(!0);try{let L=await(await fetch(`/api/agents/${se}`)).json();d(L.agent),u(Z)}catch{E("Failed to load agent","error")}finally{p(!1)}},D=async(se=g)=>{p(!0);try{let R=await(await fetch(`/api/agents?sort=${se}`)).json();s(R.agents)}catch{E("Failed to refresh agents","error")}finally{p(!1)}},T=se=>{v(se),D(se)},E=(se,Z="info")=>{y({message:se,type:Z}),setTimeout(()=>y(null),3e3)},I=(se,Z=null)=>{let R=u2(se,{agent:Z,features:S});R!==null&&window.history.pushState({},"",ct(R))},j=async se=>{p(!0);try{let Z=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:se})});if(Z.ok){let B=await Z.json();return s([B.agent,...i]),d(B.agent),u("editor"),E("Agent created successfully!","success"),I("editor",B.agent),null}let R=await Z.json().catch(()=>({})),L={errors:R.errors?.length?R.errors:[R.error||`Failed to create agent (${Z.status})`],fieldErrors:R.field_errors||{}};return E(L.errors.join(", "),"error"),L}catch{return E("Failed to create agent","error"),{errors:["Failed to create agent: the request did not complete"],fieldErrors:{}}}finally{p(!1)}},q=async(se,Z)=>{p(!0);try{let R=await fetch(`/api/agents/${se}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:Z})});if(R.ok){let L=await R.json();s(i.map(B=>B.id===se?L.agent:B)),d(L.agent),E("Agent updated!","success")}else{let L=await R.json();E(L.errors?.join(", ")||"Failed to update agent","error")}}catch{E("Failed to update agent","error")}finally{p(!1)}},te=async se=>{let Z=i.find(R=>R.id===se);if(await cn({title:Z?`Delete ${Z.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:Z?.name})){p(!0);try{(await fetch(`/api/agents/${se}`,{method:"DELETE"})).ok&&(s(i.filter(L=>L.id!==se)),d(null),u("list"),E("Agent deleted","success"),I("list"))}catch{E("Failed to delete agent","error")}finally{p(!1)}}},K=async se=>{p(!0);try{let Z=await fetch(`/api/agents/${se}/duplicate`,{method:"POST"});if(Z.ok){let R=await Z.json();s([R.agent,...i]),E("Agent duplicated!","success")}}catch{E("Failed to duplicate agent","error")}finally{p(!1)}},le=se=>{s([se,...i]),h(!1),E("Agent created from template!","success"),re("editor",se)},pe=["editor","runner","agent-analytics","history"],re=(se,Z=null)=>{Ev(se,S)&&(F(R=>R+1),se==="builder"&&C(null),Z?.id&&pe.includes(se)&&Z.instructions===void 0?N(Z.id,se):(d(Z),u(se)),I(se,Z))},_e={assistant:()=>ft.default.createElement(a3,{session:b,onSessionChange:_,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>re("settings"),onReviewDraft:se=>{C(se),u("builder"),I("builder")}}),builder:()=>ft.default.createElement(hE,{key:w?.id||"new-agent",initialDraft:w,meta:r,onSave:j,onCancel:()=>re(w?"assistant":"list"),isLoading:f}),editor:()=>c?ft.default.createElement(H2,{key:`editor-${c.id}`,agent:c,meta:r,onSave:se=>q(c.id,se),onDelete:()=>te(c.id),onRun:()=>re("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>re("history",c),onBack:()=>re("list"),isLoading:f}):null,runner:()=>c?ft.default.createElement(dM,{agent:c,recorderUrl:r.recorderUrl,onBack:()=>re("editor",c)}):null,"agent-analytics":()=>c?ft.default.createElement(H2,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:se=>q(c.id,se),onDelete:()=>te(c.id),onRun:()=>re("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>re("history",c),onBack:()=>re("list"),isLoading:f}):null,history:()=>c?ft.default.createElement(pM,{agent:c,onBack:()=>re("editor",c)}):null,analytics:()=>ft.default.createElement(fM,{onSelectAgent:se=>{N(se.id,"agent-analytics")}}),traces:()=>ft.default.createElement(Kd,null),metrics:()=>ft.default.createElement(CM,null),interactions:()=>ft.default.createElement(Ul,null),tools:()=>ft.default.createElement(EM,{onOpenServer:se=>{A(se),re("mcp")}}),mcp:()=>ft.default.createElement(NM,{focusServer:k,onOpenTools:()=>{A(null),re("tools")}}),evaluations:()=>ft.default.createElement(u0,null),projects:()=>ft.default.createElement(M3,{visit:$}),catalogs:()=>ft.default.createElement(j3,{visit:$}),sessions:()=>ft.default.createElement(GM,{agents:i,user:e}),exploration:()=>ft.default.createElement(D3,{visit:$}),replay:()=>P?ft.default.createElement(WM,{key:`${P.kind}-${P.id}`,kind:P.kind,id:P.id,onHandoff:se=>{let Z=se?.handoff_state||{};Z.url&&window.open(Z.url,"_blank","noopener,noreferrer");let R=Object.entries(Z.form_values||{}).map(([L,B])=>`${L}: ${B}`).join(" \xB7 ");E(Z.url?`Taking over in a new tab${R?` \u2014 already entered: ${R}`:""}`:"Taking over session...","info")},onBack:()=>UY(window.history.state)?window.history.back():re("sessions")}):null,sandbox:()=>ft.default.createElement(IM,{initialType:"playwright_mcp",onClose:()=>re("list")}),organization:()=>ft.default.createElement(YM,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>ft.default.createElement(n3,{user:e}),list:()=>ft.default.createElement(mE,{agents:i,meta:r,onSelect:se=>re("editor",se),onNew:()=>re("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:K,onDelete:te,onRefresh:D,sort:g,onSortChange:T,isLoading:f})},ue=()=>Ev(l,S)?(_e[l]||_e.list)():null;return ft.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},ft.default.createElement(gM,{currentView:sq(l),onNavigate:re,agentCount:i.length,pendingInputCount:Sq(O),account:n,user:e,gemVersion:r.activeagentVersion,features:S}),ft.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},ft.default.createElement(hM,{user:e,account:n}),ft.default.createElement("main",{className:"flex-1 p-6 overflow-auto"},ue())),x&&ft.default.createElement(mM,{onUseTemplate:le,onClose:()=>h(!1)}),ft.default.createElement(AZ,null),m&&ft.default.createElement("div",{className:`fixed bottom-4 right-4 z-[60] px-6 py-3 rounded-lg shadow-lg transition-all transform ${m.type==="error"?"bg-red-500":m.type==="success"?"bg-green-500":"bg-blue-500"} text-white`},m.message),f&&ft.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},ft.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},ft.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function L3(e){return ft.default.createElement(D8,null,ft.default.createElement(kK,null,ft.default.createElement(Zwe,{...e})))}var Jwe=new Set(["POST","PUT","PATCH","DELETE"]);function Qwe(e,t,{base:r="",csrfToken:n,origin:o}){let a;if(typeof e=="string"){if(!e.startsWith("/api/"))return null;a=`${r}${e}`}else if(typeof Request<"u"&&e instanceof Request){let u=new URL(e.url,o);if(u.origin!==o||!u.pathname.startsWith("/api/"))return null;a=`${o}${r}${u.pathname}${u.search}`}else return null;let i=typeof e=="string"?a:new Request(a,e),s=(t?.method||(typeof e=="string"?"GET":e.method)).toUpperCase();if(!Jwe.has(s)||!n)return[i,t];let l=new Headers(t?.headers??(typeof e=="string"?void 0:e.headers));return l.has("X-CSRF-Token")||l.set("X-CSRF-Token",n),[i,{...t,headers:l}]}function Rwe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function CZ(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=Qwe(o,a,{base:r,csrfToken:Rwe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var eSe="active-agent-dashboard";function EZ(){let e=document.getElementById(eSe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,CZ(t.mountPath||"/"),(0,TZ.createRoot)(e).render(NZ.default.createElement(L3,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",EZ):EZ(); + notes: Looks the order up before answering. + expect: { tools: [lookup_order] }`,TSe={create:"success",update:"warning",remove:"error",keep:"muted"};function Z3({onImported:e}){let[t,r]=(0,Pt.useState)("document"),[n,o]=(0,Pt.useState)(""),[a,i]=(0,Pt.useState)(""),[s,l]=(0,Pt.useState)(""),[u,c]=(0,Pt.useState)(""),[d,f]=(0,Pt.useState)(".activeagents/evals"),[p,m]=(0,Pt.useState)(!0),[y,b]=(0,Pt.useState)(null),[h,g]=(0,Pt.useState)(!1),[v,x]=(0,Pt.useState)(null),S=()=>{let j=p?"merge":"replace";return t==="repository"?{repository:s.trim(),ref:u.trim()||void 0,path:d.trim()||void 0,mode:j}:{document:n,mode:j,...a?{source_path:a}:{}}},w=t==="repository"?!!s.trim():!!n.trim(),A=j=>F=>{j(F),b(null)},k=async j=>{g(!0),x(null);try{await j()}catch(F){x(F.message)}finally{g(!1)}},_=()=>k(async()=>{let j=await Mn("/api/scenario_catalogs/preview",{method:"POST",body:S(),fallback:"The preview failed"});b(j.previews||[])}),C=()=>k(async()=>{let j=await Mn("/api/scenario_catalogs",{method:"POST",body:S(),fallback:"Import refused"});b(null),o(""),i(""),e?.(j.catalogs||[])}),E=j=>{if(!j)return;let F=new FileReader;F.onload=()=>{i(j.name),A(o)(String(F.result||""))},F.onerror=()=>x(`Could not read ${j.name}.`),F.readAsText(j)};return Pt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-import"},Pt.default.createElement(He,null,Pt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Pt.default.createElement(Ui,{options:ESe,value:t,onChange:j=>{r(j),b(null)}}),t==="document"&&Pt.default.createElement(ln,{label:"YAML",value:n,onChange:A(o),placeholder:NSe,mono:!0,multiline:!0,rows:12,testId:"scenarios-import-yaml"}),t==="file"&&Pt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"A .yml or .yaml file, such as one exported from this page",Pt.default.createElement("input",{type:"file",accept:".yml,.yaml,application/x-yaml,text/yaml",onChange:j=>E(j.target.files?.[0])}),a&&Pt.default.createElement("span",{style:{fontFamily:X}},a," \xB7 ",n.length," characters")),t==="repository"&&Pt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Pt.default.createElement(ln,{label:"Repository",value:s,onChange:A(l),placeholder:"owner/name",mono:!0}),Pt.default.createElement(ln,{label:"Ref",value:u,onChange:A(c),placeholder:"the default branch when empty",mono:!0}),Pt.default.createElement(ln,{label:"Path",value:d,onChange:A(f),placeholder:".activeagents/evals or one .yml file",mono:!0})),Pt.default.createElement(U0,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:p,onChange:A(m)}),Pt.default.createElement("div",{style:{display:"flex",gap:8}},Pt.default.createElement(se,{onClick:_,disabled:h||!w,testId:"scenarios-import-preview"},h&&!y?"Reading\u2026":"Preview"),Pt.default.createElement(se,{variant:"primary",onClick:C,disabled:h||!y||y.length===0,testId:"scenarios-import-apply"},ZZ(y||[])?"Apply, overwriting":"Apply")))),v&&Pt.default.createElement(Yo,{tone:"error"},v),y&&y.map(j=>Pt.default.createElement(OSe,{key:`${j.catalog?.key}-${j.source_path||""}`,preview:j})))}function OSe({preview:e}){let t=YZ(e);return Pt.default.createElement(He,{testId:"scenarios-import-preview-result"},Pt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Pt.default.createElement(Ee,{tone:e.catalog?.action==="create"?"success":"info"},e.catalog?.action==="create"?"new collection":"existing collection"),Pt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},XZ(e))),e.source_path&&Pt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:X,marginTop:4}},e.source_path),t.length===0?Pt.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Nothing changes: the collection already holds this document."):Pt.default.createElement("div",{style:{display:"grid",gap:8,marginTop:10}},t.map(r=>Pt.default.createElement("div",{key:r.action},Pt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center"}},Pt.default.createElement(Ee,{tone:TSe[r.action]},r.label),Pt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.changes.length)),Pt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontSize:12,fontFamily:X,color:"var(--color-text-secondary)"}},r.changes.slice(0,50).map(n=>Pt.default.createElement("li",{key:`${n.level}-${n.path}`},n.level," ",n.path)),r.changes.length>50&&Pt.default.createElement("li",null,"and ",r.changes.length-50," more"))))))}var PSe=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function J3({visit:e=0}){let[t,r]=(0,it.useState)(()=>V3(Xn())),[n,o]=(0,it.useState)(null),[a,i]=(0,it.useState)(!1),[s,l]=(0,it.useState)({agents:[],projects:[]}),[u,c]=(0,it.useState)(null),[d,f]=(0,it.useState)(null),[p,m]=(0,it.useState)(!1);(0,it.useEffect)(()=>{let v=()=>r(V3(Xn()));return window.addEventListener("popstate",v),window.addEventListener("dashboard:navigate",v),()=>{window.removeEventListener("popstate",v),window.removeEventListener("dashboard:navigate",v)}},[]);let y=(0,it.useCallback)(async()=>{try{let v=await Mn("/api/scenario_catalogs",{fallback:"Could not list the collections"});o(v.catalogs||[]),i(v.storage_available===!0),c(null)}catch(v){c(v.message)}},[]),b=(0,it.useCallback)(async()=>{try{let[v,x]=await Promise.all([Mn("/api/agents").catch(()=>({})),Mn("/api/projects").catch(()=>({}))]);l({agents:(v.agents||[]).filter(S=>!S.observed),projects:x.projects||[]})}catch{}},[]);(0,it.useEffect)(()=>{y(),b()},[y,b,e]);let h=v=>{f(null),c(null),kt(HZ(v))},g=async v=>{let x=await Mn("/api/scenario_catalogs",{method:"POST",body:{catalog:v},fallback:"Could not create the collection"});m(!1),await y(),h({collectionId:x.catalogs?.[0]?.id})};return t.collectionId?it.default.createElement(Y3,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:y,onDeleted:async()=>{await y(),h({})}}):it.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},it.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},it.default.createElement("div",null,it.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),it.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"What your agents are evaluated on, by product and set. Write them here, generate them by exploring a project's app, or import and export them as YAML.")),t.tab==="collections"&&it.default.createElement(se,{variant:"primary",onClick:()=>m(v=>!v),testId:"scenarios-new-collection"},p?"Close":"New collection")),it.default.createElement(Ui,{options:PSe,value:t.tab,onChange:v=>h({tab:v})}),u&&it.default.createElement(Yo,{tone:"error"},u),d&&it.default.createElement(Yo,null,d),t.tab==="generate"&&it.default.createElement(X3,{projects:s.projects,collections:n||[],onAccepted:y}),t.tab==="import"&&it.default.createElement(Z3,{onImported:async v=>{await y(),v.length===1?h({collectionId:v[0].id}):f(`Imported ${v.map(x=>x.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&it.default.createElement(it.default.Fragment,null,p&&it.default.createElement(MSe,{onCreate:g}),n===null?it.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?it.default.createElement(He,{testId:"scenarios-empty"},it.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No scenarios yet. Start a new collection, generate scenarios by exploring a project's app, or import YAML, such as the"," ",it.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):it.default.createElement("div",{style:{display:"grid",gap:12}},n.map(v=>it.default.createElement(He,{key:v.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:v.id}),testId:"scenarios-collection-card"},it.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},it.default.createElement("div",null,it.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},v.name),it.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},it.default.createElement("code",null,v.key),v.source_path?` \xB7 ${v.source_path}`:v.source_kind==="api"?" \xB7 written here":` \xB7 ${v.source_kind}`)),it.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",textAlign:"right"}},v.product_count," ",v.product_count===1?"product":"products"," \xB7 ",v.scenario_count," scenarios",it.default.createElement("div",null,v.synced?"synced to storage":a?"not synced":"database only"))))))))}function MSe({onCreate:e}){let[t,r]=(0,it.useState)(""),[n,o]=(0,it.useState)(""),[a,i]=(0,it.useState)(""),[s,l]=(0,it.useState)(!1),[u,c]=(0,it.useState)(null);return it.default.createElement(He,{testId:"scenarios-new-collection-form"},it.default.createElement("form",{onSubmit:async f=>{f.preventDefault(),l(!0),c(null);try{await e({name:t.trim(),key:n.trim(),description:a.trim()})}catch(p){c(p.message)}finally{l(!1)}},style:{display:"flex",flexDirection:"column",gap:10}},it.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},it.default.createElement(ln,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),it.default.createElement(ln,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),it.default.createElement(ln,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&it.default.createElement(Yo,{tone:"error"},u),it.default.createElement("div",null,it.default.createElement(se,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var Gr=V(Y());var ISe='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function DSe({request:e,onSettle:t}){let[r,n]=(0,Gr.useState)(""),o=(0,Gr.useRef)(null),a=(0,Gr.useRef)(null),i=(0,Gr.useId)(),s=(0,Gr.useId)(),l=JG(e,r);(0,Gr.useEffect)(()=>{let f=document.activeElement;return e.requireText?a.current?.focus():o.current?.querySelector('[data-testid="confirm-cancel"]')?.focus(),()=>f?.focus?.()},[e]);let u=()=>{l&&t(!0)},c=f=>{if(f.key==="Escape"){f.preventDefault(),t(!1);return}if(f.key!=="Tab")return;let p=[...o.current?.querySelectorAll(ISe)||[]];if(p.length===0)return;let m=p[0],y=p[p.length-1];f.shiftKey&&document.activeElement===m?(f.preventDefault(),y.focus()):!f.shiftKey&&document.activeElement===y&&(f.preventDefault(),m.focus())},d=e.danger?{background:"var(--color-error)",color:"#fff"}:void 0;return Gr.default.createElement("div",{"data-testid":"confirm-overlay",onMouseDown:f=>{f.target===f.currentTarget&&t(!1)},style:{position:"fixed",inset:0,zIndex:70,padding:16,background:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center"}},Gr.default.createElement("div",{ref:o,role:"alertdialog","aria-modal":"true","aria-labelledby":i,"aria-describedby":s,"data-testid":"confirm-dialog",onKeyDown:c,style:{width:"100%",maxWidth:440,padding:20,borderRadius:12,background:"var(--color-surface)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)",boxShadow:"0 20px 40px rgba(0, 0, 0, 0.25)"}},Gr.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),Gr.default.createElement("div",{id:s},e.message&&Gr.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&Gr.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",Gr.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",Gr.default.createElement("input",{ref:a,type:"text",value:r,autoComplete:"off",spellCheck:!1,"data-testid":"confirm-input","aria-label":`Type ${e.requireText} to confirm`,onChange:f=>n(f.target.value),onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),u())},style:{display:"block",width:"100%",marginTop:6,padding:"8px 10px",borderRadius:8,boxSizing:"border-box",fontFamily:"var(--font-mono)",fontSize:13,color:"var(--color-text-primary)",background:"var(--color-background-page)",border:"1px solid var(--color-border-strong)"}}))),Gr.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},Gr.default.createElement(se,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),Gr.default.createElement(se,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function tJ(){let[e,t]=(0,Gr.useState)(XG());return(0,Gr.useEffect)(()=>ZG(t),[]),e?Gr.default.createElement(DSe,{key:$Se(e),request:e,onSettle:YG}):null}var Q3=new WeakMap,jSe=0;function $Se(e){return Q3.has(e)||Q3.set(e,++jSe),Q3.get(e)}function LSe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=lt(),[i,s]=(0,gt.useState)(t),[l,u]=(0,gt.useState)("list"),[c,d]=(0,gt.useState)(null),[f,p]=(0,gt.useState)(!1),[m,y]=(0,gt.useState)(null),[b,h]=(0,gt.useState)(!1),[g,v]=(0,gt.useState)("recent"),[x,S]=(0,gt.useState)({messages:[]}),[w,A]=(0,gt.useState)(null),k=wq(r),[_,C]=(0,gt.useState)(null),{requests:E}=C_({refreshKey:l}),[j,F]=(0,gt.useState)(0),[D,z]=(0,gt.useState)(null);(0,gt.useEffect)(()=>{let le=()=>{let Z=Sq(Xn(),k);Z.focusServer&&C(Z.focusServer),Z.sessionId&&z({kind:Z.sessionKind,id:Z.sessionId}),Z.replacePath&&window.history.replaceState({},"",ct(Z.replacePath)),Z.agentId?N(Z.agentId,Z.view):u(Z.view)};return le(),window.addEventListener("popstate",le),window.addEventListener("dashboard:navigate",le),()=>{window.removeEventListener("popstate",le),window.removeEventListener("dashboard:navigate",le)}},[]);let N=async(le,Z)=>{p(!0);try{let L=await(await fetch(`/api/agents/${le}`)).json();d(L.agent),u(Z)}catch{T("Failed to load agent","error")}finally{p(!1)}},O=async(le=g)=>{p(!0);try{let ee=await(await fetch(`/api/agents?sort=${le}`)).json();s(ee.agents)}catch{T("Failed to refresh agents","error")}finally{p(!1)}},$=le=>{v(le),O(le)},T=(le,Z="info")=>{y({message:le,type:Z}),setTimeout(()=>y(null),3e3)},I=(le,Z=null)=>{let ee=x_(le,{agent:Z,features:k});ee!==null&&window.history.pushState({},"",ct(ee))},P=async le=>{p(!0);try{let Z=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:le})});if(Z.ok){let B=await Z.json();return s([B.agent,...i]),d(B.agent),u("editor"),T("Agent created successfully!","success"),I("editor",B.agent),null}let ee=await Z.json().catch(()=>({})),L={errors:ee.errors?.length?ee.errors:[ee.error||`Failed to create agent (${Z.status})`],fieldErrors:ee.field_errors||{}};return T(L.errors.join(", "),"error"),L}catch{return T("Failed to create agent","error"),{errors:["Failed to create agent: the request did not complete"],fieldErrors:{}}}finally{p(!1)}},H=async(le,Z)=>{p(!0);try{let ee=await fetch(`/api/agents/${le}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:Z})});if(ee.ok){let L=await ee.json();s(i.map(B=>B.id===le?L.agent:B)),d(L.agent),T("Agent updated!","success")}else{let L=await ee.json();T(L.errors?.join(", ")||"Failed to update agent","error")}}catch{T("Failed to update agent","error")}finally{p(!1)}},Q=async le=>{let Z=i.find(ee=>ee.id===le);if(await Br({title:Z?`Delete ${Z.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:Z?.name})){p(!0);try{(await fetch(`/api/agents/${le}`,{method:"DELETE"})).ok&&(s(i.filter(L=>L.id!==le)),d(null),u("list"),T("Agent deleted","success"),I("list"))}catch{T("Failed to delete agent","error")}finally{p(!1)}}},K=async le=>{p(!0);try{let Z=await fetch(`/api/agents/${le}/duplicate`,{method:"POST"});if(Z.ok){let ee=await Z.json();s([ee.agent,...i]),T("Agent duplicated!","success")}}catch{T("Failed to duplicate agent","error")}finally{p(!1)}},ue=le=>{s([le,...i]),h(!1),T("Agent created from template!","success"),re("editor",le)},pe=["editor","runner","agent-analytics","history"],re=(le,Z=null)=>{zv(le,k)&&(F(ee=>ee+1),le==="builder"&&A(null),Z?.id&&pe.includes(le)&&Z.instructions===void 0?N(Z.id,le):(d(Z),u(le)),I(le,Z))},_e={assistant:()=>gt.default.createElement(y3,{session:x,onSessionChange:S,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>re("settings"),onReviewDraft:le=>{A(le),u("builder"),I("builder")}}),builder:()=>gt.default.createElement(NE,{key:w?.id||"new-agent",initialDraft:w,meta:r,onSave:P,onCancel:()=>re(w?"assistant":"list"),isLoading:f}),editor:()=>c?gt.default.createElement(e2,{key:`editor-${c.id}`,agent:c,meta:r,onSave:le=>H(c.id,le),onDelete:()=>Q(c.id),onRun:()=>re("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>re("history",c),onBack:()=>re("list"),isLoading:f}):null,runner:()=>c?gt.default.createElement(kM,{agent:c,recorderUrl:r.recorderUrl,onBack:()=>re("editor",c)}):null,"agent-analytics":()=>c?gt.default.createElement(e2,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:le=>H(c.id,le),onDelete:()=>Q(c.id),onRun:()=>re("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>re("history",c),onBack:()=>re("list"),isLoading:f}):null,history:()=>c?gt.default.createElement(CM,{agent:c,onBack:()=>re("editor",c)}):null,analytics:()=>gt.default.createElement(_M,{onSelectAgent:le=>{N(le.id,"agent-analytics")}}),traces:()=>gt.default.createElement(Qd,null),metrics:()=>gt.default.createElement(zM,null),interactions:()=>gt.default.createElement(Xl,null),tools:()=>gt.default.createElement(BM,{onOpenServer:le=>{C(le),re("mcp")}}),mcp:()=>gt.default.createElement(FM,{focusServer:_,onOpenTools:()=>{C(null),re("tools")}}),evaluations:()=>gt.default.createElement(b0,null),projects:()=>gt.default.createElement(H3,{visit:j}),scenarios:()=>gt.default.createElement(J3,{visit:j}),sessions:()=>gt.default.createElement(a3,{agents:i,user:e}),exploration:()=>gt.default.createElement(K3,{visit:j}),replay:()=>D?gt.default.createElement(e3,{key:`${D.kind}-${D.id}`,kind:D.kind,id:D.id,onHandoff:le=>{let Z=le?.handoff_state||{};Z.url&&window.open(Z.url,"_blank","noopener,noreferrer");let ee=Object.entries(Z.form_values||{}).map(([L,B])=>`${L}: ${B}`).join(" \xB7 ");T(Z.url?`Taking over in a new tab${ee?` \u2014 already entered: ${ee}`:""}`:"Taking over session...","info")},onBack:()=>rX(window.history.state)?window.history.back():re("sessions")}):null,sandbox:()=>gt.default.createElement(VM,{initialType:"playwright_mcp",onClose:()=>re("list")}),organization:()=>gt.default.createElement(i3,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>gt.default.createElement(g3,{user:e}),list:()=>gt.default.createElement(AE,{agents:i,meta:r,onSelect:le=>re("editor",le),onNew:()=>re("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:K,onDelete:Q,onRefresh:O,sort:g,onSortChange:$,isLoading:f})},de=()=>zv(l,k)?(_e[l]||_e.list)():null;return gt.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},gt.default.createElement(EM,{currentView:kq(l),onNavigate:re,agentCount:i.length,pendingInputCount:zq(E),account:n,user:e,gemVersion:r.activeagentVersion,features:k}),gt.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},gt.default.createElement(NM,{user:e,account:n}),gt.default.createElement("main",{className:"flex-1 p-6 overflow-auto"},de())),b&>.default.createElement(AM,{onUseTemplate:ue,onClose:()=>h(!1)}),gt.default.createElement(tJ,null),m&>.default.createElement("div",{className:`fixed bottom-4 right-4 z-[60] px-6 py-3 rounded-lg shadow-lg transition-all transform ${m.type==="error"?"bg-red-500":m.type==="success"?"bg-green-500":"bg-blue-500"} text-white`},m.message),f&>.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},gt.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},gt.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function R3(e){return gt.default.createElement(X8,null,gt.default.createElement(BK,null,gt.default.createElement(LSe,{...e})))}var zSe=new Set(["POST","PUT","PATCH","DELETE"]);function BSe(e,t,{base:r="",csrfToken:n,origin:o}){let a;if(typeof e=="string"){if(!e.startsWith("/api/"))return null;a=`${r}${e}`}else if(typeof Request<"u"&&e instanceof Request){let u=new URL(e.url,o);if(u.origin!==o||!u.pathname.startsWith("/api/"))return null;a=`${o}${r}${u.pathname}${u.search}`}else return null;let i=typeof e=="string"?a:new Request(a,e),s=(t?.method||(typeof e=="string"?"GET":e.method)).toUpperCase();if(!zSe.has(s)||!n)return[i,t];let l=new Headers(t?.headers??(typeof e=="string"?void 0:e.headers));return l.has("X-CSRF-Token")||l.set("X-CSRF-Token",n),[i,{...t,headers:l}]}function FSe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function rJ(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=BSe(o,a,{base:r,csrfToken:FSe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var USe="active-agent-dashboard";function nJ(){let e=document.getElementById(USe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,rJ(t.mountPath||"/"),(0,aJ.createRoot)(e).render(oJ.default.createElement(R3,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",nJ):nJ(); /*! Bundled license information: react/cjs/react.production.js: diff --git a/actionagent/app/controllers/action_agent/api/explorations_controller.rb b/actionagent/app/controllers/action_agent/api/explorations_controller.rb index 3b0716ea..d2ff0e4e 100644 --- a/actionagent/app/controllers/action_agent/api/explorations_controller.rb +++ b/actionagent/app/controllers/action_agent/api/explorations_controller.rb @@ -73,7 +73,13 @@ def update_candidate # :replace_scenarios is asked about the evaluation the candidates # merge into, or about the exploration when a project's accept will # create that evaluation. + # + # With scenario_set_id, the candidates become scenarios of that set of + # one of the owner's scenario catalogs instead (see + # Exploration#accept_into_set!), and :replace_scenarios is asked about + # its catalog. def accept + return accept_into_set if params[:scenario_set_id].present? return unless authorize_action!(:replace_scenarios, @exploration.target_evaluation || @exploration) merged = @exploration.accept!(params[:candidate_ids], edits: accept_edits) @@ -98,6 +104,24 @@ def stop private + def accept_into_set + products = ScenarioProduct.where(scenario_catalog_id: owned(ScenarioCatalog).select(:id)) + set = ScenarioSet.where(scenario_product_id: products.select(:id)).find(params[:scenario_set_id].to_s) + return unless authorize_action!(:replace_scenarios, set.catalog) + + merged = @exploration.accept_into_set!(params[:candidate_ids], set: set, edits: accept_edits) + render json: detail(@exploration.reload).merge( + accepted: merged.slice(:added, :updated, :unchanged), + scenario_set: scenario_set_summary(set) + ) + end + + def scenario_set_summary(set) + catalog = set.catalog + { id: set.id, key: set.key, name: set.name, product_key: set.product.key, + catalog: { id: catalog.id, key: catalog.key, name: catalog.name } } + end + def set_exploration @exploration = owned(Exploration).find(params[:id]) end diff --git a/actionagent/app/controllers/action_agent/api/scenario_catalog_entries_controller.rb b/actionagent/app/controllers/action_agent/api/scenario_catalog_entries_controller.rb new file mode 100644 index 00000000..34792217 --- /dev/null +++ b/actionagent/app/controllers/action_agent/api/scenario_catalog_entries_controller.rb @@ -0,0 +1,188 @@ +# frozen_string_literal: true + +module ActionAgent + module Api + # Editing a scenario catalog in the dashboard, one entry at a time: its + # products, their sets, and the sets' scenarios. Each change is checked + # as the YAML importer checks a document (the records' validations, then + # the catalog's document rebuilt and parsed), rewrites the catalog's + # document and digest, and writes it to Active Storage when the host has + # it, so an edit and an import leave the same thing behind. + # + # Every change needs :replace_scenarios on the catalog, as an import does. + # A key left blank is made from the name (or a scenario's prompt). + class ScenarioCatalogEntriesController < BaseController + before_action :require_owner! + before_action :set_catalog + before_action -> { authorize_action!(:replace_scenarios, @catalog) } + + rescue_from ActiveRecord::RecordInvalid do |error| + render json: { errors: error.record.errors.full_messages }, status: :unprocessable_entity + end + rescue_from ActiveAgent::Evals::Catalog::InvalidDocument do |error| + render json: { errors: [ error.message ] }, status: :unprocessable_entity + end + + # POST /api/scenario_catalogs/:id/products + # { product: { key, name, description, agent_id, agent_name, project_id } } + def create_product + attributes = product_attributes + attributes[:key] = ScenarioCatalog.key_for(attributes[:name], @catalog.products.pluck(:key)) if attributes[:key].blank? + attributes[:name] = attributes[:key] if attributes[:name].blank? + product = change { @catalog.products.create!(attributes.merge(position: next_position(@catalog.products))) } + render json: { product: product.summary, catalog: full }, status: :created + end + + # PATCH /api/scenario_catalogs/:id/products/:product_id + def update_product + product = find_product + change { product.update!(product_attributes.compact_blank.merge(product_links)) } + render json: { product: product.reload.summary, catalog: full } + end + + # DELETE /api/scenario_catalogs/:id/products/:product_id + # The evaluations its sets became stay, with their runs. + def destroy_product + product = find_product + change { product.destroy! } + render json: { catalog: full } + end + + # POST /api/scenario_catalogs/:id/products/:product_id/sets + # { set: { key, name, description, judge: { kind, model } } } + def create_set + product = find_product + attributes = set_attributes + attributes[:key] = ScenarioCatalog.key_for(attributes[:name], product.sets.pluck(:key)) if attributes[:key].blank? + attributes[:name] = attributes[:key] if attributes[:name].blank? + set = change { product.sets.create!(attributes.merge(position: next_position(product.sets))) } + render json: { set: set.summary, catalog: full }, status: :created + end + + # PATCH /api/scenario_catalogs/:id/sets/:set_id + def update_set + set = find_set + change { set.update!(set_attributes.compact_blank) } + render json: { set: set.reload.summary, catalog: full } + end + + # DELETE /api/scenario_catalogs/:id/sets/:set_id + def destroy_set + set = find_set + change { set.destroy! } + render json: { catalog: full } + end + + # POST /api/scenario_catalogs/:id/sets/:set_id/scenarios + # { scenario: { key, prompt, notes, expect: { tools, contains, not_contains }, tags, production_only, enabled } } + def create_scenario + set = find_set + attributes = scenario_attributes + attributes[:key] = ScenarioCatalog.key_for(attributes[:prompt].to_s.split.first(6).join(" "), set.scenarios.pluck(:key)) if attributes[:key].blank? + if @catalog.scenario_count >= ScenarioCatalog::MAX_SCENARIOS + return render json: { errors: [ "A catalog holds at most #{ScenarioCatalog::MAX_SCENARIOS} scenarios" ] }, status: :unprocessable_entity + end + + scenario = change { set.scenarios.create!(attributes.merge(position: next_position(set.scenarios))) } + render json: { scenario: scenario.summary, catalog: full }, status: :created + end + + # PATCH /api/scenario_catalogs/:id/sets/:set_id/scenarios/:scenario_id + def update_scenario + scenario = find_set.scenarios.find(params[:scenario_id]) + change { scenario.update!(scenario_attributes.except(*blank_identity(scenario_attributes))) } + render json: { scenario: scenario.reload.summary, catalog: full } + end + + # DELETE /api/scenario_catalogs/:id/sets/:set_id/scenarios/:scenario_id + def destroy_scenario + scenario = find_set.scenarios.find(params[:scenario_id]) + change { scenario.destroy! } + render json: { catalog: full } + end + + private + + def set_catalog + @catalog = owned(ScenarioCatalog).find(params[:id]) + end + + def find_product + @catalog.products.find(params[:product_id]) + end + + def find_set + ScenarioSet.where(scenario_product_id: @catalog.products.select(:id)).find(params[:set_id]) + end + + # Runs +block+ and rebuilds the catalog's document in one transaction, + # so a change the document cannot hold is rolled back; then writes the + # document to storage. Returns the block's value. + def change + result = ScenarioCatalog.transaction do + value = yield + @catalog.reload.refresh_document! + value + end + @catalog.sync_to_storage! + result + end + + def full + ScenarioCatalogSerializer.full(@catalog.reload) + end + + def next_position(relation) + (relation.maximum(:position) || -1) + 1 + end + + def product_attributes + params.require(:product).permit(:key, :name, :description, :agent_name).to_h.symbolize_keys.merge(product_links) + end + + # The agent and project a product names by id, among the owner's own. + # An empty id clears it. + def product_links + source = params[:product] || {} + links = {} + if source.key?(:agent_id) + links[:agent] = source[:agent_id].present? ? owner_agents.find(source[:agent_id]) : nil + end + if source.key?(:project_id) + links[:project] = source[:project_id].present? ? owned(Project).find(source[:project_id]) : nil + end + links + end + + def set_attributes + source = params.require(:set) + attributes = source.permit(:key, :name, :description).to_h.symbolize_keys + if source.key?(:judge) + judge = source[:judge].respond_to?(:permit) ? source[:judge].permit(:kind, :model).to_h.compact_blank : {} + attributes[:judge] = judge + end + attributes + end + + def scenario_attributes + source = params.require(:scenario) + attributes = source.permit(:key, :prompt, :notes, :production_only, :enabled).to_h.symbolize_keys + expect = source[:expect] || source[:expectations] + if expect.respond_to?(:permit) + attributes[:expectations] = Exploration::EXPECTATION_KEYS.each_with_object({}) do |name, hash| + values = Array(expect[name]).flat_map { |value| value.to_s.split(",") }.map(&:strip).reject(&:blank?) + hash[name] = values if values.any? + end + end + attributes[:tags] = Array(source[:tags]).flat_map { |tag| tag.to_s.split(",") }.map(&:strip).reject(&:blank?) if source.key?(:tags) + attributes + end + + # An update leaves the key and prompt alone when they arrive blank, + # rather than failing presence. + def blank_identity(attributes) + %i[key prompt].select { |name| attributes.key?(name) && attributes[name].blank? } + end + end + end +end diff --git a/actionagent/app/controllers/action_agent/api/scenario_catalogs_controller.rb b/actionagent/app/controllers/action_agent/api/scenario_catalogs_controller.rb index a8515ae2..206d17cd 100644 --- a/actionagent/app/controllers/action_agent/api/scenario_catalogs_controller.rb +++ b/actionagent/app/controllers/action_agent/api/scenario_catalogs_controller.rb @@ -37,16 +37,20 @@ def show # POST /api/scenario_catalogs # One of: + # catalog: { key, name, description } for an empty catalog, built + # up in the dashboard (see ScenarioCatalogEntriesController) # document: the catalog's YAML text # file: an uploaded .yml # repository: owner/name of a connected repository, with ref (its # default branch when omitted) and path (a directory of # .yml files, .activeagents/evals by default, or one file) - # Answers the imported catalogs. A repository the GitHub connection - # has not selected needs :manage_github, as reading one for a project - # does. + # mode is "replace" (the default: the document is the catalog) or + # "merge" (what the document leaves out is kept). Answers the imported + # catalogs. A repository the GitHub connection has not selected needs + # :manage_github, as reading one for a project does. def create return unless authorize_action!(:replace_scenarios, ScenarioCatalog.new) + return create_empty if params[:document].blank? && params[:file].blank? && params[:repository].blank? && params[:catalog].present? catalogs = if params[:repository].present? @@ -86,10 +90,33 @@ def destroy head :no_content end - # GET /api/scenario_catalogs/:id/export - # The canonical YAML, as a download. + # POST /api/scenario_catalogs/preview + # What POST /api/scenario_catalogs would change, with the same + # document, file or repository and mode, without writing: one + # ScenarioCatalogImport#preview per catalog. + def preview + previews = + if params[:repository].present? + preview_repository or return + else + [ build_import(document_param, name: params[:name].presence).preview ] + end + + render json: { previews: previews } + end + + # GET /api/scenario_catalogs/:id/export?product_ids=&set_ids=&scenario_ids= + # The canonical YAML, as a download: the whole catalog, or only the + # products, sets or scenarios named (comma-separated ids or arrays). + # disposition=inline answers it as text, for copying. def export - send_data @catalog.export_yaml, filename: "#{@catalog.key.tr('/', '-')}.yml", type: "application/x-yaml", disposition: "attachment" + yaml = @catalog.export_yaml(product_ids: params[:product_ids], set_ids: params[:set_ids], scenario_ids: params[:scenario_ids]) + if params[:disposition].to_s == "inline" + render plain: yaml, content_type: "application/x-yaml" + else + suffix = [ params[:product_ids], params[:set_ids], params[:scenario_ids] ].any?(&:present?) ? "-selection" : "" + send_data yaml, filename: "#{@catalog.key.tr('/', '-')}#{suffix}.yml", type: "application/x-yaml", disposition: "attachment" + end end # POST /api/scenario_catalogs/:id/sync @@ -180,11 +207,35 @@ def document_param end def import_document(document, catalog: nil, name: nil, source_path: nil) + build_import(document, catalog: catalog, name: name, source_path: source_path).call + end + + def build_import(document, catalog: nil, name: nil, source_path: nil) ScenarioCatalogImport.new( owner: current_owner, document: document, catalog: catalog, name: name, source_kind: "upload", source_path: source_path, - agents: owner_agents, projects: owned(Project) - ).call + agents: owner_agents, projects: owned(Project), mode: params[:mode].presence || "replace" + ) + end + + # An empty catalog from catalog: { key, name, description }; a blank + # key is made from the name. + def create_empty + attributes = params.require(:catalog).permit(:key, :name, :description).to_h.symbolize_keys + taken = owned(ScenarioCatalog).pluck(:key) + attributes[:key] = ScenarioCatalog.key_for(attributes[:name], taken) if attributes[:key].blank? + attributes[:name] = attributes[:key] if attributes[:name].blank? + catalog = ScenarioCatalog.new(attributes.merge(source_kind: "api")) + catalog.owner = current_owner + ScenarioCatalog.transaction do + catalog.save! + catalog.refresh_document! + end + catalog.sync_to_storage! + + render json: { catalogs: [ ScenarioCatalogSerializer.full(catalog) ] }, status: :created + rescue ActiveRecord::RecordInvalid => e + render json: { errors: e.record.errors.full_messages }, status: :unprocessable_entity end # Imports from the connected repository params name. nil, with the @@ -203,11 +254,33 @@ def import_from_repository return nil end + repository_import(connection, repository).call + end + + # Previews what the connected repository params name would import. nil, + # with the refusal rendered, as #import_from_repository. + def preview_repository + connection = GithubConnection.for_owner(current_owner).first + if connection.nil? + render json: { error: "Connect GitHub in Settings first", code: "no_github_connection" }, status: :unprocessable_entity + return nil + end + + repository = params[:repository].to_s + if connection.repository(repository).nil? && !ActionAgent.permitted?(current_user, :manage_github, connection) + permission_denied(:manage_github) + return nil + end + + repository_import(connection, repository).preview + end + + def repository_import(connection, repository) ScenarioCatalogRepositoryImport.new( owner: current_owner, connection: connection, repository: repository, ref: params[:ref].presence, path: params[:path].presence, - agents: owner_agents, projects: owned(Project) - ).call + agents: owner_agents, projects: owned(Project), mode: params[:mode].presence || "replace" + ) end # Boots the project's sandbox when none is running, as the project's diff --git a/actionagent/app/models/action_agent/exploration.rb b/actionagent/app/models/action_agent/exploration.rb index bd45d26c..20d80559 100644 --- a/actionagent/app/models/action_agent/exploration.rb +++ b/actionagent/app/models/action_agent/exploration.rb @@ -68,6 +68,8 @@ def initialize(message, problems = {}) OPEN_STATES = %w[proposed edited].freeze EXPECTATION_KEYS = %w[tools contains not_contains].freeze BUDGET_KEYS = %w[minutes steps cost].freeze + # The tag a scenario accepted into a catalog set (#accept_into_set!) carries. + EXPLORED_TAG = "explored" MAX_CANDIDATES = 200 # A candidate's prompt and rubric hold at most MAX_STRING characters, # and each expectation list at most MAX_ITEMS entries of at most @@ -417,6 +419,96 @@ def accept!(ids, edits: {}) result end + # Accepts candidates +ids+ into +set+, a scenario set of the owner's + # scenario catalogs, rather than into an evaluation: each becomes the + # set's scenario x_, with the rubric as its + # notes, and accepting it again updates that scenario. The catalog's + # document is rewritten from its records. Returns + # { added:, updated:, unchanged:, set: }. + # + # +edits+ is applied first, as #accept! applies it. Nothing is written + # when a candidate is refused (a rejected one), or when the set holds + # the key as a scenario this exploration did not write. + # + # @raise [AcceptRefused] + # @raise [InvalidCandidate] for an edit, as #update_candidate! raises it + # @raise [CandidateLimitExceeded] + # @return [Hash] + def accept_into_set!(ids, set:, edits: {}) + ids = Array(ids).map { |id| Integer(id.to_s, exception: false) } + raise AcceptRefused, "Choose the candidates to accept" if ids.empty? + raise AcceptRefused, "Candidate ids are numbers" if ids.include?(nil) + + ids = ids.uniq + edits = plain_hash(edits).each_with_object({}) do |(id, edit), map| + number = Integer(id.to_s, exception: false) or raise AcceptRefused, "Candidate ids are numbers" + map[number] = plain_hash(edit).slice("prompt", "group", "notes", "rubric", "expectations", *EXPECTATION_KEYS) + end + secrets = edits.any? ? scrub_secrets : [] + roster = edits.values.any? { |edit| edits_tools?(edit) } ? tool_roster : nil + catalog = set.catalog + result = { added: [], updated: [], unchanged: [] } + + with_lock do + rows = candidates.deep_dup + by_id = rows.index_by { |row| row["id"] } + unknown = ids.reject { |id| by_id.key?(id) } + raise AcceptRefused, "No candidate #{unknown.join(', ')}" if unknown.any? + + problems = {} + ids.each do |id| + candidate = by_id[id] + if candidate["state"] == "rejected" + problems[id] = "it was rejected: reconsider it first" + next + end + apply_edit!(candidate, edits[id], roster: roster, secrets: secrets) if edits[id].present? + problems[id] = "it has no prompt" if candidate["prompt"].blank? + end + raise AcceptRefused.new("Some candidates cannot be accepted", problems) if problems.any? + + refuse_oversized_list!(rows, "shorten the edits") if edits.any? + if catalog.scenario_count + ids.size > ScenarioCatalog::MAX_SCENARIOS + raise AcceptRefused, "The catalog would hold more than #{ScenarioCatalog::MAX_SCENARIOS} scenarios" + end + + ScenarioCatalog.transaction do + next_position = (set.scenarios.maximum(:position) || -1) + 1 + ids.each do |id| + candidate = by_id.fetch(id) + key = "x#{self.id}_#{id}" + record = set.scenarios.find_or_initialize_by(key: key) + written_here = candidate["scenario_set_id"] == set.id && candidate["scenario_key"] == key + if record.persisted? && !written_here + raise AcceptRefused.new("Some candidates cannot be accepted", id => "the set already holds a scenario #{key}") + end + + expectations = candidate["expectations"].to_h.slice(*EXPECTATION_KEYS).reject { |_, value| value.blank? } + record.assign_attributes(prompt: candidate["prompt"], notes: candidate["notes"].presence, + expectations: expectations, tags: (record.tags | [ EXPLORED_TAG ])) + record.position ||= (next_position += 1) - 1 + bucket = record.new_record? ? :added : (record.changed? ? :updated : :unchanged) + record.save! + result[bucket] << key + + candidate["state"] = "accepted" + candidate["scenario_key"] = key + candidate["scenario_set_id"] = set.id + end + catalog.refresh_document! + end + + self.candidates = rows + settle_status + save! + end + catalog.sync_to_storage! + broadcast_change + result.merge(set: set) + rescue ActiveAgent::Evals::Catalog::InvalidDocument, ActiveRecord::RecordInvalid => e + raise AcceptRefused, e.respond_to?(:record) ? e.record.errors.full_messages.to_sentence : e.message + end + # Ends a pending or running exploration, keeping the candidates found so # far for review. It is closed when none awaits a decision. # diff --git a/actionagent/app/models/action_agent/scenario_catalog.rb b/actionagent/app/models/action_agent/scenario_catalog.rb index 6f9b3373..bc25f780 100644 --- a/actionagent/app/models/action_agent/scenario_catalog.rb +++ b/actionagent/app/models/action_agent/scenario_catalog.rb @@ -64,9 +64,26 @@ def to_catalog ActiveAgent::Evals::Catalog.new([ to_document ], name: key) end - # The canonical YAML of the records. - def export_yaml - to_catalog.to_yaml + # The canonical YAML of the records: the whole catalog, or only the + # products, sets or scenarios named by id (with the products and sets + # that hold them), as a document of this catalog's key that a merge + # import (ScenarioCatalogImport mode "merge") reads back into it. + def export_yaml(product_ids: nil, set_ids: nil, scenario_ids: nil) + selection = { product_ids: ids(product_ids), set_ids: ids(set_ids), scenario_ids: ids(scenario_ids) } + return to_catalog.to_yaml if selection.values.all?(&:nil?) + + ActiveAgent::Evals::Catalog.new([ to_document(**selection) ], name: key).to_yaml + end + + # A key for a new product, set or scenario: +text+ as a key, made unique + # among +taken+ with a numeric suffix. + def self.key_for(text, taken) + base = text.to_s.parameterize(separator: "_").first(60).presence || "item" + base = "k_#{base}" unless base.match?(KEY_FORMAT) + candidate = base + suffix = 1 + candidate = "#{base}_#{suffix += 1}" while taken.include?(candidate) + candidate end # Rewrites the stored document and digest from the records, after a @@ -121,13 +138,35 @@ def summary private - def to_document + # The catalog's document, narrowed to the products, sets and scenarios + # named by id when any are (see #export_yaml). A product or set is kept + # whole when it is named, and otherwise only for what it holds that is. + def to_document(product_ids: nil, set_ids: nil, scenario_ids: nil) + narrowed = [ product_ids, set_ids, scenario_ids ].any? + documents = products.includes(sets: :scenarios).filter_map do |product| + next product.to_document unless narrowed + next product.to_document if product_ids&.include?(product.id) + + sets = product.sets.filter_map do |set| + next set.to_document if set_ids&.include?(set.id) + + chosen = set.scenarios.select { |scenario| scenario_ids&.include?(scenario.id) } + set.to_document.merge("scenarios" => chosen.map(&:to_document)) if chosen.any? + end + product.to_document.merge("sets" => sets) if sets.any? + end { "catalog" => key, "name" => name, "description" => description, - "products" => products.includes(sets: :scenarios).map(&:to_document) + "products" => documents }.merge(metadata).compact end + + def ids(value) + return nil if value.blank? + + Array(value).flat_map { |entry| entry.to_s.split(",") }.filter_map { |entry| Integer(entry.strip, exception: false) } + end end end diff --git a/actionagent/app/services/action_agent/scenario_catalog_import.rb b/actionagent/app/services/action_agent/scenario_catalog_import.rb index d2c361db..1dd45888 100644 --- a/actionagent/app/services/action_agent/scenario_catalog_import.rb +++ b/actionagent/app/services/action_agent/scenario_catalog_import.rb @@ -2,13 +2,17 @@ module ActionAgent # Imports a scenario catalog document into the owner's records: products, - # sets and scenarios are matched by key and replaced, so the document is - # the truth and importing it twice changes nothing. The catalog keeps the - # canonical document and its digest, and is written to Active Storage when - # the host has it. + # sets and scenarios are matched by key. In "replace" mode (the default) + # the document is the truth, so what it leaves out is removed and + # importing it twice changes nothing; in "merge" mode what it leaves out + # is kept, so an export of one set or a few scenarios can be imported back + # into the whole catalog. The catalog keeps the canonical document and its + # digest, and is written to Active Storage when the host has it. # # ScenarioCatalogImport.new(owner: account, document: yaml, agents: ActionAgent.agents_for(account)).call # + # #preview answers what #call would change, by key, without writing. + # # A product's `agent:` is resolved among +agents+ by name, and a project # among +projects+ by the product's `repository` or `project` entry, so a # catalog written for a repository finds the project that boots it. @@ -17,9 +21,13 @@ class ScenarioCatalogImport # person can act on. class Invalid < StandardError; end - attr_reader :catalog + MODES = %w[replace merge].freeze + # The changes #preview lists; the counts cover all of them. + PREVIEW_LIMIT = 500 + + attr_reader :catalog, :source_path - def initialize(owner:, document:, catalog: nil, name: nil, source_kind: "upload", source_path: nil, agents: nil, projects: nil) + def initialize(owner:, document:, catalog: nil, name: nil, source_kind: "upload", source_path: nil, agents: nil, projects: nil, mode: "replace") @owner = owner @document = document.to_s @catalog = catalog @@ -28,28 +36,32 @@ def initialize(owner:, document:, catalog: nil, name: nil, source_kind: "upload" @source_path = source_path @agents = agents @projects = projects + @mode = mode.to_s.presence || "replace" + raise Invalid, "The import mode is replace or merge" unless MODES.include?(@mode) end # @return [ScenarioCatalog] the imported catalog def call - if @document.bytesize > ScenarioCatalog::MAX_BYTES - raise Invalid, "The catalog is larger than #{ScenarioCatalog::MAX_BYTES / 1.megabyte} MB" - end - - parsed = ActiveAgent::Evals::Catalog.parse(@document, name: @name) - if parsed.scenario_count > ScenarioCatalog::MAX_SCENARIOS - raise Invalid, "The catalog holds #{parsed.scenario_count} scenarios; the limit is #{ScenarioCatalog::MAX_SCENARIOS}" - end + parsed = parse ScenarioCatalog.transaction do @catalog ||= find_or_initialize(parsed.key) + merging = merge? && @catalog.persisted? @catalog.assign_attributes( - key: parsed.key, name: parsed.name, description: parsed.description, - source_kind: @source_kind, source_path: @source_path, - metadata: parsed.metadata, document: parsed.to_yaml, digest: parsed.digest + key: parsed.key, source_kind: @source_kind, source_path: @source_path, + name: merging ? (parsed_field(parsed, "name") || @catalog.name) : parsed.name, + description: merging ? (parsed.description || @catalog.description) : parsed.description, + metadata: merging ? @catalog.metadata.merge(parsed.metadata) : parsed.metadata, + document: parsed.to_yaml, digest: parsed.digest ) @catalog.save! replace_products(parsed) + if merging + @catalog.refresh_document! + if @catalog.scenario_count > ScenarioCatalog::MAX_SCENARIOS + raise Invalid, "The catalog would hold more than #{ScenarioCatalog::MAX_SCENARIOS} scenarios" + end + end end @catalog.sync_to_storage! @catalog @@ -59,8 +71,99 @@ def call raise Invalid, e.record.errors.full_messages.to_sentence end + # What #call would do, without writing: the catalog it imports into + # (created or updated), counts by action, and the changes (up to + # PREVIEW_LIMIT), each { level: product|set|scenario, path, action } + # where action is create, update (the document changes a record by + # that key), unchanged, remove (replace mode drops a record the document + # leaves out) or keep (merge mode keeps it). + # + # @return [Hash] + def preview + parsed = parse + existing = @catalog || ScenarioCatalog.for_owner(@owner).find_by(key: parsed.key) + before = existing ? existing.to_catalog.to_h : {} + after = parsed.to_h + changes = [] + diff_level(changes, "product", "", list(before["products"]), list(after["products"]), "sets") do |path, old_product, new_product| + diff_level(changes, "set", path, list(old_product["sets"]), list(new_product["sets"]), "scenarios") do |set_path, old_set, new_set| + diff_level(changes, "scenario", set_path, list(old_set["scenarios"]), list(new_set["scenarios"]), nil) + end + end + + counts = Hash.new(0) + changes.each { |change| counts[change[:action]] += 1 } + { + mode: @mode, + catalog: { + id: existing&.id, key: parsed.key, name: parsed.name, + action: existing.nil? ? "create" : (catalog_fields(before) == catalog_fields(after) ? "unchanged" : "update") + }, + scenario_count: parsed.scenario_count, + counts: counts, + changes: changes.reject { |change| change[:action] == "unchanged" }.first(PREVIEW_LIMIT) + } + rescue ActiveAgent::Evals::Catalog::InvalidDocument => e + raise Invalid, e.message + end + private + def merge? + @mode == "merge" + end + + def parse + if @document.bytesize > ScenarioCatalog::MAX_BYTES + raise Invalid, "The catalog is larger than #{ScenarioCatalog::MAX_BYTES / 1.megabyte} MB" + end + + parsed = ActiveAgent::Evals::Catalog.parse(@document, name: @name) + if parsed.scenario_count > ScenarioCatalog::MAX_SCENARIOS + raise Invalid, "The catalog holds #{parsed.scenario_count} scenarios; the limit is #{ScenarioCatalog::MAX_SCENARIOS}" + end + + parsed + end + + # The document's own name, rather than the key the parser falls back to. + def parsed_field(parsed, field) + value = parsed.to_h[field] + value unless field == "name" && value == parsed.key + end + + def list(value) + Array(value).select { |entry| entry.is_a?(Hash) } + end + + def catalog_fields(document) + document.except("products") + end + + # Appends the changes between +old_entries+ and +new_entries+ (matched + # by key) to +changes+, comparing each entry without its +children+, and + # yields the pairs present in the document so their children are + # compared too. + def diff_level(changes, level, parent_path, old_entries, new_entries, children) + old_by_key = old_entries.index_by { |entry| entry["key"].to_s } + new_entries.each do |entry| + key = entry["key"].to_s + path = parent_path.empty? ? key : "#{parent_path}/#{key}" + previous = old_by_key.delete(key) + action = + if previous.nil? then "create" + elsif children ? previous.except(children) == entry.except(children) : previous == entry then "unchanged" + else "update" + end + changes << { level: level, path: path, action: action } + yield(path, previous || {}, entry) if children && block_given? + end + old_by_key.each_key do |key| + path = parent_path.empty? ? key : "#{parent_path}/#{key}" + changes << { level: level, path: path, action: merge? ? "keep" : "remove" } + end + end + def find_or_initialize(key) catalog = ScenarioCatalog.for_owner(@owner).find_or_initialize_by(key: key) catalog.owner = @owner if catalog.new_record? && @owner @@ -68,49 +171,65 @@ def find_or_initialize(key) end def replace_products(parsed) - keep = parsed.products.map(&:key) - @catalog.products.where.not(key: keep).destroy_all + @catalog.products.where.not(key: parsed.products.map(&:key)).destroy_all unless merge? + offset = merge? ? next_position(@catalog.products) : 0 parsed.products.each do |entry| product = @catalog.products.find_or_initialize_by(key: entry.key) product.assign_attributes( name: entry.name, description: entry.description, agent_name: entry.agent, - position: entry.position, metadata: entry.metadata, - agent: resolve_agent(entry), project: resolve_project(entry) + metadata: entry.metadata, agent: resolve_agent(entry) || (merge? ? product.agent : nil), + project: resolve_project(entry) || (merge? ? product.project : nil) ) + product.position = position_for(product, entry.position, offset) product.save! replace_sets(product, entry) end end def replace_sets(product, entry) - product.sets.where.not(key: entry.sets.map(&:key)).destroy_all + product.sets.where.not(key: entry.sets.map(&:key)).destroy_all unless merge? + offset = merge? ? next_position(product.sets) : 0 entry.sets.each do |set_entry| set = product.sets.find_or_initialize_by(key: set_entry.key) set.assign_attributes( name: set_entry.name, description: set_entry.description, judge: set_entry.judge, - criteria: set_entry.criteria, metadata: set_entry.metadata, position: set_entry.position + criteria: set_entry.criteria, metadata: set_entry.metadata ) + set.position = position_for(set, set_entry.position, offset) set.save! replace_scenarios(set, set_entry) end end def replace_scenarios(set, set_entry) - set.scenarios.where.not(key: set_entry.scenarios.map(&:key)).destroy_all + set.scenarios.where.not(key: set_entry.scenarios.map(&:key)).destroy_all unless merge? + offset = merge? ? next_position(set.scenarios) : 0 set_entry.scenarios.each do |scenario| record = set.scenarios.find_or_initialize_by(key: scenario.key) record.assign_attributes( prompt: scenario.prompt, notes: scenario.notes, expectations: scenario.expectations, - tags: scenario.tags, params: scenario.params, production_only: scenario.production_only?, - position: scenario.position + tags: scenario.tags, params: scenario.params, production_only: scenario.production_only? ) + record.position = position_for(record, scenario.position, offset) record.save! end end + # Replace mode takes the document's order. Merge mode keeps a record's + # place and puts a new one after the records already there. + def position_for(record, position, offset) + return position unless merge? + + record.persisted? ? record.position : offset + position.to_i + end + + def next_position(relation) + (relation.maximum(:position) || -1) + 1 + end + # The owner's agent the product's `agent:` names, kept as the product's # agent; a name that matches nothing stays as agent_name alone. def resolve_agent(entry) diff --git a/actionagent/app/services/action_agent/scenario_catalog_repository_import.rb b/actionagent/app/services/action_agent/scenario_catalog_repository_import.rb index a98bb405..db0f9427 100644 --- a/actionagent/app/services/action_agent/scenario_catalog_repository_import.rb +++ b/actionagent/app/services/action_agent/scenario_catalog_repository_import.rb @@ -13,7 +13,7 @@ class ScenarioCatalogRepositoryImport MAX_FILES = 50 EXTENSIONS = %w[.yml .yaml].freeze - def initialize(owner:, connection:, repository:, ref: nil, path: nil, agents: nil, projects: nil) + def initialize(owner:, connection:, repository:, ref: nil, path: nil, agents: nil, projects: nil, mode: "replace") @owner = owner @connection = connection @repository = repository.to_s @@ -21,10 +21,25 @@ def initialize(owner:, connection:, repository:, ref: nil, path: nil, agents: ni @path = path.to_s.presence || DEFAULT_PATH @agents = agents @projects = projects + @mode = mode end # @return [Array] the imported catalogs, one per file def call + imports.map(&:call) + end + + # What #call would change, one ScenarioCatalogImport#preview per file, + # each with the file's source_path. + # @return [Array] + def preview + imports.map { |import| import.preview.merge(source_path: import.source_path) } + end + + private + + # One ScenarioCatalogImport per catalog file at the ref. + def imports client = @connection.client ref = @ref || default_branch(client) files = catalog_files(client, ref) @@ -40,15 +55,13 @@ def call ScenarioCatalogImport.new( owner: @owner, document: content, name: File.basename(file_path, File.extname(file_path)), source_kind: "repository", source_path: "#{@repository}@#{ref}:#{file_path}", - agents: @agents, projects: @projects - ).call + agents: @agents, projects: @projects, mode: @mode + ) end rescue GithubClient::Error => e raise ScenarioCatalogImport::Invalid, "GitHub refused reading #{@repository}: #{e.message}" end - private - def default_branch(client) @connection.repository(@repository)&.dig("default_branch").presence || client.repository(@repository)["default_branch"] end diff --git a/actionagent/config/routes.rb b/actionagent/config/routes.rb index 4a588c77..757bce71 100644 --- a/actionagent/config/routes.rb +++ b/actionagent/config/routes.rb @@ -251,7 +251,11 @@ # Scenario catalogs: YAML catalogs of scenarios (products, sets), imported # from a document, a file or a connected repository, exported as YAML, # synced to Active Storage, and run one set at a time as an evaluation. + # The dashboard's Scenarios page edits them entry by entry + # (ScenarioCatalogEntriesController) and previews an import before it + # is applied. resources :scenario_catalogs, only: [ :index, :show, :create, :update, :destroy ] do + post :preview, on: :collection member do get :export post :sync @@ -259,6 +263,17 @@ post "sets/:set_id/materialize", action: :materialize_set, as: :materialize_set end end + scope "scenario_catalogs/:id", controller: "scenario_catalog_entries", as: :scenario_catalog do + post "products", action: :create_product, as: :products + patch "products/:product_id", action: :update_product, as: :product + delete "products/:product_id", action: :destroy_product + post "products/:product_id/sets", action: :create_set, as: :product_sets + patch "sets/:set_id", action: :update_set, as: :set + delete "sets/:set_id", action: :destroy_set + post "sets/:set_id/scenarios", action: :create_scenario, as: :set_scenarios + patch "sets/:set_id/scenarios/:scenario_id", action: :update_scenario, as: :set_scenario + delete "sets/:set_id/scenarios/:scenario_id", action: :destroy_scenario + end # Credentials: dashboard API keys (token shown once on create) and the # owner's own LLM provider credentials, both encrypted at rest. diff --git a/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx b/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx index 8ee06eb1..f647b7d4 100644 --- a/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx +++ b/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx @@ -723,7 +723,7 @@ export function ScenarioDetail({ scenario, run, columns, resultsByKey, running, )} {scenario.catalogChanged && (
- This run used an earlier version of this question. Re-running uses the current catalog. + This run used an earlier version of this question. Re-running uses the current version.
)} {!run ? ( diff --git a/actionagent/frontend/components/dashboard/ScenarioCatalogsView.jsx b/actionagent/frontend/components/dashboard/ScenarioCatalogsView.jsx deleted file mode 100644 index 2178a8ea..00000000 --- a/actionagent/frontend/components/dashboard/ScenarioCatalogsView.jsx +++ /dev/null @@ -1,441 +0,0 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { Button, Card } from './primitives'; -import { navigateTo } from '../../utils/dashboardPath'; -import { apiErrorMessage } from '../../utils/codeSessions.mjs'; -import { requestConfirm } from '../../utils/confirm.mjs'; - -// /catalogs: the owner's scenario catalogs. A catalog is a YAML document of -// products (an agent or a project under test), each with named sets of -// scenarios. It is imported here from pasted YAML or from a connected -// repository at a ref (a pull request's branch), exported back as YAML, kept -// in Active Storage when the host has it, and run one set at a time: the -// set becomes an evaluation of the agent under test, run against the -// project's booted app and browser when a project is chosen. -export default function ScenarioCatalogsView({ visit = 0 }) { - const [catalogs, setCatalogs] = useState(null); - const [storageAvailable, setStorageAvailable] = useState(false); - const [selected, setSelected] = useState(null); - const [error, setError] = useState(null); - const [notice, setNotice] = useState(null); - const [agents, setAgents] = useState([]); - const [projects, setProjects] = useState([]); - const [importing, setImporting] = useState(false); - const [showImport, setShowImport] = useState(false); - - const load = useCallback(async () => { - try { - const res = await fetch('/api/scenario_catalogs'); - const data = await res.json().catch(() => ({})); - if (!res.ok) throw new Error(apiErrorMessage(data, `Could not list catalogs (HTTP ${res.status}).`)); - setCatalogs(data.catalogs || []); - setStorageAvailable(data.storage_available === true); - setError(null); - } catch (e) { - setError(e.message); - } - }, []); - - const loadTargets = useCallback(async () => { - try { - const [agentsRes, projectsRes] = await Promise.all([fetch('/api/agents'), fetch('/api/projects')]); - const agentData = await agentsRes.json().catch(() => ({})); - const projectData = await projectsRes.json().catch(() => ({})); - setAgents((agentData.agents || []).filter((agent) => !agent.observed)); - setProjects(projectData.projects || []); - } catch (e) { - // Targets are a convenience for the run form; the list still renders. - } - }, []); - - useEffect(() => { - load(); - loadTargets(); - }, [load, loadTargets, visit]); - - const open = useCallback(async (id) => { - try { - const res = await fetch(`/api/scenario_catalogs/${id}`); - const data = await res.json().catch(() => ({})); - if (!res.ok) throw new Error(apiErrorMessage(data, `Could not open the catalog (HTTP ${res.status}).`)); - setSelected(data.catalog); - setError(null); - } catch (e) { - setError(e.message); - } - }, []); - - const refreshSelected = useCallback(async () => { - await load(); - if (selected) await open(selected.id); - }, [load, open, selected]); - - const importCatalog = async (payload) => { - setImporting(true); - setError(null); - try { - const res = await fetch('/api/scenario_catalogs', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(payload), - }); - const data = await res.json().catch(() => ({})); - if (!res.ok) throw new Error(apiErrorMessage(data, `Import refused (HTTP ${res.status}).`)); - const imported = data.catalogs || []; - setNotice(`Imported ${imported.map((catalog) => catalog.key).join(', ') || 'nothing'}.`); - setShowImport(false); - await load(); - if (imported.length === 1) setSelected(imported[0]); - } catch (e) { - setError(e.message); - } finally { - setImporting(false); - } - }; - - const sync = async (catalog, direction) => { - setError(null); - try { - const res = await fetch(`/api/scenario_catalogs/${catalog.id}/sync`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ direction }), - }); - const data = await res.json().catch(() => ({})); - if (!res.ok) throw new Error(apiErrorMessage(data, `Sync failed (HTTP ${res.status}).`)); - setSelected(data.catalog); - setNotice(direction === 'pull' ? 'Catalog restored from storage.' : 'Catalog written to storage.'); - await load(); - } catch (e) { - setError(e.message); - } - }; - - const remove = async (catalog) => { - if (!(await requestConfirm({ - title: `Delete the catalog ${catalog.key}?`, - message: 'Its evaluations and their runs stay.', - confirmLabel: 'Delete catalog', - danger: true, - requireText: catalog.key, - }))) return; - try { - const res = await fetch(`/api/scenario_catalogs/${catalog.id}`, { method: 'DELETE' }); - if (!res.ok) { - const data = await res.json().catch(() => ({})); - throw new Error(apiErrorMessage(data, `Delete failed (HTTP ${res.status}).`)); - } - setSelected(null); - await load(); - } catch (e) { - setError(e.message); - } - }; - - const runSet = async (catalog, set, target) => { - setError(null); - setNotice(null); - try { - const res = await fetch(`/api/scenario_catalogs/${catalog.id}/sets/${set.id}/run`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(target), - }); - const data = await res.json().catch(() => ({})); - if (!res.ok) throw new Error(apiErrorMessage(data, `The run could not start (HTTP ${res.status}).`)); - setNotice(`Run #${data.run.id} of ${set.name} started; it shows under Evaluations as ${data.evaluation.name}.`); - await refreshSelected(); - } catch (e) { - setError(e.message); - } - }; - - if (selected) { - return ( - { setSelected(null); setNotice(null); setError(null); }} - onRun={runSet} - onSync={sync} - onDelete={remove} - onReimport={(document) => importCatalog({ document })} - /> - ); - } - - return ( -
-
-
-

Scenario catalogs

-

- Scenarios kept as YAML, by product and set, imported from a document or a repository and run as evaluations. -

-
- -
- - {error && {error}} - {notice && {notice}} - - {showImport && } - - {catalogs === null ? ( -

Loading…

- ) : catalogs.length === 0 ? ( - -

- No catalogs yet. Import a YAML document, or read the .activeagents/evals directory of a connected repository. -

-
- ) : ( -
- {catalogs.map((catalog) => ( - open(catalog.id)}> -
-
-
{catalog.name}
-
- {catalog.key} - {catalog.source_path ? ` · ${catalog.source_path}` : ` · ${catalog.source_kind}`} -
-
-
- {catalog.product_count} {catalog.product_count === 1 ? 'product' : 'products'} · {catalog.scenario_count} scenarios -
{catalog.synced ? 'synced to storage' : storageAvailable ? 'not synced' : 'database only'}
-
-
-
- ))} -
- )} -
- ); -} - -function ImportForm({ importing, onImport }) { - const [mode, setMode] = useState('document'); - const [document, setDocument] = useState(''); - const [repository, setRepository] = useState(''); - const [ref, setRef] = useState(''); - const [path, setPath] = useState('.activeagents/evals'); - - const submit = (event) => { - event.preventDefault(); - if (mode === 'repository') { - onImport({ repository: repository.trim(), ref: ref.trim() || undefined, path: path.trim() || undefined }); - } else { - onImport({ document }); - } - }; - - return ( - -
-
- - -
- {mode === 'document' ? ( -