From 8a6dfa72b4b03002ca208aa75589953569500281 Mon Sep 17 00:00:00 2001 From: Justin Bowen Date: Wed, 14 Oct 2026 13:22:25 -0700 Subject: [PATCH 1/3] Manage scenarios in the dashboard: rename Catalogs, edit, generate, export and import The Catalogs page becomes Scenarios (/catalogs redirects there), and a collection can now be built and changed in the dashboard rather than only imported: - Products, sets and scenarios are created, edited and deleted in place (ScenarioCatalogEntriesController). Each change is checked as an import checks a document and rewrites the collection's YAML and digest. - Generate runs the project's explorer in its sandbox's browser, shows the browser live, and accepts the exploration's candidates into a chosen set (Exploration#accept_into_set!), so project explorations and generated scenarios are the same records. - Any part of a collection exports as YAML (download or copy), and an import is previewed by key (created, overwritten, removed or kept) before it is applied. A merge mode keeps what the document leaves out, so an exported selection imports back without touching the rest. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01CJAKwnkBaCGr5qjCcmc3kh --- actionagent/app/assets/builds/action_agent.js | 121 ++--- .../api/explorations_controller.rb | 24 + .../scenario_catalog_entries_controller.rb | 188 +++++++ .../api/scenario_catalogs_controller.rb | 93 +++- .../app/models/action_agent/exploration.rb | 92 ++++ .../models/action_agent/scenario_catalog.rb | 49 +- .../action_agent/scenario_catalog_import.rb | 171 +++++- .../scenario_catalog_repository_import.rb | 23 +- actionagent/config/routes.rb | 15 + .../dashboard/EvaluationRunPanels.jsx | 2 +- .../dashboard/ScenarioCatalogsView.jsx | 441 --------------- .../explorations/ExplorationReview.jsx | 32 +- .../scenarios/ScenarioCollection.jsx | 506 ++++++++++++++++++ .../dashboard/scenarios/ScenarioGenerator.jsx | 190 +++++++ .../dashboard/scenarios/ScenarioImport.jsx | 169 ++++++ .../dashboard/scenarios/ScenariosView.jsx | 211 ++++++++ .../components/dashboard/scenarios/fields.jsx | 60 +++ .../components/dashboard/scenarios/request.js | 23 + actionagent/frontend/pages/Dashboard.jsx | 6 +- .../frontend/test/dashboardRoutes.test.mjs | 8 +- .../frontend/test/scenarioViews.test.mjs | 83 +++ actionagent/frontend/test/scenarios.test.mjs | 78 +++ .../frontend/utils/dashboardRoutes.mjs | 10 +- actionagent/frontend/utils/scenarios.mjs | 135 +++++ .../exploration_scenario_set_accept_test.rb | 87 +++ .../test/scenario_catalog_entries_api_test.rb | 179 +++++++ 26 files changed, 2431 insertions(+), 565 deletions(-) create mode 100644 actionagent/app/controllers/action_agent/api/scenario_catalog_entries_controller.rb delete mode 100644 actionagent/frontend/components/dashboard/ScenarioCatalogsView.jsx create mode 100644 actionagent/frontend/components/dashboard/scenarios/ScenarioCollection.jsx create mode 100644 actionagent/frontend/components/dashboard/scenarios/ScenarioGenerator.jsx create mode 100644 actionagent/frontend/components/dashboard/scenarios/ScenarioImport.jsx create mode 100644 actionagent/frontend/components/dashboard/scenarios/ScenariosView.jsx create mode 100644 actionagent/frontend/components/dashboard/scenarios/fields.jsx create mode 100644 actionagent/frontend/components/dashboard/scenarios/request.js create mode 100644 actionagent/frontend/test/scenarioViews.test.mjs create mode 100644 actionagent/frontend/test/scenarios.test.mjs create mode 100644 actionagent/frontend/utils/scenarios.mjs create mode 100644 actionagent/test/exploration_scenario_set_accept_test.rb create mode 100644 actionagent/test/scenario_catalog_entries_api_test.rb diff --git a/actionagent/app/assets/builds/action_agent.js b/actionagent/app/assets/builds/action_agent.js index cceab6b7..fc7d7d10 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),rJ=(e,t)=>{for(var r in t)$2(e,r,{get:t[r],enumerable:!0})},nJ=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of RZ(t))!tJ.call(e,o)&&o!==r&&$2(e,o,{get:()=>t[o],enumerable:!(n=QZ(t,o))||n.enumerable});return e};var q=(e,t,r)=>(r=e!=null?JZ(eJ(e)):{},nJ(t||!e||!e.__esModule?$2(r,"default",{value:e,enumerable:!0}):r,e));var cI=co(It=>{"use strict";var B2=Symbol.for("react.transitional.element"),oJ=Symbol.for("react.portal"),aJ=Symbol.for("react.fragment"),iJ=Symbol.for("react.strict_mode"),sJ=Symbol.for("react.profiler"),lJ=Symbol.for("react.consumer"),uJ=Symbol.for("react.context"),cJ=Symbol.for("react.forward_ref"),dJ=Symbol.for("react.suspense"),pJ=Symbol.for("react.memo"),oI=Symbol.for("react.lazy"),fJ=Symbol.for("react.activity"),eI=Symbol.iterator;function mJ(e){return e===null||typeof e!="object"?null:(e=eI&&e[eI]||e["@@iterator"],typeof e=="function"?e:null)}var aI={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},iI=Object.assign,sI={};function kp(e,t,r){this.props=e,this.context=t,this.refs=sI,this.updater=r||aI}kp.prototype.isReactComponent={};kp.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")};kp.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function lI(){}lI.prototype=kp.prototype;function F2(e,t,r){this.props=e,this.context=t,this.refs=sI,this.updater=r||aI}var U2=F2.prototype=new lI;U2.constructor=F2;iI(U2,kp.prototype);U2.isPureReactComponent=!0;var tI=Array.isArray;function z2(){}var Gr={H:null,A:null,T:null,S:null},uI=Object.prototype.hasOwnProperty;function W2(e,t,r){var n=r.ref;return{$$typeof:B2,type:e,key:t,ref:n!==void 0?n:null,props:r}}function gJ(e,t){return W2(e.type,t,e.props)}function H2(e){return typeof e=="object"&&e!==null&&e.$$typeof===B2}function hJ(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var rI=/\/+/g;function L2(e,t){return typeof e=="object"&&e!==null&&e.key!=null?hJ(""+e.key):t.toString(36)}function yJ(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(z2,z2):(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 Sp(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 B2:case oJ:i=!0;break;case oI:return i=e._init,Sp(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+L2(e,0):n,tI(o)?(r="",i!=null&&(r=i.replace(rI,"$&/")+"/"),Sp(o,t,r,"",function(u){return u})):o!=null&&(H2(o)&&(o=gJ(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(rI,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(tI(e))for(var l=0;l{"use strict";dI.exports=cI()});var wI=co(sn=>{"use strict";function G2(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nG0(s,r))lG0(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lG0(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function G0(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}sn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(pI=performance,sn.unstable_now=function(){return pI.now()}):(K2=Date,fI=K2.now(),sn.unstable_now=function(){return K2.now()-fI});var pI,K2,fI,qs=[],eu=[],bJ=1,ai=null,jo=3,Y2=!1,zg=!1,Bg=!1,X2=!1,hI=typeof setTimeout=="function"?setTimeout:null,yI=typeof clearTimeout=="function"?clearTimeout:null,mI=typeof setImmediate<"u"?setImmediate:null;function Y0(e){for(var t=ys(eu);t!==null;){if(t.callback===null)X0(eu);else if(t.startTime<=e)X0(eu),t.sortIndex=t.expirationTime,G2(qs,t);else break;t=ys(eu)}}function Z2(e){if(Bg=!1,Y0(e),!zg)if(ys(qs)!==null)zg=!0,Cp||(Cp=!0,_p());else{var t=ys(eu);t!==null&&J2(Z2,t.startTime-e)}}var Cp=!1,Fg=-1,vI=5,xI=-1;function bI(){return X2?!0:!(sn.unstable_now()-xIe&&bI());){var n=ai.callback;if(typeof n=="function"){ai.callback=null,jo=ai.priorityLevel;var o=n(ai.expirationTime<=e);if(e=sn.unstable_now(),typeof o=="function"){ai.callback=o,Y0(e),t=!0;break t}ai===ys(qs)&&X0(qs),Y0(e)}else X0(qs);ai=ys(qs)}if(ai!==null)t=!0;else{var a=ys(eu);a!==null&&J2(Z2,a.startTime-e),t=!1}}break e}finally{ai=null,jo=r,Y2=!1}t=void 0}}finally{t?_p():Cp=!1}}}var _p;typeof mI=="function"?_p=function(){mI(V2)}:typeof MessageChannel<"u"?(q2=new MessageChannel,gI=q2.port2,q2.port1.onmessage=V2,_p=function(){gI.postMessage(null)}):_p=function(){hI(V2,0)};var q2,gI;function J2(e,t){Fg=hI(function(){e(sn.unstable_now())},t)}sn.unstable_IdlePriority=5;sn.unstable_ImmediatePriority=1;sn.unstable_LowPriority=4;sn.unstable_NormalPriority=3;sn.unstable_Profiling=null;sn.unstable_UserBlockingPriority=2;sn.unstable_cancelCallback=function(e){e.callback=null};sn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,G2(eu,e),ys(qs)===null&&e===ys(eu)&&(Bg?(yI(Fg),Fg=-1):Bg=!0,J2(Z2,r-n))):(e.sortIndex=o,G2(qs,e),zg||Y2||(zg=!0,Cp||(Cp=!0,_p()))),e};sn.unstable_shouldYield=bI;sn.unstable_wrapCallback=function(e){var t=jo;return function(){var r=jo;jo=t;try{return e.apply(this,arguments)}finally{jo=r}}}});var kI=co((NSe,SI)=>{"use strict";SI.exports=wI()});var CI=co(Jo=>{"use strict";var wJ=X();function _I(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function AI(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(AI)}catch(e){console.error(e)}}AI(),EI.exports=CI()});var B8=co(wb=>{"use strict";var Qn=kI(),RD=X(),_J=Wg();function ke(e){var t="https://react.dev/errors/"+e;if(1Mp||(e.current=$C[Mp],$C[Mp]=null,Mp--)}function Fr(e,t){Mp++,$C[Mp]=e.current,e.current=t}var ws=Ss(null),mh=Ss(null),fu=Ss(null),Ox=Ss(null);function Px(e,t){switch(Fr(fu,t),Fr(mh,e),Fr(ws,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?$D(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=$D(t),e=C8(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}mo(ws),Fr(ws,e)}function Zp(){mo(ws),mo(mh),mo(fu)}function LC(e){e.memoizedState!==null&&Fr(Ox,e);var t=ws.current,r=C8(t,e.type);t!==r&&(Fr(mh,e),Fr(ws,r))}function Mx(e){mh.current===e&&(mo(ws),mo(mh)),Ox.current===e&&(mo(Ox),Ch._currentValue=Mc)}var Q2,OI;function Nc(e){if(Q2===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);Q2=t&&t[1]||"",OI=-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{R2=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?Nc(r):""}function TJ(e,t){switch(e.tag){case 26:case 27:case 5:return Nc(e.type);case 16:return Nc("Lazy");case 13:return e.child!==t&&t!==null?Nc("Suspense Fallback"):Nc("Suspense");case 19:return Nc("SuspenseList");case 0:case 15:return eC(e.type,!1);case 11:return eC(e.type.render,!1);case 1:return eC(e.type,!0);case 31:return Nc("Activity");default:return""}}function PI(e){try{var t="",r=null;do t+=TJ(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-($J(e)/LJ|0)|0}var Q0=256,R0=262144,ex=4194304;function Tc(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 ab(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=Tc(n):(i&=s,i!==0?o=Tc(i):r||(r=s&~e,r!==0&&(o=Tc(r))))):(s=n&~a,s!==0?o=Tc(s):i!==0?o=Tc(i):r||(r=n&~e,r!==0&&(o=Tc(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 Oh(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function BJ(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 u4(){var e=ex;return ex<<=1,(ex&62914560)===0&&(ex=4194304),e}function rC(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function Ph(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function FJ(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 qJ=/[\n"\\]/g;function ci(e){return e.replace(qJ,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function UC(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=""+si(t)):e.value!==""+si(t)&&(e.value=""+si(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?WC(e,i,si(t)):r!=null?WC(e,i,si(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=""+si(s):e.removeAttribute("name")}function v4(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)){FC(e);return}r=r!=null?""+si(r):"",t=t!=null?""+si(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),FC(e)}function WC(e,t,r){t==="number"&&Dx(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Kp(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"),KC=!1;if(il)try{Ap={},Object.defineProperty(Ap,"passive",{get:function(){KC=!0}}),window.addEventListener("test",Ap,Ap),window.removeEventListener("test",Ap,Ap)}catch{KC=!1}var Ap,uu=null,DA=null,yx=null;function k4(){if(yx)return yx;var e,t=DA,r=t.length,n,o="value"in uu?uu.value:uu.textContent,a=o.length;for(e=0;e=th),WI=" ",HI=!1;function C4(e,t){switch(e){case"keyup":return bQ.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function A4(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var jp=!1;function SQ(e,t){switch(e){case"compositionend":return A4(t);case"keypress":return t.which!==32?null:(HI=!0,WI);case"textInput":return e=t.data,e===WI&&HI?null:e;default:return null}}function kQ(e,t){if(jp)return e==="compositionend"||!$A&&C4(e,t)?(e=k4(),yx=DA=uu=null,jp=!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=GI(r)}}function O4(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?O4(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function P4(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Dx(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=Dx(e.document)}return t}function LA(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 PQ=il&&"documentMode"in document&&11>=document.documentMode,$p=null,VC=null,nh=null,qC=!1;function XI(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;qC||$p==null||$p!==Dx(n)||(n=$p,"selectionStart"in n&&LA(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}),nh&&yh(nh,n)||(nh=n,n=Qx(VC,"onSelect"),0>=i,o-=i,vs=1<<32-za(t)+o|r<k?(_=A,A=null):_=A.sibling;var C=p(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&&Qs(h,k),S;if(A===null){for(;kk?(_=A,A=null):_=A.sibling;var E=p(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&&Qs(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&&Qs(h,k),S}for(A=n(A);!C.done;k++,C=v.next())C=f(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&&Qs(h,k),S}function b(h,g,v,x){if(typeof v=="object"&&v!==null&&v.type===Pp&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case J0:e:{for(var S=v.key;g!==null;){if(g.key===S){if(S=v.type,S===Pp){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===ru&&Oc(S)===g.type){r(h,g.sibling),x=o(g,v.props),Vg(x,v),x.return=h,h=x;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===Pp?(x=Ic(v.props.children,h.mode,x,v.key),x.return=h,h=x):(x=xx(v.type,v.key,v.props,null,h.mode,x),Vg(x,v),x.return=h,h=x)}return i(h);case Zg: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=cC(v,h.mode,x),x.return=h,h=x}return i(h);case ru:return v=Oc(v),b(h,g,v,x)}if(Jg(v))return m(h,g,v,x);if(Hg(v)){if(S=Hg(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,ix(v),x);if(v.$$typeof===el)return b(h,g,ax(h,v),x);sx(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=uC(v,h.mode,x),x.return=h,h=x),i(h)):r(h,g)}return function(h,g,v,x){try{bh=0;var S=b(h,g,v,x);return Gp=null,S}catch(A){if(A===df||A===db)throw A;var w=Da(29,A,null,h.mode);return w.lanes=x,w.return=h,w}}}var Bc=q4(!0),G4=q4(!1),nu=!1;function qA(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function RC(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 gu(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function hu(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=$x(e),z4(e,null,r),t}return cb(e,n,t,r),$x(e)}function ah(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,d4(e,r)}}function pC(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 eA=!1;function ih(){if(eA){var e=qp;if(e!==null)throw e}}function sh(e,t,r,n){eA=!1;var o=e.updateQueue;nu=!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 p=s.lane&-536870913,f=p!==s.lane;if(f?(er&p)===p:(n&p)===p){p!==0&&p===Rp&&(eA=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,y=s;p=t;var b=r;switch(y.tag){case 1:if(m=y.payload,typeof m=="function"){d=m.call(b,d,p);break e}d=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=y.payload,p=typeof m=="function"?m.call(b,d,p):m,p==null)break e;d=Zr({},d,p);break e;case 2:nu=!0}}p=s.callback,p!==null&&(e.flags|=64,f&&(e.flags|=8192),f=o.callbacks,f===null?o.callbacks=[p]:f.push(p))}else f={lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},c===null?(u=c=f,l=d):c=c.next=f,i|=p;if(s=s.next,s===null){if(s=o.shared.pending,s===null)break;f=s,s=f.next,f.next=null,o.lastBaseUpdate=f,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),Cu|=i,e.lanes=i,e.memoizedState=d}}function Y4(e,t){if(typeof e!="function")throw Error(ke(191,e));e.call(t)}function X4(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,aE(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=FQ(l,n);lh(e,t,c,Ba(e))}else lh(e,t,n,Ba(e))}catch(d){lh(e,t,{then:function(){},status:"rejected",reason:d},Ba())}finally{wr.p=a,i!==null&&s.types!==null&&(i.types=s.types),St.T=i}}function qQ(){}function aA(e,t,r,n){if(e.tag!==5)throw Error(ke(476));var o=bj(e).queue;xj(e,o,t,Mc,r===null?qQ:function(){return wj(e),r(n)})}function bj(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Mc,baseState:Mc,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ll,lastRenderedState:Mc},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ll,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function wj(e){var t=bj(e);t.next===null&&(t=e.alternate.memoizedState),lh(e,t.next.queue,{},Ba())}function oE(){return Ao(Ch)}function Sj(){return In().memoizedState}function kj(){return In().memoizedState}function GQ(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=Ba();e=gu(r);var n=hu(t,e,r);n!==null&&(ma(n,t,r),ah(n,t,r)),t={cache:HA()},e.payload=t;return}t=t.return}}function YQ(e,t,r){var n=Ba();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},gb(e)?Cj(t,r):(r=BA(e,t,r,n),r!==null&&(ma(r,e,n),Aj(r,t,n)))}function _j(e,t,r){var n=Ba();lh(e,t,r,n)}function lh(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(gb(e))Cj(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,Fa(s,i))return cb(e,t,o,0),Dr===null&&ub(),!1}catch{}if(r=BA(e,t,o,n),r!==null)return ma(r,e,n),Aj(r,t,n),!0}return!1}function aE(e,t,r,n){if(n={lane:2,revertLane:mE(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},gb(e)){if(t)throw Error(ke(479))}else t=BA(e,r,n,2),t!==null&&ma(t,e,2)}function gb(e){var t=e.alternate;return e===$t||t!==null&&t===$t}function Cj(e,t){Yp=Wx=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Aj(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,d4(e,r)}}var Sh={readContext:Ao,use:fb,useCallback:Sn,useContext:Sn,useEffect:Sn,useImperativeHandle:Sn,useLayoutEffect:Sn,useInsertionEffect:Sn,useMemo:Sn,useReducer:Sn,useRef:Sn,useState:Sn,useDebugValue:Sn,useDeferredValue:Sn,useTransition:Sn,useSyncExternalStore:Sn,useId:Sn,useHostTransitionStatus:Sn,useFormState:Sn,useActionState:Sn,useOptimistic:Sn,useMemoCache:Sn,useCacheRefresh:Sn};Sh.useEffectEvent=Sn;var Ej={readContext:Ao,use:fb,useCallback:function(e,t){return Qo().memoizedState=[e,t===void 0?null:t],e},useContext:Ao,useEffect:cD,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,Sx(4194308,4,mj.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Sx(4194308,4,e,t)},useInsertionEffect:function(e,t){Sx(4,2,e,t)},useMemo:function(e,t){var r=Qo();t=t===void 0?null:t;var n=e();if(Fc){lu(!0);try{e()}finally{lu(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=Qo();if(r!==void 0){var o=r(t);if(Fc){lu(!0);try{r(t)}finally{lu(!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=YQ.bind(null,$t,e),[n.memoizedState,e]},useRef:function(e){var t=Qo();return e={current:e},t.memoizedState=e},useState:function(e){e=nA(e);var t=e.queue,r=_j.bind(null,$t,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:rE,useDeferredValue:function(e,t){var r=Qo();return nE(r,e,t)},useTransition:function(){var e=nA(!1);return e=xj.bind(null,$t,e.queue,!0,!1),Qo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=$t,o=Qo();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||ej(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,cD(rj.bind(null,n,a,e),[e]),n.flags|=2048,tf(9,{destroy:void 0},tj.bind(null,n,a,r,t),null),r},useId:function(){var e=Qo(),t=Dr.identifierPrefix;if(ar){var r=xs,n=vs;r=(n&~(1<<32-za(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=Hx++,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[_o]=t,a[ga]=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(Eo(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&&Ys(t)}}return Yr(t),bC(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Ys(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(ke(166));if(e=fu.current,Ep(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=Co,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[_o]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||_8(e.nodeValue,r)),e||ku(t,!0)}else e=Rx(e).createTextNode(n),e[_o]=t,t.stateNode=e}return Yr(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=Ep(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[_o]=t}else Lc(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Yr(t),e=!1}else r=dC(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(Ia(t),t):(Ia(t),null);if((t.flags&128)!==0)throw Error(ke(558))}return Yr(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=Ep(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[_o]=t}else Lc(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Yr(t),o=!1}else o=dC(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(Ia(t),t):(Ia(t),null)}return Ia(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),lx(t,t.updateQueue),Yr(t),null);case 4:return Zp(),e===null&&gE(t.stateNode.containerInfo),Yr(t),null;case 10:return ol(t.type),Yr(t),null;case 19:if(mo(Mn),n=t.memoizedState,n===null)return Yr(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)qg(n,!1);else{if(kn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=Ux(e),a!==null){for(t.flags|=128,qg(n,!1),e=a.updateQueue,t.updateQueue=e,lx(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)B4(r,e),r=r.sibling;return Fr(Mn,Mn.current&1|2),ar&&Qs(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&$a()>Gx&&(t.flags|=128,o=!0,qg(n,!1),t.lanes=4194304)}else{if(!o)if(e=Ux(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,lx(t,e),qg(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!ar)return Yr(t),null}else 2*$a()-n.renderingStartTime>Gx&&r!==536870912&&(t.flags|=128,o=!0,qg(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=$a(),e.sibling=null,r=Mn.current,Fr(Mn,o?r&1|2:r&1),ar&&Qs(t,n.treeForkCount),e):(Yr(t),null);case 22:case 23:return Ia(t),GA(),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&&(Yr(t),t.subtreeFlags&6&&(t.flags|=8192)):Yr(t),r=t.updateQueue,r!==null&&lx(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&&mo(Dc),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),ol(Wn),Yr(t),null;case 25:return null;case 30:return null}throw Error(ke(156,t.tag))}function RQ(e,t){switch(WA(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ol(Wn),Zp(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Mx(t),null;case 31:if(t.memoizedState!==null){if(Ia(t),t.alternate===null)throw Error(ke(340));Lc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ia(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ke(340));Lc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return mo(Mn),null;case 4:return Zp(),null;case 10:return ol(t.type),null;case 22:case 23:return Ia(t),GA(),e!==null&&mo(Dc),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ol(Wn),null;case 25:return null;default:return null}}function Bj(e,t){switch(WA(t),t.tag){case 3:ol(Wn),Zp();break;case 26:case 27:case 5:Mx(t);break;case 4:Zp();break;case 31:t.memoizedState!==null&&Ia(t);break;case 13:Ia(t);break;case 19:mo(Mn);break;case 10:ol(t.type);break;case 22:case 23:Ia(t),GA(),e!==null&&mo(Dc);break;case 24:ol(Wn)}}function $h(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 _u(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 Fj(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{X4(t,r)}catch(n){Er(e,e.return,n)}}}function Uj(e,t,r){r.props=Uc(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Er(e,t,n)}}function uh(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 bs(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 Wj(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 wC(e,t,r){try{var n=e.stateNode;xR(n,e.type,r,t),n[ga]=t}catch(o){Er(e,e.return,o)}}function Hj(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Eu(e.type)||e.tag===4}function SC(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Hj(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&&Eu(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 cA(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=tl));else if(n!==4&&(n===27&&Eu(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(cA(e,t,r),e=e.sibling;e!==null;)cA(e,t,r),e=e.sibling}function qx(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&&Eu(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(qx(e,t,r),e=e.sibling;e!==null;)qx(e,t,r),e=e.sibling}function Kj(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);Eo(t,n,r),t[_o]=e,t[ga]=r}catch(a){Er(e,e.return,a)}}var Rs=!1,Un=!1,kC=!1,kD=typeof WeakSet=="function"?WeakSet:Set,po=null;function eR(e,t){if(e=e.containerInfo,yA=nb,e=P4(e),LA(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,p=null;t:for(;;){for(var f;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),(f=d.firstChild)!==null;)p=d,d=f;for(;;){if(d===e)break t;if(p===r&&++u===o&&(s=i),p===a&&++c===n&&(l=i),(f=d.nextSibling)!==null)break;d=p,p=d.parentNode}d=f}r=s===-1||l===-1?null:{start:s,end:l}}else r=null}r=r||{start:0,end:0}}else r=null;for(vA={focusedElem:e,selectionRange:r},nb=!1,po=t;po!==null;)if(t=po,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,po=e;else for(;po!==null;){switch(t=po,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"))),Eo(a,n,r),a[_o]=e,fo(a),n=a;break e;case"link":var i=VD("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sb&&(i=b,b=y,y=i);var h=YI(s,y),g=YI(s,b);if(h&&g&&(f.rangeCount!==1||f.anchorNode!==h.node||f.anchorOffset!==h.offset||f.focusNode!==g.node||f.focusOffset!==g.offset)){var v=d.createRange();v.setStart(h.node,h.offset),f.removeAllRanges(),y>b?(f.addRange(v),f.extend(g.node,g.offset)):(v.setEnd(g.node,g.offset),f.addRange(v))}}}}for(d=[],f=s;f=f.parentNode;)f.nodeType===1&&d.push({element:f,left:f.scrollLeft,top:f.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;sr?32:r,St.T=null,r=fA,fA=null;var a=vu,i=al;if(Jn=0,nf=vu=null,al=0,(br&6)!==0)throw Error(ke(331));var s=br;if(br|=4,t8(a.current),Qj(a,a.current,i,r),br=s,Lh(0,!1),La&&typeof La.onPostCommitFiberRoot=="function")try{La.onPostCommitFiberRoot(Th,a)}catch{}return!0}finally{wr.p=o,St.T=n,h8(e,t)}}function ED(e,t,r){t=di(r,t),t=sA(e.stateNode,t,2),e=hu(e,t,2),e!==null&&(Ph(e,2),ks(e))}function Er(e,t,r){if(e.tag===3)ED(e,e,r);else for(;t!==null;){if(t.tag===3){ED(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(yu===null||!yu.has(n))){e=di(r,e),r=Mj(2),n=hu(t,r,2),n!==null&&(Ij(r,n,t,e),Ph(n,2),ks(n));break}}t=t.return}}function CC(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new nR;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)||(dE=!0,o.add(r),e=lR.bind(null,e,t,r),t.then(e,e))}function lR(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&&(kn===4||kn===3&&(er&62914560)===er&&300>$a()-hb?(br&2)===0&&of(e,0):pE|=r,rf===er&&(rf=0)),ks(e)}function v8(e,t){t===0&&(t=u4()),e=Vc(e,t),e!==null&&(Ph(e,t),ks(e))}function uR(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),v8(e,r)}function cR(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),v8(e,r)}function dR(e,t){return NA(e,t)}var Zx=null,Op=null,gA=!1,Jx=!1,AC=!1,pu=0;function ks(e){e!==Op&&e.next===null&&(Op===null?Zx=Op=e:Op=Op.next=e),Jx=!0,gA||(gA=!0,fR())}function Lh(e,t){if(!AC&&Jx){AC=!0;do for(var r=!1,n=Zx;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-za(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,ND(n,a))}else a=er,a=ab(n,n===Dr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Oh(n,a)||(r=!0,ND(n,a));n=n.next}while(r);AC=!1}}function pR(){x8()}function x8(){Jx=gA=!1;var e=0;pu!==0&&wR()&&(e=pu);for(var t=$a(),r=null,n=Zx;n!==null;){var o=n.next,a=b8(n,t);a===0?(n.next=null,r===null?Zx=o:r.next=o,o===null&&(Op=r)):(r=n,(e!==0||(a&3)!==0)&&(Jx=!0)),n=o}Jn!==0&&Jn!==5||Lh(e,!1),pu!==0&&(pu=0)}function b8(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&&jD(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function T8(e,t,r){var n=ff;if(n&&typeof t=="string"&&t){var o=ci(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),WD.has(o)||(WD.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),Eo(t,"link",e),fo(t),n.head.appendChild(t)))}}function OR(e){dl.D(e),T8("dns-prefetch",e,null)}function PR(e,t){dl.C(e,t),T8("preconnect",e,t)}function MR(e,t,r){dl.L(e,t,r);var n=ff;if(n&&e&&t){var o='link[rel="preload"][as="'+ci(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+ci(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+ci(r.imageSizes)+'"]')):o+='[href="'+ci(e)+'"]';var a=o;switch(t){case"style":a=af(e);break;case"script":a=mf(e)}gi.has(a)||(e=Zr({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),gi.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(zh(a))||t==="script"&&n.querySelector(Bh(a))||(t=n.createElement("link"),Eo(t,"link",e),fo(t),n.head.appendChild(t)))}}function IR(e,t){dl.m(e,t);var r=ff;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+ci(n)+'"][href="'+ci(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=mf(e)}if(!gi.has(a)&&(e=Zr({rel:"modulepreload",href:e},t),gi.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Bh(a)))return}n=r.createElement("link"),Eo(n,"link",e),fo(n),r.head.appendChild(n)}}}function DR(e,t,r){dl.S(e,t,r);var n=ff;if(n&&e){var o=Hp(n).hoistableStyles,a=af(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(zh(a)))s.loading=5;else{e=Zr({rel:"stylesheet",href:e,"data-precedence":t},r),(r=gi.get(a))&&hE(e,r);var l=i=n.createElement("link");fo(l),Eo(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,Ax(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function jR(e,t){dl.X(e,t);var r=ff;if(r&&e){var n=Hp(r).hoistableScripts,o=mf(e),a=n.get(o);a||(a=r.querySelector(Bh(o)),a||(e=Zr({src:e,async:!0},t),(t=gi.get(o))&&yE(e,t),a=r.createElement("script"),fo(a),Eo(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function $R(e,t){dl.M(e,t);var r=ff;if(r&&e){var n=Hp(r).hoistableScripts,o=mf(e),a=n.get(o);a||(a=r.querySelector(Bh(o)),a||(e=Zr({src:e,async:!0,type:"module"},t),(t=gi.get(o))&&yE(e,t),a=r.createElement("script"),fo(a),Eo(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function HD(e,t,r,n){var o=(o=fu.current)?eb(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=af(r.href),r=Hp(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=af(r.href);var a=Hp(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(zh(e)))&&!a._p&&(i.instance=a,i.state.loading=5),gi.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},gi.set(e,r),a||LR(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=mf(r),r=Hp(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 af(e){return'href="'+ci(e)+'"'}function zh(e){return'link[rel="stylesheet"]['+e+"]"}function O8(e){return Zr({},e,{"data-precedence":e.precedence,precedence:null})}function LR(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}),Eo(t,"link",r),fo(t),e.head.appendChild(t))}function mf(e){return'[src="'+ci(e)+'"]'}function Bh(e){return"script[async]"+e}function KD(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+ci(r.href)+'"]');if(n)return t.instance=n,fo(n),n;var o=Zr({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),fo(n),Eo(n,"style",o),Ax(n,r.precedence,e),t.instance=n;case"stylesheet":o=af(r.href);var a=e.querySelector(zh(o));if(a)return t.state.loading|=4,t.instance=a,fo(a),a;n=O8(r),(o=gi.get(o))&&hE(n,o),a=(e.ownerDocument||e).createElement("link"),fo(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Eo(a,"link",n),t.state.loading|=4,Ax(a,r.precedence,e),t.instance=a;case"script":return a=mf(r.src),(o=e.querySelector(Bh(a)))?(t.instance=o,fo(o),o):(n=r,(o=gi.get(a))&&(n=Zr({},r),yE(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),fo(o),Eo(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,Ax(n,r.precedence,e));return t.instance}function Ax(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 zR(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 P8(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function BR(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=af(n.href),a=t.querySelector(zh(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=tb.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,fo(a);return}a=t.ownerDocument||t,n=O8(n),(o=gi.get(o))&&hE(n,o),a=a.createElement("link"),fo(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Eo(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=tb.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var OC=0;function FR(e,t){return e.stylesheets&&e.count===0&&Nx(e,e.stylesheets),0OC?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function tb(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Nx(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var rb=null;function Nx(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,rb=new Map,t.forEach(UR,e),rb=null,tb.call(e))}function UR(e,t){if(!(t.state.loading&4)){var r=rb.get(e);if(r)var n=r.get(null);else{r=new Map,rb.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function F8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(F8)}catch(e){console.error(e)}}F8(),U8.exports=B8()});var J$=co(Z$=>{"use strict";var jf=X();function ote(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ate=typeof Object.is=="function"?Object.is:ote,ite=jf.useState,ste=jf.useEffect,lte=jf.useLayoutEffect,ute=jf.useDebugValue;function cte(e,t){var r=t(),n=ite({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return lte(function(){o.value=r,o.getSnapshot=t,pN(o)&&a({inst:o})},[e,r,t]),ste(function(){return pN(o)&&a({inst:o}),e(function(){pN(o)&&a({inst:o})})},[e]),ute(r),r}function pN(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!ate(e,r)}catch{return!0}}function dte(e,t){return t()}var pte=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?dte:cte;Z$.useSyncExternalStore=jf.useSyncExternalStore!==void 0?jf.useSyncExternalStore:pte});var R$=co((dAe,Q$)=>{"use strict";Q$.exports=J$()});var tL=co(eL=>{"use strict";var m1=X(),fte=R$();function mte(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var gte=typeof Object.is=="function"?Object.is:mte,hte=fte.useSyncExternalStore,yte=m1.useRef,vte=m1.useEffect,xte=m1.useMemo,bte=m1.useDebugValue;eL.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=yte(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=xte(function(){function l(f){if(!u){if(u=!0,c=f,f=n(f),o!==void 0&&i.hasValue){var m=i.value;if(o(m,f))return d=m}return d=f}if(m=d,gte(c,f))return m;var y=n(f);return o!==void 0&&o(m,y)?(c=f,m):(c=f,d=y)}var u=!1,c,d,p=r===void 0?null:r;return[function(){return l(t())},p===null?void 0:function(){return l(p())}]},[t,r,n,o]);var s=hte(e,a[0],a[1]);return vte(function(){i.hasValue=!0,i.value=s},[s]),bte(s),s}});var nL=co((fAe,rL)=>{"use strict";rL.exports=tL()});var K6=co(H6=>{"use strict";var sy=X();function _ne(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Cne=typeof Object.is=="function"?Object.is:_ne,Ane=sy.useSyncExternalStore,Ene=sy.useRef,Nne=sy.useEffect,Tne=sy.useMemo,One=sy.useDebugValue;H6.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Ene(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Tne(function(){function l(f){if(!u){if(u=!0,c=f,f=n(f),o!==void 0&&i.hasValue){var m=i.value;if(o(m,f))return d=m}return d=f}if(m=d,Cne(c,f))return m;var y=n(f);return o!==void 0&&o(m,y)?(c=f,m):(c=f,d=y)}var u=!1,c,d,p=r===void 0?null:r;return[function(){return l(t())},p===null?void 0:function(){return l(p())}]},[t,r,n,o]);var s=Ane(e,a[0],a[1]);return Nne(function(){i.hasValue=!0,i.value=s},[s]),One(s),s}});var q6=co((pNe,V6)=>{"use strict";V6.exports=K6()});var sT=co((yB,_w)=>{(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,p=7,f=9007199254740991,m=s(f/p),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)*p;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*p+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,fe=this,re=fe.constructor,_e=fe.d,de=(N=new re(N)).d;if(!fe.s||!N.s)return new re(0);for(N.s*=fe.s,$=fe.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,fe=+(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(($=fe<0?-fe:fe)<=f){for(I=new K(c),O=Math.ceil(T/p+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,fe=N.constructor,re=fe.precision;if(!N.s||!O.s)return O.s||(O=new fe(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/p),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,fe,re,_e,de,se,Z,ee,L,B,V,M,ne,U,oe,ve,Ze=T.constructor,Ht=T.s==I.s?1:-1,Mt=T.d,pe=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=pe.length,ne=Mt.length,de=new Ze(Ht),se=de.d=[],ue=0;pe[ue]==(Mt[ue]||0);)++ue;if(pe[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/p+2|0,ue=0,oe==1)for(fe=0,pe=pe[0],B++;(ue1&&(pe=N(pe,fe),Mt=N(Mt,fe),oe=pe.length,ne=Mt.length),M=oe,Z=Mt.slice(0,oe),ee=Z.length;ee=d/2&&++U;do fe=0,Q=O(pe,Z,oe,ee),Q<0?(L=Z[0],oe!=ee&&(L=L*d+(Z[1]||0)),fe=L/U|0,fe>1?(fe>=d&&(fe=d-1),re=N(pe,fe),_e=re.length,ee=Z.length,Q=O(re,Z,_e,ee),Q==1&&(fe--,$(re,oe<_e?ve:pe,_e))):(fe==0&&(Q=fe=1),re=pe.slice()),_e=re.length,_e16)throw Error(i+S(N));if(!N.s)return new fe(c);for(O==null?(n=!1,Q=re):Q=O,H=new fe(.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 fe(c),fe.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 fe.precision=re,O==null?(n=!0,C(P,re)):P}P=H}}function S(N){for(var O=N.e*p,$=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,fe,re=1,_e=10,de=N,se=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(se),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),fe=C(de.times(de),ue),I=3;;){if(H=C(H.times(fe),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($/p),N.d=[],T=($+1)%p,$<0&&(T+=p),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,fe,re=N.d;for(H=1,P=re[0];P>=10;P/=10)H++;if(T=O-H,T<0)T+=p,I=O,ue=re[fe=0];else{if(fe=Math.ceil((T+1)/p),P=re.length,fe>=P)return N;for(ue=P=re[fe],H=1;P>=10;P/=10)H++;T%=p,I=T-p+H}if($!==void 0&&(P=l(10,H-I-1),Q=ue/P%10|0,K=O<0||re[fe+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[fe-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,(p-O%p)%p),N.e=s(-O/p)||0):(re.length=1,re[0]=N.e=N.s=0),N;if(T==0?(re.length=fe,P=1,fe--):(re.length=fe+1,P=l(10,p-T),re[fe]=I>0?(ue/l(10,H-I)%l(10,I)|0)*P:0),K)for(;;)if(fe==0){(re[0]+=P)==d&&(re[0]=1,++N.e);break}else{if(re[fe]+=P,re[fe]!=d)break;re[fe--]=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,fe,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(fe=H<0,fe?($=K,H=-H,Q=re.length):($=re,T=ue,Q=K.length),I=Math.max(Math.ceil(de/p),Q)+2,H>I&&(H=I,$.length=1),$.reverse(),I=H;I--;)$.push(0);$.reverse()}else{for(I=K.length,Q=re.length,fe=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 _w<"u"&&_w.exports?_w.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(yB)});var pF=co((e8e,qO)=>{"use strict";var Ice=Object.prototype.hasOwnProperty,aa="~";function Qy(){}Object.create&&(Qy.prototype=Object.create(null),new Qy().__proto__||(aa=!1));function Dce(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function dF(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new Dce(r,n||e,o),i=aa?aa+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 YS(e,t){--e._eventsCount===0?e._events=new Qy:delete e._events[t]}function zo(){this._events=new Qy,this._eventsCount=0}zo.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Ice.call(r,n)&&t.push(aa?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};zo.prototype.listeners=function(t){var r=aa?aa+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 r5=Symbol.for("react.transitional.element"),n5=Symbol.for("react.portal"),lk=Symbol.for("react.fragment"),uk=Symbol.for("react.strict_mode"),ck=Symbol.for("react.profiler"),dk=Symbol.for("react.consumer"),pk=Symbol.for("react.context"),fk=Symbol.for("react.forward_ref"),mk=Symbol.for("react.suspense"),gk=Symbol.for("react.suspense_list"),hk=Symbol.for("react.memo"),yk=Symbol.for("react.lazy"),xpe=Symbol.for("react.view_transition"),bpe=Symbol.for("react.client.reference");function Oi(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case r5:switch(e=e.type,e){case lk:case ck:case uk:case mk:case gk:case xpe:return e;default:switch(e=e&&e.$$typeof,e){case pk:case fk:case yk:case hk:return e;case dk:return e;default:return t}}case n5:return t}}}Lr.ContextConsumer=dk;Lr.ContextProvider=pk;Lr.Element=r5;Lr.ForwardRef=fk;Lr.Fragment=lk;Lr.Lazy=yk;Lr.Memo=hk;Lr.Portal=n5;Lr.Profiler=ck;Lr.StrictMode=uk;Lr.Suspense=mk;Lr.SuspenseList=gk;Lr.isContextConsumer=function(e){return Oi(e)===dk};Lr.isContextProvider=function(e){return Oi(e)===pk};Lr.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===r5};Lr.isForwardRef=function(e){return Oi(e)===fk};Lr.isFragment=function(e){return Oi(e)===lk};Lr.isLazy=function(e){return Oi(e)===yk};Lr.isMemo=function(e){return Oi(e)===hk};Lr.isPortal=function(e){return Oi(e)===n5};Lr.isProfiler=function(e){return Oi(e)===ck};Lr.isStrictMode=function(e){return Oi(e)===uk};Lr.isSuspense=function(e){return Oi(e)===mk};Lr.isSuspenseList=function(e){return Oi(e)===gk};Lr.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===lk||e===ck||e===uk||e===mk||e===gk||typeof e=="object"&&e!==null&&(e.$$typeof===yk||e.$$typeof===hk||e.$$typeof===pk||e.$$typeof===dk||e.$$typeof===fk||e.$$typeof===bpe||e.getModuleId!==void 0)};Lr.typeOf=Oi});var _U=co((rLe,kU)=>{"use strict";kU.exports=SU()});var VZ=q(X()),qZ=q(W8());var ht=q(X());var et=q(X());var fr=q(X()),Gc={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"}},Yc={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"}},gf={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 XR=({id:e="mascot"})=>fr.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},fr.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},fr.default.createElement("g",{fillRule:"nonzero"},fr.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"})),fr.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"}),fr.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"}),fr.default.createElement("g",{transform:"translate(75.105, 196.182)"},fr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),fr.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),fr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),fr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),fr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),fr.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),fr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),fr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),fr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},fr.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},fr.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"})),fr.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"})),fr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},fr.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"})),fr.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},fr.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"}),fr.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 gn({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return fr.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&fr.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=Gc[c];return d?fr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),fr.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"},fr.default.createElement("title",null,"ActiveAgent"),fr.default.createElement(XR,null)),n&&r.length>0&&fr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=Yc[c];return d?fr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var ya=q(X());var Xi=q(X()),H8=(0,Xi.createContext)();function K8({children:e}){let[t,r]=(0,Xi.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,Xi.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,Xi.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 Xi.default.createElement(H8.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function lt(){let e=(0,Xi.useContext)(H8);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function hf({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=lt(),[u,c]=ya.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"},p=f=>f==="good"?l?"#4ade80":"#16a34a":f==="warn"?l?"#facc15":"#ca8a04":f==="bad"?l?"#f87171":"#dc2626":f==="muted"?d.textMuted:d.textPrimary;return ya.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:f=>{i&&(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),i(f))},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"}},ya.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},ya.default.createElement("div",{style:{minWidth:0}},ya.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&&ya.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&ya.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&ya.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>ya.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},ya.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),ya.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&ya.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&ya.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function SE(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var _s="~ estimated from tokens \xD7 model rates",Sb=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),G8=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),yf=e=>Sb(e)?`${G8(Number(e)*100)}%`:"\u2014",Kn=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${G8(n*100/r)}%`},Ro=e=>yf(e),kb=e=>`pass \u2265 ${yf(e)}`,Jr=(e,{estimated:t=!1}={})=>{if(!Sb(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},V8=e=>Math.round(Number(e)||0).toLocaleString("en-US"),q8=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},ZR=["pattern","default"],vf=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!Sb(r.input)||!Sb(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${V8(e)} in \xD7 ${q8(r.input)} + ${V8(t)} out \xD7 ${q8(r.output)} \xB7 ${n} rate${ZR.includes(n)?" (fallback rate)":""}`};var JR=[{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 kE({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,p]=(0,et.useState)(""),[f,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=!f||k.provider===f,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=>p(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:f,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"},JR.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(hf,{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:SE(_.success_rate!=null?_.success_rate/100:null)},{label:"Avg time",value:x(_.avg_duration_ms)},{label:"Eval",title:_.eval_samples_evaluated?`${Kn(_.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:yf(_.eval_score),tone:SE(_.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(gn,{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=q(X());var go={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 Y8(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 xf={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"]},_b=Object.keys(xf),QR=300*1e3,X8=Y8(RR,{ttlMs:QR,keep:e=>e!==null});async function Z8(e){return await X8(e)??(xf[e]||[])}function _E(){X8.clear()}async function RR(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 Cb=q(X());function Nu(e){let[t,r]=(0,Cb.useState)(xf),n=e.join(",");return(0,Cb.useEffect)(()=>{let o=!1;return e.forEach(a=>{Z8(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var Tu=q(X());function pl({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,Tu.useId)();return Tu.default.createElement(Tu.default.Fragment,null,Tu.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}),Tu.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>Tu.default.createElement("option",{key:u,value:u}))))}var Ab=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],eee=["name","slug","description","provider","model"];function CE({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:xf.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=Nu([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[p,f]=(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),gf[v]){let x=gf[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()=>{f(null);let v=await t(s);v&&(f(v),Object.keys(v.fieldErrors||{}).some(x=>eee.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"},Ab.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(tee,{formData:s,updateField:m,providerModels:c,fieldErrors:p?.fieldErrors||{}}),a===1&&xe.default.createElement(ree,{formData:s,meta:e,toggleArrayItem:y,updateField:m,selectPreset:b}),a===2&&xe.default.createElement(nee,{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===Ab.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===Ab.length-1?"Create Agent":"Continue")))}function Eb({messages:e}){return e.length?xe.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function tee({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(Eb,{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(Eb,{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(Eb,{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(pl,{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(Eb,{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 ree({formData:e,meta:t,toggleArrayItem:r,updateField:n,selectPreset:o}){let a=Object.keys(gf),i=Object.keys(Gc),s=Object.keys(Yc);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=Gc[l];return u?xe.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})),xe.default.createElement(gn,{size:120}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(l=>{let u=Yc[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=Gc[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=Yc[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 nee({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=Gc[t];return r?xe.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),xe.default.createElement(gn,{size:100}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(t=>{let r=Yc[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=Gc[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=Yc[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=q(X());var hi=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"}),No="#ef4444";var W=q(X());var Nb=q(X()),t$=q(X());function J8(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=lee(e,see),d=a||{width:n,height:o,x:0,y:0},p=ut("recharts-surface",i);return Nb.createElement("svg",NE({},Rr(c),{className:p,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),Nb.createElement("title",null,l),Nb.createElement("desc",null,u),r)});var Tb=q(X());var cee=["children","className"];function TE(){return TE=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=dee(e,cee),a=ut("recharts-layer",n);return Tb.createElement("g",TE({className:a},Rr(o),{ref:t}),r)});var Ya=q(X()),rw=q(X()),tz=q(Wg());function Ob(e){return e==="__proto__"}var fee=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function Pb(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:fee.test(e);default:return!1}}function bf(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function OE(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(OE).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function wf(e){if(Array.isArray(e))return e.map(bf);if(typeof e=="symbol")return[e];e=OE(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]:gee,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function Rn(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+yi(s)+a:o+a},"")}var jr=e=>e===0?0:e>0?1:-1,yo=e=>typeof e=="number"&&e!=+e,fl=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,Oe=e=>(typeof e=="number"||e instanceof Number)&&!yo(e),ea=e=>Oe(e)||typeof e=="string",hee=0,ml=e=>{var t=++hee;return"".concat(e||"").concat(t)},hn=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(fl(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return yo(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},PE=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):ho(n,t))===r)}var Yt=e=>e===null||typeof e>"u",gl=e=>Yt(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function eo(e){return e!=null}function ta(){}function Wh(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 r$(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;t{var t=e.viewBox,r=e.position,n=e.offset,o=n===void 0?0:n,a=e.parentViewBox,i=e.clamp,s=Wh(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,p=s.lowerWidth,f=l,m=l+(d-p)/2,y=(f+m)/2,b=(d+p)/2,h=f+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:f+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+p/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=p),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"?Cs({x:y+A,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"},z):r==="insideRight"?Cs({x:y+b-A,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"},z):r==="insideTop"?Cs({x:f+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:S},z):r==="insideBottom"?Cs({x:m+p/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:x},z):r==="insideTopLeft"?Cs({x:f+A,y:u+v,horizontalAnchor:_,verticalAnchor:S},z):r==="insideTopRight"?Cs({x:f+d-A,y:u+v,horizontalAnchor:k,verticalAnchor:S},z):r==="insideBottomLeft"?Cs({x:m+A,y:u+c-v,horizontalAnchor:_,verticalAnchor:x},z):r==="insideBottomRight"?Cs({x:m+p-A,y:u+c-v,horizontalAnchor:k,verticalAnchor:x},z):r&&typeof r=="object"&&(Oe(r.x)||fl(r.x))&&(Oe(r.y)||fl(r.y))?Cs({x:l+hn(r.x,b),y:u+hn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},z):Cs({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},z)},bee=["top","left","right","bottom"];function Hh(e){return e==null?!1:typeof e=="object"?!0:bee.includes(e)}var Db=q(X()),ME=(0,Db.createContext)(null),n$=()=>(0,Db.useContext)(ME);var ra=q(X());var S$=q(X());function Sr(e){return function(){return e}}var IE=Math.cos;var Kh=Math.sin,vo=Math.sqrt;var Xc=Math.PI,Bke=Xc/2,Sf=2*Xc;var DE=Math.PI,jE=2*DE,Zc=1e-6,wee=jE-Zc;function o$(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return o$;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oZc)if(!(Math.abs(d*l-u*c)>Zc)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-i,m=o-s,y=l*l+u*u,b=f*f+m*m,h=Math.sqrt(y),g=Math.sqrt(p),v=a*Math.tan((DE-Math.acos((y+p-b)/(2*h*g)))/2),x=v/g,S=v/h;Math.abs(x-1)>Zc&&this._append`L${t+x*c},${r+x*d}`,this._append`A${a},${a},0,0,${+(d*f>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,p=i?o-a:a-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Zc||Math.abs(this._y1-c)>Zc)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%jE+jE),p>wee?this._append`A${n},${n},0,1,${d},${t-s},${r-l}A${n},${n},0,1,${d},${this._x1=u},${this._y1=c}`:p>Zc&&this._append`A${n},${n},0,${+(p>=DE)},${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 a$(){return new Jc}a$.prototype=Jc.prototype;function kf(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 Jc(t)}var Gke=Array.prototype.slice;function _f(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function i$(e){this._context=e}i$.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 Ou(e){return new i$(e)}function jb(e){return e[0]}function $b(e){return e[1]}function Vh(e,t){var r=Sr(!0),n=null,o=Ou,a=null,i=kf(s);e=typeof e=="function"?e:e===void 0?jb:Sr(e),t=typeof t=="function"?t:t===void 0?$b:Sr(t);function s(l){var u,c=(l=_f(l)).length,d,p=!1,f;for(n==null&&(a=o(f=i())),u=0;u<=c;++u)!(u=f;--m)s.point(v[m],x[m]);s.lineEnd(),s.areaEnd()}h&&(v[p]=+e(b,p,d),x[p]=+t(b,p,d),s.point(n?+n(b,p,d):v[p],r?+r(b,p,d):x[p]))}if(g)return s=null,g+""||null}function c(){return Vh().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 Lb=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 $E(e){return new Lb(e,!0)}function LE(e){return new Lb(e,!1)}var Af={draw(e,t){let r=vo(t/Xc);e.moveTo(r,0),e.arc(0,0,r,0,Sf)}};var zE={draw(e,t){let r=vo(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 s$=vo(1/3),kee=s$*2,BE={draw(e,t){let r=vo(t/kee),n=r*s$;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var FE={draw(e,t){let r=vo(t),n=-r/2;e.rect(n,n,r,r)}};var _ee=.8908130915292852,l$=Kh(Xc/10)/Kh(7*Xc/10),Cee=Kh(Sf/10)*l$,Aee=-IE(Sf/10)*l$,UE={draw(e,t){let r=vo(t*_ee),n=Cee*r,o=Aee*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Sf*a/5,s=IE(i),l=Kh(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var WE=vo(3),HE={draw(e,t){let r=-vo(t/(WE*3));e.moveTo(0,r*2),e.lineTo(-WE*r,-r),e.lineTo(WE*r,-r),e.closePath()}};var vi=-.5,xi=vo(3)/2,KE=1/vo(12),Eee=(KE/2+1)*3,VE={draw(e,t){let r=vo(t/Eee),n=r/2,o=r*KE,a=n,i=r*KE+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(vi*n-xi*o,xi*n+vi*o),e.lineTo(vi*a-xi*i,xi*a+vi*i),e.lineTo(vi*s-xi*l,xi*s+vi*l),e.lineTo(vi*n+xi*o,vi*o-xi*n),e.lineTo(vi*a+xi*i,vi*i-xi*a),e.lineTo(vi*s+xi*l,vi*l-xi*s),e.closePath()}};function zb(e,t){let r=null,n=kf(o);e=typeof e=="function"?e:Sr(e||Af),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 Ef(){}function Nf(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 u$(e){this._context=e}u$.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:Nf(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:Nf(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function qE(e){return new u$(e)}function c$(e){this._context=e}c$.prototype={areaStart:Ef,areaEnd:Ef,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:Nf(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function GE(e){return new c$(e)}function d$(e){this._context=e}d$.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:Nf(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function YE(e){return new d$(e)}function p$(e){this._context=e}p$.prototype={areaStart:Ef,areaEnd:Ef,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 XE(e){return new p$(e)}function f$(e){return e<0?-1:1}function m$(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(f$(a)+f$(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function g$(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function ZE(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 Bb(e){this._context=e}Bb.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:ZE(this,this._t0,g$(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,ZE(this,g$(this,r=m$(this,e,t)),r);break;default:ZE(this,this._t0,r=m$(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function h$(e){this._context=new y$(e)}(h$.prototype=Object.create(Bb.prototype)).point=function(e,t){Bb.prototype.point.call(this,t,e)};function y$(e){this._context=e}y$.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 JE(e){return new Bb(e)}function QE(e){return new h$(e)}function x$(e){this._context=e}x$.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=v$(e),o=v$(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 eN(e){return new Fb(e,.5)}function tN(e){return new Fb(e,0)}function rN(e){return new Fb(e,1)}function Ha(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 Nee(e,t){return e[t]}function Tee(e){let t=[];return t.key=e,t}function nN(){var e=Sr([]),t=Tf,r=Ha,n=Nee;function o(a){var i=Array.from(e.apply(this,arguments),Tee),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(gl(e));return k$[t]||Af},Bee=(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*Lee;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}},Fee=(e,t)=>{k$["symbol".concat(gl(e))]=t},lN=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=jee(e,Pee),l=w$(w$({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=zee(u),b=zb().type(y).size(Bee(o,i,u)),h=b();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=Rr(l);return Oe(p)&&Oe(f)&&Oe(o)?S$.createElement("path",sN({},m,{className:ut("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};lN.registerSymbol=Fee;var _$=q(X());var Ub=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Of=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,_$.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{Fh(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},Uee=(e,t,r)=>n=>(e(t,r,n),null),hl=(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];Fh(o)&&typeof a=="function"&&(n||(n={}),n[o]=Uee(a,t,r))}),n};function C$(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 Wee(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function Wb(){return Wb=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(bi,"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 ra.createElement("path",{stroke:"none",fill:s,d:"M0,".concat(bi/8,"h").concat(bi,"v").concat(bi*3/4,"h").concat(-bi,"z"),className:"recharts-legend-icon"});if(ra.isValidElement(t.legendIcon)){var u=E$({},t);return delete u.legendIcon,ra.cloneElement(t.legendIcon,u)}return ra.createElement(lN,{fill:s,cx:o,cy:o,size:bi,sizeType:"diameter",type:l})}function Qee(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:bi,height:bi},u={display:n==="horizontal"?"inline-block":"block",marginRight:10,whiteSpace:"nowrap"},c={display:"inline-block",verticalAlign:"middle",marginRight:4};return t.map((d,p)=>{var f,m,y=d.formatter||o,b=ut({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?E$({},s):{};h.color=d.inactive?a:h.color||d.color,(f=h.whiteSpace)!==null&&f!==void 0||(h.whiteSpace="normal"),(m=h.overflowWrap)!==null&&m!==void 0||(h.overflowWrap="break-word");var g=y?y(d.value,d,p):d.value;return ra.createElement("li",Wb({className:b,style:u,key:"legend-item-".concat(p)},hl(e,d,p)),ra.createElement(Uh,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},ra.createElement(Jee,{data:d,iconType:i,inactiveColor:a})),ra.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var N$=e=>{var t=Kt(e,Xee),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 ra.createElement("ul",{className:"recharts-default-legend",style:a},ra.createElement(Qee,Wb({},t,{payload:r})))};function T$(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function yl(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Kb="[object RegExp]",Pf="[object String]",Mf="[object Number]",If="[object Boolean]",Vb="[object Arguments]",qb="[object Symbol]",Gb="[object Date]",Yb="[object Map]",Xb="[object Set]",Zb="[object Array]",I$="[object Function]",Jb="[object ArrayBuffer]",Df="[object Object]",D$="[object Error]",Qb="[object DataView]",Rb="[object Uint8Array]",e1="[object Uint8ClampedArray]",t1="[object Uint16Array]",r1="[object Uint32Array]",j$="[object BigUint64Array]",n1="[object Int8Array]",o1="[object Int16Array]",a1="[object Int32Array]",$$="[object BigInt64Array]",i1="[object Float32Array]",s1="[object Float64Array]";var uN=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function Yh(e){return typeof uN.Buffer<"u"&&uN.Buffer.isBuffer(e)}function L$(e,t){return Pu(e,void 0,e,new Map,t)}function Pu(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(qh(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{}):cN(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:cN(o,a,n,u,!1)},new Map,!0)}function cN(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return ete(e,t,r,n);case"function":return Object.keys(t).length>0?cN(e,{...t},r,n,o):Mu(e,t);default:return l1(e)?o?typeof t=="string"?t==="":!0:Mu(e,t):Mu(e,t)}}function ete(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return B$(e,t,r,n);if(t instanceof Map)return tte(e,t,r,n);if(t instanceof Set)return rte(e,t,r,n);let o=Object.keys(t);if(e==null||qh(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 F$(e){return e=z$(e),t=>u1(t,e)}function U$(e,t){return L$(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(yl(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),wi(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case Mf:case Pf:case If:{let s=new e.constructor(e?.valueOf());return wi(s,e),s}case Vb:{let s={};return wi(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function W$(e){return U$(e)}var nte=/^(?:0|[1-9]\d*)$/;function c1(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function d1(e){return e!=null&&typeof e!="function"&&G$(e.length)}function Y$(e){return typeof e=="object"&&e!==null}function X$(e){return Y$(e)&&d1(e)}function p1(e,t=Hb){return X$(e)?T$(Array.from(e),O$(q$(t),1)):[]}function f1(e,t,r){return t===!0?p1(e,r):typeof t=="function"?p1(e,t):e}var aL=q(nL()),Zh=q(X());var oL=q(X()),Xh=(0,oL.createContext)(null);var wte=e=>e,wt=()=>{var e=(0,Zh.useContext)(Xh);return e?e.store.dispatch:wte},g1=()=>{},Ste=()=>g1,kte=(e,t)=>e===t;function Pe(e){var t=(0,Zh.useContext)(Xh),r=(0,Zh.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:g1,[t,e]);return(0,aL.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Ste,t?t.store.getState:g1,t?t.store.getState:g1,r,kte)}function _te(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function Cte(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 iL=e=>Array.isArray(e)?e:[e];function Ate(e){let t=Array.isArray(e[0])?e[0]:e;return Cte(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Ete(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?Nte:WeakRef,lL=Tte(),Ote=0,sL=1;function h1(){return{s:Ote,v:void 0,o:null,p:null}}function Pte(e){return e instanceof lL?e.deref():e}function uL(e,t={}){let r=h1(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=h1(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function Mte(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()),_te(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=uL,argsMemoizeOptions:m=[]}=c,y=iL(p),b=iL(m),h=Ate(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,x=f(function(){i++;let w=Ete(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:f})};return Object.assign(n,{withTypes:()=>n}),n}var te=Mte(uL);function cL(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=dL(e),o=dL(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function y1(e){return typeof e=="symbol"||e instanceof Symbol}var Ite=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dte=/^\w*$/;function fL(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||y1(e)?!0:typeof e=="string"&&(Dte.test(e)||!Ite.test(e))||t!=null&&Object.hasOwn(t,e)}function mL(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)||fL(s)?s:{key:s,path:wf(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 vl(e,...t){let r=t.length;return r>1&&Jh(e,t[0],t[1])?t=[]:r>2&&Jh(t[0],t[1],t[2])&&(t=[t[0]]),mL(e,cL(t),["asc"])}var fN=e=>e.legend.settings,gL=e=>e.legend.size,jte=e=>e.legend.payload,hL=te([jte,fN],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?vl(n,r):n});function yL(){return Pe(hL)}var xl=q(X());function $te(e,t){return Fte(e)||Bte(e,t)||zte(e,t)||Lte()}function Lte(){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 zte(e,t){if(e){if(typeof e=="string")return vL(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)?vL(e,t):void 0}}function vL(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rv1||Math.abs(e.left-t.left)>v1||Math.abs(e.top-t.top)>v1||Math.abs(e.width-t.width)>v1}function bL(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function x1(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,xl.useState)({height:0,left:0,top:0,width:0}),r=$te(t,2),n=r[0],o=r[1],a=(0,xl.useRef)(null),i=(0,xl.useRef)(n);i.current=n;var s=(0,xl.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=bL(l);if(xL(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=bL(l);xL(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,xl.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var $6=q(X());function To(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 Ute=typeof Symbol=="function"&&Symbol.observable||"@@observable",wL=Ute,mN=()=>Math.random().toString(36).substring(7).split("").join("."),Wte={INIT:`@@redux/INIT${mN()}`,REPLACE:`@@redux/REPLACE${mN()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${mN()}`},b1=Wte;function w1(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 gN(e,t,r){if(typeof e!="function")throw new Error(To(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(To(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(To(1));return r(gN)(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(To(3));return o}function d(b){if(typeof b!="function")throw new Error(To(4));if(l)throw new Error(To(5));let h=!0;u();let g=s++;return i.set(g,b),function(){if(h){if(l)throw new Error(To(6));h=!1,u(),i.delete(g),a=null}}}function p(b){if(!w1(b))throw new Error(To(7));if(typeof b.type>"u")throw new Error(To(8));if(typeof b.type!="string")throw new Error(To(17));if(l)throw new Error(To(9));try{l=!0,o=n(o,b)}finally{l=!1}return(a=i).forEach(g=>{g()}),b}function f(b){if(typeof b!="function")throw new Error(To(10));n=b,p({type:b1.REPLACE})}function m(){let b=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(To(11));function g(){let x=h;x.next&&x.next(c())}return g(),{unsubscribe:b(g)}},[wL](){return this}}}return p({type:b1.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[wL]:m}}function Hte(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:b1.INIT})>"u")throw new Error(To(12));if(typeof r(void 0,{type:b1.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(To(13))})}function S1(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let b=l&&l.type;throw new Error(To(14))}c[p]=y,u=u||y!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function Qh(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function SL(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(To(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=Qh(...s)(o.dispatch),{...o,dispatch:a}}}function hN(e){return w1(e)&&"type"in e&&typeof e.type=="string"}var PL=Symbol.for("immer-nothing"),kL=Symbol.for("immer-draftable"),$o=Symbol.for("immer-state");function Zi(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Ka=Object,Lf=Ka.getPrototypeOf,A1="constructor",M1="prototype",bN="configurable",E1="enumerable",_1="writable",Rh="value",As=e=>!!e&&!!e[$o];function Va(e){return e?ML(e)||D1(e)||!!e[kL]||!!e[A1]?.[kL]||j1(e)||$1(e):!1}var Kte=Ka[M1][A1].toString(),_L=new WeakMap;function ML(e){if(!e||!NN(e))return!1;let t=Lf(e);if(t===null||t===Ka[M1])return!0;let r=Ka.hasOwnProperty.call(t,A1)&&t[A1];if(r===Object)return!0;if(!$f(r))return!1;let n=_L.get(r);return n===void 0&&(n=Function.toString.call(r),_L.set(r,n)),n===Kte}function I1(e,t,r=!0){ry(e)===0?(r?Reflect.ownKeys(e):Ka.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function ry(e){let t=e[$o];return t?t.type_:D1(e)?1:j1(e)?2:$1(e)?3:0}var yN=(e,t,r=ry(e))=>r===2?e.has(t):Ka[M1].hasOwnProperty.call(e,t),wN=(e,t,r=ry(e))=>r===2?e.get(t):e[t],N1=(e,t,r,n=ry(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function Vte(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var D1=Array.isArray,j1=e=>e instanceof Map,$1=e=>e instanceof Set,NN=e=>typeof e=="object",$f=e=>typeof e=="function",vN=e=>typeof e=="boolean";function qte(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var bl=e=>e.copy_||e.base_;var TN=e=>e.modified_?e.copy_:e.base_;function SN(e,t){if(j1(e))return new Map(e);if($1(e))return new Set(e);if(D1(e))return Array[M1].slice.call(e);let r=ML(e);if(t===!0||t==="class_only"&&!r){let n=Ka.getOwnPropertyDescriptors(e);delete n[$o];let o=Reflect.ownKeys(n);for(let a=0;a1&&Ka.defineProperties(e,{set:k1,add:k1,clear:k1,delete:k1}),Ka.freeze(e),t&&I1(e,(r,n)=>{ON(n,!0)},!1)),e}function Gte(){Zi(2)}var k1={[Rh]:Gte};function L1(e){return e===null||!NN(e)?!0:Ka.isFrozen(e)}var T1="MapSet",kN="Patches",CL="ArrayMethods",IL={};function Qc(e){let t=IL[e];return t||Zi(0,e),t}var AL=e=>!!IL[e];var ey,DL=()=>ey,Yte=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:AL(T1)?Qc(T1):void 0,arrayMethodsPlugin_:AL(CL)?Qc(CL):void 0});function EL(e,t){t&&(e.patchPlugin_=Qc(kN),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function _N(e){CN(e),e.drafts_.forEach(Xte),e.drafts_=null}function CN(e){e===ey&&(ey=e.parent_)}var NL=e=>ey=Yte(ey,e);function Xte(e){let t=e[$o];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function TL(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[$o].modified_&&(_N(t),Zi(4)),Va(e)&&(e=OL(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[$o].base_,e,t)}else e=OL(t,r);return Zte(t,e,!0),_N(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==PL?e:void 0}function OL(e,t){if(L1(t))return t;let r=t[$o];if(!r)return O1(t,e.handledSet_,e);if(!z1(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);LL(r,e)}return r.copy_}function Zte(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&ON(t,r)}function jL(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var z1=(e,t)=>e.scope_===t,Jte=[];function $L(e,t,r,n){let o=bl(e),a=e.type_;if(n!==void 0&&wN(o,n,a)===t){N1(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;I1(o,(l,u)=>{if(As(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??Jte;for(let s of i)N1(o,s,r,a)}function Qte(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!z1(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=TN(a);$L(e,a.draft_??a,i,r),LL(a,o)})}function LL(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)}jL(e)}}function Rte(e,t,r){let{scope_:n}=e;if(As(r)){let o=r[$o];z1(o,n)&&o.callbacks_.push(function(){C1(e);let i=TN(o);$L(e,r,i,t)})}else Va(r)&&e.callbacks_.push(function(){let a=bl(e);e.type_===3?a.has(r)&&O1(r,n.handledSet_,n):wN(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&O1(wN(e.copy_,t,e.type_),n.handledSet_,n)})}function O1(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||As(e)||t.has(e)||!Va(e)||L1(e)||(t.add(e),I1(e,(n,o)=>{if(As(o)){let a=o[$o];if(z1(a,r)){let i=TN(a);N1(e,n,i,e.type_),jL(a)}}else Va(o)&&O1(o,t,r)})),e}function ere(e,t){let r=D1(e),n={type_:r?1:0,scope_:t?t.scope_:DL(),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=P1;r&&(o=[n],a=ty);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var P1={get(e,t){if(t===$o)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=bl(e);if(!yN(o,t,e.type_))return rre(e,o,t);let a=o[t];if(e.finalized_||!Va(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&qte(t))return a;if(a===xN(e.base_,t)||tre(e,t,a)){C1(e);let i=e.type_===1?+t:t,s=EN(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in bl(e)},ownKeys(e){return Reflect.ownKeys(bl(e))},set(e,t,r){let n=zL(bl(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=xN(bl(e),t),a=o?.[$o];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(Vte(r,o)&&(r!==void 0||yN(e.base_,t,e.type_)))return!0;C1(e),AN(e)}return e.copy_[t]===r&&(r!==void 0||yN(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),Rte(e,t,r)),!0},deleteProperty(e,t){return C1(e),xN(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),AN(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=bl(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[_1]:!0,[bN]:e.type_!==1||t!=="length",[E1]:n[E1],[Rh]:r[t]}},defineProperty(){Zi(11)},getPrototypeOf(e){return Lf(e.base_)},setPrototypeOf(){Zi(12)}},ty={};for(let e in P1){let t=P1[e];ty[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}ty.deleteProperty=function(e,t){return ty.set.call(this,e,t,void 0)};ty.set=function(e,t,r){return P1.set.call(this,e[0],t,r,e[0])};function xN(e,t){let r=e[$o];return(r?bl(r):e)[t]}function tre(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Va(r)||r[$o]?!1:e.baseRefs_.has(r)}function rre(e,t,r){let n=zL(t,r);return n?Rh in n?n[Rh]:n.get?.call(e.draft_):void 0}function zL(e,t){if(!(t in e))return;let r=Lf(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Lf(r)}}function AN(e){e.modified_||(e.modified_=!0,e.parent_&&AN(e.parent_))}function C1(e){e.copy_||(e.assigned_=new Map,e.copy_=SN(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var nre=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if($f(t)&&!$f(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}$f(r)||Zi(6),n!==void 0&&!$f(n)&&Zi(7);let o;if(Va(t)){let a=NL(this),i=EN(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?_N(a):CN(a)}return EL(a,n),TL(o,a)}else if(!t||!NN(t)){if(o=r(t),o===void 0&&(o=t),o===PL&&(o=void 0),this.autoFreeze_&&ON(o,!0),n){let a=[],i=[];Qc(kN).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else Zi(1,t)},this.produceWithPatches=(t,r)=>{if($f(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]},vN(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),vN(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),vN(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Va(e)||Zi(8),As(e)&&(e=Oo(e));let t=NL(this),r=EN(t,e,void 0);return r[$o].isManual_=!0,CN(t),r}finishDraft(e,t){let r=e&&e[$o];(!r||!r.isManual_)&&Zi(9);let{scope_:n}=r;return EL(n,t),TL(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=Qc(kN).applyPatches_;return As(e)?n(e,t):this.produce(e,o=>n(o,t))}};function EN(e,t,r,n){let[o,a]=j1(t)?Qc(T1).proxyMap_(t,r):$1(t)?Qc(T1).proxySet_(t,r):ere(t,r);return(r?.scope_??DL()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?Qte(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 Oo(e){return As(e)||Zi(10,e),BL(e)}function BL(e){if(!Va(e)||L1(e))return e;let t=e[$o],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=SN(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=SN(e,!0);return I1(r,(o,a)=>{N1(r,o,BL(a))},n),t&&(t.finalized_=!1),r}var ore=new nre,PN=ore.produce;var Lt=e=>e;function FL(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var UL=FL(),WL=FL;var are=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qh:Qh.apply(null,arguments)},RAe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},ire=e=>e&&typeof e.match=="function";function Vn(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(qa(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=>hN(n)&&n.type===e,r}var ZL=class ny extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,ny.prototype)}static get[Symbol.species](){return ny}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new ny(...t[0].concat(this)):new ny(...t.concat(this))}};function HL(e){return Va(e)?PN(e,()=>{}):e}function B1(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function sre(e){return typeof e=="boolean"}var lre=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new ZL;return r&&(sre(r)?i.push(UL):i.push(WL(r.extraArgument))),i},JL="RTK_autoBatch",kr=()=>e=>({payload:e,meta:{[JL]:!0}}),KL=e=>t=>{setTimeout(t,e)},ure=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},jN=(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?ure(window.requestAnimationFrame,100):KL(10):e.type==="callback"?e.queueNotification:KL(e.timeout),u=()=>{i=!1,a&&(a=!1,s.forEach(c=>c()))};return Object.assign({},n,{subscribe(c){let d=()=>o&&c(),p=n.subscribe(d);return s.add(c),()=>{p(),s.delete(c)}},dispatch(c){try{return o=!c?.meta?.[JL],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},cre=e=>function(r){let{autoBatch:n=!0}=r??{},o=new ZL(e);return n&&o.push(jN(typeof n=="object"?n:void 0)),o};function QL(e){let t=lre(),{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(w1(r))l=S1(r);else throw new Error(qa(1));let u;typeof n=="function"?u=n(t):u=t();let c=Qh;o&&(c=are({trace:!1,...typeof o=="object"&&o}));let d=SL(...u),p=cre(d),f=typeof s=="function"?s(p):p(),m=c(...f);return gN(l,i,m)}function RL(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(qa(28));if(s in t)throw new Error(qa(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 dre(e){return typeof e=="function"}function pre(e,t){let[r,n,o]=RL(t),a;if(dre(e))a=()=>HL(e());else{let s=HL(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(As(c)){let f=d(c,l);return f===void 0?c:f}else{if(Va(c))return PN(c,p=>d(p,l));{let p=d(c,l);if(p===void 0){if(c===null)return c;throw Error("A case reducer on a non-draftable value must not return undefined")}return p}}return c},s)}return i.getInitialState=a,i}var fre=(e,t)=>ire(e)?e.match(t):e(t);function mre(...e){return t=>e.some(r=>fre(r,t))}var gre="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",e6=(e=21)=>{let t="",r=e;for(;r--;)t+=gre[Math.random()*64|0];return t},hre=["name","message","stack","code"],MN=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},VL=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},yre=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of hre)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},qL="External signal was aborted",vre=(()=>{function e(t,r,n){let o=Vn(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=Vn(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=Vn(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||yre)(l||"Rejected"),meta:{...p||{},arg:c,requestId:u,rejectedWithValue:!!d,requestStatus:"rejected",aborted:l?.name==="AbortError",condition:l?.name==="ConditionError"}}));function s(l,{signal:u}={}){return(c,d,p)=>{let f=n?.idGenerator?n.idGenerator(l):e6(),m=new AbortController,y,b;function h(v){b=v,m.abort()}u&&(u.aborted?h(qL):u.addEventListener("abort",()=>h(qL),{once:!0}));let g=(async function(){let v;try{let S=n?.condition?.(l,{getState:d,extra:p});if(bre(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(f,l,n?.getPendingMeta?.({requestId:f,arg:l},{getState:d,extra:p}))),v=await Promise.race([w,Promise.resolve(r(l,{dispatch:c,getState:d,extra:p,requestId:f,signal:m.signal,abort:h,rejectWithValue:((A,k)=>new MN(A,k)),fulfillWithValue:((A,k)=>new VL(A,k))})).then(A=>{if(A instanceof MN)throw A;return A instanceof VL?o(A.payload,f,l,A.meta):o(A,f,l)})])}catch(S){v=S instanceof MN?i(null,f,l,S.payload,S.meta):i(S,f,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:f,arg:l,unwrap(){return g.then(xre)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:mre(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function xre(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function bre(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var t6=Symbol.for("rtk-slice-createasyncthunk"),tEe={[t6]:vre};function wre(e,t){return`${e}/${t}`}function Sre({creators:e}={}){let t=e?.asyncThunk?.[t6];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(qa(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(_re()):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(qa(12));if(S in l.sliceCaseReducersByType)throw new Error(qa(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:wre(o,v),createNotation:typeof n.reducers=="function"};Are(x)?Nre(S,x,u,t):Cre(S,x,u)});function c(){let[v={},x=[],S=void 0]=typeof n.extraReducers=="function"?RL(n.extraReducers):[n.extraReducers],w={...v,...l.sliceCaseReducersByType};return pre(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,p=new Map,f=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=B1(f,S,b)),k}function w(A=d){let k=B1(p,x,()=>new WeakMap);return B1(k,A,()=>{let _={};for(let[C,E]of Object.entries(n.selectors??{}))_[C]=kre(E,A,()=>B1(f,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 kre(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=Sre();function _re(){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 Cre({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!Ere(n))throw new Error(qa(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?Vn(e,i):Vn(e))}function Are(e){return e._reducerDefinitionType==="asyncThunk"}function Ere(e){return e._reducerDefinitionType==="reducerWithPrepare"}function Nre({type:e,reducerName:t},r,n,o){if(!o)throw new Error(qa(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||F1,pending:s||F1,rejected:l||F1,settled:u||F1})}function F1(){}var Tre="task",r6="listener",n6="completed",$N="cancelled",Ore=`task-${$N}`,Pre=`task-${n6}`,IN=`${r6}-${$N}`,Mre=`${r6}-${n6}`,H1=class{constructor(e){this.code=e,this.message=`${Tre} ${$N} (reason: ${e})`}code;name="TaskAbortError";message},LN=(e,t)=>{if(typeof e!="function")throw new TypeError(qa(32))},U1=()=>{},o6=(e,t=U1)=>(e.catch(t),e),a6=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Rc=e=>{if(e.aborted)throw new H1(e.reason)};function i6(e,t){let r=U1;return new Promise((n,o)=>{let a=()=>o(new H1(e.reason));if(e.aborted){a();return}r=a6(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=U1})}var Ire=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof H1?"cancelled":"rejected",error:r}}finally{t?.()}},W1=e=>t=>o6(i6(e,t).then(r=>(Rc(e),r))),s6=e=>{let t=W1(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:zf}=Object,GL={},K1="listenerMiddleware",Dre=(e,t)=>{let r=n=>a6(e,()=>n.abort(e.reason));return(n,o)=>{LN(n,"taskExecutor");let a=new AbortController;r(a);let i=Ire(async()=>{Rc(e),Rc(a.signal);let s=await n({pause:W1(a.signal),delay:s6(a.signal),signal:a.signal});return Rc(a.signal),s},()=>a.abort(Pre));return o?.autoJoin&&t.push(i.catch(U1)),{result:W1(e)(i),cancel(){a.abort(Ore)}}}},jre=(e,t)=>{let r=async(n,o)=>{Rc(t);let a=()=>{},s=[new Promise((l,u)=>{let c=e({predicate:n,effect:(d,p)=>{p.unsubscribe(),l([d,p.getState(),p.getOriginalState()])}});a=()=>{c(),u()}})];o!=null&&s.push(new Promise(l=>setTimeout(l,o,null)));try{let l=await i6(t,Promise.race(s));return Rc(t),l}finally{a()}};return((n,o)=>o6(r(n,o)))},l6=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=Vn(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(qa(21));return LN(a,"options.listener"),{predicate:o,type:t,effect:a}},u6=zf(e=>{let{type:t,predicate:r,effect:n}=l6(e);return{id:e6(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(qa(22))}}},{withTypes:()=>u6}),YL=(e,t)=>{let{type:r,effect:n,predicate:o}=l6(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},DN=e=>{e.pending.forEach(t=>{t.abort(IN)})},$re=(e,t)=>()=>{for(let r of t.keys())DN(r);e.clear()},XL=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},c6=zf(Vn(`${K1}/add`),{withTypes:()=>c6}),Lre=Vn(`${K1}/removeAll`),d6=zf(Vn(`${K1}/remove`),{withTypes:()=>d6}),zre=(...e)=>{console.error(`${K1}/error`,...e)},wl=(e={})=>{let t=new Map,r=new Map,n=f=>{let m=r.get(f)??0;r.set(f,m+1)},o=f=>{let m=r.get(f)??1;m===1?r.delete(f):r.set(f,m-1)},{extra:a,onError:i=zre}=e;LN(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&DN(f)}),l=(f=>{let m=YL(t,f)??u6(f);return s(m)});zf(l,{withTypes:()=>l});let u=f=>{let m=YL(t,f);return m&&(m.unsubscribe(),f.cancelActive&&DN(m)),!!m};zf(u,{withTypes:()=>u});let c=async(f,m,y,b)=>{let h=new AbortController,g=jre(l,h.signal),v=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,zf({},y,{getOriginalState:b,condition:(x,S)=>g(x,S).then(Boolean),take:g,delay:s6(h.signal),pause:W1(h.signal),extra:a,signal:h.signal,fork:Dre(h.signal,v),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((x,S,w)=>{x!==h&&(x.abort(IN),w.delete(x))})},cancel:()=>{h.abort(IN),f.pending.delete(h)},throwIfCancelled:()=>{Rc(h.signal)}})))}catch(x){x instanceof H1||XL(i,x,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(Mre),o(f),f.pending.delete(h)}},d=$re(t,r);return{middleware:f=>m=>y=>{if(!hN(y))return m(y);if(c6.match(y))return l(y.payload);if(Lre.match(y)){d();return}if(d6.match(y))return u(y.payload);let b=f.getState(),h=()=>{if(b===GL)throw new Error(qa(23));return b},g;try{if(g=m(y),t.size>0){let v=f.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,XL(i,A,{raisedBy:"predicate"})}w&&c(S,y,f,h)}}}finally{b=GL}return g},startListening:l,stopListening:u,clearListeners:d}};function qa(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 Bre={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},p6=yr({name:"chartLayout",initialState:Bre,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}}}),V1=p6.actions,zN=V1.setMargin,f6=V1.setLayout,m6=V1.setChartSize,g6=V1.setScale;var h6=p6.reducer;function q1(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function gt(e){return Number.isFinite(e)}function va(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function y6(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 xa(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(Hh(l)){if(l==="top"&&Oe(e.top))return xa(xa({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&Oe(e.bottom))return xa(xa({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&Oe(e.left))return xa(xa({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&Oe(e.right))return xa(xa({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&Oe(e[a]))return xa(xa({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&Oe(e[i]))return xa(xa({},e),{},{[i]:e[i]+(o||0)})}return e},Lo=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",BN=(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},FN=(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,p=e.niceTicks,f=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=f==="angleAxis"&&a&&a.length>=2?jr(a[0]-a[1])*2*y:y,t&&(d||p)){var b=(d||p||[]).map((h,g)=>{var v=n?n.indexOf(h):h,x=i.map(v);return gt(x)?{coordinate:x+y,value:h,offset:y,index:g}:null}).filter(eo);return b}return l&&u?u.map((h,g)=>{var v=i.map(h);return gt(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(eo):i.ticks&&!r&&c!=null?i.ticks(c).map((h,g)=>{var v=i.map(h);return gt(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(eo):i.domain().map((h,g)=>{var v=i.map(h);return gt(v)?{coordinate:v+y,value:n?n[h]:h,index:g,offset:y}:null}).filter(eo)},x6=(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+=p,u[1]=a):(u[0]=i,i+=p,u[1]=i)}}}},Kre=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)}}}},Vre={sign:Hre,expand:oN,none:Ha,silhouette:aN,wiggle:iN,positive:Kre},b6=(e,t,r)=>{var n,o=(n=Vre[r])!==null&&n!==void 0?n:Ha,a=nN().keys(t).value((s,l)=>Number(Nt(s,l,0))).order(Tf).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 G1(e){return e==null?void 0:String(e)}function Bf(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=Mb(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 UN=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},w6=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]},qre=e=>{var t=e.flat(2).filter(Oe);return[Math.min(...t),Math.max(...t)]},Gre=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],S6=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return Gre(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=q1(u,t,r),d=qre(c);return!gt(d[0])||!gt(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]))},WN=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,HN=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Si=(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=vl(t,y=>y.coordinate),a=[],i=0,s=1,l=o.length;sp&&(f=Math.min(m,f));return f===1/0?0:f}return r?void 0:0};function KN(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return xa(xa({},t),{},{dataKey:r,payload:n,value:o,name:a})}function Ga(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var k6=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},_6=(e,t)=>t==="centric"?e.angle:e.radius;var xo=e=>e.layout.width,bo=e=>e.layout.height,C6=e=>e.layout.scale,Ff=e=>e.layout.margin;var Uf=te(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Wf=te(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var Y1="data-recharts-item-index",X1="data-recharts-item-id",ed=60,oy=30;function A6(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 Z1(e){for(var t=1;te.brush.height;function Qre(e){var t=Wf(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:ed;return r+o}return r},0)}function Rre(e){var t=Wf(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:ed;return r+o}return r},0)}function ene(e){var t=Uf(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:oy;return r+o}return r},0)}function tne(e){var t=Uf(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:oy;return r+o}return r},0)}var Nr=te([xo,bo,Ff,Jre,Qre,Rre,ene,tne,fN,gL],(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},p=Z1(Z1({},d),c),f=p.bottom;p.bottom+=n,p=v6(p,l,u);var m=e-p.left-p.right,y=t-p.top-p.bottom;return Z1(Z1({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(y,0)})}),J1=te(Nr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Hf=te(xo,bo,(e,t)=>({x:0,y:0,width:e,height:t}));var rne=q(X()),Q1=q(X()),nne=(0,Q1.createContext)(null),vr=()=>(0,Q1.useContext)(nne)!=null;var Kf=e=>e.brush,td=te([Kf,Nr,Ff],(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 rd=q(X()),qn=q(X());function E6(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(),f()},c=null,d=()=>{c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},t)},p=()=>{c!==null&&(clearTimeout(c),c=null)},f=()=>{p(),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=f,y.flush=m,r?.addEventListener("abort",f,{once:!0}),y}function N6(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=E6(function(...p){s=e.apply(this,p),l=null},t,{edges:i}),c=function(...p){return a!=null&&(l===null&&(l=Date.now()),Date.now()-l>=a)?(s=e.apply(this,p),l=Date.now(),u.cancel(),u.schedule(),s):(u.apply(this,p),s)},d=()=>(u.flush(),s);return c.cancel=u.cancel,c.flush=d,c}function VN(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return N6(e,t,{leading:n,maxWait:t,trailing:o})}var one=!0,Vf=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var Ji={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},qN=(e,t,r)=>{var n=r.width,o=n===void 0?Ji.width:n,a=r.height,i=a===void 0?Ji.height:a,s=r.aspect,l=r.maxHeight,u=fl(o)?e:Number(o),c=fl(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}},ane={width:0,height:0,overflow:"visible"},ine={width:0,overflowX:"visible"},sne={height:0,overflowY:"visible"},lne={},T6=e=>{var t=e.width,r=e.height,n=fl(t),o=fl(r);return n&&o?ane:n?ine:o?sne:lne};function O6(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=Ji.width,a=Ji.height):o===void 0?o=n&&n>0?void 0:Ji.width:a===void 0&&(a=n&&n>0?void 0:Ji.height),{width:o,height:a}}var une=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function R1(){return R1=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 bne(o)?rd.createElement(D6.Provider,{value:o},t):null}var ay=()=>(0,qn.useContext)(D6),wne=(0,qn.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?Ji.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?Ji.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?Ji.debounce:p,m=e.id,y=e.className,b=e.onResize,h=e.style,g=h===void 0?{}:h,v=vne(e,une),x=(0,qn.useRef)(null),S=(0,qn.useRef)();S.current=b,(0,qn.useImperativeHandle)(t,()=>x.current);var w=(0,qn.useState)({containerWidth:o.width,containerHeight:o.height}),A=fne(w,2),k=A[0],_=A[1],C=(0,qn.useCallback)((N,O)=>{_($=>{var T=Math.round(N),I=Math.round(O);return $.containerWidth===T&&$.containerHeight===I?$:{containerWidth:T,containerHeight:I}})},[]);(0,qn.useEffect)(()=>{if(x.current==null||typeof ResizeObserver>"u")return ta;var N=P=>{var H,Q=P[0];if(Q!=null){var K=Q.contentRect,ue=K.width,fe=K.height;C(ue,fe),(H=S.current)===null||H===void 0||H.call(S,ue,fe)}};f>0&&(N=VN(N,f,{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,f]);var E=k.containerWidth,j=k.containerHeight;Vf(!r||r>0,"The aspect(%s) must be greater than zero.",r);var F=qN(E,j,{width:a,height:i,aspect:r,maxHeight:c}),D=F.calculatedWidth,z=F.calculatedHeight;return Vf(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),rd.createElement("div",R1({id:m?"".concat(m):void 0,className:ut("recharts-responsive-container",y),style:M6(M6({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:x},v),rd.createElement("div",{style:T6({width:a,height:i})},rd.createElement(j6,{width:D,height:z},d)))}),Iu=(0,qn.forwardRef)((e,t)=>{var r=ay();if(va(r.width)&&va(r.height))return e.children;var n=O6({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=qN(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)?rd.createElement(j6,{width:s,height:l},e.children):rd.createElement(wne,R1({},e,{width:o,height:a,ref:t}))});var nd=()=>{var e,t=vr(),r=Pe(J1),n=Pe(td),o=(e=Pe(Kf))===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}},Sne={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},ew=()=>{var e;return(e=Pe(Nr))!==null&&e!==void 0?e:Sne},qf=()=>Pe(xo),Gf=()=>Pe(bo),L6=()=>Pe(e=>e.layout.margin),_t=e=>e.layout.layoutType,ba=()=>Pe(_t),Yf=()=>{var e=ba();if(e==="horizontal"||e==="vertical")return e},tw=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},z6=()=>Pe(tw),B6=()=>{var e=ba();return e!==void 0},od=e=>{var t=wt(),r=vr(),n=e.width,o=e.height,a=ay(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,$6.useEffect)(()=>{!r&&va(i)&&va(s)&&t(m6({width:i,height:s}))},[t,r,i,s]),null};var kne={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},F6=yr({name:"legend",initialState:kne,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=Oo(e).payload.indexOf(Lt(n));a>-1&&(e.payload[a]=Lt(o))},prepare:kr()},removeLegendPayload:{reducer(e,t){var r=Oo(e).payload.indexOf(Lt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:kr()}}}),iy=F6.actions,GN=iy.setLegendSize,U6=iy.setLegendSettings,YN=iy.addLegendPayload,XN=iy.replaceLegendPayload,ZN=iy.removeLegendPayload;var W6=F6.reducer;var _n=q(X(),1),Jne=q(q6(),1);var Pne=Symbol.for("react.forward_ref");var Mne=Symbol.for("react.memo");var Ine=Pne,Dne=Mne;function jne(e){e()}function $ne(){let e=null,t=null;return{clear(){e=null,t=null},notify(){jne(()=>{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 G6={notify(){},get:()=>[]};function Lne(e,t){let r,n=G6,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=$ne())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=G6)}function p(){a||(a=!0,c())}function f(){a&&(a=!1,d())}let m={addNestedSub:i,notifyNestedSubs:s,handleChangeWrapper:l,isSubscribed:u,trySubscribe:p,tryUnsubscribe:f,getListeners:()=>n};return m}var zne=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Bne=zne(),Fne=()=>typeof navigator<"u"&&navigator.product==="ReactNative",Une=Fne(),Wne=()=>Bne||Une?_n.useLayoutEffect:_n.useEffect,Hne=Wne();function Y6(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function X6(e,t){if(Y6(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=Lne(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=_n.useMemo(()=>o.getState(),[o]);return Hne(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),_n.createElement((r||Xne).Provider,{value:a},t)}var Z6=Zne;var Qne=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function Rne(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function wa(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(Qne.has(n)){if(e[n]==null&&t[n]==null)continue;if(!X6(e[n],t[n]))return!1}else if(!Rne(e[n],t[n]))return!1;return!0}var J6=te([xo,bo,Ff],(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 Q6(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 eoe=["contextPayload"];function JN(){return JN=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(U6({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function voe(e){var t=e.width,r=e.height,n=wt();return(0,rw.useLayoutEffect)(()=>{n(GN({width:t,height:r}))},[n,t,r]),(0,rw.useLayoutEffect)(()=>()=>{n(GN({width:0,height:0}))},[n]),null}function xoe(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var boe={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function woe(e){var t,r,n,o,a,i,s,l,u=Kt(e,boe),c=e.layout&&e.layout!=="auto"?e.layout:foe(u.position),d=yL(),p=n$(),f=L6(),m=Pe(I=>moe(I,u.position)),y=u.width,b=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||Hh(u.position)),x=x1([d]),S=toe(x,2),w=S[0],A=S[1],k=qf(),_=Gf();if(k==null||_==null||u.position!=null&&m==null)return null;var C=k-(f?.left||0)-(f?.right||0),E=xoe(c,b,y,C),j=u.position==null?null:Ib({viewBox:m??{x:0,y:0,width:k,height:_},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),F=goe(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:Q6(j.horizontalAnchor,j.verticalAnchor)}:hoe(h,u,f,k,_,w),O=g?h:Xf(Xf({position:"absolute",width:E?.width||y||"auto",height:E?.height||b||"auto"},N),h),$=g??p;if($==null||d==null)return null;var T=Ya.createElement("div",{className:"recharts-legend-wrapper",style:O,ref:A},Ya.createElement(yoe,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&Ya.createElement(voe,w),Ya.createElement(poe,JN({},u,{layout:c},E,{margin:f,chartWidth:k,chartHeight:_,contextPayload:d})));return(0,tz.createPortal)(T,$)}var nw=Ya.memo(woe,wa);nw.displayName="Legend";var Ti=q(X()),TF=q(X()),OF=q(Wg());var Qi=q(X());function QN(){return QN=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?Zf.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?Zf.labelStyle:a,s=e.payload,l=e.formatter,u=e.itemSorter,c=e.wrapperClassName,d=e.labelClassName,p=e.label,f=e.labelFormatter,m=e.accessibilityLayer,y=m===void 0?Zf.accessibilityLayer:m,b=()=>{if(s&&s.length){var k={padding:0,margin:0},_=Poe(s,u),C=_.map((E,j)=>{if(!E||E.type==="none")return null;var F=E.formatter||l||Ooe,D=E.value,z=E.name,N=D,O=z;if(F){var $=F(D,z,E,j,s);if(Array.isArray($)){var T=Coe($,2);N=T[0],O=T[1]}else if($!=null)N=$;else return null}var I=ly(ly({},Zf.itemStyle),{},{color:E.color||Zf.itemStyle.color},o);return Qi.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(j),style:I},ea(O)?Qi.createElement("span",{className:"recharts-tooltip-item-name"},O):null,ea(O)?Qi.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,Qi.createElement("span",{className:"recharts-tooltip-item-value"},N),Qi.createElement("span",{className:"recharts-tooltip-item-unit"},E.unit||""))});return Qi.createElement("ul",{className:"recharts-tooltip-item-list",style:k},C)}return null},h=ly(ly({},Zf.contentStyle),n),g=ly({margin:0},i),v=!Yt(p),x=v?p:"",S=ut("recharts-default-tooltip",c),w=ut("recharts-tooltip-label",d);v&&f&&s!==void 0&&s!==null&&(x=f(p,s));var A=y?{role:"status","aria-live":"assertive"}:{};return Qi.createElement("div",QN({className:S,style:h},A),Qi.createElement("p",{className:w,style:g},Qi.isValidElement(x)?x:"".concat(x)),b())};var Du=q(X());var uy="recharts-tooltip-wrapper",Moe={visibility:"hidden"};function Ioe(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return ut(uy,{["".concat(uy,"-right")]:Oe(r)&&t&&Oe(t.x)&&r>=t.x,["".concat(uy,"-left")]:Oe(r)&&t&&Oe(t.x)&&r=t.y,["".concat(uy,"-top")]:Oe(n)&&t&&Oe(t.y)&&n0?o:0),d=r[n]+o;if(t[n])return i[n]?c:d;var p=l[n];if(p==null)return 0;if(i[n]){var f=c,m=p;return fb?Math.max(c,p):Math.max(d,p)}function Doe(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 iz(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,p;return s&&s.height>0&&s.width>0&&r?(d=az({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=az({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=Doe({translateX:d,translateY:p,useTranslate3d:l})):c=Moe,{cssProperties:c,cssClasses:Ioe({translateX:d,translateY:p,coordinate:r})}}var ow=q(X());var joe=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),ki={devToolsEnabled:!0,isSsr:joe()};function $oe(e,t){return Foe(e)||Boe(e,t)||zoe(e,t)||Loe()}function Loe(){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 zoe(e,t){if(e){if(typeof e=="string")return sz(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)?sz(e,t):void 0}}function sz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rki.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=$oe(e,2),r=t[0],n=t[1];return(0,ow.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 lz(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 Jf(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=Koe(l,2),c=u[0],d=u[1];Du.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(Jf(Jf({},c),{},{dismissed:!1}));var p=iz({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}),f=p.cssClasses,m=p.cssProperties,y=e.hasPortalFromProps?{}:Jf(Jf({transition:Xoe({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),b=Jf(Jf({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return Du.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:b,ref:e.innerRef},e.children)}var cz=Du.memo(Zoe);var iw=()=>{var e;return(e=Pe(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var qS=q(X()),Cm=q(X());var hz=q(X());function RN(){return RN=Object.assign?Object.assign.bind():function(e){for(var t=1;tgt(e.x)&>(e.y),mz=e=>e.base!=null&&sw(e.base)&&sw(e),cy=e=>e.x,dy=e=>e.y,eae=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(gl(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=fz["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return fz[r]||Ou},gz={connectNulls:!1,type:"linear"},tae=e=>{var t=e.type,r=t===void 0?gz.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?gz.connectNulls:s,u=eae(r,i),c=l?o.filter(sw):o;if(Array.isArray(a)){var d,p=o.map((h,g)=>pz(pz({},h),{},{base:a[g]}));i==="vertical"?d=Cf().y(dy).x1(cy).x0(h=>h.base.x):d=Cf().x(cy).y1(dy).y0(h=>h.base.y);var f=d.defined(mz).curve(u),m=l?p.filter(mz):p;return f(m)}var y;i==="vertical"&&Oe(a)?y=Cf().y(dy).x1(cy).x0(a):Oe(a)?y=Cf().x(cy).y1(dy).y0(a):y=Vh().x(cy).y(dy);var b=y.defined(sw).curve(u);return b(c)},Es=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=ba();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?tae(i):n;return hz.createElement("path",RN({},Qr(e),Of(e),{className:ut("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var vz=q(X());var rae=["x","y","top","left","width","height","className"];function eT(){return eT=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),xz=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,p=d===void 0?0:d,f=e.className,m=sae(e,rae),y=nae({x:r,y:o,top:i,left:l,width:c,height:p},m);return!Oe(r)||!Oe(o)||!Oe(c)||!Oe(p)||!Oe(i)||!Oe(l)?null:vz.createElement("path",eT({},Rr(y),{className:ut("recharts-cross",f),d:uae(r,o,c,p,i,l)}))};function bz(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 fw=q(X()),_i=q(X());var py=q(X());var lw=1e-4,kz=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],_z=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),wz=(e,t)=>r=>{var n=kz(e,t);return _z(n,r)},cae=(e,t)=>r=>{var n=kz(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return _z(o,r)},dae=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]]},pae=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=wz(e,r),a=wz(t,n),i=cae(e,r),s=u=>u>1?1:u<0?0:u,l=u=>{for(var c=u>1?1:u,d=c,p=0;p<8;++p){var f=o(d)-c,m=i(d);if(Math.abs(f-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,p=1e4,f=0;f{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}},Cz=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return Sz(e);case"spring":return mae();default:if(e.split("(")[0]==="cubic-bezier")return Sz(e)}return typeof e=="function"?e:null};var Qf=q(X());var Az=(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 Ez=(0,Qf.createContext)(Az),mTe=Ez.Provider;function Nz(e){var t=(0,Qf.useContext)(Ez);return(0,Qf.useMemo)(()=>e??t,[e,t])}function gae(e,t,r){return(t=hae(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function hae(e){var t=yae(e,"string");return typeof t=="symbol"?t:t+""}function yae(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 Tz="init",Oz="pending",Pz="active",vae="completed";function tT(e){return Math.max(0,e)}var rT=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;gae(this,"state",Tz),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=tT(t.animationDuration),this.animationBegin=tT(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()===Tz)return this.state=Oz,this.beginStartedTime=t,this.animationBegin;if(this.getState()===Oz){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=Pz,this.animationStartedTime=t,this.nextAnimationUpdate(0)):tT(this.animationBegin-r)}if(this.getState()===Pz){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=vae}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},uw=class extends rT{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(hr(this.getFrom(),this.getTo(),this.getProgress()))}};var cw=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 xae(e,t){return kae(e)||Sae(e,t)||wae(e,t)||bae()}function bae(){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 wae(e,t){if(e){if(typeof e=="string")return Mz(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)?Mz(e,t):void 0}}function Mz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},Iz=0,nT=1;function dw(e){var t=Kt(e,_ae),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=aw(),p=n==="auto"?!ki.isSsr&&!d:n,f=Nz(t.animationController),m=(0,py.useState)(p?Iz:nT),y=xae(m,2),b=y[0],h=y[1];return(0,py.useEffect)(()=>{p||h(nT)},[p]),(0,py.useEffect)(()=>{var g=Cz(i);if(!p||!o||g==null)return ta;var v=new cw,x=new uw({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:Iz,to:nT});return f(v,x,h)},[f,r,p,o,a,i,s,u,l]),c(Number(b))}var oT=q(X());function pw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,oT.useRef)(ml(t)),n=(0,oT.useRef)(e);return n.current!==e&&(r.current=ml(t),n.current=e),r.current}var Cae=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),Dz=(e,t,r)=>e.map(n=>"".concat(Cae(n)," ").concat(t,"ms ").concat(r)).join(",");var Aae=["radius"],Eae=["radius"],jz,$z,Lz,zz,Bz,Fz,Uz,Wz,Hz,Kz;function Vz(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 qz(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=yi(r),i=yi(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 p=[0,0,0,0],f=0,m=4;fs?s:b}d=Rn(jz||(jz=Ns(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=Rn($z||($z=Ns(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=Rn(Lz||(Lz=Ns(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=Rn(zz||(zz=Ns(["A ",",",",0,0,",`, + `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=Rn(Bz||(Bz=Ns(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=Rn(Fz||(Fz=Ns(["A ",",",",0,0,",`, + `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=Rn(Uz||(Uz=Ns(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=Rn(Wz||(Wz=Ns(["A ",",",",0,0,",`, + `,",",""])),p[3],p[3],c,e,t+n-l*p[3])),d+="Z"}else if(s>0&&o===+o&&o>0){var h=Math.min(s,o);d=Rn(Hz||(Hz=Ns(["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=Rn(Kz||(Kz=Ns(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},Zz={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},gw=e=>{var t=Kt(e,Zz),r=(0,_i.useRef)(null),n=(0,_i.useState)(-1),o=Mae(n,2),a=o[0],i=o[1];(0,_i.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,p=t.className,f=t.animationEasing,m=t.animationDuration,y=t.animationBegin,b=t.isAnimationActive,h=t.isUpdateAnimationActive,g=(0,_i.useRef)(u),v=(0,_i.useRef)(c),x=(0,_i.useRef)(s),S=(0,_i.useRef)(l),w=(0,_i.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),A=pw(w,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var k=ut("recharts-rectangle",p);if(!h){var _=Rr(t),C=_.radius,E=Gz(_,Aae);return fw.createElement("path",mw({},E,{x:yi(s),y:yi(l),width:yi(u),height:yi(c),radius:typeof d=="number"?d:void 0,className:k,d:Xz(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"),$=Dz(["strokeDasharray"],m,typeof f=="string"?f:Zz.animationEasing);return fw.createElement(dw,{animationId:A,key:A,canBegin:a>0,duration:m,easing:f,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=Rr(t),fe=ue.radius,re=Gz(ue,Eae);return fw.createElement("path",mw({},re,{radius:typeof d=="number"?d:void 0,className:k,d:Xz(H,Q,I,P,d),ref:r,style:qz(qz({},K),t.style)}))})};function Jz(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 Qz(e){for(var t=1;te*180/Math.PI,Ur=(e,t,r,n)=>({x:e+Math.cos(-fy*n)*r,y:t+Math.sin(-fy*n)*r}),hw=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},Uae=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},Wae=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=Uae({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:Fae(l),angleInRadian:l}},Hae=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}},Kae=(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},Rz=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=Wae({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=Hae(t),c=u.startAngle,d=u.endAngle,p=i,f;if(c<=d){for(;p>d;)p-=360;for(;p=c&&p<=d}else{for(;p>c;)p-=360;for(;p=d&&p<=c}return f?Qz(Qz({},t),{},{radius:a,angle:Kae(p,t)}):null};function yw(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=Ur(t,r,n,o),s=Ur(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var sB=q(X());var eB,tB,rB,nB,oB,aB,iB;function aT(){return aT=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},vw=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)/fy,d=l?o:o+a*c,p=Ur(t,r,u,d),f=Ur(t,r,n,d),m=l?o-a*c:o,y=Ur(t,r,u*Math.cos(c*fy),m);return{center:p,circleTangency:f,lineTangency:y,theta:c}},lB=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=Vae(a,i),l=a+s,u=Ur(t,r,o,a),c=Ur(t,r,o,l),d=Rn(eB||(eB=ad(["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 p=Ur(t,r,n,a),f=Ur(t,r,n,l);d+=Rn(tB||(tB=ad(["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"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=Rn(rB||(rB=ad(["L ",","," Z"])),t,r);return d},qae=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=vw({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,y=vw({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?Rn(nB||(nB=ad(["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 ",",",` + `])),f.x,f.y,a,a,a*2,a,a,-a*2):lB({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var x=Rn(oB||(oB=ad(["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",",",` + `])),f.x,f.y,a,a,+(c<0),p.x,p.y,o,o,+(v>180),+(c<0),b.x,b.y,a,a,+(c<0),h.x,h.y);if(n>0){var S=vw({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,_=vw({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+=Rn(aB||(aB=ad(["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+=Rn(iB||(iB=ad(["L",",","Z"])),t,r);return x},Gae={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},xw=e=>{var t=Kt(e,Gae),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=qae({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=lB({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),sB.createElement("path",aT({},Rr(t),{className:p,d:y}))};function uB(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(Ub(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=Ur(n,o,a,s),u=Ur(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return yw(t)}}function cB(e){return y1(e)?NaN:Number(e)}function bw(e){return e?(e=cB(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function ww(e,t,r){r&&typeof r!="number"&&Jh(e,t,r)&&(t=r=void 0),e=bw(e),t===void 0?(t=e,e=0):t=bw(t),r=r===void 0?ee.chartData,id=te([Sa],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),sd=(e,t,r,n)=>n?id(e):Sa(e),Sw=(e,t,r)=>r?id(e):Sa(e),dB=te([sd],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),pB=te([id],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),fB=te([Sa],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function iT(e,t){return Jae(e)||Zae(e,t)||Xae(e,t)||Yae()}function Yae(){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 Xae(e,t){if(e){if(typeof e=="string")return mB(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)?mB(e,t):void 0}}function mB(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=my(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},dT=(e,t,r)=>{if(e.lte(0))return new dr.default(0);var n=uT(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()))},bB=(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(f=>f>=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,p=new dr.default(d).mul(s);return t?p:new dr.default(Math.ceil(p.toNumber()))},rie=(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(uT(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]:dT;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?wB(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 Cw=function(t){var r=my(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=xB([n,o]),c=my(u,2),d=c[0],p=c[1];if(d===-1/0||p===1/0){var f=p===1/0?[d,...Array(a-1).fill(1/0)]:[...Array(a-1).fill(-1/0),p];return n>o?f.reverse():f}if(d===p)return rie(d,a,i);var m=s==="snap125"?bB:dT,y=wB(d,p,l,i,0,m),b=y.step,h=y.tickMin,g=y.tickMax,v=cT(h,g.add(new dr.default(.1).mul(b)),b);return n>o?v.reverse():v},Aw=function(t,r){var n=my(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=xB([o,a]),u=my(l,2),c=u[0],d=u[1];if(c===-1/0||d===1/0)return[o,a];if(c===d)return[c];var p=s==="snap125"?bB:dT,f=Math.max(r,2),m=p(new dr.default(d).sub(c).div(f-1),i,0),y=[...cT(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 pT=e=>e.rootProps.maxBarSize,SB=e=>e.rootProps.barGap,Ew=e=>e.rootProps.barCategoryGap,kB=e=>e.rootProps.barSize,ju=e=>e.rootProps.stackOffset,Nw=e=>e.rootProps.reverseStackOrder,Rf=e=>e.options.chartName,Tw=e=>e.rootProps.syncId,fT=e=>e.rootProps.syncMethod,Ow=e=>e.options.eventEmitter,_B=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 $u={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 Ri={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 ld=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function ud(e,t,r){if(r!=="auto")return r;if(e!=null)return Lo(e,t)?"category":"number"}function CB(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 Pw(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},Mw=te([iie,tw],(e,t)=>{var r;if(e!=null)return e;var n=(r=ud(t,"angleAxis",AB.type))!==null&&r!==void 0?r:"category";return Pw(Pw({},AB),{},{type:n})}),sie=(e,t)=>e.polarAxis.radiusAxis[t],Iw=te([sie,tw],(e,t)=>{var r;if(e!=null)return e;var n=(r=ud(t,"radiusAxis",EB.type))!==null&&r!==void 0?r:"category";return Pw(Pw({},EB),{},{type:n})}),Dw=e=>e.polarOptions,mT=te([xo,bo,Nr],hw),NB=te([Dw,mT],(e,t)=>{if(e!=null)return hn(e.innerRadius,t,0)}),TB=te([Dw,mT],(e,t)=>{if(e!=null)return hn(e.outerRadius,t,t*.8)}),lie=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},gT=te([Dw],lie),BOe=te([Mw,gT],ld),hT=te([mT,NB,TB],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),FOe=te([Iw,hT],ld),jw=te([_t,Dw,NB,TB,xo,bo],(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:hn(i,o,o/2),cy:hn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var en=(e,t)=>t;var cd=(e,t,r)=>r;function Lu(e){return e?.id}function $w(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=Lu(l);c.forEach((p,f)=>{var m=i==null||a?f:String(Nt(p,i,null)),y=Nt(p,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 dd(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var pd=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function em(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function OB(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 zu=e=>e.tooltip.settings.axisId;function gy(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 Lw=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!Xa(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 $y={};rJ($y,{scaleBand:()=>xy,scaleDiverging:()=>vS,scaleDivergingLog:()=>XT,scaleDivergingPow:()=>xS,scaleDivergingSqrt:()=>Q7,scaleDivergingSymlog:()=>ZT,scaleIdentity:()=>rS,scaleImplicit:()=>Kw,scaleLinear:()=>tS,scaleLog:()=>nS,scaleOrdinal:()=>nm,scalePoint:()=>LB,scalePow:()=>Oy,scaleQuantile:()=>iS,scaleQuantize:()=>sS,scaleRadial:()=>aS,scaleSequential:()=>mS,scaleSequentialLog:()=>GT,scaleSequentialPow:()=>gS,scaleSequentialQuantile:()=>hS,scaleSequentialSqrt:()=>J7,scaleSequentialSymlog:()=>YT,scaleSqrt:()=>x7,scaleSymlog:()=>oS,scaleThreshold:()=>lS,scaleTime:()=>VT,scaleUtc:()=>qT,tickFormat:()=>Cy});function na(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function yT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function fd(e){let t,r,n;e.length!==2?(t=na,r=(s,l)=>na(e(s),l),n=(s,l)=>e(s)-l):(t=e===na||e===yT?e:uie,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 uie(){return 0}function hy(e){return e===null?NaN:+e}function*PB(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 MB=fd(na),IB=MB.right,cie=MB.left,die=fd(hy).center,es=IB;var tm=class extends Map{constructor(t,r=mie){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(DB(this,t))}has(t){return super.has(DB(this,t))}set(t,r){return super.set(pie(this,t),r)}delete(t){return super.delete(fie(this,t))}};function DB({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function pie({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function fie({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function mie(e){return e!==null&&typeof e=="object"?e.valueOf():e}function jB(e=na){if(e===na)return vT;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 vT(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var gie=Math.sqrt(50),hie=Math.sqrt(10),yie=Math.sqrt(2);function zw(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>=gie?10:a>=hie?5:a>=yie?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 Fw(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 Uw(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?vT:jB(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),p=.5*Math.sqrt(c*d*(l-d)/l)*(u-l/2<0?-1:1),f=Math.max(r,Math.floor(t-u*d/l+p)),m=Math.min(n,Math.floor(t+(l-u)*d/l+p));Uw(e,t,f,m,o)}let a=e[t],i=r,s=n;for(vy(e,r,t),o(e[n],a)>0&&vy(e,r,n);i0;)--s}o(e[r],a)===0?vy(e,r,s):(++s,vy(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function vy(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function Ww(e,t,r){if(e=Float64Array.from(PB(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Fw(e);if(t>=1)return Bw(e);var n,o=(n-1)*t,a=Math.floor(o),i=Bw(Uw(e,a).subarray(0,a+1)),s=Fw(e.subarray(a+1));return i+(s-i)*(o-a)}}function xT(e,t,r=hy){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 Hw(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?qw(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?qw(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=xie.exec(e))?new ka(t[1],t[2],t[3],1):(t=bie.exec(e))?new ka(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=wie.exec(e))?qw(t[1],t[2],t[3],t[4]):(t=Sie.exec(e))?qw(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=kie.exec(e))?KB(t[1],t[2]/100,t[3]/100,1):(t=_ie.exec(e))?KB(t[1],t[2]/100,t[3]/100,t[4]):zB.hasOwnProperty(e)?UB(zB[e]):e==="transparent"?new ka(NaN,NaN,NaN,0):null}function UB(e){return new ka(e>>16&255,e>>8&255,e&255,1)}function qw(e,t,r,n){return n<=0&&(e=t=r=NaN),new ka(e,t,r,n)}function Eie(e){return e instanceof Sy||(e=Bu(e)),e?(e=e.rgb(),new ka(e.r,e.g,e.b,e.opacity)):new ka}function am(e,t,r,n){return arguments.length===1?Eie(e):new ka(e,t,r,n??1)}function ka(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Vw(ka,am,bT(Sy,{brighter(e){return e=e==null?Yw:Math.pow(Yw,e),new ka(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?by:Math.pow(by,e),new ka(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ka(hd(this.r),hd(this.g),hd(this.b),Xw(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:WB,formatHex:WB,formatHex8:Nie,formatRgb:HB,toString:HB}));function WB(){return`#${gd(this.r)}${gd(this.g)}${gd(this.b)}`}function Nie(){return`#${gd(this.r)}${gd(this.g)}${gd(this.b)}${gd((isNaN(this.opacity)?1:this.opacity)*255)}`}function HB(){let e=Xw(this.opacity);return`${e===1?"rgb(":"rgba("}${hd(this.r)}, ${hd(this.g)}, ${hd(this.b)}${e===1?")":`, ${e})`}`}function Xw(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function hd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function gd(e){return e=hd(e),(e<16?"0":"")+e.toString(16)}function KB(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new ts(e,t,r,n)}function qB(e){if(e instanceof ts)return new ts(e.h,e.s,e.l,e.opacity);if(e instanceof Sy||(e=Bu(e)),!e)return new ts;if(e instanceof ts)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 ts(i,s,l,e.opacity)}function GB(e,t,r,n){return arguments.length===1?qB(e):new ts(e,t,r,n??1)}function ts(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Vw(ts,GB,bT(Sy,{brighter(e){return e=e==null?Yw:Math.pow(Yw,e),new ts(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?by:Math.pow(by,e),new ts(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 ka(wT(e>=240?e-240:e+120,o,n),wT(e,o,n),wT(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new ts(VB(this.h),Gw(this.s),Gw(this.l),Xw(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=Xw(this.opacity);return`${e===1?"hsl(":"hsla("}${VB(this.h)}, ${Gw(this.s)*100}%, ${Gw(this.l)*100}%${e===1?")":`, ${e})`}`}}));function VB(e){return e=(e||0)%360,e<0?e+360:e}function Gw(e){return Math.max(0,Math.min(1,e||0))}function wT(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 ST(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 YB(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 Tie(e,t){return function(r){return e+r*t}}function Oie(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 ZB(e){return(e=+e)==1?Zw:function(t,r){return r-t?Oie(t,r,e):ky(isNaN(t)?r:t)}}function Zw(e,t){var r=t-e;return r?Tie(e,r):ky(isNaN(e)?t:e)}var kT=(function e(t){var r=ZB(t);function n(o,a){var i=r((o=am(o)).r,(a=am(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=Zw(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 JB(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:Fu(n,o)})),r=_T.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Die(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?jie:Die,l=u=null,d}function d(p){return p==null||isNaN(p=+p)?a:(l||(l=s(e.map(n),t,r)))(n(i(p)))}return d.invert=function(p){return i(o((u||(u=s(t,e.map(n),Fu)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Uu),c()):e.slice()},d.range=function(p){return arguments.length?(t=Array.from(p),c()):t.slice()},d.rangeRound=function(p){return t=Array.from(p),r=yd,c()},d.clamp=function(p){return arguments.length?(i=p?!0:to,c()):i!==to},d.interpolate=function(p){return arguments.length?(r=p,c()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,f){return n=p,o=f,c()}}function xd(){return vd()(to,to)}function a7(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function bd(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 Ps(e){return e=bd(Math.abs(e)),e?e[1]:NaN}function i7(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 s7(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var $ie=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ms(e){if(!(t=$ie.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]})}Ms.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 l7(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 _y;function u7(e,t){var r=bd(e,t);if(!r)return _y=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(_y=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")+bd(e,Math.max(0,t+a-1))[0]}function NT(e,t){var r=bd(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 TT={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:a7,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)=>NT(e*100,t),r:NT,s:u7,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function OT(e){return e}var c7=Array.prototype.map,d7=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function p7(e){var t=e.grouping===void 0||e.thousands===void 0?OT:i7(c7.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?OT:s7(c7.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,p){d=Ms(d);var f=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"):TT[w]||(x===void 0&&(x=12),S=!0,w="g"),(h||f==="0"&&m==="=")&&(h=!0,f="0",m="=");var A=(p&&p.prefix!==void 0?p.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():""),k=(b==="$"?n:/[%p]/.test(w)?i:"")+(p&&p.suffix!==void 0?p.suffix:""),_=TT[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=l7(j)),$&&+j==0&&y!=="+"&&($=!1),F=($?y==="("?y:s:y==="-"||y==="("?"":y)+F,D=(w==="s"&&!isNaN(j)&&_y!==void 0?d7[8+_y/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,p){var f=Math.max(-8,Math.min(8,Math.floor(Ps(p)/3)))*3,m=Math.pow(10,-f),y=u((d=Ms(d),d.type="f",d),{suffix:d7[8+f/3]});return function(b){return y(m*b)}}return{format:u,formatPrefix:c}}var Rw,im,eS;PT({thousands:",",grouping:[3],currency:["$",""]});function PT(e){return Rw=p7(e),im=Rw.format,eS=Rw.formatPrefix,Rw}function MT(e){return Math.max(0,-Ps(Math.abs(e)))}function IT(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ps(t)/3)))*3-Ps(Math.abs(e)))}function DT(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ps(t)-Ps(e))+1}function Cy(e,t,r,n){var o=rm(e,t,r),a;switch(n=Ms(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=IT(o,i))&&(n.precision=a),eS(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=DT(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=MT(o))&&(n.precision=a-(n.type==="%")*2);break}}return im(n)}function oa(e){var t=e.domain;return e.ticks=function(r){var n=t();return md(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return Cy(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=yy(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 tS(){var e=xd();return e.copy=function(){return Os(e,tS())},un.apply(e,arguments),oa(e)}function rS(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,Uu),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return rS(e).unknown(t)},e=arguments.length?Array.from(e,Uu):[0,1],oa(r)}function Ay(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 Uie(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 g7(e){return(t,r)=>-e(-t,r)}function Ey(e){let t=e(f7,m7),r=t.domain,n=10,o,a;function i(){return o=Uie(n),a=Fie(n),r()[0]<0?(o=g7(o),a=g7(a),e(Lie,zie)):e(f7,m7),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(;p<=f;++p)for(m=1;mc)break;h.push(y)}}else for(;p<=f;++p)for(m=n-1;m>=1;--m)if(y=p>0?m/a(-p):m*a(p),!(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=Ms(l)).precision==null&&(l.trim=!0),l=im(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(Ay(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function nS(){let e=Ey(vd()).domain([1,10]);return e.copy=()=>Os(e,nS()).base(e.base()),un.apply(e,arguments),e}function h7(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function y7(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Ny(e){var t=1,r=e(h7(t),y7(t));return r.constant=function(n){return arguments.length?e(h7(t=+n),y7(t)):t},oa(r)}function oS(){var e=Ny(vd());return e.copy=function(){return Os(e,oS()).constant(e.constant())},un.apply(e,arguments)}function v7(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Wie(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Hie(e){return e<0?-e*e:e*e}function Ty(e){var t=e(to,to),r=1;function n(){return r===1?e(to,to):r===.5?e(Wie,Hie):e(v7(r),v7(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},oa(t)}function Oy(){var e=Ty(vd());return e.copy=function(){return Os(e,Oy()).exponent(e.exponent())},un.apply(e,arguments),e}function x7(){return Oy.apply(null,arguments).exponent(.5)}function b7(e){return Math.sign(e)*e*e}function Kie(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function aS(){var e=xd(),t=[0,1],r=!1,n;function o(a){var i=Kie(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(b7(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,Uu)).map(b7)),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 aS(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},un.apply(o,arguments),oa(o)}function iS(){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 sS().domain([e,t]).range(o).unknown(a)},un.apply(oa(i),arguments)}function lS(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[es(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 lS().domain(e).range(t).unknown(r)},un.apply(o,arguments)}var jT=new Date,$T=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)=>(jT.setTime(+a),$T.setTime(+i),e(jT),e($T),Math.floor(r(jT,$T))),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 Py=$r(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Py.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):Py);var v3e=Py.range;var Ai=$r(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),w7=Ai.range;var sm=$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()),Vie=sm.range,lm=$r(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),qie=lm.range;var um=$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()),Gie=um.range,cm=$r(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),Yie=cm.range;var Sl=$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),Xie=Sl.range,kd=$r(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),Zie=kd.range,uS=$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)),Jie=uS.range;function _d(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 kl=_d(0),dm=_d(1),k7=_d(2),_7=_d(3),Wu=_d(4),C7=_d(5),A7=_d(6),E7=kl.range,Qie=dm.range,Rie=k7.range,ese=_7.range,tse=Wu.range,rse=C7.range,nse=A7.range;function Cd(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 _l=Cd(0),pm=Cd(1),N7=Cd(2),T7=Cd(3),Hu=Cd(4),O7=Cd(5),P7=Cd(6),M7=_l.range,ose=pm.range,ase=N7.range,ise=T7.range,sse=Hu.range,lse=O7.range,use=P7.range;var fm=$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()),cse=fm.range,mm=$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()),dse=mm.range;var Ja=$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());Ja.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 pse=Ja.range,Qa=$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());Qa.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 fse=Qa.range;function D7(e,t,r,n,o,a){let i=[[Ai,1,1e3],[Ai,5,5*1e3],[Ai,15,15*1e3],[Ai,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 p=cb).right(i,p);if(f===i.length)return e.every(rm(u/31536e6,c/31536e6,d));if(f===0)return Py.every(Math.max(rm(u,c,d),1));let[m,y]=i[p/i[f-1][2]53)return null;"w"in ee||(ee.w=1),"Z"in ee?(B=WT(Iy(ee.y,0,1)),V=B.getUTCDay(),B=V>4||V===0?pm.ceil(B):pm(B),B=kd.offset(B,(ee.V-1)*7),ee.y=B.getUTCFullYear(),ee.m=B.getUTCMonth(),ee.d=B.getUTCDate()+(ee.w+6)%7):(B=UT(Iy(ee.y,0,1)),V=B.getDay(),B=V>4||V===0?dm.ceil(B):dm(B),B=Sl.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),V="Z"in ee?WT(Iy(ee.y,0,1)).getUTCDay():UT(Iy(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(V+5)%7:ee.w+ee.U*7-(V+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,WT(ee)):UT(ee)}}function k(de,se,Z,ee){for(var L=0,B=se.length,V=Z.length,M,ne;L=V)return-1;if(M=se.charCodeAt(L++),M===37){if(M=se.charAt(L++),ne=S[M in j7?se.charAt(L++):M],!ne||(ee=ne(de,Z,ee))<0)return-1}else if(M!=Z.charCodeAt(ee++))return-1}return ee}function _(de,se,Z){var ee=u.exec(se.slice(Z));return ee?(de.p=c.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function C(de,se,Z){var ee=f.exec(se.slice(Z));return ee?(de.w=m.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function E(de,se,Z){var ee=d.exec(se.slice(Z));return ee?(de.w=p.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function j(de,se,Z){var ee=h.exec(se.slice(Z));return ee?(de.m=g.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function F(de,se,Z){var ee=y.exec(se.slice(Z));return ee?(de.m=b.get(ee[0].toLowerCase()),Z+ee[0].length):-1}function D(de,se,Z){return k(de,t,se,Z)}function z(de,se,Z){return k(de,r,se,Z)}function N(de,se,Z){return k(de,n,se,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 fe(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 se=w(de+="",v);return se.toString=function(){return de},se},parse:function(de){var se=A(de+="",!1);return se.toString=function(){return de},se},utcFormat:function(de){var se=w(de+="",x);return se.toString=function(){return de},se},utcParse:function(de){var se=A(de+="",!0);return se.toString=function(){return de},se}}}var j7={"-":"",_:" ",0:"0"},wo=/^\s*\d+/,gse=/^%/,hse=/[\\^$*+?|[\]().{}]/g;function xr(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function vse(e,t,r){var n=wo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function xse(e,t,r){var n=wo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function bse(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function wse(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Sse(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function $7(e,t,r){var n=wo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function L7(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function kse(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 _se(e,t,r){var n=wo.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Cse(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function z7(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Ase(e,t,r){var n=wo.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function B7(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Ese(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Nse(e,t,r){var n=wo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Tse(e,t,r){var n=wo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Ose(e,t,r){var n=wo.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Pse(e,t,r){var n=gse.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Mse(e,t,r){var n=wo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Ise(e,t,r){var n=wo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function F7(e,t){return xr(e.getDate(),t,2)}function Dse(e,t){return xr(e.getHours(),t,2)}function jse(e,t){return xr(e.getHours()%12||12,t,2)}function $se(e,t){return xr(1+Sl.count(Ja(e),e),t,3)}function V7(e,t){return xr(e.getMilliseconds(),t,3)}function Lse(e,t){return V7(e,t)+"000"}function zse(e,t){return xr(e.getMonth()+1,t,2)}function Bse(e,t){return xr(e.getMinutes(),t,2)}function Fse(e,t){return xr(e.getSeconds(),t,2)}function Use(e){var t=e.getDay();return t===0?7:t}function Wse(e,t){return xr(kl.count(Ja(e)-1,e),t,2)}function q7(e){var t=e.getDay();return t>=4||t===0?Wu(e):Wu.ceil(e)}function Hse(e,t){return e=q7(e),xr(Wu.count(Ja(e),e)+(Ja(e).getDay()===4),t,2)}function Kse(e){return e.getDay()}function Vse(e,t){return xr(dm.count(Ja(e)-1,e),t,2)}function qse(e,t){return xr(e.getFullYear()%100,t,2)}function Gse(e,t){return e=q7(e),xr(e.getFullYear()%100,t,2)}function Yse(e,t){return xr(e.getFullYear()%1e4,t,4)}function Xse(e,t){var r=e.getDay();return e=r>=4||r===0?Wu(e):Wu.ceil(e),xr(e.getFullYear()%1e4,t,4)}function Zse(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+xr(t/60|0,"0",2)+xr(t%60,"0",2)}function U7(e,t){return xr(e.getUTCDate(),t,2)}function Jse(e,t){return xr(e.getUTCHours(),t,2)}function Qse(e,t){return xr(e.getUTCHours()%12||12,t,2)}function Rse(e,t){return xr(1+kd.count(Qa(e),e),t,3)}function G7(e,t){return xr(e.getUTCMilliseconds(),t,3)}function ele(e,t){return G7(e,t)+"000"}function tle(e,t){return xr(e.getUTCMonth()+1,t,2)}function rle(e,t){return xr(e.getUTCMinutes(),t,2)}function nle(e,t){return xr(e.getUTCSeconds(),t,2)}function ole(e){var t=e.getUTCDay();return t===0?7:t}function ale(e,t){return xr(_l.count(Qa(e)-1,e),t,2)}function Y7(e){var t=e.getUTCDay();return t>=4||t===0?Hu(e):Hu.ceil(e)}function ile(e,t){return e=Y7(e),xr(Hu.count(Qa(e),e)+(Qa(e).getUTCDay()===4),t,2)}function sle(e){return e.getUTCDay()}function lle(e,t){return xr(pm.count(Qa(e)-1,e),t,2)}function ule(e,t){return xr(e.getUTCFullYear()%100,t,2)}function cle(e,t){return e=Y7(e),xr(e.getUTCFullYear()%100,t,2)}function dle(e,t){return xr(e.getUTCFullYear()%1e4,t,4)}function ple(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Hu(e):Hu.ceil(e),xr(e.getUTCFullYear()%1e4,t,4)}function fle(){return"+0000"}function W7(){return"%"}function H7(e){return+e}function K7(e){return Math.floor(+e/1e3)}var gm,cS,X7,dS,Z7;KT({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 KT(e){return gm=HT(e),cS=gm.format,X7=gm.parse,dS=gm.utcFormat,Z7=gm.utcParse,gm}function mle(e){return new Date(e)}function gle(e){return e instanceof Date?+e:+new Date(+e)}function pS(e,t,r,n,o,a,i,s,l,u){var c=xd(),d=c.invert,p=c.domain,f=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)=>Ww(e,a/n))},r.copy=function(){return hS(t).domain(e)},Ci.apply(r,arguments)}function yS(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=to,c,d=!1,p;function f(y){return isNaN(y=+y)?p:(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 vle(n)?n:"point"}};function xle(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function wS(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=xle(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 e9(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):wS(e,void 0)}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 SS(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],Ds=(e,t)=>{var r=QT(e,t);return r??jn},$n={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:JT,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:ed},RT=(e,t)=>e.cartesianAxis.yAxis[t],js=(e,t)=>{var r=RT(e,t);return r??$n},Ele={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:""},eO=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??Ele},cn=(e,t,r)=>{switch(t){case"xAxis":return Ds(e,r);case"yAxis":return js(e,r);case"zAxis":return eO(e,r);case"angleAxis":return Mw(e,r);case"radiusAxis":return Iw(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Nle=(e,t,r)=>{switch(t){case"xAxis":return Ds(e,r);case"yAxis":return js(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Ad=(e,t,r)=>{switch(t){case"xAxis":return Ds(e,r);case"yAxis":return js(e,r);case"angleAxis":return Mw(e,r);case"radiusAxis":return Iw(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},tO=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function By(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 Ku=e=>e.graphicalItems.cartesianItems,Tle=te([en,cd],By),Fy=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),ym=te([Ku,cn,Tle],Fy,{memoizeOptions:{resultEqualityCheck:em}}),a9=te([ym],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(dd)),rO=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),Ole=te([ym],rO),Uy=e=>e.map(t=>t.data).filter(Boolean).flat(1),Ple=te([ym],e=>e.some(t=>!t.data)),i9=te([ym],Uy,{memoizeOptions:{resultEqualityCheck:em}}),Wy=(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)},nO=te([i9,sd],Wy),oO=(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})),aO=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=oO(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),p=d.map(f=>({value:Nt(f,t.dataKey)})).filter(f=>f.value!=null);return[...p,...c]}return c},Hy=te([nO,cn,ym,sd,Ple,i9],aO);function hm(e){if(ea(e)||e instanceof Date){var t=Number(e);if(gt(t))return t}}function n9(e){if(Array.isArray(e)){var t=[hm(e[0]),hm(e[1])];return Xa(t)?t:void 0}var r=hm(e);if(r!=null)return[r,r]}function rs(e){return e.map(hm).filter(eo)}function Mle(e,t){var r=hm(e),n=hm(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var Ile=te([Hy],e=>e?.map(t=>t.value).sort(Mle));function s9(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function Dle(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!yo(t))n=t;else if(Array.isArray(t)){var o=rs(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:rs(r.flatMap(a=>{var i=Nt(e,a.dataKey),s,l;if(Array.isArray(i)){var u=o9(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!gt(s)||!gt(l)))return[n-s,n+l]}))}var Ln=e=>{var t=Dn(e),r=zu(e);return Ad(e,t,r)},Al=te([Ln],e=>e?.dataKey),jle=te([a9,sd,Ln],$w),iO=(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=o9(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Lu);return[l,{stackedData:b6(e,d,r),graphicalItems:c}]}))},vm=te([jle,a9,ju,Nw],iO),sO=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return S6(e,o,a)},$le=te([cn],e=>e.allowDataOverflow),kS=e=>{var t;if(e==null||!("domain"in e))return JT;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=rs(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:JT},_S=te([cn],kS),CS=te([_S,$le],kw),Lle=te([vm,Sa,en,CS],sO,{memoizeOptions:{resultEqualityCheck:pd}}),xm=e=>e.errorBars,zle=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>s9(r,n)),zy=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,p=(c=o[u.id])===null||c===void 0?void 0:c.filter(f=>s9(a,f));d.forEach(f=>{var m,y=Nt(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),b=Dle(f,y,p);if(b.length>=2){var h=Math.min(...b),g=Math.max(...b);(s==null||hl)&&(l=g)}var v=n9(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=n9(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]))}),gt(s)&>(l))return[s,l]},Ble=te([nO,cn,Ole,xm,en,dB],Ky,{memoizeOptions:{resultEqualityCheck:pd}});function Fle(e){var t=e.value;if(ea(t)||t instanceof Date)return t}var Ule=(e,t,r)=>{var n=e.map(Fle).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&PE(n))?ww(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},lO=e=>e.referenceElements.dots,Ed=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),Wle=te([lO,en,cd],Ed),uO=e=>e.referenceElements.areas,Hle=te([uO,en,cd],Ed),cO=e=>e.referenceElements.lines,Kle=te([cO,en,cd],Ed),dO=(e,t)=>{if(e!=null){var r=rs(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Vle=te(Wle,en,dO),pO=(e,t)=>{if(e!=null){var r=rs(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)]}},qle=te([Hle,en],pO);function Gle(e){var t;if(e.x!=null)return rs([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:rs(r)}function Yle(e){var t;if(e.y!=null)return rs([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:rs(r)}var fO=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?Gle(n):Yle(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Xle=te([Kle,en],fO),Zle=te(Vle,Xle,qle,(e,t,r)=>zy(e,r,t)),Vy=(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?zy(n,a,o):zy(a,o),d=hB(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},Jle=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=rs(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},Qle=te([cn],Jle,{memoizeOptions:{resultEqualityCheck:pd}}),Rle=te([cn,_S,CS,Lle,Ble,Zle,_t,en,Qle],Vy,{memoizeOptions:{resultEqualityCheck:pd}}),eue=[0,1],qy=(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=Lo(t,a);if(u&&s==null){var c;return ww(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?Ule(n,e,u):o==="expand"&&!u?eue:i}},mO=te([cn,_t,nO,Hy,ju,en,Rle],qy),El=te([cn,tO,Rf],bS),Gy=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=kS(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&Xa(e)){if(a)return Cw(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return Aw(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&Xa(e))return Cw(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&Xa(e))return Aw(e,t.tickCount,t.allowDecimals,"adaptive")}}},gO=te([mO,Ad,El],Gy),Yy=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&Xa(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},tue=te([cn,mO,gO,en],Yy),rue=te(Hy,cn,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(rs(e.map(d=>d.value))).sort((d,p)=>d-p),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(!gt(e))return 0;var a=t==="vertical"?n.height:n.width;if(o==="gap")return e*a/2;if(o==="no-gap"){var i=hn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),nue=(e,t,r)=>{var n=Ds(e,t);return n==null||typeof n.padding!="string"?0:l9(e,"xAxis",t,r,n.padding)},oue=(e,t,r)=>{var n=js(e,t);return n==null||typeof n.padding!="string"?0:l9(e,"yAxis",t,r,n.padding)},aue=te(Ds,nue,(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}}),iue=te(js,oue,(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}}),hO=te([Nr,aue,td,Kf,(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]}),yO=te([Nr,_t,iue,td,Kf,(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]}),bm=(e,t,r,n)=>{var o;switch(t){case"xAxis":return hO(e,r,n);case"yAxis":return yO(e,r,n);case"zAxis":return(o=eO(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return gT(e);case"radiusAxis":return hT(e,r);default:return}},u9=te([cn,bm],ld),sue=te([El,tue],Lw),vO=te([cn,El,sue,u9],Ly),xO=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=Lo(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},bO=te([_t,Hy,Ad,en],xO),AS=te([vO],gy),UDe=te([vO],e9),WDe=te([vO,Ile],wS),HDe=te([ym,xm,en],zle);function c9(e,t){return e.idt.id?1:0}var ES=(e,t)=>t,NS=(e,t,r)=>r,lue=te(Uf,ES,NS,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(c9)),uue=te(Wf,ES,NS,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(c9)),d9=(e,t)=>{var r=typeof t.height=="number"?t.height:oy;return{width:e.width,height:r}},cue=(e,t)=>{var r=typeof t.width=="number"?t.width:ed;return{width:r,height:e.height}},wO=te(Nr,Ds,d9),due=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},pue=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},fue=te(bo,Nr,lue,ES,NS,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=d9(t,s);i==null&&(i=due(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}),mue=te(xo,Nr,uue,ES,NS,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=cue(t,s);i==null&&(i=pue(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}),gue=(e,t)=>{var r=Ds(e,t);if(r!=null)return fue(e,r.orientation,r.mirror)},p9=te([Nr,Ds,gue,(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}}}),hue=(e,t)=>{var r=js(e,t);if(r!=null)return mue(e,r.orientation,r.mirror)},f9=te([Nr,js,hue,(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}}}),SO=te(Nr,js,(e,t)=>{var r=typeof t.width=="number"?t.width:ed;return{width:r,height:e.height}}),kO=(e,t,r)=>{switch(t){case"xAxis":return wO(e,r).width;case"yAxis":return SO(e,r).height;default:return}},_O=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=Lo(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&PE(u))return l}},CO=te([_t,Hy,cn,en],_O),AO=te([_t,Nle,El,AS,CO,bO,bm,gO,en],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=Lo(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}}}),yue=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=Lo(e,l),c=t.type,d=t.ticks,p=t.tickCount,f=r==="scaleBand"&&typeof n.bandwidth=="function"?n.bandwidth()/2:2,m=c==="category"&&n.bandwidth?n.bandwidth()/f: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 gt(v)?{index:h,coordinate:v+m,value:b,offset:m}:null}).filter(eo):u&&s?s.map((b,h)=>{var g=n.map(b);return gt(g)?{coordinate:g+m,value:b,index:h,offset:m}:null}).filter(eo):n.ticks?n.ticks(p).map((b,h)=>{var g=n.map(b);return gt(g)?{coordinate:g+m,value:b,index:h,offset:m}:null}).filter(eo):n.domain().map((b,h)=>{var g=n.map(b);return gt(g)?{coordinate:g+m,value:i?i[b]:b,index:h,offset:m}:null}).filter(eo)}},TS=te([_t,Ad,El,AS,gO,bm,CO,bO,en],yue),vue=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=Lo(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 p=r.map(c);return gt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(eo):r.ticks?r.ticks(l).map((c,d)=>{var p=r.map(c);return gt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(eo):r.domain().map((c,d)=>{var p=r.map(c);return gt(p)?{coordinate:p+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(eo)}},Ra=te([_t,Ad,AS,bm,CO,bO,en],vue),ei=te(cn,AS,(e,t)=>{if(!(e==null||t==null))return SS(SS({},e),{},{scale:t})}),xue=te([cn,El,mO,u9],Ly),bue=te([xue],gy),KDe=te((e,t,r)=>eO(e,r),bue,(e,t)=>{if(!(e==null||t==null))return SS(SS({},e),{},{scale:t})}),m9=te([_t,Uf,Wf],(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}}),wue=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},VDe=te([wue],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,NO=e=>e.options.validateTooltipEventTypes;function TO(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Vu(e,t){var r=EO(e),n=NO(e);return TO(t,r,n)}function g9(e){return Pe(t=>Vu(t,e))}var OS=(e,t)=>{var r,n=Number(t);if(!(yo(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var h9=e=>e.tooltip.settings;var Nl={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},Sue={itemInteraction:{click:Nl,hover:Nl},axisInteraction:{click:Nl,hover:Nl},keyboardInteraction:Nl,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}},y9=yr({name:"tooltip",initialState:Sue,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=Oo(e).tooltipItemPayloads.indexOf(Lt(n));a>-1&&(e.tooltipItemPayloads[a]=Lt(o))},prepare:kr()},removeTooltipEntrySettings:{reducer(e,t){var r=Oo(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}}}),Ei=y9.actions,v9=Ei.addTooltipEntrySettings,x9=Ei.replaceTooltipEntrySettings,b9=Ei.removeTooltipEntrySettings,w9=Ei.setTooltipSettingsState,PS=Ei.setActiveMouseOverItemIndex,S9=Ei.mouseLeaveItem,MS=Ei.mouseLeaveChart,k9=Ei.setActiveClickItemIndex,IS=Ei.setMouseOverAxisIndex,_9=Ei.setMouseClickAxisIndex,wm=Ei.setSyncInteraction,Xy=Ei.setKeyboardInteraction;var C9=y9.reducer;function A9(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 DS(e){for(var t=1;t{if(t==null)return Nl;var o=Aue(e,t,r);if(o==null)return Nl;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(Eue(o)){if(a)return DS(DS({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return DS(DS({},Nl),{},{coordinate:o.coordinate})};function Nue(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 Tue(e,t){var r=Nue(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 Oue(e,t,r){if(r==null||t==null)return!0;var n=Nt(e,t);return n==null||!Xa(r)?!0:Tue(n,r)}var qu=(e,t,r,n)=>{var o=e?.index;if(o==null)return null;var a=Number(o);if(!gt(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||Oue(u,r,n)?String(l):null};var $S=(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 LS=(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 zS=e=>e.options.tooltipPayloadSearcher;var Tl=e=>e.tooltip;function E9(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 N9(e){for(var t=1;te(t)}function T9(e){if(typeof e=="string")return e}function Lue(e){if(!(e==null||typeof e!="object")){var t="name"in e?Due(e.name):void 0,r="unit"in e?jue(e.unit):void 0,n="dataKey"in e?$ue(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?T9(e.color):void 0,i="fill"in e?T9(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function zue(e,t){return e??t}var BS=(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((p,f)=>{var m,y=f.dataDefinedOnItem,b=f.settings,h=zue(y,s),g=Array.isArray(h)?q1(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=Mb(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=Lue(A),E=C?.name,j=C?.dataKey,F=C?.payload,D=N9(N9({},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});p.push(KN({tooltipEntrySettings:D,dataKey:j,payload:F,value:Nt(F,j),name:E==null?void 0:String(E)}))});else{var w;p.push(KN({tooltipEntrySettings:b,dataKey:v,payload:S,value:Nt(S,v),name:(w=Nt(S,x))!==null&&w!==void 0?w:b?.name}))}return p},d)}};var OO=te([Ln,tO,Rf],bS),Bue=te([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Fue=te([Dn,zu],By),Gu=te([Bue,Ln,Fue],Fy,{memoizeOptions:{resultEqualityCheck:em}}),Uue=te([Gu],e=>e.filter(dd)),O9=te([Gu],Uy,{memoizeOptions:{resultEqualityCheck:em}}),Wue=te([Gu],e=>e.some(t=>!t.data)),Ol=te([O9,Sa],Wy),Hue=te([Uue,Sa,Ln],$w),PO=te([Ol,Ln,Gu,Sa,Wue,O9],aO),P9=te([Ln],kS),Kue=te([Ln],e=>e.allowDataOverflow),M9=te([P9,Kue],kw),Vue=te([Gu],e=>e.filter(dd)),que=te([Hue,Vue,ju,Nw],iO),Gue=te([que,Sa,Dn,M9],sO),Yue=te([Gu],rO),Xue=te([Ol,Ln,Yue,xm,Dn,fB],Ky,{memoizeOptions:{resultEqualityCheck:pd}}),Zue=te([lO,Dn,zu],Ed),Jue=te([Zue,Dn],dO),Que=te([uO,Dn,zu],Ed),Rue=te([Que,Dn],pO),ece=te([cO,Dn,zu],Ed),tce=te([ece,Dn],fO),rce=te([Jue,tce,Rue],zy),nce=te([Ln,P9,M9,Gue,Xue,rce,_t,Dn],Vy),Yu=te([Ln,_t,Ol,PO,ju,Dn,nce],qy),oce=te([Yu,Ln,OO],Gy),ace=te([Ln,Yu,oce,Dn],Yy),I9=e=>{var t=Dn(e),r=zu(e),n=!1;return bm(e,t,r,n)},MO=te([Ln,I9],ld),ice=te([Ln,OO,ace,MO],Ly),IO=te([ice],gy),sce=te([_t,PO,Ln,Dn],_O),lce=te([_t,PO,Ln,Dn],xO),uce=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=Lo(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((p,f)=>{var m=n.map(p);return gt(m)?{coordinate:m+d,value:p,index:f,offset:d}:null}).filter(eo):n.domain().map((p,f)=>{var m=n.map(p);return gt(m)?{coordinate:m+d,value:a?a[p]:p,index:f,offset:d}:null}).filter(eo)}}},_a=te([_t,Ln,OO,IO,I9,sce,lce,Dn],uce),DO=te([EO,NO,h9],(e,t,r)=>TO(r.shared,e,t)),D9=e=>e.tooltip.settings.trigger,jO=e=>e.tooltip.settings.defaultIndex,Zy=te([Tl,DO,D9,jO],jS),Ni=te([Zy,Ol,Al,Yu],qu),FS=te([_a,Ni],OS),Sm=te([Zy],e=>{if(e)return e.dataKey}),US=te([Zy],e=>{if(e)return e.graphicalItemId}),j9=te([Tl,DO,D9,jO],LS),cce=te([xo,bo,_t,Nr,_a,jO,j9],$S),$O=te([Zy,cce],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),LO=te([Zy],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),dce=te([j9,Ni,Sa,Al,FS,zS,DO],BS),$9=te([dce],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function L9(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 z9(e){for(var t=1;tPe(Ln),B9=()=>{var e=gce(),t=Pe(_a),r=Pe(IO);return!e||!r?Si(void 0,t):Si(z9(z9({},e),{},{scale:r}),t)};function F9(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 km(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}},W9=(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 km(km(km({},n),Ur(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return km(km(km({},n),Ur(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 H9(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 zO=(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=(p=r[u])===null||p===void 0?void 0:p.coordinate,h=u>=i-1?(f=r[0])===null||f===void 0?void 0:f.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 WS=()=>Pe(Rf),BO=(e,t)=>t,K9=(e,t,r)=>r,FO=(e,t,r,n)=>n,V9=te(_a,e=>vl(e,t=>t.coordinate)),UO=te([Tl,BO,K9,FO],jS),WO=te([UO,Ol,Al,Yu],qu),q9=(e,t,r)=>{if(t!=null){var n=Tl(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},G9=te([Tl,BO,K9,FO],LS),Jy=te([xo,bo,_t,Nr,_a,FO,G9],$S),Y9=te([UO,Jy],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),HO=te([_a,WO],OS),X9=te([G9,WO,Sa,Al,HO,zS,BO],BS),Z9=te([UO,WO],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),xce=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&H9(e,i)){var s=k6(e,t),l=zO(s,a,o,r,n),u=U9(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},bce=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=Rz(e,r);if(s){var l=_6(s,t),u=zO(l,i,a,n,o),c=W9(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},J9=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?xce(e,t,n,o,a,i,s):bce(e,t,r,n,o,a,i)};var _m=q(X()),sF=q(Wg());var Q9=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}}),R9=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:OB}});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 tF(e){for(var t=1;ttF(tF({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),_ce)},Ace=new Set(Object.values(Xt));function Ece(e){return Ace.has(e)}var rF=yr({name:"zIndex",initialState:Cce,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&&!Ece(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()}}}),HS=rF.actions,nF=HS.registerZIndexPortal,KS=HS.unregisterZIndexPortal,oF=HS.registerZIndexPortalElement,aF=HS.unregisterZIndexPortalElement;var iF=rF.reducer;function Wr(e){var t=e.zIndex,r=e.children,n=B6(),o=n&&t!==void 0&&t!==0,a=vr(),i=(0,_m.useRef)(void 0),s=(0,_m.useRef)(new Set),l=wt(),u=Pe(d=>Q9(d,t,a));if((0,_m.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(f=>{l(KS({zIndex:f}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(nF({zIndex:t})),s.current.add(t)),u){i.current=u;var p=s.current;p.forEach(f=>{f!==t&&(l(KS({zIndex:f})),p.delete(f))})}},[l,t,o,u]),(0,_m.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(p=>{l(KS({zIndex:p}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,sF.createPortal)(r,c):null}function KO(){return KO=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,GS.useContext)(VO);var Ry=q(X());var fF=q(pF(),1);var mF=fF.default;var Am=new mF;var XS="recharts.syncEvent.tooltip",GO="recharts.syncEvent.brush";var Xu=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!yo(r))return e[r]}},jce={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},gF=yr({name:"options",initialState:jce,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),hF=gF.reducer,yF=gF.actions.createEventEmitter;function vF(e){return e.tooltip.syncInteraction}var $ce={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},xF=yr({name:"chartData",initialState:$ce,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)}}}),YO=xF.actions,XO=YO.setChartData,bF=YO.setDataStartEndIndexes,Lce=YO.setComputedData;var wF=xF.reducer;var zce=["x","y"];function SF(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;tl.rootProps.className);(0,Ry.useEffect)(()=>{if(e==null)return ta;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(wm({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(n==="index"){var p;if(i&&c!==null&&c!==void 0&&(p=c.payload)!==null&&p!==void 0&&p.coordinate&&c.payload.sourceViewBox){var f=c.payload.coordinate,m=f.x,y=f.y,b=Wce(f,zce),h=c.payload.sourceViewBox,g=h.x,v=h.y,x=h.width,S=h.height,w=Em(Em({},b),{},{x:i.x+(x?(m-g)/x:0)*i.width,y:i.y+(S?(y-v)/S:0)*i.height});r(Em(Em({},c),{},{payload:Em(Em({},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(wm({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(A==null){r(wm({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=wm({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 Am.on(XS,l),()=>{Am.off(XS,l)}},[s,r,t,e,n,o,a,i])}function Vce(){var e=Pe(Tw),t=Pe(Ow),r=wt();(0,Ry.useEffect)(()=>{if(e==null)return ta;var n=(o,a,i)=>{t!==i&&e===o&&r(bF(a))};return Am.on(GO,n),()=>{Am.off(GO,n)}},[r,t,e])}function kF(){var e=wt();(0,Ry.useEffect)(()=>{e(yF())},[e]),Kce(),Vce()}function _F(e,t,r,n,o,a){var i=Pe(m=>q9(m,e,t)),s=Pe(US),l=Pe(Ow),u=Pe(Tw),c=Pe(fT),d=Pe(vF),p=d?.sourceViewBox!=null,f=nd();(0,Ry.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=wm({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});Am.emit(XS,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function CF(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 AF(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{A(w9({shared:g,trigger:v,axisId:w,active:o,defaultIndex:k}))},[A,g,v,w,o,k]);var _=nd(),C=iw(),E=g9(g),j=(t=Pe(Z=>Z9(Z,E,v,k)))!==null&&t!==void 0?t:{},F=j.activeIndex,D=j.isActive,z=Pe(Z=>X9(Z,E,v,k)),N=Pe(Z=>HO(Z,E,v,k)),O=Pe(Z=>Y9(Z,E,v,k)),$=z,T=cF(),I=(r=o??D)!==null&&r!==void 0?r:!1,P=x1([$,I]),H=Xce(P,2),Q=H[0],K=H[1],ue=E==="axis"?N:void 0;_F(E,v,O,ue,F,I);var fe=S??T;if(fe==null||_==null||E==null)return null;var re=$??NF;I||(re=NF),u&&re.length&&(re=f1(re.filter(Z=>Z.value!=null&&(Z.hide!==!0||n.includeHidden)),p,ede));var _e=re.length>0,de=AF(AF({},n),{},{payload:re,label:ue,active:I,activeIndex:F,coordinate:O,accessibilityLayer:C}),se=Ti.createElement(cz,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:I,coordinate:O,hasPayload:_e,offset:d,position:f,reverseDirection:m,useTranslate3d:y,viewBox:_,wrapperStyle:b,lastBoundingBox:Q,innerRef:K,hasPortalFromProps:!!S},tde(l,de));return Ti.createElement(Ti.Fragment,null,(0,OF.createPortal)(se,fe),I&&Ti.createElement(uF,{cursor:h,tooltipEventType:E,coordinate:O,payload:re,index:F}))}var Pl=e=>null;Pl.displayName="Cell";var JO=q(X()),RS=q(X());function nde(e,t,r){return(t=ode(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ode(e){var t=ade(e,"string");return typeof t=="symbol"?t:t+""}function ade(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 ZS=class{constructor(t){nde(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 PF(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 ide(e){for(var t=1;t{try{var r=document.getElementById(IF);r||(r=document.createElement("span"),r.setAttribute("id",IF),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,dde,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},Nd=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||ki.isSsr)return{width:0,height:0};if(!jF.enableCache)return DF(t,r);var n=pde(t,r),o=MF.get(n);if(o)return o;var a=DF(t,r);return MF.set(n,a),a};var FF;function JS(e,t){return hde(e)||gde(e,t)||mde(e,t)||fde()}function fde(){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 mde(e,t){if(e){if(typeof e=="string")return $F(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)?$F(e,t):void 0}}function $F(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(GF));var a=o.map(s=>({word:s,width:Nd(s,n).width})),i=r?0:Nd("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function ek(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function XF(e){return Yt(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var ZF=(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),$de="\u2026",VF=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=YF({breakAll:r,style:n,children:l+$de});if(!u)return[!1,[]];var c=ZF(u.wordsWithComputedWidth,a,i,s),d=c.length>o||JF(c).width>Number(a);return[d,c]},Lde=(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=ZF(t,n,r,o);if(!u||o)return d;var p=d.length>a||JF(d).width>Number(n);if(!p)return d;for(var f=0,m=c.length-1,y=0,b;f<=m&&y<=c.length-1;){var h=Math.floor((f+m)/2),g=h-1,v=VF(c,g,l,s,a,n,r,o),x=HF(v,2),S=x[0],w=x[1],A=VF(c,h,l,s,a,n,r,o),k=HF(A,1),_=k[0];if(!S&&!_&&(f=h+1),S&&_&&(m=h-1),!S&&_){b=w;break}y++}return b||d},qF=e=>{var t=Yt(e)?[]:e.toString().split(GF);return[{words:t,width:void 0}]},zde=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!ki.isSsr){var s,l,u=YF({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return qF(n);return Lde({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return qF(n)},QF="#808080",Bde={angle:0,breakAll:!1,capHeight:"0.71em",fill:QF,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},Td=(0,RS.forwardRef)((e,t)=>{var r=Kt(e,Bde),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=WF(r,Tde),p=(0,RS.useMemo)(()=>zde({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]),f=d.dx,m=d.dy,y=d.angle,b=d.className,h=d.breakAll,g=WF(d,Ode);if(!ea(n)||!ea(o)||p.length===0)return null;var v=Number(n)+(Oe(f)?f:0),x=Number(o)+(Oe(m)?m:0);if(!gt(v)||!gt(x))return null;var S;switch(c){case"start":S=QS("calc(".concat(i,")"));break;case"middle":S=QS("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:S=QS("calc(".concat(p.length-1," * -").concat(a,")"));break}var w=[],A=p[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(" ")),JO.createElement("text",ZO({},Rr(g),{ref:t,x:v,y:x,className:ut("recharts-text",b),textAnchor:u,fill:s.includes("url")?QF:s}),p.map((C,E)=>{var j=C.words.join(h?"":" ");return JO.createElement("tspan",{x:v,dy:E===0?S:a,key:"".concat(j,"-").concat(E)},j)}))});Td.displayName="Text";var Ca=q(X()),ro=q(X());var Fde=["labelRef"],Ude=["content"];function RF(e,t){if(e==null)return{};var r,n,o=Wde(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,ro.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return Ca.createElement(tU.Provider,{value:l},s)},nU=()=>{var e=(0,ro.useContext)(tU),t=nd();return e||(t?Wh(t):void 0)},oU=(0,ro.createContext)(null),aU=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,ro.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return Ca.createElement(oU.Provider,{value:u},l)},qde=()=>{var e=(0,ro.useContext)(oU),t=Pe(jw);return e||t},Gde=e=>{var t=e.value,r=e.formatter,n=Yt(e.children)?t:e.children;return typeof r=="function"?r(n):n},Pd=e=>e!=null&&typeof e=="function",Yde=(e,t)=>{var r=jr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Xde=(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,p=o.endAngle,f=o.clockWise,m=(u+c)/2,y=Yde(d,p),b=y>=0?1:-1,h,g;switch(t){case"insideStart":h=d+b*a,g=f;break;case"insideEnd":h=p-b*a,g=!f;break;case"end":h=p+b*a,g=f;break;default:throw new Error("Unsupported position ".concat(t))}g=y<=0?g:!g;var v=Ur(s,l,m,h),x=Ur(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)?ml("recharts-radial-line-"):e.id;return Ca.createElement("text",Il({},n,{dominantBaseline:"central",className:ut("recharts-radial-bar-label",i)}),Ca.createElement("defs",null,Ca.createElement("path",{id:w,d:S})),Ca.createElement("textPath",{xlinkHref:"#".concat(w)},r))},Zde=(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=Ur(n,o,i+t,u),d=c.x,p=c.y;return{x:d,y:p,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 f=(a+i)/2,m=Ur(n,o,f,u),y=m.x,b=m.y;return{x:y,y:b,textAnchor:"middle",verticalAnchor:"middle"}},Tm=e=>e!=null&&"cx"in e&&Oe(e.cx),Jde={angle:0,offset:5,zIndex:Xt.label,position:"middle",textBreakAll:!1};function Qde(e){if(!Tm(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 Ml(e){var t,r,n=Kt(e,Jde),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,p=n.textBreakAll,f=n.labelRef,m=qde(),y=nU(),b=i==="center"?y:m??y,h,g,v;o==null?h=b:Tm(o)?h=o:h=Wh(o);var x=Qde(h);if(!h||Yt(s)&&Yt(l)&&!(0,ro.isValidElement)(u)&&typeof u!="function")return null;var S=Tm(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(Tm(h))S||(v=Zde(h,n.offset,n.position));else if(x){var w=Ib({viewBox:x,position:i,offset:n.offset,parentViewBox:Tm(a)?void 0:a,clamp:!0});v=Od(Od({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=Od(Od(Od(Od({},((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,ro.isValidElement)(u)){var k=A.labelRef,_=RF(A,Fde);return(0,ro.cloneElement)(u,_)}if(typeof u=="function"){var C=A.content,E=RF(A,Ude);if(g=(0,ro.createElement)(u,E),(0,ro.isValidElement)(g))return g}else g=Gde(n);var j=Rr(n);return S&&Tm(h)?Xde(n,i,g,j,h):v==null?null:Ca.createElement(Wr,{zIndex:n.zIndex},Ca.createElement(Td,Il({ref:f,className:ut("recharts-label",d)},j,v,{textAnchor:ek(j.textAnchor)?j.textAnchor:v.textAnchor,breakAll:p}),g))}Ml.displayName="Label";var Rde=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?Ca.createElement(Ml,Il({key:"label-implicit"},n)):ea(e)?Ca.createElement(Ml,Il({key:"label-implicit",value:e},n)):(0,ro.isValidElement)(e)?e.type===Ml?(0,ro.cloneElement)(e,Od({key:"label-implicit"},n)):Ca.createElement(Ml,Il({key:"label-implicit",content:e},n)):Pd(e)?Ca.createElement(Ml,Il({key:"label-implicit",content:e},n)):e&&typeof e=="object"?Ca.createElement(Ml,Il({},e,{key:"label-implicit"},n)):null};function iU(e){var t=e.label,r=e.labelRef,n=nU();return Rde(t,n,r)||null}var Dl=q(X()),Om=q(X());var epe=["valueAccessor"],tpe=["dataKey","clockWise","id","textBreakAll","zIndex"];function rk(){return rk=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(XF(t))return t},lU=(0,Om.createContext)(void 0),Pm=lU.Provider,uU=(0,Om.createContext)(void 0),cU=uU.Provider;function ope(){return(0,Om.useContext)(lU)}function ape(){return(0,Om.useContext)(uU)}function tk(e){var t=e.valueAccessor,r=t===void 0?npe:t,n=sU(e,epe),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=sU(n,tpe),c=ope(),d=ape(),p=c||d;return!p||!p.length?null:Dl.createElement(Wr,{zIndex:l??Xt.label},Dl.createElement(cr,{className:"recharts-label-list"},p.map((f,m)=>{var y,b=Yt(o)?r(f,m):Nt(f.payload,o),h=Yt(i)?{}:{id:"".concat(i,"-").concat(m)};return Dl.createElement(Ml,rk({key:"label-".concat(m)},Rr(f),u,h,{fill:(y=n.fill)!==null&&y!==void 0?y:f.fill,parentViewBox:f.parentViewBox,value:b,textBreakAll:s,viewBox:f.viewBox,index:m,zIndex:0}))})))}tk.displayName="LabelList";function Qu(e){var t=e.label;return t?t===!0?Dl.createElement(tk,{key:"labelList-implicit"}):Dl.isValidElement(t)||Pd(t)?Dl.createElement(tk,{key:"labelList-implicit",content:t}):typeof t=="object"?Dl.createElement(tk,rk({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var dU=q(X());function QO(){return QO=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)?dU.createElement("circle",QO({},Qr(e),Of(e),{className:a,cx:t,cy:r,r:n})):null};var RO=e=>e.graphicalItems.polarItems,ipe=te([en,cd],By),ok=te([RO,cn,ipe],Fy),spe=te([ok],Uy),ak=te([spe,id],Wy),lpe=te([ak,cn,ok],oO),L$e=te([ak,cn,ok],(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:[]}))),pU=()=>{},upe=te([ak,cn,ok,xm,en,pB],Ky),cpe=te([cn,_S,CS,pU,upe,pU,_t,en],Vy),fU=te([cn,_t,ak,lpe,ju,en,cpe],qy),dpe=te([fU,Ad,El],Gy),ppe=te([cn,fU,dpe,en],Yy),z$e=te([El,ppe],Lw);var fpe={radiusAxis:{},angleAxis:{}},mU=yr({name:"polarAxis",initialState:fpe,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]}}}),ik=mU.actions,W$e=ik.addRadiusAxis,H$e=ik.removeRadiusAxis,K$e=ik.addAngleAxis,V$e=ik.removeAngleAxis;var gU=mU.reducer;function sk(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Dt=q(X()),zm=q(X());function hU(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 yU(e){for(var t=1;tt,e5=te([RO,ype],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),vpe=[],t5=(e,t,r)=>r?.length===0?vpe:r,vU=te([id,e5,t5],(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=>yU(yU({},t.presentationProps),a.props))),o!=null)return o}}),xU=te([vU,e5,t5],(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:Ga(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),bU=te([vU,e5,t5,Nr],(e,t,r,n)=>{if(!(t==null||e==null))return wU({offset:n,pieSettings:t,displayedData:e,cells:r})});var EU=q(X()),NU=q(_U());var CU=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",AU=null,o5=null,TU=e=>{if(e===AU&&Array.isArray(o5))return o5;var t=[];return EU.Children.forEach(e,r=>{Yt(r)||((0,NU.isFragment)(r)?t=t.concat(TU(r.props.children)):t.push(r))}),o5=t,AU=e,t};function ev(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>CU(o)):n=[CU(t)],TU(e).forEach(o=>{var a=ho(o,"type.displayName")||ho(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var Mm=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var Im=q(X()),tv=q(X());function OU(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 PU(e){for(var t=1;t{var n=wt();return(o,a)=>i=>{e?.(o,a,i),n(PS({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},nv=e=>{var t=wt();return(r,n)=>o=>{e?.(r,n,o),t(S9())}},ov=(e,t,r)=>{var n=wt();return(o,a)=>i=>{e?.(o,a,i),n(k9({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var av=q(X());function ec(e){var t=e.tooltipEntrySettings,r=wt(),n=vr(),o=(0,av.useRef)(null);return(0,av.useLayoutEffect)(()=>{n||(o.current===null?r(v9(t)):o.current!==t&&r(x9({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,av.useLayoutEffect)(()=>()=>{o.current&&(r(b9(o.current)),o.current=null)},[r]),null}var tc=q(X());function Dm(e){var t=e.legendPayload,r=wt(),n=vr(),o=(0,tc.useRef)(null);return(0,tc.useLayoutEffect)(()=>{n||(o.current===null?r(YN(t)):o.current!==t&&r(XN({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,tc.useLayoutEffect)(()=>()=>{o.current&&(r(ZN(o.current)),o.current=null)},[r]),null}function IU(e){var t=e.legendPayload,r=wt(),n=Pe(_t),o=(0,tc.useRef)(null);return(0,tc.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(YN(t)):o.current!==t&&r(XN({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,tc.useLayoutEffect)(()=>()=>{o.current&&(r(ZN(o.current)),o.current=null)},[r]),null}var $U=q(X()),lv=q(X());function Npe(e,t){return Mpe(e)||Ppe(e,t)||Ope(e,t)||Tpe()}function Tpe(){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 Ope(e,t){if(e){if(typeof e=="string")return DU(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)?DU(e,t):void 0}}function DU(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 a5(n,t)}function Dpe(e,t){var r=t.map((n,o)=>e[o]);return a5(r,t)}function jpe(e,t){for(var r=new Map,n=0;n{var f=r(d,p);if(f!=null){var m=n.get(f);if(m!==void 0)return o.add(f),m}}),i=[];for(var s of n){var l=Npe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return a5(a,t,i)}function sv(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Md?Ipe(e,t):r===iv?Dpe(e,t):$pe(e,t,r)}var jm=q(X());function vk(e,t){var r=(0,jm.useRef)(e),n=(0,jm.useRef)(t.current),o=(0,jm.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,jm.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 Lpe(e,t){return Upe(e)||Fpe(e,t)||Bpe(e,t)||zpe()}function zpe(){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 Bpe(e,t){if(e){if(typeof e=="string")return jU(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)?jU(e,t):void 0}}function jU(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,lv.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function nc(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,p=e.animationInterpolateFn,f=e.animationMatchBy,m=e.shouldUpdatePreviousRef,y=e.children,b=e.layout,h=pw(r,n),g=vk(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,x=sv(v,o,f??Md);return $U.createElement(dw,{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:p(x,S,b),k=m?m(S):S>0;return g.syncStepValue(A,S,k),A==null?null:y(A,S,w)})}var BU=q(X()),s5=q(X());var xk=q(X());var i5;function Wpe(e,t){return qpe(e)||Vpe(e,t)||Kpe(e,t)||Hpe()}function Hpe(){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 Kpe(e,t){if(e){if(typeof e=="string")return LU(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)?LU(e,t):void 0}}function LU(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=xk.useState(()=>ml("uid-")),t=Wpe(e,1),r=t[0];return r},bk=(i5=xk.useId)!==null&&i5!==void 0?i5:Gpe;function zU(e,t){var r=bk();return t||(e?"".concat(e,"-").concat(r):r)}var Ype=(0,s5.createContext)(void 0),oc=e=>{var t=e.id,r=e.type,n=e.children,o=zU("recharts-".concat(r),t);return BU.createElement(Ype.Provider,{value:o},n(o))};var ns=q(X());var Xpe={cartesianItems:[],polarItems:[]},FU=yr({name:"graphicalItems",initialState:Xpe,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=Oo(e).cartesianItems.indexOf(Lt(n));a>-1&&(e.cartesianItems[a]=Lt(o))},prepare:kr()},removeCartesianGraphicalItem:{reducer(e,t){var r=Oo(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=Oo(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=Oo(e).polarItems.indexOf(Lt(n));a>-1&&(e.polarItems[a]=Lt(o))},prepare:kr()}}}),$m=FU.actions,UU=$m.addCartesianGraphicalItem,WU=$m.replaceCartesianGraphicalItem,HU=$m.removeCartesianGraphicalItem,KU=$m.addPolarGraphicalItem,VU=$m.removePolarGraphicalItem,qU=$m.replacePolarGraphicalItem;var GU=FU.reducer;var Zpe=e=>{var t=wt(),r=(0,ns.useRef)(null);return(0,ns.useLayoutEffect)(()=>{r.current===null?t(UU(e)):r.current!==e&&t(WU({prev:r.current,next:e})),r.current=e},[t,e]),(0,ns.useLayoutEffect)(()=>()=>{r.current&&(t(HU(r.current)),r.current=null)},[t]),null},Lm=(0,ns.memo)(Zpe),Jpe=e=>{var t=wt(),r=(0,ns.useRef)(null);return(0,ns.useLayoutEffect)(()=>{r.current===null?t(KU(e)):r.current!==e&&t(qU({prev:r.current,next:e})),r.current=e},[t,e]),(0,ns.useLayoutEffect)(()=>()=>{r.current&&(t(VU(r.current)),r.current=null)},[t]),null},YU=(0,ns.memo)(Jpe);var Qpe=["key"],Rpe=["onMouseEnter","onClick","onMouseLeave"],efe=["id"],tfe=["id"];function Id(){return Id=Object.assign?Object.assign.bind():function(e){for(var t=1;tev(e.children,Pl),[e.children]),r=Pe(n=>xU(n,e.id,t));return r==null?null:Dt.createElement(IU,{legendPayload:r})}function sfe(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 lfe=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,p=e.activeShape,f=sfe(p),m=n.map(b=>{var h=b.tooltipPayload;return f==null||h==null?h:h.map(g=>dn(dn({},g),{},{color:f,fill:f}))}),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:Ga(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Dt.createElement(ec,{tooltipEntrySettings:y})}),ufe=(e,t)=>e>t?"start":etypeof t=="function"?hn(t(e),r,r*.8):hn(t,r,r*.8),dfe=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=hw(a,i),l=o+hn(e.cx,a,a/2),u=n+hn(e.cy,i,i/2),c=hn(e.innerRadius,s,0),d=cfe(r,e.outerRadius,s),p=e.maxRadius||Math.sqrt(a*a+i*i)/2;return{cx:l,cy:u,innerRadius:c,outerRadius:d,maxRadius:p}},pfe=(e,t)=>{var r=jr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},ffe=(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=wk(t,Qpe);return Dt.createElement(Es,Id({},o,{type:"linear",className:r}))},mfe=(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",sk(e));return Dt.createElement(Td,Id({},t,{alignmentBaseline:"middle",className:o}),n)};function gfe(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=Qr(r),l=Wa(o),u=Wa(a),c=typeof o=="object"&&"offsetRadius"in o&&typeof o.offsetRadius=="number"&&o.offsetRadius||20,d=t.map((p,f)=>{var m=(p.startAngle+p.endAngle)/2,y=Ur(p.cx,p.cy,p.outerRadius+c,m),b=dn(dn(dn(dn({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:ufe(y.x,p.cx)},y),h=dn(dn(dn(dn({},s),p),{},{fill:"none",stroke:p.fill},u),{},{index:f,points:[Ur(p.cx,p.cy,p.outerRadius,m),y],key:"line"});return Dt.createElement(Wr,{zIndex:Xt.label,key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(f)},Dt.createElement(cr,null,a&&ffe(a,h),mfe(o,b,Nt(p,i))))});return Dt.createElement(cr,{className:"recharts-pie-labels"},d)}function hfe(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(Qu,{label:o}):Dt.createElement(gfe,{sectors:t,props:r,showLabels:n})}function yfe(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(Ni),d=Pe(Sm),p=Pe(US),f=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,b=wk(o,Rpe),h=rv(f,o.dataKey,i),g=nv(y),v=ov(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=p==null||p===i,A=String(S)===c&&(d==null||o.dataKey===d)&&w,k=c?n:null,_=r&&A?r:k,C=dn(dn({},x),{},{stroke:x.stroke,tabIndex:-1,index:S,isActive:A,animationElapsedTime:s,isAnimating:l,isEntrance:u,[Y1]:S,[X1]:i});return Dt.createElement(cr,Id({key:"sector-".concat(x?.startAngle,"-").concat(x?.endAngle,"-").concat(x.midAngle,"-").concat(S),tabIndex:-1,className:"recharts-pie-sector"},hl(b,x,S),{onMouseEnter:h(x,S),onMouseLeave:g(x,S),onClick:v(x,S)}),Dt.createElement(Ru,{option:_??a,DefaultShape:ZU,shapeProps:C}))}))}function wU(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,p=Math.abs(r.minAngle),f=pfe(s,l),m=Math.abs(f),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=p>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=dfe(r,a,k),F=(Oe(C)?C:0)/g,D,z=dn(dn({},k),o&&o[_]&&o[_].props),N=z!=null&&"fill"in z&&typeof z.fill=="string"?z.fill:r.fill;_?D=A.endAngle+jr(f)*y*(C!==0?1:0):D=s;var O=D+jr(f)*((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=Ur(j.cx,j.cy,T,$);return A=dn(dn(dn(dn({},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(f)*y:0}),A})}return w}function vfe(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,zm.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(cU,{value:t?o:void 0},n)}var xfe=(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?ho(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=dn(dn({},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=dn(dn({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function bfe(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,p=rc(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,y=p.handleAnimationEnd,b=z6();if(b==null)return null;var h=l[0];return Dt.createElement(vfe,{showLabels:!f,sectors:l},Dt.createElement(nc,{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(yfe,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:f||v<1,isEntrance:x}))),Dt.createElement(hfe,{showLabels:!f,sectors:l,props:a}),Dt.createElement(aU,{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 wfe={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:xfe,animationMatchBy:iv,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:ZU,startAngle:0,stroke:"#fff",zIndex:Xt.area};function Sfe(e){var t=e.id,r=wk(e,efe),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,zm.useMemo)(()=>ev(e.children,Pl),[e.children]),s=Pe(c=>bU(c,t,i)),l=(0,zm.useRef)(null),u=ut("recharts-pie",o);return n||s==null?(l.current=null,Dt.createElement(cr,{tabIndex:a,className:u})):Dt.createElement(Wr,{zIndex:e.zIndex},Dt.createElement(lfe,{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(bfe,{props:dn(dn({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function kfe(e){var t=Kt(e,wfe),r=t.id,n=wk(t,tfe),o=Qr(n);return Dt.createElement(oc,{id:r,type:"pie"},a=>Dt.createElement(Dt.Fragment,null,Dt.createElement(YU,{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(ife,Id({},n,{id:a})),Dt.createElement(Sfe,Id({},n,{id:a}))))}var Sk=kfe;Sk.displayName="Pie";var uv=q(X()),_k=q(X());var _fe=["points"];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 l5(e){for(var t=1;t{var h,g,v=l5(l5(l5({r:3},i),p),{},{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 uv.createElement(Ofe,{key:"dot-".concat(b),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),uv.createElement(Wr,{zIndex:c},uv.createElement(cr,kk({className:n},m),f))}var cv=q(X()),Ek=q(X());function QU(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 Ak(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var cW=te([uW,xo,bo],(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 ac=()=>Pe(cW),dW=()=>Pe($9);function pW(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 c5(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=c5(c5(c5({},s),Wa(o)),Of(o)),u;return(0,Ek.isValidElement)(o)?u=(0,Ek.cloneElement)(o,l):typeof o=="function"?u=o(l):u=cv.createElement(nk,l),cv.createElement(cr,{className:"recharts-active-dot",clipPath:i},u)};function dv(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(Ni),u=dW();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return Yt(c)?null:cv.createElement(Wr,{zIndex:s},cv.createElement(Bfe,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function Ffe(e,t){return Kfe(e)||Hfe(e,t)||Wfe(e,t)||Ufe()}function Ufe(){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 Wfe(e,t){if(e){if(typeof e=="string")return fW(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)?fW(e,t):void 0}}function fW(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 hn(n,t,0)},gW=(e,t,r)=>{var n={},o=e.filter(dd),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=Ffe(u,2),p=d[0],f=d[1],m=f.map(b=>b.dataKey),y=mW(t,r,(c=f[0])===null||c===void 0?void 0:c.barSize);return{stackId:p,dataKeys:m,barSize:y}}),l=a.map(u=>{var c=[u.dataKey].filter(p=>p!=null),d=mW(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function hW(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 Nk(e){for(var t=1;tg+(v.barSize||0),0);p+=(i-1)*s,p>=r&&(p-=(i-1)*s,s=0),p>=r&&d>0&&(c=!0,d*=.9,p=i*d);var f=Math.round((r-p)/2),m={offset:f-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=hn(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=gt(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 yW=(e,t,r,n,o,a,i)=>{var s=Yt(i)?t:i,l=Yfe(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>Nk(Nk({},u),{},{position:Nk(Nk({},u.position),{},{offset:u.position.offset-o/2})}))),l};var vW=(e,t)=>{var r=Lu(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 xW=(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 bW(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&>(e.zIndex)?e.zIndex:t}var wW=q(X());var Tk=e=>{var t=e.chartData,r=wt(),n=vr();return(0,wW.useEffect)(()=>n?()=>{}:(r(XO(t)),()=>{r(XO(void 0))}),[t,r,n]),null};var SW={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},kW=yr({name:"brush",initialState:SW,reducers:{setBrushSettings(e,t){return t.payload==null?SW:t.payload}}}),hze=kW.actions.setBrushSettings;var _W=kW.reducer;function Xfe(e){return(e%180+180)%180}var CW=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=Xfe(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=Oo(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=Oo(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=Oo(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),Bm=AW.actions,wze=Bm.addDot,Sze=Bm.removeDot,kze=Bm.addArea,_ze=Bm.removeArea,Cze=Bm.addLine,Aze=Bm.removeLine;var EW=AW.reducer;var pv=q(X()),fv=q(X());function Jfe(e,t){return tme(e)||eme(e,t)||Rfe(e,t)||Qfe()}function Qfe(){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 Rfe(e,t){if(e){if(typeof e=="string")return NW(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)?NW(e,t):void 0}}function NW(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,fv.useState)("".concat(ml("recharts"),"-clip")),n=Jfe(r,1),o=n[0],a=ac();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return pv.createElement(rme.Provider,{value:o},pv.createElement("defs",null,pv.createElement("clipPath",{id:o},pv.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var tn=q(X()),Fo=q(X());function OW(){}function d5(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 PW(e,t,r){return mv(e,t,void 0,void 0,void 0,void 0,r)}function mv(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 gv(e,t,a,i)}return gv(e,t,a,i)}function gv(e,t,r,n){if(Object.is(e,t))return!0;let o=yl(e),a=yl(t);if(o==="[object Arguments]"&&(o=Df),a==="[object Arguments]"&&(a=Df),o!==a)return!1;switch(o){case Pf:return e.toString()===t.toString();case Mf:return Mu(e.valueOf(),t.valueOf());case If:case Gb:case qb:return Object.is(e.valueOf(),t.valueOf());case Kb:return e.source===t.source&&e.flags===t.flags;case I$: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 Yb:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!mv(u,t.get(l),l,e,t,r,n))return!1;return!0;case Xb:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cmv(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case Zb:case Rb:case e1:case t1:case r1:case j$:case n1:case o1:case a1:case $$:case i1:case s1:if(Yh(e)!==Yh(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 DW(e,t){return Ok(e,t+1)}function jW(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:Ok(n,u)};var y=l,b,h=()=>(b===void 0&&(b=r(m,y)),b),g=m.coordinate,v=l===0||Dd(e,g,h,c,s);v||(l=0,c=i,u+=1),v&&(c=g+e*(h()/2+o),l+=u)},p;u<=a.length;)if(p=d(),p)return p.v;return[]}function $W(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,p=!0,f=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||Dd(e,k,A,d,l);if(!_)return p=!1,1;_&&(d=k+e*(A()/2+o))},m,y=c;y(y===void 0&&(y=r(f,p)),y);if(p===i-1){var h=e*(m.coordinate+e*b()/2-l);a[p]=m=Bo(Bo({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[p]=m=Bo(Bo({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var g=Dd(e,m.tickCoord,b,s,l);g&&(l=m.tickCoord-e*(b()/2+o),a[p]=Bo(Bo({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function sme(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),p=e*(c.coordinate+e*d/2-u);if(i[s-1]=c=Bo(Bo({},c),{},{tickCoord:p>0?c.coordinate-p*e:c.coordinate}),c.tickCoord!=null){var f=Dd(e,c.tickCoord,()=>d,l,u);f&&(u=c.tickCoord-e*(d/2+o),i[s-1]=Bo(Bo({},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=Bo(Bo({},x),{},{tickCoord:A<0?x.coordinate-A*e:x.coordinate})}else i[g]=x=Bo(Bo({},x),{},{tickCoord:x.coordinate});if(x.tickCoord!=null){var k=Dd(e,x.tickCoord,w,l,u);k&&(l=x.tickCoord+e*(w()/2+o),i[g]=Bo(Bo({},x),{},{isShow:!0}))}},b=0;b{var A=typeof u=="function"?u(S.value,w):S.value;return m==="width"?MW(Nd(A,{fontSize:t,letterSpacing:r}),y,d):Nd(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=IW(a,v,m);return l==="equidistantPreserveStart"?jW(v,x,b,o,i):l==="equidistantPreserveEnd"?$W(v,x,b,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=sme(v,x,b,o,i,l==="preserveStartEnd"):f=ime(v,x,b,o,i),f.filter(S=>S.isShow))}var zW=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(f=>{if(f){var m=f.getBoundingClientRect();m.width>u&&(u=m.width)}});var c=r?r.getBoundingClientRect().width:0,d=i+l,p=u+d+c+(r?o:0);return Math.round(p)}return 0};var BW=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(f=>{if(f){var m=f.getBoundingClientRect();m.height>u&&(u=m.height)}});var c=r?r.getBoundingClientRect().height:0,d=i+l,p=u+d+c+(r?o:0);return Math.round(p)}return 0};var lme={xAxis:{},yAxis:{}},FW=yr({name:"renderedTicks",initialState:lme,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]}}}),UW=FW.actions,WW=UW.setRenderedTicks,HW=UW.removeRenderedTicks;var KW=FW.reducer;var ume=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function VW(e,t){return fme(e)||pme(e,t)||dme(e,t)||cme()}function cme(){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 dme(e,t){if(e){if(typeof e=="string")return qW(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)?qW(e,t):void 0}}function qW(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&&p5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(WW({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,Fo.useEffect)(()=>n==null||r==null?ta:()=>{o(HW({axisId:n,axisType:r}))},[o,n,r]),null}var Cme=(0,Fo.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,p=e.mirror,f=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,_=hv(Cn(Cn({},S),{},{ticks:n}),v,x),C=Qr(S),E=Wa(o),j=ek(C.textAnchor)?C.textAnchor:wme(d,p),F=Sme(d,p),D={};typeof a=="object"&&(D=a);var z=Cn(Cn({},C),{},{fill:"none"},D),N=_.map(T=>Cn({entry:T},bme(T,f,m,y,b,d,h,p,g))),O=N.map(T=>{var I=T.entry,P=T.line;return tn.createElement(cr,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(I.value,"-").concat(I.coordinate,"-").concat(I.tickCoord)},a&&tn.createElement("line",jd({},z,P,{className:ut("recharts-cartesian-axis-tick-line",ho(a,"className"))})))}),$=N.map((T,I)=>{var P,H,Q=T.entry,K=T.tick,ue=Cn(Cn(Cn(Cn({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}),fe=Cn(Cn({},ue),E);return tn.createElement(cr,jd({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(Q.value,"-").concat(Q.coordinate,"-").concat(Q.tickCoord)},hl(w,Q,I)),o&&tn.createElement(kme,{option:o,tickProps:fe,value:"".concat(typeof s=="function"?s(Q.value,I):Q.value).concat(l||"")}))});return tn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(A,"-ticks")},tn.createElement(_me,{ticks:_,axisId:k,axisType:A}),$.length>0&&tn.createElement(Wr,{zIndex:Xt.label},tn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(A,"-tick-labels"),ref:t},$)),O.length>0&&tn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(A,"-tick-lines")},O))}),Ame=(0,Fo.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=mme(e,ume),d=(0,Fo.useState)(""),p=VW(d,2),f=p[0],m=p[1],y=(0,Fo.useState)(""),b=VW(y,2),h=b[0],g=b[1],v=(0,Fo.useRef)(null);(0,Fo.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var S;return zW({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 BW({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,Fo.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;(_!==f||C!==h)&&(m(_),g(C))}}},[f,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:tn.createElement(Wr,{zIndex:e.zIndex},tn.createElement(cr,{className:ut("recharts-cartesian-axis",a)},tn.createElement(xme,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:Qr(e)}),tn.createElement(Cme,{ref:x,axisType:l,events:c,fontSize:f,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}),tn.createElement(rU,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},tn.createElement(iU,{label:e.label,labelRef:e.labelRef}),e.children)))}),yv=tn.forwardRef((e,t)=>{var r=Kt(e,Pi);return tn.createElement(Ame,jd({},r,{ref:t}))});yv.displayName="CartesianAxis";var An=q(X());var Pk=q(X());var YW={grid:{stroke:"#ccc",fill:"none"}};var XW=(0,Pk.createContext)(YW),OBe=XW.Provider,ZW=()=>(0,Pk.useContext)(XW);var Eme=["x1","y1","x2","y2","key"],Nme=["offset"],Tme=["xAxisId","yAxisId"],Ome=["xAxisId","yAxisId"];function JW(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 Uo(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 An.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function QW(e){var t=e.option,r=e.lineItemProps,n;if(An.isValidElement(t))n=An.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=Mk(r,Eme),d=(o=Qr(c))!==null&&o!==void 0?o:{},p=d.offset,f=Mk(d,Nme),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=An.createElement("line",$d({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function $me(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=Mk(e,Tme),u=a.map((c,d)=>{var p=Uo(Uo({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return An.createElement(QW,{key:"line-".concat(d),option:o,lineItemProps:p})});return An.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function Lme(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=Mk(e,Ome),u=a.map((c,d)=>{var p=Uo(Uo({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return An.createElement(QW,{option:o,lineItemProps:p,key:"line-".concat(d)})});return An.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function zme(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(p=>Math.round(p+o-o)).sort((p,f)=>p-f);o!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,b=y?o+i-p:m-p;if(b<=0)return null;var h=f%t.length;return An.createElement("rect",{key:"react-".concat(f),y:p,x:n,height:b,width:a,stroke:"none",fill:t[h],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return An.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function Bme(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(p=>Math.round(p+a-a)).sort((p,f)=>p-f);a!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,b=y?a+s-p:m-p;if(b<=0)return null;var h=f%n.length;return An.createElement("rect",{key:"react-".concat(f),x:p,y:i,width:b,height:l,stroke:"none",fill:n[h],fillOpacity:o,className:"recharts-cartesian-grid-bg"})});return An.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var Fme=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return BN(hv(Uo(Uo(Uo({},Pi),r),{},{ticks:FN(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},Ume=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return BN(hv(Uo(Uo(Uo({},Pi),r),{},{ticks:FN(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},Wme={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Xt.grid};function jl(e){var t,r,n,o,a,i,s=qf(),l=Gf(),u=ew(),c=Uo(Uo({},Kt(e,Wme)),{},{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,p=c.yAxisId,f=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=>AO(O,"xAxis",d,x)),w=Pe(O=>AO(O,"yAxis",p,x)),A=ZW(),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(!va(y)||!va(b)||!Oe(f)||!Oe(m))return null;var _=c.verticalCoordinatesGenerator||Fme,C=c.horizontalCoordinatesGenerator||Ume,E=c.horizontalPoints,j=c.verticalPoints;if((!E||!E.length)&&typeof C=="function"){var F=g&&g.length,D=C({yAxis:w?Uo(Uo({},w),{},{ticks:F?g:w.ticks}):void 0,width:s??y,height:l??b,offset:u},F?!0:h);Vf(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?Uo(Uo({},S),{},{ticks:z?v:S.ticks}):void 0,width:s??y,height:l??b,offset:u},z?!0:h);Vf(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(j=N)}return An.createElement(Wr,{zIndex:c.zIndex},An.createElement("g",{className:"recharts-cartesian-grid"},An.createElement(jme,{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}),An.createElement(zme,$d({},c,{horizontalPoints:E})),An.createElement(Bme,$d({},c,{verticalPoints:j})),An.createElement($me,$d({},c,k,{offset:u,horizontalPoints:E,xAxis:S,yAxis:w})),An.createElement(Lme,$d({},c,k,{offset:u,verticalPoints:j,xAxis:S,yAxis:w}))))}jl.displayName="CartesianGrid";var pr=q(X()),$l=q(X());var RW=q(X());var Hme=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function f5(){return f5=Object.assign?Object.assign.bind():function(e){for(var t=1;tf+m,0);if(!o)return eH(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 p=s.length%2===0?[0,t]:[t];return[...Yme(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function Zme(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return Xme(r,t,n)}return eH(t,r)}function tH(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=Kme(e,Hme),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=qme((c=d?.current)!==null&&c!==void 0?c:null);u=Zme(a,p,o)}else a!=null&&(u=String(a));return RW.createElement(Es,f5({},s,{connectNulls:l,strokeDasharray:u}))}var Ld=q(X());function rH(e){var t=(0,Ld.useRef)(0),r=(0,Ld.useRef)(0),n=(0,Ld.useRef)(!1),o=(0,Ld.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,Ld.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(yi(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 aH=q(X()),vv=q(X());var Jme={},nH=yr({name:"errorBars",initialState:Jme,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))}}}),m5=nH.actions,RBe=m5.addErrorBar,e7e=m5.replaceErrorBar,t7e=m5.removeErrorBar;var oH=nH.reducer;var Qme=["children"];function Rme(e,t){if(e==null)return{};var r,n,o=ege(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},rge=(0,vv.createContext)(tge);function Ik(e){var t=e.children,r=Rme(e,Qme);return aH.createElement(rge.Provider,{value:r},t)}var g5=q(X());function zd(e,t){var r,n,o=Pe(u=>Ds(u,e)),a=Pe(u=>js(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:jn.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:$n.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function Fm(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=ac(),a=zd(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=Pe(v=>hO(v,t,!1)),c=Pe(v=>yO(v,r,!1));if(!l||!o)return null;var d=o.x,p=o.y,f=o.width,m=o.height,y=i&&u?Math.min(u[0],u[1]):d-f/2,b=s&&c?Math.min(c[0],c[1]):p-m/2,h=i&&u?Math.abs(u[1]-u[0]):f*2,g=s&&c?Math.abs(c[1]-c[0]):m*2;return g5.createElement("clipPath",{id:"clipPath-".concat(n)},g5.createElement("rect",{x:y,y:b,width:h,height:g}))}var iH=(e,t,r,n)=>ei(e,"xAxis",t,n),sH=(e,t,r,n)=>Ra(e,"xAxis",t,n),lH=(e,t,r,n)=>ei(e,"yAxis",r,n),uH=(e,t,r,n)=>Ra(e,"yAxis",r,n),nge=te([_t,iH,lH,sH,uH],(e,t,r,n,o)=>Lo(e,"xAxis")?Si(t,n,!1):Si(r,o,!1)),oge=(e,t,r,n,o)=>o;function age(e){return e.type==="line"}var ige=te([Ku,oge],(e,t)=>e.filter(age).find(r=>r.id===t)),cH=te([_t,iH,lH,sH,uH,ige,nge,sd],(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,p=a.data,f;if(p!=null&&p.length>0?f=p:f=l?.slice(u,c+1),f!=null)return dH({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function Dk(e){var t=Wa(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 sge=["id"],lge=["type","layout","connectNulls","needClip","shape","strokeDasharray"],uge=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function jk(){return jk=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var hge=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=gge(e),n=[];for(var o of e)if(o.status==="matched")n.push($s($s({},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($s($s({},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($s($s({},o.prev),{},{x:hr(o.prev.x,i,t),y:o.prev.y}))}return n},v5={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:hge,animationMatchBy:Md,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:tH,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Xt.line,type:"linear"},yge=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:Ga(r,t),payload:e}]},vge=pr.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,p={dataDefinedOnItem:r,getPosition:ta,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Ga(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return pr.createElement(ec,{tooltipEntrySettings:p})});function xge(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=y5(n,sge),u=Qr(l);return pr.createElement(Ck,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function bge(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,$l.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 $s($s({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return pr.createElement(Pm,{value:t?o:void 0},r)}function wge(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,p=o.needClip,f=o.shape,m=o.strokeDasharray,y=y5(o,lge),b=$s($s({},Rr(y)),{},{fill:"none",className:"recharts-line-curve",clipPath:p?"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 pr.createElement(pr.Fragment,null,n?.length>1&&pr.createElement(Ru,{option:f,DefaultShape:v5.shape,shapeProps:b}),pr.createElement(xge,{points:n,clipPathId:t,props:o}))}function Sge(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,p=r.layout,f=mge(n.current),m=rc(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,b=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=rH(a),x=(0,$l.useCallback)(S=>S>0&&f>0,[f]);return pr.createElement(bge,{points:a,showLabels:g},r.children,pr.createElement(nc,{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:p},(S,w,A)=>{var k=y||w<1,_=k?v(w,f):null;return pr.createElement(wge,{props:r,points:S,clipPathId:t,pathRef:n,animationElapsedTime:w,isAnimating:k,isEntrance:A,visibleLength:_})}),pr.createElement(Qu,{label:r.label}))}function kge(e){var t=e.clipPathId,r=e.props,n=(0,$l.useRef)(null),o=(0,$l.useRef)(null);return pr.createElement(Sge,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var _ge=(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)}},h5=class extends $l.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,p=t.id,f=t.needClip,m=t.zIndex;if(r)return null;var y=ut("recharts-line",a),b=p,h=Dk(n),g=h.r,v=h.strokeWidth,x=Mm(n),S=g*2+v,w=f?"url(#clipPath-".concat(x?"":"dots-").concat(b,")"):void 0;return pr.createElement(Wr,{zIndex:m},pr.createElement(cr,{className:y},f&&pr.createElement("defs",null,pr.createElement(Fm,{clipPathId:b,xAxisId:i,yAxisId:s}),!x&&pr.createElement("clipPath",{id:"clipPath-dots-".concat(b)},pr.createElement("rect",{x:u-S/2,y:l-S/2,width:c+S,height:d+S}))),pr.createElement(Ik,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:_ge,errorBarOffset:0},pr.createElement(kge,{props:this.props,clipPathId:b}))),pr.createElement(dv,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}};function Cge(e){var t=Kt(e,v5),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,p=t.legendType,f=t.xAxisId,m=t.yAxisId,y=t.id,b=y5(t,uge),h=zd(f,m),g=h.needClip,v=ac(),x=ba(),S=vr(),w=Pe(E=>cH(E,f,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 pr.createElement(h5,jk({},b,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:o,animationDuration:a,animationEasing:i,isAnimationActive:c,hide:u,label:d,legendType:p,xAxisId:f,yAxisId:m,points:w,layout:x,height:A,width:k,left:_,top:C,needClip:g}))}function dH(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 p=Bf({axis:r,ticks:o,bandSize:s,entry:u,index:c}),f=Yt(d)?null:n.scale.map(d);return{x:p,y:f??null,value:d,payload:u}}var m=Yt(d)?null:r.scale.map(d),y=Bf({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 Age(e){var t=Kt(e,v5),r=vr();return pr.createElement(oc,{id:t.id,type:"line"},n=>pr.createElement(pr.Fragment,null,pr.createElement(Dm,{legendPayload:yge(t)}),pr.createElement(vge,{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}),pr.createElement(Lm,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),pr.createElement(Cge,jk({},t,{id:n}))))}var $k=pr.memo(Age,wa);$k.displayName="Line";var ir=q(X()),Bd=q(X());function Mi(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:u5}function Ii(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:u5}var fH=(e,t,r)=>ei(e,"xAxis",Mi(e,t),r),mH=(e,t,r)=>Ra(e,"xAxis",Mi(e,t),r),gH=(e,t,r)=>ei(e,"yAxis",Ii(e,t),r),hH=(e,t,r)=>Ra(e,"yAxis",Ii(e,t),r),Ege=te([_t,fH,gH,mH,hH],(e,t,r,n,o)=>Lo(e,"xAxis")?Si(t,n,!1):Si(r,o,!1)),Nge=(e,t)=>t,x5=te([Ku,Nge],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),yH=e=>{var t=_t(e),r=Lo(t,"xAxis");return r?"yAxis":"xAxis"},Tge=(e,t)=>{var r=yH(e);return r==="yAxis"?Ii(e,t):Mi(e,t)},vH=(e,t,r)=>vm(e,yH(e),Tge(e,t),r),Oge=te([x5,vH],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Lu(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]])}}}),Pge=te([x5,vH],(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(eo)}}),xH=te([_t,fH,gH,mH,hH,Oge,Sw,Ege,x5,_B,Pge],(e,t,r,n,o,a,i,s,l,u,c)=>{var d=i.chartData,p=i.dataStartIndex,f=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(p,f+1),y!=null)return bH({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:p,areaSettings:l,stackedData:a,displayedData:y,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var Wo=q(X());var Mge=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],Ige=["id","baseLine"];function xv(){return xv=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)?Wo.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)?Wo.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[Um(Um({},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]:[]),CH={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Md,animationInterpolateFn:Kge,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:SH,xAxisId:0,yAxisId:0,zIndex:Xt.area};function zk(e,t){return e&&e!=="none"?e:t}var Vge=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:zk(n,o),value:Ga(r,t),payload:e}]},qge=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,p={dataDefinedOnItem:r,getPosition:ta,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Ga(i,t),hide:s,type:c,color:zk(n,a),unit:l,formatter:u,graphicalItemId:d}};return ir.createElement(ec,{tooltipEntrySettings:p})});function Gge(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=Qr(n);return ir.createElement(Ck,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function Yge(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 Um(Um({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return ir.createElement(Pm,{value:t?o:void 0},r)}function Xge(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,p=a.connectNulls,f=a.isRange,m=a.shape,y=a.id,b=_H(a,zge),h=Rr(b),g=Um(Um({},h),{},{id:y,points:t,connectNulls:p,type:c,baseLine:r,layout:u,stroke:d,isRange:f,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(Ru,{option:m,DefaultShape:CH.shape,shapeProps:g})),ir.createElement(Gge,{points:t,props:b,clipPathId:o}))}function Zge(e,t,r){if(Oe(e)){var n=Oe(t)?t:void 0;return hr(n,e,r)}if(Yt(e)||yo(e)){var o=Oe(t)?t:void 0;return hr(o,0,r)}return e}function Jge(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,p=n.animationMatchBy,f=n.animationInterpolateFn,m=(0,Bd.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=vk(m,a),b=Yf(),h=rc(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=sv(S,s,p):Array.isArray(s)?w=sv(null,s,p):w=null,ir.createElement(nc,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:v,onAnimationEnd:x,animationInterpolateFn:f,animationMatchBy:p,layout:b},(A,k,_)=>{var C;return k===1?C=s:Array.isArray(s)?C=f(w,k,b):C=_?s:Zge(s,S,k),y.syncStepValue(C,k),ir.createElement(Yge,{showLabels:!g,points:i},n.children,ir.createElement(Xge,{points:A,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:k,isAnimating:g||k<1,isEntrance:_}),ir.createElement(Qu,{label:n.label}))})}function Qge(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Bd.useRef)(null),a=(0,Bd.useRef)();return ir.createElement(Jge,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var b5=class extends Bd.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,p=t.height,f=t.id,m=t.baseLine,y=t.zIndex;if(r)return null;var b=ut("recharts-area",a),h=f,g=Dk(n),v=g.r,x=g.strokeWidth,S=Mm(n),w=v*2+x,A=l?"url(#clipPath-".concat(S?"":"dots-").concat(h,")"):void 0;return ir.createElement(Wr,{zIndex:y},ir.createElement(cr,{className:b},l&&ir.createElement("defs",null,ir.createElement(Fm,{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:p+w}))),ir.createElement(Qge,{needClip:l,clipPathId:h,props:this.props})),ir.createElement(dv,{points:o,mainColor:zk(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:A}),this.props.isRange&&Array.isArray(m)&&ir.createElement(dv,{points:m,mainColor:zk(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:A}))}};function Rge(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,p=e.legendType,f=e.stroke,m=e.xAxisId,y=e.yAxisId,b=_H(e,Bge),h=ba(),g=WS(),v=zd(m,y),x=v.needClip,S=vr(),w=(t=Pe(z=>xH(z,e.id,S)))!==null&&t!==void 0?t:{},A=w.points,k=w.isRange,_=w.baseLine,C=ac();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(b5,Lk({},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:p,needClip:x,points:A,stroke:f,width:j,left:F,top:D,xAxisId:m,yAxisId:y}))}var ehe=(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 bH(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,p=e.xAxisTicks,f=e.yAxisTicks,m=e.bandSize,y=e.stackDataKeys,b=a&&a.length,h=ehe(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:Bf({axis:l,ticks:p,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:Bf({axis:u,ticks:f,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 the(e){var t=Kt(e,CH),r=vr();return ir.createElement(oc,{id:t.id,type:"area"},n=>ir.createElement(ir.Fragment,null,ir.createElement(Dm,{legendPayload:Vge(t)}),ir.createElement(qge,{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(Lm,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:G1(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),ir.createElement(Rge,Lk({},t,{id:n}))))}var Ll=ir.memo(the,wa);Ll.displayName="Area";var Bt=q(X()),as=q(X());var EH=q(X());var rhe=!0,w5="Invariant failed";function AH(e,t){if(!e){if(rhe)throw new Error(w5);var r=typeof t=="function"?t():t,n=r?"".concat(w5,": ").concat(r):w5;throw new Error(n)}}var nhe=["option"];function ohe(e,t){if(e==null)return{};var r,n,o=ahe(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||AH(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var ihe=(e,t,r)=>r,she=(e,t)=>t,bv=te([Ku,she],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),lhe=te([bv],e=>e?.maxBarSize),uhe=(e,t,r,n)=>n,che=te([_t,Ku,Mi,Ii,ihe],(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")),dhe=(e,t,r)=>{var n=_t(e),o=Mi(e,t),a=Ii(e,t);if(!(o==null||a==null))return n==="horizontal"?vm(e,"yAxis",a,r):vm(e,"xAxis",o,r)},phe=(e,t)=>{var r=_t(e),n=Mi(e,t),o=Ii(e,t);if(!(n==null||o==null))return r==="horizontal"?kO(e,"xAxis",n):kO(e,"yAxis",o)},fhe=te([che,kB,phe],gW),mhe=(e,t,r)=>{var n,o,a=bv(e,t);if(a==null)return 0;var i=Mi(e,t),s=Ii(e,t);if(i==null||s==null)return 0;var l=_t(e),u=pT(e),c=a.maxBarSize,d=Yt(c)?u:c,p,f;return l==="horizontal"?(p=ei(e,"xAxis",i,r),f=Ra(e,"xAxis",i,r)):(p=ei(e,"yAxis",s,r),f=Ra(e,"yAxis",s,r)),(n=(o=Si(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},TH=(e,t,r)=>{var n=_t(e),o=Mi(e,t),a=Ii(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=ei(e,"xAxis",o,r),s=Ra(e,"xAxis",o,r)):(i=ei(e,"yAxis",a,r),s=Ra(e,"yAxis",a,r)),Si(i,s)}},ghe=te([fhe,pT,SB,Ew,mhe,TH,lhe],yW),hhe=(e,t,r)=>{var n=Mi(e,t);if(n!=null)return ei(e,"xAxis",n,r)},yhe=(e,t,r)=>{var n=Ii(e,t);if(n!=null)return ei(e,"yAxis",n,r)},vhe=(e,t,r)=>{var n=Mi(e,t);if(n!=null)return Ra(e,"xAxis",n,r)},xhe=(e,t,r)=>{var n=Ii(e,t);if(n!=null)return Ra(e,"yAxis",n,r)},bhe=te([ghe,bv],xW),whe=te([dhe,bv],vW),OH=te([Nr,Hf,hhe,yhe,vhe,xhe,bhe,_t,Sw,TH,whe,bv,uhe],(e,t,r,n,o,a,i,s,l,u,c,d,p)=>{var f=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=f?.slice(m,y+1),h!=null)return PH({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:p,dataStartIndex:m})}});var k5=q(X()),Wm=q(X());var She=["index"];function S5(){return S5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,Wm.useContext)(MH);if(t!=null)return t.stackId;if(e!=null)return G1(e)};var Che=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),Ahe=e=>{var t=(0,Wm.useContext)(MH);if(t!=null){var r=t.stackId;return"url(#".concat(Che(r,e),")")}},_5=e=>{var t=e.index,r=khe(e,She),n=Ahe(t);return k5.createElement(cr,S5({className:"recharts-bar-stack-layer",clipPath:n},r))};var Ehe=["onMouseEnter","onMouseLeave","onClick"],Nhe=["value","background","tooltipPosition"],The=["id"],Ohe=["onMouseEnter","onClick","onMouseLeave"];function DH(e,t){return Dhe(e)||Ihe(e,t)||Mhe(e,t)||Phe()}function Phe(){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 Mhe(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{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:Ga(r,t),payload:e}]},Fhe=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:ta,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:Ga(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return Bt.createElement(ec,{tooltipEntrySettings:d})});function Uhe(e){var t=Pe(Ni),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=Uk(a,Ehe),c=rv(i,n,a.id),d=nv(s),p=ov(l,n,a.id);if(!o||r==null)return null;var f=Wa(o);return Bt.createElement(Wr,{zIndex:bW(o,Xt.barBackground)},r.map((m,y)=>{var b=m.value,h=m.background,g=m.tooltipPosition,v=Uk(m,Nhe);if(!h)return null;var x=c(m,m.originalDataIndex),S=d(m,m.originalDataIndex),w=p(m,m.originalDataIndex),A=no(no(no(no(no({option:o,isActive:String(m.originalDataIndex)===t},v),{},{fill:"#eee"},h),f),hl(u,m,y)),{},{onMouseEnter:x,onMouseLeave:S,onClick:w,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return Bt.createElement(Fk,ic({key:"background-bar-".concat(y)},A))}))}function Whe(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 no(no({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return Bt.createElement(Pm,{value:t?o:void 0},r)}function Hhe(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=Pe(Ni),l=Pe(Sm),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,as.useState)(!1),p=DH(d,2),f=p[0],m=p[1],y=(0,as.useState)(!1),b=DH(y,2),h=b[0],g=b[1];(0,as.useEffect)(()=>{var k;return u?(m(!0),k=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(k)}},[u,c]);var v=(0,as.useCallback)(()=>{u||m(!1)},[u]),x=u&&h,S=u||f,w;u?r===!0?w=t:w=r:w=t;var A=Bt.createElement(Fk,ic({},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(Wr,{zIndex:Xt.activeBar},Bt.createElement(_5,{index:o.originalDataIndex},A)):A}function Khe(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return Bt.createElement(Fk,ic({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function Vhe(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=Qr(n))!==null&&t!==void 0?t:{},l=s.id,u=Uk(s,The),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,b=Uk(n,Ohe),h=rv(f,d,l),g=nv(y),v=ov(m,d,l);return r?Bt.createElement(Bt.Fragment,null,r.map((x,S)=>Bt.createElement(_5,ic({index:x.originalDataIndex,key:"rectangle-".concat(x?.x,"-").concat(x?.y,"-").concat(x?.value,"-").concat(S),className:"recharts-bar-rectangle"},hl(b,x,S),{onMouseEnter:h(x,x.originalDataIndex),onMouseLeave:g(x,x.originalDataIndex),onClick:v(x,x.originalDataIndex)}),p?Bt.createElement(Hhe,{shape:c,activeBar:p,baseProps:u,entry:x,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):Bt.createElement(Khe,{shape:c,baseProps:u,entry:x,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var qhe=(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"?[no(no({},n.prev),{},{height:hr(n.prev.height,0,t),y:hr(n.prev.y,n.prev.y+n.prev.height,t)})]:[no(no({},n.prev),{},{width:hr(n.prev.width,0,t)})];if(n.status==="matched")return[no(no({},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"?[no(no({},o),{},{height:hr(0,o.height,t),y:hr(o.stackedBarStart,o.y,t)})]:[no(no({},o),{},{width:hr(0,o.width,t),x:hr(o.stackedBarStart,o.x,t)})]});function Ghe(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=rc(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return Bt.createElement(Whe,{showLabels:!d,rects:n},Bt.createElement(nc,{animationInput:n,animationIdPrefix:"recharts-bar-",items:n,previousItemsRef:r,isAnimationActive:o,animationBegin:a,animationDuration:i,animationEasing:s,onAnimationStart:p,onAnimationEnd:f,animationInterpolateFn:l,animationMatchBy:t.animationMatchBy,layout:u},(m,y,b)=>Bt.createElement(cr,null,Bt.createElement(Vhe,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:b}))),Bt.createElement(Qu,{label:t.label}),t.children)}function Yhe(e){var t=(0,as.useRef)(null);return Bt.createElement(Ghe,{previousRectanglesRef:t,props:e})}var LH=0,Xhe=(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)}},C5=class extends as.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),p=c;return Bt.createElement(cr,{className:d,id:c},l&&Bt.createElement("defs",null,Bt.createElement(Fm,{clipPathId:p,xAxisId:i,yAxisId:s})),Bt.createElement(cr,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},Bt.createElement(Uhe,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),Bt.createElement(Yhe,this.props)))}},Zhe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:qhe,animationMatchBy:iv,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:LH,shape:Bk,xAxisId:0,yAxisId:0,zIndex:Xt.bar};function Jhe(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=zd(t,r),p=d.needClip,f=ba(),m=vr(),y=ev(e.children,Pl),b=Pe(v=>OH(v,e.id,m,y));if(f!=="vertical"&&f!=="horizontal")return null;var h,g=b?.[0];return g==null||g.height==null||g.width==null?h=0:h=f==="vertical"?g.height/2:g.width/2,Bt.createElement(Ik,{xAxisId:t,yAxisId:r,data:b,dataPointFormatter:Xhe,errorBarOffset:h},Bt.createElement(C5,ic({},e,{layout:f,needClip:p,data:b,xAxisId:t,yAxisId:r,hide:n,legendType:o,minPointSize:a,activeBar:i,animationBegin:s,animationDuration:l,animationEasing:u,isAnimationActive:c})))}function PH(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,p=e.stackedData,f=e.displayedData,m=e.offset,y=e.cells,b=e.parentViewBox,h=e.dataStartIndex,g=t==="horizontal"?u:l,v=p?g.scale.domain():null,x=w6({numericAxis:g}),S=g.scale.map(x);return f.map((w,A)=>{var k,_,C,E,j,F;if(p){var D=p[A+h];if(D==null)return null;k=x6(D,v)}else k=Nt(w,n),Array.isArray(k)||(k=[x,k]);var z=NH(o,LH)(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;_=UN({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=yo(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(Dm,{legendPayload:Bhe(t)}),Bt.createElement(Fhe,{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(Lm,{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!==Bk}),Bt.createElement(Wr,{zIndex:t.zIndex},Bt.createElement(Jhe,ic({},t,{id:o})))))}var Wk=Bt.memo(Qhe,wa);Wk.displayName="Bar";var zl=q(X()),Di=q(X());var Rhe=["domain","range"],eye=["domain","range"];function zH(e,t){if(e==null)return{};var r,n,o=tye(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return UH(UH({},a),{},{type:i})},[a,i]);return(0,Di.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(eW(s)):r.current!==s&&t(tW({prev:r.current,next:s})),r.current=s)},[s,t]),(0,Di.useLayoutEffect)(()=>()=>{r.current&&(t(rW(r.current)),r.current=null)},[t]),null}var cye=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,Di.useRef)(null),i=(0,Di.useRef)(null),s=Pe(Hf),l=vr(),u=wt(),c="xAxis",d=Pe(w=>TS(w,c,t,l)),p=Pe(w=>wO(w,t)),f=Pe(w=>p9(w,t)),m=Pe(w=>QT(w,t));if((0,Di.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||Pd(o)||(0,Di.isValidElement)(o)||m==null)){var w=a.current;if(w){var A=w.getCalculatedHeight();Math.round(p.height)!==Math.round(A)&&u(sW({id:t,height:A}))}}},[d,p,u,o,t,n,m]),p==null||f==null||m==null)return null;var y=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,g=E5(e,nye),v=m.id,x=m.scale,S=E5(m,oye);return zl.createElement(yv,A5({},g,S,{ref:a,labelRef:i,x:f.x,y:f.y,width:p.width,height:p.height,className:ut("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},dye={allowDataOverflow:jn.allowDataOverflow,allowDecimals:jn.allowDecimals,allowDuplicatedCategory:jn.allowDuplicatedCategory,angle:jn.angle,axisLine:Pi.axisLine,height:jn.height,hide:!1,includeHidden:jn.includeHidden,interval:jn.interval,label:!1,minTickGap:jn.minTickGap,mirror:jn.mirror,orientation:jn.orientation,padding:jn.padding,reversed:jn.reversed,scale:jn.scale,tick:jn.tick,tickCount:jn.tickCount,tickLine:Pi.tickLine,tickSize:Pi.tickSize,type:jn.type,niceTicks:jn.niceTicks,xAxisId:0},pye=e=>{var t=Kt(e,dye);return zl.createElement(zl.Fragment,null,zl.createElement(uye,{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}),zl.createElement(cye,t))},Bl=zl.memo(pye,Hk);Bl.displayName="XAxis";var Fl=q(X()),ji=q(X());var fye=["type"],mye=["dangerouslySetInnerHTML","ticks","scale"],gye=["id","scale"];function N5(){return N5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return HH(HH({},a),{},{type:i})},[i,a]);return(0,ji.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(nW(s)):r.current!==s&&t(oW({prev:r.current,next:s})),r.current=s)},[s,t]),(0,ji.useLayoutEffect)(()=>()=>{r.current&&(t(aW(r.current)),r.current=null)},[t]),null}function wye(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,ji.useRef)(null),i=(0,ji.useRef)(null),s=Pe(Hf),l=vr(),u=wt(),c="yAxis",d=Pe(w=>SO(w,t)),p=Pe(w=>f9(w,t)),f=Pe(w=>TS(w,c,t,l)),m=Pe(w=>RT(w,t));if((0,ji.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Pd(o)||(0,ji.isValidElement)(o)||m==null)){var w=a.current;if(w){var A=w.getCalculatedWidth();Math.round(d.width)!==Math.round(A)&&u(iW({id:t,width:A}))}}},[f,d,u,o,t,n,m]),d==null||p==null||m==null)return null;var y=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,g=T5(e,mye),v=m.id,x=m.scale,S=T5(m,gye);return Fl.createElement(yv,N5({},g,S,{ref:a,labelRef:i,x:p.x,y:p.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:f,axisType:c,axisId:t}))}var Sye={allowDataOverflow:$n.allowDataOverflow,allowDecimals:$n.allowDecimals,allowDuplicatedCategory:$n.allowDuplicatedCategory,angle:$n.angle,axisLine:Pi.axisLine,hide:!1,includeHidden:$n.includeHidden,interval:$n.interval,label:!1,minTickGap:$n.minTickGap,mirror:$n.mirror,orientation:$n.orientation,padding:$n.padding,reversed:$n.reversed,scale:$n.scale,tick:$n.tick,tickCount:$n.tickCount,tickLine:Pi.tickLine,tickSize:Pi.tickSize,type:$n.type,niceTicks:$n.niceTicks,width:$n.width,yAxisId:0},kye=e=>{var t=Kt(e,Sye);return Fl.createElement(Fl.Fragment,null,Fl.createElement(bye,{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}),Fl.createElement(wye,t))},Ul=Fl.memo(kye,Hk);Ul.displayName="YAxis";var hK=q(X()),yK=q(X());var Vd=q(X()),gK=q(X());var oK=q(X()),aK=q(X());var _ye=(e,t)=>t,wv=te([_ye,_t,jw,Dn,MO,_a,V9,Nr],J9);function Cye(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Sv(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(Cye(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 P5=Vn("mouseClick"),M5=wl();M5.startListening({actionCreator:P5,effect:(e,t)=>{var r=e.payload,n=wv(t.getState(),Sv(r));n?.activeIndex!=null&&t.dispatch(_9({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var Kk=Vn("mouseMove"),I5=wl(),Hm=null,Fd=null,O5=null;I5.startListening({actionCreator:Kk,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");Hm!==null&&(cancelAnimationFrame(Hm),Hm=null),Fd!==null&&(typeof a!="number"||!s)&&(clearTimeout(Fd),Fd=null),O5=Sv(r);var l=()=>{var u=t.getState(),c=Vu(u,u.tooltip.settings.shared);if(!O5){Hm=null,Fd=null;return}if(c==="axis"){var d=wv(u,O5);d?.activeIndex!=null?t.dispatch(IS({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(MS())}Hm=null,Fd=null};if(!s){l();return}a==="raf"?Hm=requestAnimationFrame(l):typeof a=="number"&&Fd===null&&(Fd=setTimeout(l,a))}});function KH(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 VH={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},qH=yr({name:"rootProps",initialState:VH,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:VH.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}}}),GH=qH.reducer,YH=qH.actions.updateOptions;var Aye=null,Eye={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)},XH=yr({name:"polarOptions",initialState:Aye,reducers:Eye}),ZH=XH.actions.updatePolarOptions;var JH=XH.reducer;var D5=Vn("keyDown"),j5=Vn("focus"),$5=Vn("blur"),kv=wl(),Km=null,Ud=null,Vk=null;kv.startListening({actionCreator:D5,effect:(e,t)=>{Vk=e.payload,Km!==null&&(cancelAnimationFrame(Km),Km=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Ud!==null&&(typeof o!="number"||!i)&&(clearTimeout(Ud),Ud=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=Vk;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=qu(c,Ol(l),Al(l),Yu(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,y=_a(l),b=Ol(l),h=Vu(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=Jy(l,h,"hover",String(c.index));t.dispatch(Xy({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=m9(l),x=v==="left-to-right"?1:-1,S=d==="ArrowRight"?1:-1,w;if(m){var A=Al(l),k=Yu(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(qu(C(j),b,A,k)!=null){w=j;break}if(w<0)return}else{w=f+S*x;var F=y?.length||b.length;if(F===0||w>=F||w<0)return}var D=Jy(l,h,"hover",String(w));t.dispatch(Xy({active:!0,activeIndex:w.toString(),activeCoordinate:D}))}finally{Km=null,Ud=null}};if(!i){s();return}o==="raf"?Km=requestAnimationFrame(s):typeof o=="number"&&Ud===null&&(s(),Vk=null,Ud=setTimeout(()=>{Vk?s():(Ud=null,Km=null)},o))}});kv.startListening({actionCreator:j5,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=Vu(r,r.tooltip.settings.shared),s=Jy(r,i,"hover",String(a));t.dispatch(Xy({active:!0,activeIndex:a,activeCoordinate:s}))}}}});kv.startListening({actionCreator:$5,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(Xy({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function qk(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 ti=Vn("externalEvent"),z5=wl(),Gk=new Map,_v=new Map,L5=new Map;z5.startListening({actionCreator:ti,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=qk(o);L5.set(a,{handler:n,reactEvent:i});var s=Gk.get(a);s!==void 0&&(cancelAnimationFrame(s),Gk.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=_v.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),_v.delete(a));var y=()=>{var g=L5.get(a);try{if(!g)return;var v=g.handler,x=g.reactEvent,S=t.getState(),w={activeCoordinate:$O(S),activeDataKey:Sm(S),activeIndex:Ni(S),activeLabel:FS(S),activeTooltipIndex:Ni(S),isTooltipActive:LO(S)};v&&v(w,x)}finally{Gk.delete(a),_v.delete(a),L5.delete(a)}};if(!f){y();return}if(c==="raf"){var b=requestAnimationFrame(y);Gk.set(a,b)}else if(typeof c=="number"){if(!_v.has(a)){y();var h=setTimeout(y,c);_v.set(a,h)}}else y()}}});var Nye=te([Tl],e=>e.tooltipItemPayloads),QH=te([Nye,(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 B5=Vn("touchMove"),F5=wl(),Wd=null,sc=null,RH=null,Cv=null;F5.startListening({actionCreator:B5,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){Cv=qk(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Wd!==null&&(cancelAnimationFrame(Wd),Wd=null),sc!==null&&(typeof a!="number"||!s)&&(clearTimeout(sc),sc=null),RH=Array.from(r.touches).map(u=>Sv({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(Cv!=null){var u=t.getState(),c=Vu(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=RH)===null||d===void 0?void 0:d[0];if(p==null){Wd=null,sc=null;return}var f=wv(u,p);f?.activeIndex!=null&&t.dispatch(IS({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,y=Cv.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(Y1),g=(m=b.getAttribute(X1))!==null&&m!==void 0?m:void 0,v=Gu(u).find(w=>w.id===g);if(h==null||v==null||g==null)return;var x=v.dataKey,S=QH(u,h,g);t.dispatch(PS({activeDataKey:x,activeIndex:h,activeCoordinate:S,activeGraphicalItemId:g}))}Wd=null,sc=null}};if(!s){l();return}a==="raf"?Wd=requestAnimationFrame(l):typeof a=="number"&&sc===null&&(l(),Cv=null,sc=setTimeout(()=>{Cv?l():(sc=null,Wd=null)},a))}}});var Av={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},eK=yr({name:"eventSettings",initialState:Av,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Lt(t.payload.throttledEvents))}}}),tK=eK.actions.setEventSettings;var rK=eK.reducer;var Tye=S1({brush:_W,cartesianAxis:lW,chartData:wF,errorBars:oH,eventSettings:rK,graphicalItems:GU,layout:h6,legend:W6,options:hF,polarAxis:gU,polarOptions:JH,referenceElements:EW,renderedTicks:KW,rootProps:GH,tooltip:C9,zIndex:iF}),nK=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return QL({reducer:Tye,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([M5.middleware,I5.middleware,kv.middleware,z5.middleware,F5.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(jN({type:"raf"}))},devTools:ki.devToolsEnabled&&{serialize:{replacer:KH},name:"recharts-".concat(r)}})};function Yk(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=vr(),a=(0,aK.useRef)(null);if(o)return r;a.current==null&&(a.current=nK(t,n));var i=Xh;return oK.createElement(Z6,{context:i,store:a.current},r)}var Xk=q(X());function Oye(e){var t=e.layout,r=e.margin,n=wt(),o=vr();return(0,Xk.useEffect)(()=>{o||(n(f6(t)),n(zN(r)))},[n,o,t,r]),null}var Zk=(0,Xk.memo)(Oye,wa);var iK=q(X());function Jk(e){var t=wt();return(0,iK.useEffect)(()=>{t(YH(e))},[t,e]),null}var Qk=q(X());var Pye=e=>{var t=wt();return(0,Qk.useEffect)(()=>{t(tK(e))},[t,e]),null},Rk=(0,Qk.memo)(Pye,wa);var Wl=q(X()),fK=q(X());var Kd=q(X()),W5=q(X());var Hd=q(X()),e_=q(X());function sK(e){var t=e.zIndex,r=e.isPanorama,n=(0,e_.useRef)(null),o=wt();return(0,e_.useLayoutEffect)(()=>(n.current&&o(oF({zIndex:t,element:n.current,isPanorama:r})),()=>{o(aF({zIndex:t,isPanorama:r}))}),[o,t,r]),Hd.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function U5(e){var t=e.children,r=e.isPanorama,n=Pe(R9);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Hd.createElement(Hd.Fragment,null,o.map(i=>Hd.createElement(sK,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Hd.createElement(sK,{key:i,zIndex:i,isPanorama:r})))}var Mye=["children"];function Iye(e,t){if(e==null)return{};var r,n,o=Dye(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=qf(),n=Gf(),o=iw();if(!va(r)||!va(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),Kd.createElement(Uh,t_({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:jye,ref:t}),a)}),Lye=e=>{var t=e.children,r=Pe(td);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Kd.createElement(Uh,{width:n,height:o,x:i,y:a},t)},H5=(0,W5.forwardRef)((e,t)=>{var r=e.children,n=Iye(e,Mye),o=vr();return o?Kd.createElement(Lye,null,Kd.createElement(U5,{isPanorama:!0},r)):Kd.createElement($ye,t_({ref:t},n),Kd.createElement(U5,{isPanorama:!1},r))});var pn=q(X()),tr=q(X());var r_=q(X());function zye(e,t){return Wye(e)||Uye(e,t)||Fye(e,t)||Bye()}function Bye(){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 Fye(e,t){if(e){if(typeof e=="string")return lK(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)?lK(e,t):void 0}}function lK(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;gt(s)&&s!==a&&e(g6(s))}},[n,e,a]),o}function cK(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 Hye(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(kF(),null);function o_(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var Qye=(0,tr.forwardRef)((e,t)=>{var r,n,o=(0,tr.useRef)(null),a=(0,tr.useState)({containerWidth:o_((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:o_((n=e.style)===null||n===void 0?void 0:n.height)}),i=n_(a,2),s=i[0],l=i[1],u=(0,tr.useCallback)((d,p)=>{l(f=>{var m=Math.round(d),y=Math.round(p);return f.containerWidth===m&&f.containerHeight===y?f:{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 p=d.getBoundingClientRect(),f=p.width,m=p.height;u(f,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]),pn.createElement(pn.Fragment,null,pn.createElement(od,{width:s.containerWidth,height:s.containerHeight}),pn.createElement("div",lc({ref:c},e)))}),Rye=(0,tr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,tr.useState)({containerWidth:o_(r),containerHeight:o_(n)}),a=n_(o,2),i=a[0],s=a[1],l=(0,tr.useCallback)((c,d)=>{s(p=>{var f=Math.round(c),m=Math.round(d);return p.containerWidth===f&&p.containerHeight===m?p:{containerWidth:f,containerHeight:m}})},[]),u=(0,tr.useCallback)(c=>{if(typeof t=="function"&&t(c),c!=null){var d=c.getBoundingClientRect(),p=d.width,f=d.height;l(p,f)}},[t,l]);return pn.createElement(pn.Fragment,null,pn.createElement(od,{width:i.containerWidth,height:i.containerHeight}),pn.createElement("div",lc({ref:u},e)))}),eve=(0,tr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return pn.createElement(pn.Fragment,null,pn.createElement(od,{width:r,height:n}),pn.createElement("div",lc({ref:t},e)))}),tve=(0,tr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?pn.createElement(Rye,lc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?pn.createElement(eve,lc({},e,{width:r,height:n,ref:t})):pn.createElement(pn.Fragment,null,pn.createElement(od,{width:r,height:n}),pn.createElement("div",lc({ref:t},e)))});function rve(e){return e?Qye:tve}var pK=(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,p=e.onMouseUp,f=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=n_(A,2),_=k[0],C=k[1],E=(0,tr.useState)(null),j=n_(E,2),F=j[0],D=j[1],z=uK(),N=ay(),O=N?.width>0?N.width:h,$=N?.height>0?N.height:o,T=(0,tr.useCallback)(V=>{z(V),typeof t=="function"&&t(V),C(V),D(V),V!=null&&(S.current=V)},[z,t,C,D]),I=(0,tr.useCallback)(V=>{w(P5(V)),w(ti({handler:a,reactEvent:V}))},[w,a]),P=(0,tr.useCallback)(V=>{w(Kk(V)),w(ti({handler:u,reactEvent:V}))},[w,u]),H=(0,tr.useCallback)(V=>{w(MS()),w(ti({handler:c,reactEvent:V}))},[w,c]),Q=(0,tr.useCallback)(V=>{w(Kk(V)),w(ti({handler:d,reactEvent:V}))},[w,d]),K=(0,tr.useCallback)(()=>{w(j5())},[w]),ue=(0,tr.useCallback)(()=>{w($5())},[w]),fe=(0,tr.useCallback)(V=>{w(D5(V.key))},[w]),re=(0,tr.useCallback)(V=>{w(ti({handler:i,reactEvent:V}))},[w,i]),_e=(0,tr.useCallback)(V=>{w(ti({handler:s,reactEvent:V}))},[w,s]),de=(0,tr.useCallback)(V=>{w(ti({handler:l,reactEvent:V}))},[w,l]),se=(0,tr.useCallback)(V=>{w(ti({handler:p,reactEvent:V}))},[w,p]),Z=(0,tr.useCallback)(V=>{w(ti({handler:y,reactEvent:V}))},[w,y]),ee=(0,tr.useCallback)(V=>{x&&w(B5(V)),w(ti({handler:m,reactEvent:V}))},[w,x,m]),L=(0,tr.useCallback)(V=>{w(ti({handler:f,reactEvent:V}))},[w,f]),B=rve(g);return pn.createElement(VO.Provider,{value:_},pn.createElement(ME.Provider,{value:F},pn.createElement(B,{width:O??b?.width,height:$??b?.height,className:ut("recharts-wrapper",n),style:Hye({position:"relative",cursor:"default",width:O,height:$},b),onClick:I,onContextMenu:re,onDoubleClick:_e,onFocus:K,onBlur:ue,onKeyDown:fe,onMouseDown:de,onMouseEnter:P,onMouseLeave:H,onMouseMove:Q,onMouseUp:se,onTouchEnd:L,onTouchMove:ee,onTouchStart:Z,ref:T},pn.createElement(Jye,null),r)))});var nve=["width","height","responsive","children","className","style","compact","title","desc"];function ove(e,t){if(e==null)return{};var r,n,o=ave(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=ove(e,nve),p=Qr(d);return l?Wl.createElement(Wl.Fragment,null,Wl.createElement(od,{width:r,height:n}),Wl.createElement(H5,{otherAttributes:p,title:u,desc:c},a)):Wl.createElement(pK,{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},Wl.createElement(H5,{otherAttributes:p,title:u,desc:c,ref:t},Wl.createElement(TW,null,a)))});function K5(){return K5=Object.assign?Object.assign.bind():function(e){for(var t=1;thK.createElement(Vm,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:pve,tooltipPayloadSearcher:Xu,categoricalChartProps:e,ref:t}));var vK=q(X()),xK=q(X());var fve=["axis","item"],q5=(0,xK.forwardRef)((e,t)=>vK.createElement(Vm,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:fve,tooltipPayloadSearcher:Xu,categoricalChartProps:e,ref:t}));var EK=q(X()),NK=q(X());var kK=q(X()),uc=q(X());var bK=q(X());function wK(e){var t=wt();return(0,bK.useEffect)(()=>{t(ZH(e))},[t,e]),null}var mve=["layout"];function G5(){return G5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Kt(e,Ave);return EK.createElement(_K,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:Cve,tooltipPayloadSearcher:Xu,categoricalChartProps:r,ref:t})});var TK=q(X()),OK=q(X());var Eve=["axis"],cc=(0,OK.forwardRef)((e,t)=>TK.createElement(Vm,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Eve,tooltipPayloadSearcher:Xu,categoricalChartProps:e,ref:t}));var $i=q(X()),qm=[{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}],PK="30m",MK="activeagents.timeWindow",IK=(0,$i.createContext)(null),Z5=e=>qm.find(t=>t.id===e);function DK({children:e}){let[t,r]=(0,$i.useState)(()=>{try{let a=localStorage.getItem(MK);if(a&&Z5(a))return a}catch{}return PK}),n=(0,$i.useCallback)(a=>{if(Z5(a)){r(a);try{localStorage.setItem(MK,a)}catch{}}},[]),o=(0,$i.useMemo)(()=>{let a=qm.findIndex(s=>s.id===t),i=qm[a]||Z5(PK);return{timeWindow:i,windowIndex:a,windows:qm,setWindow:n,zoomTo:s=>{let l=qm[Math.min(Math.max(s,0),qm.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return $i.default.createElement(IK.Provider,{value:o},e)}function Ls(){let e=(0,$i.useContext)(IK);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var Gm=q(X());function zs({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=Ls(),{darkMode:i}=lt(),s=hi(i),l={color:s.textSecondary};return Gm.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},Gm.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"),Gm.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=>Gm.default.createElement("option",{key:u.id,value:u.id},u.label))),Gm.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 vn=q(X());var zr=q(X());var Ev=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},dc=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},i_=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 dc(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+=dc(b)),h&&(u+=dc(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},p=c.reduce((m,y)=>m+d[y],0),f;if(p>0&&r.input>0){let m=r.input/p;f={};for(let b of c)f[b]=Math.round(d[b]*m);let y=r.input-c.reduce((b,h)=>b+f[h],0);if(y!==0){let b=c.reduce((h,g)=>f[g]>f[h]?g:h);f[b]=Math.max(f[b]+y,0)}}else f={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:Ev(e.model),cached:r.cached,thinking:r.thinking,estimated:p>0,segments:[{key:"messages",label:"Messages",tokens:f.messages},{key:"tool_results",label:"Tool results",tokens:f.toolResults},{key:"instructions",label:"Instructions",tokens:f.instructions},{key:"tool_schemas",label:"Tool schemas",tokens:f.toolSchemas},{key:"mcp_schemas",label:"MCP tool schemas",tokens:f.mcpSchemas},{key:"output",label:"Generated output",tokens:r.output}]}};var Nve={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},Ym=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 pc({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),p=r.filter(A=>A.tokens>0),f=e??p.reduce((A,k)=>A+k.tokens,0),m=t>0?f/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=`${Ym(f)} / ${Ym(t)} (${Math.round(m*100)}%)`,S=A=>A.key==="messages"&&y?y:A.color||Nve[A.key]||"#2563eb",w=A=>zr.default.createElement("div",{style:{display:"flex",height:A,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},p.map(k=>zr.default.createElement("div",{key:k.key,title:`${k.label} \xB7 ${Ym(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"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,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"}},Ym(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 ",Ym(n)),o>0&&zr.default.createElement("span",null,zr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",Ym(o)))))}var dt=q(X());var Me=q(X());var En=q(X());var he=q(X());var jK=["ui","json-ui","genui"],qd="render_ui",is=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),J5=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Gd(e){let t=typeof e=="string"?J5(e):e;if(Array.isArray(t))return t.every(is)?t:null;if(is(t)){if(Array.isArray(t.blocks))return t.blocks.every(is)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(is)?t.ui:null}return null}function Q5(e,t){let r=String(e||"").trim().toLowerCase();if(jK.includes(r))return Gd(t);if(r==="json"){let n=J5(t);return is(n)&&Array.isArray(n.ui)?Gd(n):null}return null}function R5(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=J5(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>is(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Gd(o);return a?{blocks:a}:{object:o}}var Tve=e=>is(e)?e.function?.name||e.name:void 0,Ove=e=>is(e)?e.function?.arguments??e.arguments??e.input:void 0;function Xm(e,{callId:t}={}){if(!is(e))return null;if(e.tool_name===qd&&e.tool_arguments!=null){let o=Gd(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>is(a)&&a.id!=null);r.forEach(a=>{if(Tve(a)!==qd||t!=null&&o&&a.id!==t)return;let i=Gd(Ove(a));i&&n.push(...i)})}else if(is(r)&&e.tool_name===qd){let o=Gd(r);o&&n.push(...o)}return n.length>0?n:null}function s_(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function l_(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 $K(e){try{return new URL(String(e).trim()).host}catch{return""}}var WK=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],Pve=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],Nv=WK.length,LK=220,Zm=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),Ft=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),HK=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()},nP=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,zK={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"]}},Mve={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},eP=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),oP=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"}),Jm=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Hl({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:{...oP(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function Ive({block:e,colors:t,darkMode:r,onAction:n}){let o=s_(e.image_url)&&l_(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:Jm(t)},Ft(e.title)),e.body!=null&&he.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},he.default.createElement(ss,{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 KK({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=nP(Mve,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?HK(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 Dve({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(Zm):[];return n.length===0?he.default.createElement(Hl,{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(KK,{key:a,block:o,colors:t,darkMode:r})))}var rP=(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"}),jve=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 VK({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:jve(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:rP(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():Ft(l))}))))))}function $ve({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(Hl,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:Zm(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:Jm(t)},Ft(e.title)),he.default.createElement(VK,{columns:n,rows:a,colors:t}))}var Lve=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},zve=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function Bve({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(Zm):[];if(o.length===0)return he.default.createElement(Hl,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:Lve(o),i=Array.isArray(e.series)?e.series.filter(b=>typeof b=="string"):[],s=(i.length>0?i:zve(o,a)).slice(0,Nv);if(!a||s.length===0)return he.default.createElement(Hl,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?Pve:WK,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=he.default.createElement(Zu,{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)}),p=s.length>1||n==="pie"?he.default.createElement(nw,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=he.default.createElement(he.default.Fragment,null,he.default.createElement(jl,{stroke:t.cardBorder,vertical:!1}),he.default.createElement(Bl,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),he.default.createElement(Ul,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:HK,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=he.default.createElement(V5,{data:o,margin:m},f,d,p,s.map((b,h)=>he.default.createElement($k,{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(cc,{data:o,margin:m},f,d,p,s.map((b,h)=>he.default.createElement(Ll,{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,Nv),v=h.slice(Nv);v.length>0&&(g[Nv-1]={[a]:"Other",[b]:v.reduce((x,S)=>x+(Number(S[b])||0),Number(g[Nv-1][b])||0)}),y=he.default.createElement(X5,{margin:m},d,p,he.default.createElement(Sk,{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(Pl,{key:S,fill:l[S]}))))}else y=he.default.createElement(q5,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((b,h)=>he.default.createElement(Wk,{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:Jm(t)},Ft(e.title)),he.default.createElement("div",{style:{width:"100%",height:LK,minWidth:0}},he.default.createElement(Iu,{width:"100%",height:LK},y)))}function Fve({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return he.default.createElement(Hl,{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:Jm(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(ss,{text:i,darkMode:r,onUiAction:n}):Ft(i)))))}function Uve({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:No,borderRadius:"999px",transition:"width 0.3s ease"}})))}var Wve=["text","textarea","number","select","checkbox"],tP=e=>Ft(e.name||e.label),BK=e=>Ft(e.label||e.name),FK=e=>Wve.includes(e.type)?e.type:"text";function Hve({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>Zm(p)&&(p.name||p.label)),[a,i]=(0,he.useState)(()=>Object.fromEntries(o.map(p=>[tP(p),FK(p)==="checkbox"?!1:""]))),[s,l]=(0,he.useState)(!1);if(o.length===0)return he.default.createElement(Hl,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?Ft(e.submit):"Submit",c=(p,f)=>i(m=>({...m,[p]:f}));return he.default.createElement("form",{onSubmit:p=>{p.preventDefault();let f=o.map(m=>{let y=a[tP(m)];return`${BK(m)}: ${typeof y=="boolean"?y?"yes":"no":Ft(y)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?Ft(e.submit):"Submitted"}: ${f}`,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:Jm(t)},Ft(e.title)),o.map(p=>{let f=tP(p),m=FK(p),y=BK(p),b=`genui-field-${f.replace(/\W+/g,"-")}`;return m==="checkbox"?he.default.createElement("label",{key:f,className:"flex items-center gap-2 text-sm",style:{color:t.textCell}},he.default.createElement("input",{type:"checkbox",checked:!!a[f],onChange:h=>c(f,h.target.checked),style:{accentColor:No}}),y):he.default.createElement("div",{key:f},he.default.createElement("label",{htmlFor:b,className:"block text-xs mb-1",style:{color:t.textSecondary}},y,p.required?" *":""),m==="textarea"?he.default.createElement("textarea",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),placeholder:p.placeholder!=null?Ft(p.placeholder):void 0,required:!!p.required,rows:3,className:"aa-field",style:{...eP(t),resize:"vertical"}}):m==="select"?he.default.createElement("select",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),required:!!p.required,className:"aa-field",style:eP(t)},he.default.createElement("option",{value:""},p.placeholder!=null?Ft(p.placeholder):"Select\u2026"),(Array.isArray(p.options)?p.options:[]).map((h,g)=>he.default.createElement("option",{key:g,value:Ft(h)},Ft(h)))):he.default.createElement("input",{id:b,name:f,type:m==="number"?"number":"text",value:a[f],onChange:h=>c(f,m==="number"&&h.target.value!==""?Number(h.target.value):h.target.value),placeholder:p.placeholder!=null?Ft(p.placeholder):void 0,required:!!p.required,className:"aa-field",style:eP(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:No,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 Kve({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(Hl,{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?No:t.inputBorder}`,background:c?No:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function Vve({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=$K(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 qve({block:e,colors:t,darkMode:r}){if(!s_(e.url))return he.default.createElement(Hl,{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}},l_(n)?he.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):he.default.createElement(Vve,{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 Gve({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(nP(zK,e.tone)||zK.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(ss,{text:Ft(e.body),darkMode:r,onUiAction:n})))}function Yve({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:oP(r)},Ft(e.code)))}function UK({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(ss,{text:Ft(o),darkMode:r,onUiAction:n}))}var Xve=3;function u_({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>=Xve)return he.default.createElement("pre",{style:{...oP(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(Zm)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return he.default.createElement(VK,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>he.default.createElement(u_,{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(u_,{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:{...rP(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),he.default.createElement("td",{style:rP(t,!1)},he.default.createElement(u_,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function Zve({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:Jm(t)},Ft(e.title)),he.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},he.default.createElement(u_,{value:n,colors:t,darkMode:r,depth:0})))}var Jve={card:Ive,stat:KK,stats:Dve,table:$ve,chart:Bve,list:Fve,progress:Uve,form:Hve,choices:Kve,image:qve,callout:Gve,code:Yve,object:Zve,text:UK,markdown:UK};function Bs({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(Zm):[];if(n.length===0)return null;let o=hi(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=nP(Jve,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(Hl,{block:a,colors:o,darkMode:r}))}))}var Qve=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,Tv=(e,t)=>e.split(Qve).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return En.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return En.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return En.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?En.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),qK=e=>/^\s*\|.*\|\s*$/.test(e),Rve=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),GK=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function ss({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` +`),a=0,i=0;for(;aEn.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},Tv(p,`th${d}-${f}`))))),En.default.createElement("tbody",null,c.map((p,f)=>En.default.createElement("tr",{key:f},u.map((m,y)=>En.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},Tv(p[y]??"",`td${d}-${f}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aEn.default.createElement("li",{key:d},Tv(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(En.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(En.default.createElement("div",{key:i++},Tv(s,`p${i}`))),a+=1}return En.default.createElement("div",{className:"break-words"},n)}var Aa=q(X()),e0e=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"},t0e=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function aP({tool:e,darkMode:t}){let r=t0e(e);return Aa.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Aa.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Aa.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"}},Aa.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Aa.default.createElement("span",null,"source: ",e0e(e))))}function iP({tools:e,darkMode:t}){let[r,n]=(0,Aa.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 Aa.default.createElement("div",{style:{marginTop:"8px"}},Aa.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Aa.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Aa.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&&Aa.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"}`}},Aa.default.createElement(aP,{tool:a,darkMode:t})))}var r0e=["application/json","application/xml","application/x-yaml","application/csv"],n0e=/\.(csv|md|txt|json|ya?ml)$/i;function YK(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/")||r0e.includes(t)||n0e.test(r)?"text":"file"}function XK(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 ZK(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 JK=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,Ov=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}},o0e=["text","output","body","content"],QK=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},a0e=e=>{let t=QK(e.tool_result)??QK(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=o0e.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}},i0e=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||Ov(e.content)),tV=280,s0e=["tool","system","developer"],Pv=(e,t=tV)=>e.replace(/\s+/g," ").trim().slice(0,t),sP=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)}},rV=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:sP(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:sP(t)}]:[]},nV=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),l0e=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||nV(o.content))return;let i=rV(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],p=i.find(f=>f.name&&f.name===d.tool_name)||i[Math.min(c,i.length-1)];p&&p.args&&!d.tool_arguments&&r.set(u,{tool_arguments:p.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))},RK=e=>s0e.includes(e.role)&&typeof e.content=="string"&&Pv(e.content).length>=tV,u0e=({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}}))},c_=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}),yn=(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}}},eV={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function d_({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=hi(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/"))&&ZK(s.url),d=XK(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}},eV[s.kind]||eV.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:p=>{p.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 oV=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},c0e=(e,t)=>{let r=Xm(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?oV(o).has(e.tool_call_id):Xm(o)));return n?Xm(n,{callId:e.tool_call_id}):null},d0e=(e,t)=>{let r=oV(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===qd&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function Li({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,p]=(0,Me.useState)(""),[f,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),p(_.content||""),b(null)},w=()=>{c(null),b(null)},A=async _=>{if(!f){m(!0),b(null);try{await o(_,d),c(null)}catch(C){b(C.message||"Could not save the message")}finally{m(!1)}}},k=l0e(e);return Me.default.createElement("div",{className:"space-y-3"},k.map(_=>{let C=yn(_.role,t),E=!!s[_.id],j=u===_.id,F=!!((o||a)&&["user","assistant"].includes(_.role)),D=_.role==="tool"&&_.tool_name===qd?c0e(_,k):null,z=_.role==="assistant"&&!j?R5(_.content):null,N=_.role==="assistant"&&!d0e(_,k)?Xm(_):null,O=RK(_)&&!E,$=i0e(_)||RK(_),T=Ov(_.tool_arguments),I=Ov(_.tool_result)||Ov(_.content),P=_.tool_calls&&(!Array.isArray(_.tool_calls)||_.tool_calls.length>0)?Ov(_.tool_calls):null,H=_.role==="tool"?a0e(_):null,Q=_.tool_name?(r||[]).find(Z=>Z&&Z.name===_.tool_name):null,K=_.role==="tool"?sP(_.tool_arguments):null,ue=_.role==="tool"&&!!K,fe=yn("assistant",t),re=yn("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"&&!nV(_.content)?rV(_):[],se=c_(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?[fe,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=>p(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:f,style:{padding:"4px 10px",borderRadius:"6px",background:"#ef4444",color:"#ffffff",border:"none",cursor:f?"wait":"pointer",fontWeight:500}},f?"Saving\u2026":"Save"),Me.default.createElement("button",{type:"button","data-testid":v("cancel"),onClick:w,disabled:f,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(Bs,{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?fe.color:g.textMuted}},"in:")," ",Pv(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",Pv(_.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}},Pv(_.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,Pv(Z.args,180),Z.args.length>180?"\u2026":""):"\u2014"))):z&&z.blocks?Me.default.createElement(Bs,{blocks:z.blocks,onAction:n,darkMode:t}):z&&z.object?Me.default.createElement(Bs,{blocks:[{type:"object",value:z.object}],darkMode:t}):Me.default.createElement(ss,{text:_.content||"\u2014",darkMode:t,onUiAction:n}),N&&!j&&Me.default.createElement("div",{className:"mt-2"},Me.default.createElement(Bs,{blocks:N,onAction:n,darkMode:t})),_.role==="user"&&Me.default.createElement(d_,{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,JK(_.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(u0e,{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 ",JK(_.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?fe.color:g.textMuted}},"Arguments",ue?" \xB7 from the agent":""),Me.default.createElement("pre",{style:se},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:se},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:{...se,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:se},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:{...se,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:se},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(aP,{tool:Q,darkMode:t}))))}))}var Vt=q(X());var Hr=q(X());var Nn=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"}),aV=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function Yd({open:e,darkMode:t,size:r=14,style:n}){return Hr.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:Nn(t).textMuted,...n},"aria-hidden":"true"},Hr.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function p_({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=Nn(e);return Hr.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var ri={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function Qm({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=Nn(t),i=(e||[]).filter(Boolean);return i.length===0?null:Hr.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 Hr.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:Hr.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}var iV=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:Nn(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),p0e=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 Rm({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=eg(),c=Nn(t),d=(e||[]).filter(p=>p&&(p.text||s));return d.some(p=>p.text)?Hr.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((p,f)=>{let m=`${p.label}-${f}`,y=l(m),b=p.max||i,h=!p.text,g=String(p.text??"").replace(/\s+/g," ").trim(),v=p0e(p.text),x=!h&&(v.json||g.length>60||g!==String(p.text).trim());return Hr.default.createElement("div",{key:m},Hr.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}},Hr.default.createElement("span",{style:{color:p.color||c.textMuted}},x?y?"\u25BE":"\u25B8":"\xA0"," ",p.label,":")," ",!y&&(h?Hr.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):aV(g,b))),y&&Hr.default.createElement("pre",{onClick:S=>S.stopPropagation(),style:iV(t,{wrap:!v.json})},v.text))})):null}function Mv({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=Nn(n);return Hr.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&Hr.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>Hr.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 sV({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=Nn(o);return Hr.default.createElement("div",null,Hr.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Hr.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&Hr.default.createElement("span",{style:{color:s.textMuted}},aV(t,i))),r&&Hr.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:iV(o,{wrap:a})},t))}function eg(e={}){let[t,r]=(0,Hr.useState)(e),n=(0,Hr.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,Hr.useCallback)(a=>!!t[a],[t]),n,r]}var lP={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},uV=[{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"}],Tn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,uP=e=>{switch(e){case"root":return go.spans.root;case"prompt":return go.spans.prompt;case"generate":return go.spans.generate;case"llm":return go.spans.llm;case"thinking":return go.spans.thinking;case"tool":return go.spans.tool;case"response":return go.spans.response;default:return"-"}},f0e=(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))},m0e=(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))}},g0e=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},h0e=(e,t)=>{if(!t.duration_ms)return Tn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Tn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},y0e=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},lV=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,cP=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}},v0e=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}},x0e=(e,t)=>{let r=v0e(e),n=cP(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},b0e=e=>{let t={...e.attributes||{}},r=p=>{let f=t[p];return delete t[p],f},n=[],o=p=>n.push({id:`${e.span_id}-m${n.length}`,...p}),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(p=>{p&&o({role:p.role||"user",content:typeof p.content=="string"?p.content:JSON.stringify(p.content),tool_call_id:p.tool_call_id,tool_calls:p.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 p=r("tool.name");o({role:"tool",tool_name:p||(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}},dP=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 w0e({span:e,darkMode:t,tools:r=[]}){let[n,o]=eg(),a=Nn(t),{messages:i,rest:s}=b0e(e),l=null,u=s["prompt.input.tools"];if(u)try{let f=typeof u=="string"?JSON.parse(u):u;Array.isArray(f)&&f.length>0&&(l=f,delete s["prompt.input.tools"])}catch{}let c=Object.entries(s).sort((f,m)=>lV(f[0])-lV(m[0])),d=i.length===1&&i[0].role==="tool"?i[0]:null,p=d?.tool_arguments==null?null:typeof d.tool_arguments=="string"?d.tool_arguments:JSON.stringify(d.tool_arguments);return Vt.default.createElement("div",{onClick:f=>f.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"}},Vt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},Vt.default.createElement("span",null,"duration: ",Tn(e.duration)),Vt.default.createElement("span",null,"status: ",e.status||"OK"),g0e(e)>0&&Vt.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),Vt.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&Vt.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},Vt.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},Vt.default.createElement("span",{style:{color:yn("tool",t).color}},"\u2699 ",d.tool_name),p&&Vt.default.createElement(Vt.default.Fragment,null," ",Vt.default.createElement("span",{style:{color:yn("assistant",t).color}},"in:")," ",Vt.default.createElement("span",{style:{color:a.textBody}},p))),d.content&&Vt.default.createElement("div",{style:{fontSize:"12px"}},Vt.default.createElement("span",{style:{color:yn("tool",t).color}},"out:")," ",Vt.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&&Vt.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},Vt.default.createElement(Li,{messages:i,darkMode:t,tools:l||r})),l&&Vt.default.createElement(iP,{tools:l,darkMode:t}),c.length>0&&Vt.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([f,m])=>{let y=f.match(/args|result|input|output/)?y0e(m):null,b=!y&&(f.endsWith(".instructions")||f.match(/input|output|result/))&&typeof m=="string"?m:null,h=y||b;if(!h)return Vt.default.createElement("div",{key:f,style:{wordBreak:"break-all"}},Vt.default.createElement("span",{style:{color:a.textMuted}},f,":")," ",typeof m=="string"?m:JSON.stringify(m));let g=`${e.span_id}:${f}`;return Vt.default.createElement(sV,{key:f,label:f,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function S0e({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=Nn(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:x0e(e,t);return Vt.default.createElement(Vt.default.Fragment,null,Vt.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},Vt.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},Vt.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},uP(e.type)),Vt.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),Vt.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:vt.mono,color:l.textMuted}},h0e(e,t)),u&&Vt.default.createElement(Yd,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),Vt.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},Vt.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":lP[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}%`:`${f0e(e.duration,o)}%`}})),c&&Vt.default.createElement(Rm,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:yn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:yn(c.outputTone,r).color,max:160}]})),a&&Vt.default.createElement(w0e,{span:e,darkMode:r,tools:s}))}function pP({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=eg(),s=Nn(t),l=m0e(e?.spans,r),u=n||dP(e);if(l.length===0)return Vt.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 Vt.default.createElement("div",{className:"space-y-2"},l.map((d,p)=>{let f=`${o}${d.span_id||p}`;return Vt.default.createElement(S0e,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var k0e=[{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"}],_0e=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 C0e({trace:e,darkMode:t}){let r=Nn(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=_0e(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 ",Tn(n)," (",l(n),")"),dt.default.createElement("span",null,dt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Tn(a)," (",l(a),")"),s>0&&dt.default.createElement("span",null,dt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Tn(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," ",Tn(c.duration)," (",l(c.duration||0),")"))))}function A0e({trace:e,darkMode:t}){let[r,n]=(0,dt.useState)(null),[o,a]=(0,dt.useState)(!1),i=Nn(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(Li,{messages:s,darkMode:t,tools:dP(e)})}function Iv({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,dt.useState)("spans"),[i,s]=(0,dt.useState)("time"),l=Nn(t),u=(e?.spans||[]).length,c=i_(e),d=e?.tokens||{},p=(0,dt.useCallback)(f=>a(n?f:"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(Mv,{options:k0e,value:o,onChange:p,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(Mv,{options:uV,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(A0e,{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,Tn(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(pP,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&dt.default.createElement("div",{className:"mt-3"},dt.default.createElement(pc,{...c,label:"Context pressure",darkMode:t})),dt.default.createElement(C0e,{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 E0e=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},N0e=e=>e==null?null:`$${e.toFixed(4)}`;function f_({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=Nn(t),a=cP(e),i=i_(e),s=e.status!=="ERROR",l=E0e(e.tokens);return vn.default.createElement(p_,{darkMode:t,id:`trace-row-${e.id}`},vn.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},vn.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},vn.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"),vn.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:vt.mono,color:o.textMuted}},e.short_id),vn.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),vn.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},vn.default.createElement(Qm,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&vn.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:ri.context,empty:"Context: no generation in this trace reported its token counts",content:i&&vn.default.createElement(pc,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:ri.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&vn.default.createElement(vn.default.Fragment,null,vn.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Tn(e.duration_ms))},{key:"tokens",width:ri.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:ri.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&vn.default.createElement(vn.default.Fragment,null,vn.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),N0e(e.estimated_cost))},{key:"status",width:ri.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:vn.default.createElement("span",{style:{color:s?o.good:o.bad}},vn.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),vn.default.createElement(Yd,{open:r,darkMode:t}))),!r&&vn.default.createElement(Rm,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:yn("user",t).color},{label:"output",text:a.output,color:yn("assistant",t).color}]}),r&&vn.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},vn.default.createElement(Iv,{trace:e,darkMode:t})))}function cV(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function dV(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function ct(e=""){return cV(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function tg(e="",t={}){window.history.pushState(t,"",ct(e))}function Gn(e=window.location.pathname){return dV(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function kt(e,t={}){if(!e)return;let r=Gn(e);tg(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:ct(r)}}))}var pV=({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 fV=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],T0e=3e4,O0e=e=>{let t={};return e.forEach((r,n)=>{t[r]=fV[n%fV.length]}),t},P0e=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)},M0e=(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(f=>f.timestamp_ms>=u&&f.timestamp_ms{p[f]=d.filter(m=>m.agent===f).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(f=>f.status==="ERROR").length,avgLatency:d.length>0?Math.round(d.reduce((f,m)=>f+(m.duration_ms||0),0)/d.length):0,traces:d,...p})}return a};function Xd({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,p]=(0,W.useState)(null),[f,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}=Ls(),F=(0,W.useCallback)(async()=>{try{let L=await fetch(pV({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||{}),p(null)}catch(L){p(L.message)}finally{c(!1)}},[j.minutes,e]);(0,W.useEffect)(()=>{F();let L=setInterval(F,T0e);return()=>clearInterval(L)},[F]);let D=(0,W.useMemo)(()=>O0e(a),[a]);(0,W.useEffect)(()=>{A(null)},[j.id]);let z=(0,W.useMemo)(()=>M0e(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,V]=g.action.split("#");L=L.filter(M=>M.agent===B&&M.action===V)}else L=L.filter(B=>B.action===g.action);return x==="latency"&&(L=[...L].sort((B,V)=>(V.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)},V=n.find(M=>M.id===L||M.trace_id===L||M.short_id&&String(L).startsWith(M.short_id));if(V){B(V);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 V={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)=>V(ne)-V(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(V=>{if(!V.agent)return;let M=`${V.agent}#${V.action||"unknown"}`;B[M]||(B[M]={key:M,agent:V.agent,action:V.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+=V.duration_ms||0,B[M].minDuration=Math.min(B[M].minDuration,V.duration_ms||0),B[M].maxDuration=Math.max(B[M].maxDuration,V.duration_ms||0),V.status==="ERROR"&&B[M].errors++,V.tokens&&(B[M].tokens.thinking+=V.tokens.thinking||0,B[M].tokens.input+=V.tokens.input||0,B[M].tokens.output+=V.tokens.output||0)}),Object.values(B).forEach(V=>{V.minDuration===1/0&&(V.minDuration=0)}),Object.values(B).sort((V,M)=>M.count-V.count)},[n,z,w]),I=(0,W.useMemo)(()=>{let L=w!==null?z[w]?.traces||[]:n,B={};return L.forEach(V=>{(V.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++,V.agent&&B[ne].agents.add(`${V.agent}#${V.action||"unknown"}`)})}),Object.values(B).map(V=>({...V,agents:[...V.agents],avgDuration:V.count?V.totalDuration/V.count:0})).sort((V,M)=>M.totalDuration-V.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)(()=>P0e(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:fe(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()}]},fe=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 V=ct(`/agents/${B}`);window.history.pushState(window.history.state,"",V),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:V}}))},se=L=>{let B=H[0]?.total||1,V=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:V,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}},uP(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 ",Tn(ve.avg)," \xB7 max ",Tn(ve.max)," \xB7 \u03A3 ",Tn(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,V)=>B+V.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(Iu,{width:"100%",height:"100%"},W.default.createElement(cc,{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(jl,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),W.default.createElement(Bl,{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(Ul,{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(Zu,{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(Ll,{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(hf,{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"&&se(!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(f_,{key:L.id,trace:L,darkMode:!0,expanded:f===L.id,onToggle:()=>m(f===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(zs,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(Iu,{width:"100%",height:"100%"},W.default.createElement(cc,{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(jl,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),W.default.createElement(Bl,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),W.default.createElement(Ul,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),W.default.createElement(Zu,{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(Ll,{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(hf,{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}},Tn(L.totalDuration)),W.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:vt.mono}},Tn(L.avgDuration)),W.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:vt.mono}},Tn(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"&&se(!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(f_,{key:L.id,trace:L,darkMode:!1,expanded:f===L.id,onToggle:()=>m(f===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=q(X());var m_=q(X());function fP({trace:e,darkMode:t,height:r=8}){let n=Nn(t);if(!e)return m_.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 m_.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>m_.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${Tn(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":lP[s.type]||"#9ca3af"}})))}var ls=q(X());var sr=q(X());var Kr=q(X());var Y="var(--font-mono)",Zd=e=>e>=1?"success":e>=.7?"warning":"error",ia={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)"}},mP={object:"=",sample:"~",pass:go.success,fault:go.error,info:go.info,on:"[x]",off:"[ ]",link:go.arrow,chevron:go.chevronRight};function ni({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Kr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:Y,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},mP.chevron):Kr.default.createElement("span",{title:i,style:{fontFamily:Y,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}},mP[e]||e)}function Ee({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=ia[e]||ia.muted;return Kr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:Y,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 Kr.default.createElement(a,{htmlFor:i,style:{fontFamily:Y,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function oo({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,title:a,style:i,testId:s}){return Kr.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?Y:"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 zi({options:e,value:t,onChange:r,style:n}){return Kr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return Kr.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 le({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 Kr.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 Kr.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 rg({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Kr.default.createElement(He,{testId:a},Kr.default.createElement(qe,{size:11,spacing:"0.05em"},e),Kr.default.createElement("div",{style:{marginTop:8,fontFamily:Y,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Kr.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},r))}function rn({title:e,meta:t,children:r,style:n,testId:o,bodyStyle:a}){return Kr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Kr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Kr.default.createElement(qe,null,e),t&&Kr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},t)),Kr.default.createElement("div",{style:a},r))}function mV({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||ia[Zd(u)].strong;return Kr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Kr.default.createElement("span",{style:{fontFamily:Y,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Kr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Kr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Kr.default.createElement("span",{style:{fontFamily:Y,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function Bi({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i}){return Kr.default.createElement("a",{href:r,title:i,onClick:s=>{t&&(s.preventDefault(),t(s))},style:{fontFamily:Y,fontSize:o,color:n,textDecoration:"none",...a}},e," ",mP.link)}function Yn({children:e,style:t}){return Kr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Kl=q(X());var I0e=/\/agents\/(\d+)/;function Ea(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function D0e(e){return t=>t===e?{}:null}function Dv(e){return t=>e.test(t)?{agentId:t.match(I0e)?.[1]}:null}function g_(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var j0e=e=>e.assistantEnabled!==!1,$0e=Dv(/\/agents\/\d+\/(interactions|history)/),L0e=["recording","context","run","scenario_result"],z0e=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function B0e(e){let t=e.match(z0e);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var gP=[{view:"assistant",match:D0e("/assistant"),path:"/assistant",enabled:j0e},{view:"traces",match:Ea("/traces"),path:"/traces"},{view:"metrics",match:Ea("/metrics"),path:"/metrics"},{view:"scenarios",match:Ea("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:Ea("/interactions"),path:"/interactions"},{view:"tools",match:Ea("/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:Ea("/evaluations"),path:"/evaluations"},{view:"analytics",match:Ea("/analytics"),path:"/analytics"},{view:"projects",match:Ea("/projects"),path:"/projects"},{view:"exploration",match:Ea("/explorations"),path:"/explorations"},{view:"builder",match:Ea("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=$0e(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:g_("/interactions")},{view:"agent-analytics",match:Dv(/\/agents\/\d+\/analytics/),path:g_("/analytics")},{view:"editor",match:Dv(/\/agents\/\d+\/edit/),path:g_("/edit")},{view:"runner",match:Dv(/\/agents\/\d+\/run/),path:g_("/run")},{view:"history",match:Dv(/\/agents\/\d+\/?$/)},{view:"replay",match:B0e},{view:"sessions",match:Ea("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:Ea("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:Ea("/organization"),path:"/organization"},{view:"settings",match:Ea("/settings"),path:"/settings"}],F0e="list",gV=[{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 hV(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function jv(e,t={}){return gP.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function yV(e,t={}){for(let r of gP){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:F0e}}function h_(e,{agent:t=null,features:r={}}={}){if(!jv(e,r))return null;let n=gP.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function vV(e){for(let t of gV){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function ng(e,t){return!L0e.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function xV(e={}){return gV.map(t=>({...t,items:t.items.filter(r=>jv(r.view,e))}))}var U0e=["agent_defined","dashboard","mcp"],yP={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},W0e={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},v_=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],vP=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`},$v=(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`},H0e="sandbox:",Jd=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(H0e))),Lv=e=>Jd(e)&&!e.known,x_=e=>!!e&&!e.known&&!Jd(e);function bV(e){return Lv(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":Jd(e)?"tools are listed by the running app each time the agent runs":"no tools recorded for this service yet"}var hP=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 y_(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=hP(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 wV=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function SV(e,t,{query:r="",filter:n=null}={}){let o=wV(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 kV(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(K0e(e,t).map(o=>({...o,on:!0})))}function _V(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=wV(n),s=kV(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return U0e.map(u=>{let c=s.filter(f=>f.source===u),d=c.some(f=>f.editable),p=c.filter(f=>f.on).length;return{source:u,name:yP[u],meta:`${W0e[u]} \xB7 ${c.length} ${c.length===1?"tool":"tools"}`,countLabel:d?`${p}/${c.length} on`:`${c.length} offered`,editable:d,total:c.length,enabledCount:p,keys:c.map(f=>f.key),rows:l.filter(f=>f.source===u)}}).filter(u=>u.total>0)}function CV(e,t,r,{range:n="7d"}={}){let o=kV(e,t,r),a=e.usage_available!==!1,i=e.services||[],s=i.filter(f=>t[f.key]?.on),l=o.filter(f=>f.source!=="mcp"&&f.on),u=o.filter(f=>f.source==="mcp"),c=o.reduce((f,m)=>f+(m.calls||0),0),d=o.reduce((f,m)=>f+(m.errors||0),0),p=o.filter(f=>f.on&&!f.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(f=>f.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(p):"\u2014",sub:"enabled but unused in this window",tone:a&&p>6?"warning":null}]}function AV(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function xP(e,t=[]){let r=AV(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 V0e(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 EV(e=[],t,r=[]){let n=(e||[]).map(String),o=xP(t,n);if(!o)return n;let a=new Set(V0e(n,AV(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 NV(e,t,r){let n=y_(e,t.mcpServers),o=y_(e,r.mcpServers),a=0;Object.keys(n).forEach(d=>{n[d].on!==o[d].on&&(a+=1),Object.keys(n[d].tools).forEach(p=>{n[d].tools[p]!==o[d].tools[p]&&(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(p=>l.has(p)!==u.has(p))&&(a+=1)}),a}function TV(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=hP(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(f=>f.name),u=l.filter(f=>s.tools[f]),c=n.get(i.key),d=l.length>0&&u.lengthi.key));return(r||[]).forEach(i=>{let s=hP(i);s&&!a.has(s)&&o.push(i)}),o}function bP(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 wP="/api/input_requests",b_="action-agent:input-requests-changed",PV=3e4,OV=100,q0e=["text","choice","confirm","secret"];function MV({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?`${wP}?${n}`:wP}function og(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function IV(e){let t=og(e).length;if(t!==0)return t>=OV?`${OV-1}+`:t}function SP(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?og(e.input_requests).length>0?"awaiting":"poll":"finished"}function kP(e){return q0e.includes(e?.kind)?e.kind:null}function DV(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 jV(e){return e?.id==null?"answer":`answer-${e.id}`}function $V(e){switch(kP(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:jV(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:DV(e).map(t=>t.label)}];default:return[]}}function LV(e,t){if(t?.kind==="form"){let r=t.values?.[jV(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return DV(e).find(r=>r.label===t.text)?.value}var G0e={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function Y0e(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:G0e[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 _P(e){return["answered","declined","closed"].includes(e?.state)}async function zV(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${wP}/${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 Y0e(a.status,i)}function BV(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 FV(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function UV(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 WV(e,t=Date.now()){return e?`asked ${$v(e,t)}`:null}function HV(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 KV(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=h_("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function VV(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function w_(){window.dispatchEvent(new CustomEvent(b_))}function S_({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=PV}={}){let[o,a]=(0,Kl.useState)(null),[i,s]=(0,Kl.useState)(null),l=(0,Kl.useRef)(0),u=(0,Kl.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(MV({agentId:e}));if(!d.ok)throw new Error(`Request failed (${d.status})`);let p=await d.json();if(c!==l.current)return;a(Array.isArray(p.input_requests)?p.input_requests:[]),s(null)}catch(d){if(c!==l.current)return;s(d.message)}},[e]);return(0,Kl.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(b_,u),()=>{clearInterval(c),window.removeEventListener(b_,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var X0e={text:"question",choice:"choice",confirm:"approval",secret:"secret"},Z0e={answered:"success",declined:"muted",closed:"warning"},CP={fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"},J0e={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:Y,fontSize:13};function Q0e({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:J0e}),sr.default.createElement(le,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function R0e({request:e,busy:t,onApprove:r,onDecline:n}){let o=HV(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:Y,fontSize:12}},o),sr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},sr.default.createElement(le,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),sr.default.createElement(le,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function Qd({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=kP(e),c=_P(s),d=async g=>{if(a||c)return;i(!0);let v=await zV(e,g);i(!1),l(v),_P(v)&&(w_(),t&&t(e,v))},p=g=>{g!==void 0&&d({answer:g})},f=()=>d({decline:!0}),m=n?KV(e):null,y=FV(e.actor),b=UV(e.expires_at),h=WV(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},X0e[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(Bi,{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:{...CP,marginLeft:"auto",color:b==="expired"?"var(--color-error-text)":CP.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:{...CP,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:Z0e[s.state]||"muted"},BV(e,s))):sr.default.createElement(sr.default.Fragment,null,(u==="text"||u==="choice")&&sr.default.createElement(Bs,{blocks:$V(e),darkMode:o,onAction:g=>p(LV(e,g))}),u==="confirm"&&sr.default.createElement(R0e,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&sr.default.createElement(Q0e,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&sr.default.createElement("div",null,sr.default.createElement(le,{variant:"ghost",size:"sm",onClick:f,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 exe({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:ls.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}},ls.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},ls.default.createElement(qe,{color:"var(--color-warning-text)"},"Needs input"),ls.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:Y,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),ls.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=>ls.default.createElement(Qd,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>ls.default.createElement(Qd,{key:n.id,request:n,initialOutcome:o})))}function AP({agentId:e=null}){let{requests:t}=S_({agentId:e}),[r,n]=(0,ls.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=og(t).filter(s=>!o.has(s.id));return ls.default.createElement(exe,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var qV=q(X());function fc({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=ng(e,t);return a?qV.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:Y,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var txe=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=dc(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=dc(a.content)+dc(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:Ev(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}]}},GV=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],rxe=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],nxe=[{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"}],oxe=3e4,Vl=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),YV=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 axe({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=Nn(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 p=!!i,f=(i?.spans||[]).length;return be.default.createElement("div",{className:`rounded-lg px-2 py-1.5 -mx-2 transition-colors ${p?t?"hover:bg-white/5":"hover:bg-gray-100":""}`,style:n?{background:a.hoverBg}:void 0},be.default.createElement("div",{className:p?"cursor-pointer":void 0,onClick:p?o:void 0,title:p?`${f} 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?`${Vl(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:`${Vl(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Vl(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:",Vl(e.tokens.input)),be.default.createElement("span",{className:"text-green-500"},"out:",Vl(e.tokens.output)),e.finish_reason&&be.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&be.default.createElement("span",null,Tn(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(fP,{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,p&&be.default.createElement(be.default.Fragment,null,be.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},f," ",f===1?"span":"spans"),be.default.createElement(Yd,{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(Iv,{trace:i,darkMode:t,compact:!0})))}function ql({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,p]=(0,be.useState)({}),{timeWindow:f}=Ls(),m=(0,be.useCallback)(async()=>{try{let F=await fetch(`/api/interactions?minutes=${f.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)}},[f.minutes,e]);(0,be.useEffect)(()=>{m();let F=setInterval(m,oxe);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,GV[z%GV.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=f.bucketSeconds*1e3,z=Math.max(1,Math.round(f.minutes*60/f.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,f]),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();p(N=>({...N,[F]:z.interaction}))}}catch{}},[k,_]=(0,be.useState)({}),[C,E]=eg(),j=Nn(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"),rxe.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(zs,null))),be.default.createElement(AP,{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(Iu,{width:"100%",height:"100%"},be.default.createElement(cc,{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(jl,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),be.default.createElement(Bl,{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(Ul,{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(Zu,{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(Ll,{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:Vl(g.tokens)},{label:"Avg / interaction",value:Vl(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 ",f.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 ${Vl(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(p_,{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(Qm,{darkMode:r,cells:[{key:"activity",width:ri.count,content:D.message_count>0?`${D.message_count} messages`:`${D.tool_count||0} tool ${D.tool_count===1?"call":"calls"}`},{key:"tokens",width:ri.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:$>0&&`${Vl($)} tokens`},{key:"context",width:ri.context,empty:"Context: this interaction recorded no token counts",content:$>0&&be.default.createElement(pc,{compact:!0,darkMode:r,label:"Context",used:T,limit:Ev(D.model),segments:[{key:"messages",label:"Context",tokens:T}]})},{key:"age",width:ri.age,title:D.last_activity_at||void 0,empty:"No activity recorded",content:YV(D.last_activity_at)&&be.default.createElement("span",{style:{color:j.textMuted}},YV(D.last_activity_at))}]}),D.source!=="telemetry"&&be.default.createElement(fc,{kind:"context",id:D.id,title:"Replay this conversation"}),be.default.createElement(Yd,{open:N,darkMode:r}))),!N&&be.default.createElement(Rm,{darkMode:r,onClick:()=>A(D.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:D.preview?.input,color:yn("user",r).color},{label:"output",text:D.preview?.output,color:yn("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(Mv,{options:nxe,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(Li,{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=txe(z);return I?be.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:j.cardBorder}},be.default.createElement(pc,{...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(axe,{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=q(X());function ZV(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 XV=e=>/^[1-9]\d*$/.test(e||"")?e:null;function EP(e){let t=new URLSearchParams(e),r=XV(t.get("evaluation"));return r?{evaluationId:r,runId:XV(t.get("run"))}:null}async function JV(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=q(X());var fn=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)}`},NP=e=>e==null?"\u2014":fn(e),ao=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`},zv=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)}`},Bv=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var ag=(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}`},So=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`},Po=(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 ixe=["trace_error_rate","trace_latency"],OP=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],Ut=(e,t)=>`${e} ${t}${e===1?"":"s"}`,Fv=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},QV=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),TP=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,sxe=(e,t)=>t>0?`${e}/${t} \xB7 ${TP(e/t)}`:"\u2014",RV=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},Fs=e=>e?.type==="llm_judge"?"judge":ixe.includes(e?.type)?"telemetry":"rules",k_=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||QV(e.key);default:return QV(e?.key)}},sg=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 ${RV(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 ${RV(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${Fv(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},Uv=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},lg=(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"},PP=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,Rd=(e,t=null)=>{let r=PP(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")}`},MP=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),ug=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var Wv=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 ug(e).forEach(([,n])=>{MP(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},ep=(e,t)=>!e||typeof e!="object"?null:MP(e)?t&&e[t]||null:e,tq=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null;var ig=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,tp=(e,t)=>e!=null&&t?e/t:null,__=(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=ig(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:ig(i,i.scenarios),reported:i.reported??null,estimated:__(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:ig(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=Wv(e);return o.length?o.map(a=>{let i=ug(e).map(([,s])=>ep(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"}]},rq=(e,t)=>{let r=ug(e).map(([,o])=>ep(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}},nq=20,Hv=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,IP=(e=[],t=null)=>{let r=Hv(e,t),n=e.length=nq;return`${Ut(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},dg=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:Hv(r,n)-t,Kv=(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"}},oq=(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}`:""}`}},aq=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}`:""}`}},Fi=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=ig(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:__(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??tp(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}},iq=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"},Vv=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},qv=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 ")},lxe=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Fi(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:tp(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},pg=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},DP=e=>e?e.standing?e.standing:e.archived_at?"archived":pg(e)?"current":"none":"none",uxe=["current","unrecorded"],sq=(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=pg(c),p=DP(c);if(!(n?!!d:!!d&&uxe.includes(p))){a.total+=1,p==="archived"?a.archived+=1:p==="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})):cg(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:lxe(i),focused:n}},lq=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 ")},C_=(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=[];ug(t).forEach(([u,c])=>{let d=Uv(e,u);(MP(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[Fs(d)].push({key:u,model:f,reason:m.reason}):m.score!=null&&m.score<.7&&i.push({key:u,model:f,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 ${TP(.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}`:""} ${TP(c.stats.score)} \xB7 expects ${sg(c.criterion)} \xB7 ${sxe(c.stats.passed,c.stats.total)} passed`)})}return r},eq=e=>String(e||"").replace(/_/g," "),A_=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=cg(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)||{},p=t.filter(C=>n(C)===c),f=p.filter(C=>C?.status&&C.status!=="pending"),m=d.samples??(r||p.length||null),y=d.passed??f.filter(C=>C.status==="passed").length,b=Object.keys(d.faults||{}).length?d.faults:f.reduce((C,E)=>E.fault?{...C,[E.fault]:(C[E.fault]||0)+1}:C,{}),h=C=>p.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??(f.length&&f.some(C=>C.score!=null)?f.filter(C=>C.score!=null).reduce((C,E)=>C+Number(E.score),0)/f.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??f.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:tp(d.cost,d.priced),faults:v.map(([C,E])=>({fault:C,name:eq(C),count:E})),typicalFault:x?{fault:x,name:eq(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))},uq=(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 ${Fv(s,t)}`},cq=(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}}),jP=(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}),dq=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,jP(e,r).length])),pq=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:fq(t)})),fq=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}`},fg=e=>fq(e?.sandbox),mq=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},gq=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"";var cxe=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],hq=["openai","anthropic","ollama","openrouter","mock"];function dxe(e,t=hq){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=cxe.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function pxe(e,t,r=hq){let n=dxe(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function yq(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:pxe(r,o)}]:[]}))}function Gv(e,{providers:t,qualify:r=!0}){let n=yq(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function vq(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=yq(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 mc(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function Yv(e){return e.join(", ")}function xq(e,t){return[...new Set([...e,...mc(t)])]}function bq(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function wq(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function Sq({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var Mo=q(X());function Xv({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,Mo.useState)(""),[p,f]=(0,Mo.useState)(""),m=(0,Mo.useRef)(null),y=(0,Mo.useId)(),b=mc(e),h=(0,Mo.useRef)(b);h.current=b;let g=k=>{let _=xq(h.current,k);_.length!==h.current.length&&(t(Yv(_)),f(`Added ${_.slice(h.current.length).join(", ")}`)),d("")},v=k=>{t(Yv(h.current.filter(_=>_!==k))),f(`Removed ${k}`),m.current?.focus()},x=(k,_)=>{if(k.includes(",")){let{complete:C,rest:E}=bq(k);g(C),d(E)}else wq(_.nativeEvent?.inputType,k,r)?g(k):d(k.trimStart())},S=k=>{let _=Sq(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 Mo.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=>Mo.default.createElement("span",{key:k,style:fxe},Mo.default.createElement("span",{style:{overflowWrap:"anywhere"}},k),Mo.default.createElement("button",{type:"button",onClick:()=>v(k),"aria-label":`Remove ${k}`,title:`Remove ${k}`,style:mxe},"\xD7"))),Mo.default.createElement(pl,{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&&Mo.default.createElement("span",{id:`${y}-title`,style:$P},a),Mo.default.createElement("span",{id:`${y}-selected`,style:$P},b.length?`Chosen: ${b.join(", ")}`:"No models chosen"),Mo.default.createElement("span",{role:"status","aria-live":"polite",style:$P},p))}var fxe={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:Y,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},mxe={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},$P={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var qt=q(X());var us=q(X());var gxe="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",hxe="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",E_=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Gl=(e,t=!1)=>Jr(e,{estimated:t}),kq=e=>{if(!e)return null;let t=[];if(e.agent){let r=[`agent ${Jr(e.agent.cost,{estimated:e.agent.estimated})}`,Ut(e.agent.count,E_(e))];e.agent.perInteraction!=null&&r.push(`${Gl(e.agent.perInteraction,e.agent.estimated)} each`),t.push(r.join(" \xB7 "))}return e.judge&&t.push(`judge ${Jr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${Ut(e.judge.calls,"call")}`),t.join(" \xB7 ")};function LP({label:e,value:t,sub:r,title:n,valueColor:o,testId:a,first:i=!1}){return us.default.createElement("div",{"data-testid":a,title:n,style:{padding:"10px 16px",minWidth:0,borderLeft:i?"none":"1px solid var(--color-border-light)"}},us.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},e),us.default.createElement("div",{style:{marginTop:4,fontFamily:Y,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),us.default.createElement("div",{style:{marginTop:4,fontFamily:Y,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}function Zv({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 ${fn(n.inputTokens)} \xB7 out ${fn(n.outputTokens)}`:"",u=o?[Ut(o.calls,"call"),qv(o),o.model,Vv(o),"offline"].filter(Boolean).join(" \xB7 "):t&&t!=="rules"?`judge ${t} \xB7 spend not recorded`:"no judge asked \xB7 rules only";return us.default.createElement(He,{padding:0,testId:r,style:{overflow:"hidden"}},us.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},us.default.createElement(LP,{first:!0,label:"Agent cost",title:gxe,value:n?Jr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:"var(--color-text-muted)",sub:n?`${Ut(n.count,E_(e))}${n.perInteraction!=null?` \xB7 ${Gl(n.perInteraction,n.estimated)} per interaction`:""}${s}`:"nothing replayed or sampled",testId:"run-spend-agent"}),us.default.createElement(LP,{label:"Judge cost",title:hxe,value:o?Jr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:"var(--color-text-muted)",sub:u,testId:"run-spend-judge"}),us.default.createElement(LP,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:a!=null?Jr(a,{estimated:i}):"\u2014",sub:iq(e),testId:"run-spend-total"})),i&&us.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},_s))}function N_({run:e,testId:t}){if(!e)return qt.default.createElement(Ee,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return qt.default.createElement(Ee,{tone:"error",testId:t},"failed");if(e.status==="pending")return qt.default.createElement(Ee,{tone:"warning",testId:t},"queued");if(e.status==="running")return qt.default.createElement(Ee,{tone:"warning",testId:t},"running");if(e.samples_evaluated)return qt.default.createElement(Ee,{tone:Zd(tq(e)),testId:t},`${Kn(e.samples_passed||0,e.samples_evaluated)} passed`);if(e.average_score!=null){let r=Number(e.average_score);return qt.default.createElement(Ee,{tone:r>=.85?"success":r>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${Ro(r)}`)}return qt.default.createElement(Ee,{tone:"muted",testId:t},"no samples")}function yxe({run:e,testId:t="run-version"}){let r=aq(e);return r?qt.default.createElement(Ee,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var _q={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},Cq={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},Aq=ri.cost+32,vxe=e=>cg(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:Po(t.label||"").short||"all samples",passed:t.passed,total:t.samples}));function Jv({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(),p=e.map((f,m)=>{let y=dg(f,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(f,b,h):Kv(f,b,{olderNumber:h}),v=g&&b?oq(f,b):null,x=Fi(f);return{run:f,number:y,latest:m===0,when:So(f.completed_at||f.created_at),meta:[`@${n||r?.agent?.name||"agent"}`,Rd(r,f),lg(r,f),fg(f)&&`against ${fg(f)}`].filter(Boolean).join(" \xB7 "),bars:s?s(f):vxe(f),delta:g,version:v,spend:x,selected:f.id===o}});return qt.default.createElement(rn,{title:u,meta:IP(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&qt.default.createElement(Yn,null,"[ ] no runs yet"),qt.default.createElement("div",{style:{minWidth:920}},p.map(f=>qt.default.createElement("div",{key:f.run.id,role:"button",tabIndex:0,"data-testid":"evaluation-run","data-run-id":f.run.id,"data-selected":f.selected?"true":"false",onClick:()=>a?.(f.run),onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),a?.(f.run))},className:f.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:f.selected?"var(--color-muted)":void 0,borderLeft:`2px solid ${f.selected?"var(--color-accent-ui)":"transparent"}`}},qt.default.createElement("div",{style:{minWidth:0}},qt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},qt.default.createElement("span",{style:{fontFamily:Y,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),qt.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&qt.default.createElement(Ee,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&qt.default.createElement(Ee,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&qt.default.createElement(Ee,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),qt.default.createElement(yxe,{run:f.run})),qt.default.createElement("div",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&qt.default.createElement("div",{style:{fontFamily:Y,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),qt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?qt.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},qt.default.createElement("span",{style:{fontFamily:Y,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),qt.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):qt.default.createElement(mV,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),qt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},qt.default.createElement(Qm,{darkMode:d,cells:[{key:"agent",width:Aq,title:f.spend?.agent?`Agent: ${Ut(f.spend.agent.count,E_(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${Gl(f.spend.agent.perInteraction,f.spend.agent.estimated)} per interaction`:""}${f.spend.agent.estimated?" \xB7 ~ estimated from tokens \xD7 model rates":""}`:void 0,empty:"Agent cost: nothing replayed or sampled in this run",content:f.spend?.agent?.cost!=null&&qt.default.createElement("span",{style:{fontFamily:Y,fontSize:11}},qt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Jr(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:Aq,title:f.spend?.judge?`Judge: ${Ut(f.spend.judge.calls,"call")}${qv(f.spend.judge)?` \xB7 ${qv(f.spend.judge)}`:""}${Vv(f.spend.judge)?` \xB7 ${Vv(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&qt.default.createElement("span",{style:{fontFamily:Y,fontSize:11}},qt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),Jr(f.spend.judge.cost,{estimated:f.spend.judge.estimated}))},{key:"delta",width:136,title:f.delta?`Samples passed, against the run before${f.version?` \xB7 ${f.version.text}`:""}`:void 0,empty:"Movement is read once the run completes",content:f.delta&&qt.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},qt.default.createElement("span",{style:{fontFamily:Y,fontSize:11,fontWeight:600,color:_q[f.delta.tone]||_q.muted}},f.delta.text),f.version&&qt.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:Y,fontSize:10,color:Cq[f.version.kind]||Cq.same}},f.version.text))},{key:"badge",width:132,content:qt.default.createElement(N_,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:qt.default.createElement(ni,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var Eq=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[Ut(n,"run"),r?`latest #${dg(r,0,e,t)} ${So(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${Kn(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var io=q(X());function np({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(f=>f.key)).map(f=>Uv(e,f)),u={fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"},c={fontFamily:Y,fontSize:11,color:"var(--color-text-cell)"},d=(f,m,y)=>io.default.createElement("span",{"data-testid":m,title:y,style:{...u,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},f),p=kq(n);return io.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},io.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},io.default.createElement("span",{style:u},"judge"),io.default.createElement("span",{style:{...c,fontWeight:600}},lg(e,t)),io.default.createElement("span",{style:{...u,marginLeft:8}},"criteria"),l.length===0&&io.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((f,m)=>io.default.createElement(io.default.Fragment,{key:f.key||m},m>0&&io.default.createElement("span",{style:u},"\xB7"),io.default.createElement("span",{style:c,title:sg(f)||void 0},k_(f)),Fs(f)==="telemetry"&&d("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),Fs(f)==="judge"&&d("judge",void 0,"Scored by the judge model; needs provider credentials"))),io.default.createElement("span",{style:{...u,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},kb(.7))),io.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},io.default.createElement("span",{style:{...u,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),p&&io.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"},p),p&&n?.totalEstimated&&io.default.createElement("span",{style:{...u,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},_s),o&&io.default.createElement(Bi,{href:ct(o),onClick:()=>kt(o),title:"The run rendered as a report page"},"run report"),a&&io.default.createElement("button",{type:"button",onClick:f=>{f.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:Y,fontSize:11,color:"var(--color-error)",opacity:i?.5:1}},i?"Deleting\u2026":s)))}var xxe=["tools","contains","not_contains"];function bxe(e){let t=e.expectations||{},r=[];return xxe.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 Nq(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(bxe(n))}),t.join(` +`)}var ye=q(X());var Tr=q(X());var wxe=e=>e>=.85?"success":e>=.7?"warning":"error";function Qv({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 Rv({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:p,estimated:f=!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?Zd(w):i!=null?wxe(i):"muted",k=ia[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:Y,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&Tr.default.createElement("span",{style:{fontFamily:Y,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:Y,fontSize:26,fontWeight:700,lineHeight:1,color:k},"data-testid":"model-scorecard-headline"},S?Kn(o,a):i!=null?Ro(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:Y,fontSize:11,color:"var(--color-text-secondary)"}},Tr.default.createElement(Qv,{label:"score"},Ro(i)),s&&Tr.default.createElement(Qv,{label:"criteria"},Kn(s.cleared,s.scored)),l!=null&&Tr.default.createElement(Qv,{label:"latency"},ao(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)"}},NP(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)"}},NP(c))),d!=null&&Tr.default.createElement(Qv,{label:"cost",title:`What the agent spent under this model${p!=null?` \u2014 ${Gl(p,f)} per ${h}`:""}${f?` \xB7 ${vf()}`:""}`},Jr(d,{estimated:f}),p!=null&&Tr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Gl(p,f)} / ${h}`)),_&&Tr.default.createElement(Qv,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},Jr(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:Y,fontSize:11,color:v.color||"var(--color-text-muted)"}},v.text)))}var mr=q(X());var zP={fontFamily:Y,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},BP={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},mg={...BP,fontFamily:Y,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},gg={...zP,textAlign:"right"},Sxe=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function e0({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(qe,null,o),mr.default.createElement("span",{style:{fontFamily:Y,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:Y,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},_s)),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:zP},"Model"),mr.default.createElement("th",{style:gg},"Passed"),mr.default.createElement("th",{style:gg},"Mean score"),u&&mr.default.createElement("th",{style:gg},"Avg latency"),l&&mr.default.createElement("th",{style:gg,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&mr.default.createElement("th",{style:gg,title:`Cohort spend, and per ${t}`},"Cost"),s&&mr.default.createElement("th",{style:gg,title:"What the judge spent scoring this model's answers"},"Judge"),mr.default.createElement("th",{style:{...zP,width:"34%"}},"Typical fault"))),mr.default.createElement("tbody",null,e.map(d=>{let{short:p,provider:f}=Po(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:{...BP,whiteSpace:"nowrap"}},mr.default.createElement("span",{style:{fontFamily:Y,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:d.label},p),d.winner&&mr.default.createElement("span",{style:{marginLeft:6,fontFamily:Y,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick"),f&&mr.default.createElement("span",{style:{display:"block",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},f)),mr.default.createElement("td",{style:{...mg,color:Sxe(d.passRate),fontWeight:600}},Kn(d.passed,d.total)),mr.default.createElement("td",{style:mg},Ro(d.avgScore)),u&&mr.default.createElement("td",{style:mg},d.avgDurationMs==null?"\u2014":ao(d.avgDurationMs)),l&&mr.default.createElement("td",{style:mg,title:d.avgInputTokens==null?void 0:`${Math.round(d.avgInputTokens)} in \xB7 ${Math.round(d.avgOutputTokens||0)} out per ${t}`},d.avgTokens==null?"\u2014":fn(Math.round(d.avgTokens))),i&&mr.default.createElement("td",{style:mg,title:d.cost!=null&&d.estimated?vf():void 0,"data-testid":"model-comparison-cost"},Jr(d.cost,{estimated:d.estimated}),d.costPerInteraction!=null&&mr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},`${Jr(d.costPerInteraction,{estimated:d.estimated})}/${t}`)),s&&mr.default.createElement("td",{style:mg,"data-testid":"model-comparison-judge"},d.judgeCost==null&&!d.judgeCalls?"\u2014":Jr(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:{...BP,color:d.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},uq(d)))})))))}var gc=q(X());async function T_(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 t0({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,gc.useState)("idle"),a=(0,gc.useRef)(null);(0,gc.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await T_(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 gc.default.createElement(le,{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 O_=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var ft=q(X());var At=q(X());var n0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},FP={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 UP({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 r0(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 kxe=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 op({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),[p,f]=(0,At.useState)(null),m=(0,At.useRef)(null),y=(0,At.useRef)(t);y.current=t,(0,At.useEffect)(()=>{let v=!1;return r0(n).then(x=>{v||a(x)}).catch(x=>{v||f(x.message)}),()=>{v=!0}},[n]),(0,At.useEffect)(()=>{if(!i)return;let v=!1,x,S=async()=>{try{let w=await r0(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)){f(kxe(w.status)),d(!1);return}x=setTimeout(S,1200)}catch(w){v||(f(w.message),d(!1))}};return x=setTimeout(S,300),()=>{v=!0,clearTimeout(x)}},[n,i]);let b=async()=>{f(null),u(""),d(!0),m.current=window.open("about:blank","_blank"),m.current&&(m.current.opener=null);try{a(await r0(n,"POST")),s(!0)}catch(v){m.current?.close(),m.current=null,f(v.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await r0(n,"DELETE")),r?.()}catch(v){f(v.message)}finally{d(!1)}},g=async v=>{if(v.preventDefault(),!l.trim()||c)return;let x=l.trim();u(""),d(!0),f(null);try{a(await r0(`${n}/code`,"POST",{claude_login_code:x}))}catch(S){f(S.message),d(!1)}};return At.default.createElement("section",{style:n0,"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(le,{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(le,{variant:"primary",onClick:b,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&At.default.createElement(UP,{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:{...n0,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:FP,disabled:c||o?.status!=="awaiting_code"}),At.default.createElement(le,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&At.default.createElement(At.default.Fragment,null,At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),At.default.createElement(le,{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=q(X());var M_=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var ap=(e,t)=>`${e} ${t}${e===1?"":"s"}`,o0=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},I_=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),Tq=e=>String(e??"").replace(/\s+/g," ").trim(),yg=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),hg=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},_xe=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)}`},Cxe=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`},Mq=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:ap(Number(t),"turn"),_xe(r),Cxe(n)].filter(Boolean).join(" \xB7 "),Iq=(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=yg(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},Axe={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"}},Dq=e=>Axe[e]||{label:I_(e)||"Unknown",tone:"neutral"},D_=e=>["pending","provisioning"].includes(e?.status),jq=e=>e?.status==="ready",Exe={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"}},ip=e=>Exe[e]||{label:I_(e)||"Unknown",tone:"neutral"},j_=e=>["queued","running"].includes(e?.status),i0=e=>["succeeded","failed","cancelled"].includes(e?.status),HP=e=>i0(e)&&e?.diff_pending===!0,KP=e=>i0(e)&&!HP(e),$q=e=>e?.status==="cancelled"&&KP(e)&&e?.diff==null&&!(Number(e?.event_count)>0),VP=e=>{if(!i0(e)){let t=Number(e?.event_count)||0;return t>0?ap(t,"event"):""}return Mq(null,e)},Lq=e=>[ip(e?.status).label,VP(e)].filter(Boolean).join(" \xB7 "),zq=(e,t=80)=>{let r=String(e||"").split(` +`).map(n=>n.trim()).find(Boolean)||"";return o0(r,t)||"(empty prompt)"},hc=(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},Bq=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?hc(e,t,r):e,Fq=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},Uq=(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}},Wq=(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]},Us=(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},Nxe={Bash:e=>e.command,Read:(e,t)=>Us(e.file_path,t),Write:(e,t)=>Us(e.file_path,t),Edit:(e,t)=>Us(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${ap(e.edits.length,"edit")})`:"";return`${Us(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>Us(e.notebook_path,t),NotebookRead:(e,t)=>Us(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${Us(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${Us(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>Us(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)?ap(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},Txe=["command","file_path","path","url","query","pattern","description","name","prompt"],Oxe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!yg(t))return o0(Tq(typeof t=="string"?t:hg(t)),120);let n=Nxe[e],o=n?n(t,r):null;if(o==null||o===""){let a=Txe.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?Us(t[a],r):t[a]:o=Object.keys(t).length?hg(t):""}return o0(Tq(o),120)},Pxe=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]":hg(t)).join(` +`):hg(e),Mxe=(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",Ixe=e=>{if(!Hq(e))return"Done";if(Oq[e.subtype])return Oq[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},Dxe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?ap(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: ${I_(e.subtype).toLowerCase()}`:"System event"}},jxe=/^(hook_|thinking_tokens$)/,$xe=e=>jxe.test(String(e?.subtype||"")),Lxe=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: ${I_(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},P_=(e,t)=>({kind:"unknown",label:String(e||"event"),text:o0(hg(t),300)}),Pq=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!yg(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:Oxe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=Mxe(Pxe(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[P_(`${t} ${e.type||"block"}`,e)]}},zxe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?Pq(r,e.type,t):Array.isArray(r)?r.flatMap(n=>Pq(n,e.type,t)):[P_(e.type,e)]},Bxe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!yg(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:hg(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}]:[P_(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),$xe(e)?[]:[Dxe(e)];case"rate_limit_event":return Lxe(e);case"assistant":case"user":return n(zxe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=Mq(Ixe(e),e);return[{kind:"result",tone:Hq(e)?"error":"success",text:o?`${a} \xB7 ${ap(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[P_(e.type,e)]}},Kq=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>Bxe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},Vq=/^diff (--git|--cc|--combined) /,Fxe="\u2026 diff truncated",s0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` +`).map(n=>{if(Vq.test(n))return t=!0,{text:n,kind:"meta"};if(n===Fxe)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"}})},qq=e=>{let t=s0(e),r=t.filter(a=>a.kind==="meta"&&Vq.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${ap(r,"file")} changed \xB7 +${n} \u2212${o}`},l0="default",u0="other",Gq=["sonnet","opus","haiku"],Uxe=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,qP="actionagent.claudeCode.modelChoice",Yq=(e="claude_code")=>[{value:l0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:Gq.map(t=>({value:t,label:t})),{value:u0,label:"Other\u2026"}],GP=e=>e===l0||e===u0||Gq.includes(e),YP=(e,t="")=>{if(!GP(e)||e===l0)return{model:null};if(e!==u0)return{model:e};let r=String(t??"").trim();return r?Uxe.test(r)?{model:r}:{error:`"${o0(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},Xq=(e,t,r,n="claude_code")=>{let{model:o}=YP(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},$_=e=>{let t={choice:l0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!yg(r)||!GP(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},Zq=(e,t="")=>JSON.stringify({choice:GP(e)?e:l0,custom:String(t??"").slice(0,100)}),XP=e=>e?.model||"default model",WP="api_key",a0="local_login",Jq="claude /login",Qq="sk-ant-api03-\u2026",Rq="https://platform.claude.com",eG="https://code.claude.com/docs/en/legal-and-compliance.md",L_=e=>{let t=yg(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===a0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?a0:WP,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}},tG=(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===a0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:a0,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:Jq}}return t?t.configured&&t.needs_replacing===!0?{view:WP,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:WP,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}},rG=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===a0?{text:"Claude Code is not logged in on this machine. Run",loginHint:Jq,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 z_="Update from the sandbox",Wxe=new Set(["queued","publishing"]);function c0(e){return!!(e&&Wxe.has(e.status))}function oG(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:`${nG(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:nG(e),tone:Hxe(e)}}}function nG(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function Hxe(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function aG(e){return!e?.head_commit||!e.number||c0(e)?!1:!["closed","merged"].includes(e.state)}function iG(e){return!!(e?.head_commit&&!e.number&&!c0(e))}function sG(e,t,r){let n=new Set(vg(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function lG(e){return(e||[]).some(t=>t.refusal==="not_read")}function uG(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function B_(e){return e==="changed_since_preview"}function F_(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function U_(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function vg(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function cG(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=vg(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 dG(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var Kxe=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function Vxe(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||Kxe.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function pG({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return vg(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?Vxe(n):"Add a title."}function W_({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=vg(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 fG(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 ZP(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 mG(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var Ae=q(X());var _r=q(X());function d0({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 f=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 f.json();if(!f.ok)throw new Error(m.error||"Could not run the full suite.");a({run:m.run.id})}catch(f){a({error:f.message})}finally{s(!1)}},p=f=>f==null?"\u2014":Number(f).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(f=>_r.default.createElement("th",{key:f,style:{textAlign:"left",padding:"8px 10px",borderBottom:"1px solid var(--color-border)",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},f)))),_r.default.createElement("tbody",null,u.map(f=>_r.default.createElement("tr",{key:`${f.scenario_key}/${f.model}`},_r.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.scenario_key,_r.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},f.model)),_r.default.createElement("td",{style:{padding:10}},f.before," \xB7 ",p(f.before_score)),_r.default.createElement("td",{style:{padding:10,color:f.change==="fixed"?"var(--color-success-text)":["regressed","still_failing"].includes(f.change)?"var(--color-error-text)":"var(--color-text-secondary)"}},f.after||"pending",f.after_score!=null&&` \xB7 ${p(f.after_score)}`,_r.default.createElement("div",{style:{fontSize:10,marginTop:4}},f.change.replaceAll("_"," "))),_r.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.score_change==null?"\u2014":`${f.score_change>0?"+":""}${p(f.score_change)}`),_r.default.createElement("td",{style:{padding:10}},f.fault||(f.after?"none":f.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(le,{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(le,{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 qxe=2e4,hG=()=>{try{return $_(window.localStorage.getItem(qP))}catch{return $_(null)}},Gxe=(e,t)=>{try{window.localStorage.setItem(qP,Zq(e,t))}catch{}},xG=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),yG={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 yc({tone:e="neutral",children:t}){let{darkMode:r}=lt(),n=yG[e]||yG.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 p0({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,p]=(0,Ae.useState)(null),[f,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)(hG),[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),p(null),I().then(oe=>{if(U)return;c(oe);let ve=oe.find(Ze=>Ze.id===a)||oe.find(j_)||oe[0];p(Ze=>Ze??ve?.id??null)}).catch(oe=>{U||(c([]),O(oe.message))}),()=>{U=!0}},[I]),(0,Ae.useEffect)(()=>{a!=null&&p(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,pe=null;try{let Xe=await fetch(`${l}/${d}?after=${ve.length}`);pe=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=Wq(ve,rr),Ze=0,b(null),m({...rr,events:ve}),c(Ve=>hc(Ve||[],Fq(rr),"id"));let nr=rr.evaluation_run_id&&rr.status==="succeeded"&&rr.diff&&!rr.verification?.error&&!["complete","failed"].includes(rr.verification?.status);KP(rr)&&!nr&&(Mt=!1)}catch(Xe){if(U)return;Ze+=1,b(Xe.message),M_(pe,Ze)&&(Mt=!1)}Mt&&!U&&(oe=setTimeout(Ht,1500))};return Ht(),()=>{U=!0,clearTimeout(oe)}},[l,d,h]);let P=(u||[]).find(j_)||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."}:rG(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)(()=>Kq(f?.events),[f?.events]);(0,Ae.useLayoutEffect)(()=>{let U=$.current;U&&T.current&&(U.scrollTop=U.scrollHeight)},[ue.length]);let fe=U=>{let oe=U.currentTarget;T.current=oe.scrollHeight-oe.scrollTop-oe.clientHeight<40},re=YP(C.choice,C.custom).error||null,_e=U=>{E(oe=>{let ve={...oe,...U};return A==="claude_code"&&Gxe(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(Xq(U,C.choice,C.custom,A))}),ve=await oe.json().catch(()=>({}));if(!oe.ok)throw ve.code_session&&(c(Ze=>hc(Ze||[],ve.code_session,"id")),p(ve.code_session.id)),new Error(Je(ve,`Could not start ${_} (HTTP ${oe.status}).`));c(Ze=>hc(Ze||[],ve.code_session,"id")),p(ve.code_session.id),w("")}catch(oe){O(oe.message)}finally{F(!1)}}},se=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=>hc(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"}`,V=`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=f&&f.id===d?f:(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(op,{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"?hG():$_(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:qxe,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"}`},Yq(A).map(U=>Ae.default.createElement("option",{key:U.value,value:U.value},U.label))),C.choice===u0&&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:V},"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:()=>p(P.id),className:V},"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}=ip(U.status),Ze=U.id===d;return Ae.default.createElement("button",{key:U.id,type:"button",title:Lq(U),onClick:()=>Ze?g(Ht=>Ht+1):p(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(yc,{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}`},zq(U.prompt)),Ae.default.createElement("span",{className:`shrink-0 text-xs font-mono ${Z}`},XP(U)),Ae.default.createElement("span",{className:`shrink-0 text-xs ${Z}`},So(U.created_at)))}))),u===null&&Ae.default.createElement("p",{className:`text-xs ${Z}`},"Loading sessions\u2026"),ne&&Ae.default.createElement(Yxe,{session:ne,rows:ue,loaded:!!(f&&f.id===ne.id),detailError:y,cancelling:D,onCancel:()=>se(ne),onReload:()=>g(U=>U+1),transcriptRef:$,onTranscriptScroll:fe,classes:{muted:Z,strong:ee,border:L,secondaryButton:B,linkButton:V,errorBox:M}}))}function Yxe({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:p,border:f,secondaryButton:m,linkButton:y,errorBox:b}=u,{label:h,tone:g}=ip(e.status),v=j_(e),x=i0(e),S=$q(e),w=Number(e.dropped_events_count)||0;return Ae.default.createElement("div",{className:`pt-3 border-t space-y-2 ${f}`},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(yc,{tone:g},h),Ae.default.createElement("span",{className:`text-xs truncate ${d}`},[VP(e),XP(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:xG(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(Xxe,{key:A.key,row:A,darkMode:c,muted:d,strong:p})),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(d0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),x&&r&&Ae.default.createElement(Zxe,{diff:e.diff,pending:HP(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function Xxe({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 vG={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 Zxe({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ae.useMemo)(()=>s0(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 ",qq(e)),Ae.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:xG(a)},i.map((s,l)=>{let u=vG[s.kind]||vG.context;return Ae.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var bG={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 wG(e){return/[.!?]$/.test(e)?e:`${e}.`}function SG(){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 f0({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,p]=(0,Te.useState)(!1),f=(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 f();if(h)return;o(x),i(null),c0(x.pull_request)&&(g=setTimeout(v,2e3))}catch(x){h||i(x.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[f,u]);let m=async h=>{p(!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{p(!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(Qxe,{pullRequest:y,publishing:b,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Te.default.createElement(Rxe,{codeSession:t,sandbox:e,pullRequest:y,publishing:b,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function Qxe({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=SG(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:y}=oG(e),b=c0(e),h=!!t?.available,g=aG(e),v=iG(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:p},"Open draft PR"))),t&&!h&&Te.default.createElement("p",{className:`text-xs ${s}`},wG(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(yc,{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:f},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:f},r))}function Rxe({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,p]=(0,Te.useState)(!0),[f,m]=(0,Te.useState)(null),[y,b]=(0,Te.useState)(new Set),[h,g]=(0,Te.useState)(l?t?.title||"":mG(e)),[v,x]=(0,Te.useState)(""),[S,w]=(0,Te.useState)(l&&t?.branch||""),[A,k]=(0,Te.useState)(z_),[_,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 p(!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(F_(I.preview.files)),w(P=>P||I.preview.suggested_branch||"")}catch(T){$||m(T.message)}finally{$||p(!1)}})(),()=>{$=!0}},[s,z,E]),Te.default.createElement(JP,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:y,onToggle:$=>b(T=>U_(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(uG(_))},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({...W_({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 B_(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 JP({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:p,submitting:f,onSubmit:m,onCancel:y,patchHref:b}){let h=SG(),{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)(()=>vg(E,i),[E,i]),F=!!o?.available,D=p==="patch"||!F,z=p==="update"&&!D,N=t&&!D?pG({files:E,selection:i,title:l.title,branch:l.branch,message:l.message,update:z}):null,O=z?sG(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&&(lG(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:f||r,placeholder:"app/**, lib/*.rb",className:`${k} font-mono`})),Te.default.createElement("button",{type:"button",onClick:d,disabled:f||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 ",cG(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||f,onChange:()=>s(I.path)}),Te.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},dG(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}`},ZP(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(ebe,{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||f,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:f,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:f,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:f,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&&wG(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)=>fG(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||f,className:A},f?"Publishing\u2026":$))))))}function ebe({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Te.useMemo)(()=>s0(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, ",ZP(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=bG[s.kind]||bG.context;return Te.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var tbe=(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")),H_=new Map,rbe=e=>(H_.has(e)||H_.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(()=>H_.delete(e))),H_.get(e));function QP({item:e,evaluation:t,run:r}){let[n,o]=(0,ft.useState)(!1),[a,i]=(0,ft.useState)(null),[s,l]=(0,ft.useState)(""),[u,c]=(0,ft.useState)(null),[d,p]=(0,ft.useState)(!1),[f,m]=(0,ft.useState)(null),y=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,b=(0,ft.useCallback)(async()=>{let k=await rbe(y);return i(k),l(_=>_||k.sandboxes?.find(C=>C.status==="ready")?.session_id||""),k},[y]);if((0,ft.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=>tbe(k.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let g=h.find(k=>k.id===f)||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)){p(!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{p(!1)}}},A=g?g.verification?.status==="complete"?3:g.status==="succeeded"?2:1:0;return ft.default.createElement(ft.default.Fragment,null,ft.default.createElement(le,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},g?"Review implementation":"Implement with Claude Code"),g?.verification?.status==="complete"&&ft.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&&ft.default.createElement(UP,{title:"Implement evaluation fix",onClose:()=>o(!1)},ft.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((k,_)=>ft.default.createElement(Ee,{key:k,tone:_===A?"accent":_k.status==="ready")&&ft.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",ft.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...FP,marginTop:8},value:s,onChange:k=>l(k.target.value)},ft.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(k=>k.status==="ready").map(k=>ft.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&&ft.default.createElement("div",{style:n0},ft.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),ft.default.createElement("a",{href:ct(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),ft.default.createElement(le,{size:"sm",onClick:()=>b().catch(k=>c(k.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!x&&ft.default.createElement(op,{sandbox:v,onConnected:b,onChange:b}),v&&ft.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",ft.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&&ft.default.createElement(le,{variant:"primary",disabled:!v||!S||d||!!a?.refusal||!a?.supported,onClick:()=>w()},d?"Starting\u2026":"Implement this fix"),g&&ft.default.createElement(ft.default.Fragment,null,ft.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},ft.default.createElement(Ee,{tone:g.status==="failed"?"error":"info"},"Claude Code \xB7 ",g.status),ft.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",g.id)),["queued","running"].includes(g.status)&&ft.default.createElement(le,{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&&ft.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},g.result),g.error_message&&ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},g.error_message),g.diff&&ft.default.createElement("details",null,ft.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),ft.default.createElement("pre",{style:{...n0,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),ft.default.createElement(d0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>w(g)}),g.verification?.status==="complete"&&v&&ft.default.createElement(f0,{sandbox:v,codeSession:g})),u&&ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var RP=6,nbe=600,xg=12,bg=e=>String(e||"").replace(/_/g," "),Ui=e=>String(e??"").trim(),m0=e=>[...new Set(e.filter(Boolean))],eM=e=>Ui(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(` +`),tM=(e,t=nbe)=>{let r=Ui(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},cs=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,K_=e=>String(e||"").replace(/\/+$/,""),kG=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${bg(e.fault)}`:`Fix: ${bg(e.label||e.kind)}`:"Fix",_G=(e,t)=>{let r=m0(e?.models||[]);return r.length?r:m0(Wv(t).map(n=>typeof n=="string"?n:n?.label))},obe=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${bg(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),abe=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: ${tM(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),ibe=(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"?Ui(l.diagnosis?.judge?.instruction_change)===Ui(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},sbe=(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},lbe=(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=[`### ${cs(e)}`];o&&s.push("","Prompt:",eM(o));let l=obe(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${Ui(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)}`,p=u.fault||(u.status==="errored"?"run_error":null);s.push("",`**${c}** \xB7 ${u.status}${d}${p?` \xB7 ${bg(p)}`:""}`),s.push(`- Tools called: ${abe(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(Ui).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let y=f.judge.suggested_tool;s.push(`- Suggested tool: ${cs(y.name)}${y.description?` (${Ui(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${tM(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:",eM(tM(u.output))):s.push("- Answer: not retained for this run")}),s},CG=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=K_(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 ${cs(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},AG=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=K_(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 ${cs("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 ${cs("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. ${cs("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},EG=({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=K_(s),d=m0(e.scenario_keys||[]),p=_G(e,r),f=ibe(e,o,{labelFor:l}),m=new Map;f.forEach(x=>m.set(x.scenario_key,[...m.get(x.scenario_key)||[],x]));let y=[`# ${kG(e)}`,"",...CG({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let b=e.count||d.length,h=`${bg(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${p.length&&(e.models||[]).length?` under ${p.join(", ")}`:""}`;if(y.push(`${b>1?`${b} results: `:""}${h}.`),e.recommendation&&y.push("",Ui(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",eM(e.quote)),e.note&&y.push("",Ui(e.note)),m0((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(`- ${cs(S)}${w&&w!==A?.name?` \u2014 ${Ui(w)}`:""}${k}`)}),e.server)){let x=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${cs(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,RP).forEach(x=>{y.push("",...lbe(x,m.get(x)||[],sbe(x,a,o)))}),d.length>RP&&y.push("",`Also failing: ${d.slice(RP).map(cs).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: ${p.join(", ")}.`,"","Summarize your changes. Do not read or copy the sandbox\u2019s Claude credentials."):y.push("",...AG({evaluation:t,run:r,runNumber:n,keys:d,models:p,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(` +`},NG=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${kG(e)}`,"",...CG({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||bg(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",Ui(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,xg).map(cs).join(", ")}${e.chips.length>xg?` and ${e.chips.length-xg} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,xg).forEach(d=>i.push(`- ${Ui(d)}`)),e.details.length>xg&&i.push(`- and ${e.details.length-xg} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${cs(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=K_(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=m0(e.kind==="missing"?e.chips||[]:_G({},r));return i.push("",...AG({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 vc=e=>[...new Set(e)],nM=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},g0=e=>String(e||"").replace(/_/g," "),bc=e=>e?.status==="passed",wc=e=>!!e&&e.status!=="pending",sp=e=>!!e&&["pending","running"].includes(e.status),V_=e=>e?.selection||e?.scores?._selection||{},ube=e=>(V_(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function h0(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=ube(e);if(o.length)return o;let a=vc(t.map(s=>xc(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function xc(e,t){let n=(V_(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 aM(e,t){let r=e?.scores?._models?.[t],n=(V_(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return Po(t,r?.provider||n?.provider||"")}function iM(e,t=[]){let r=V_(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):sp(e)?n.map(o=>o.key):[]}function wg(e,t=[],r=[]){let n=iM(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 sM(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=>xc(e,i)===t);return{passed:a.filter(bc).length,total:n||a.length}}function OG(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=wg(e,r,n)*Math.max(r.length,1);return{passed:t.filter(bc).length,total:o}}function PG(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 cbe=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},rM=e=>e?.diagnosis?.judge?.instruction_change;function MG(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(rM);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>dbe(a,t)),o=new Set;return t.forEach(a=>{let i=rM(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>rM(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:vc(s.map(l=>l.scenario_key)),models:vc(s.map(l=>xc(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 dbe(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=vc(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=vc(n.flatMap(d=>{let p=d.diagnosis?.evidence||{};return(p.expected||[]).filter(f=>!(p.called||[]).includes(f))}))),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:cbe(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=vc(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||vc(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 lM=e=>e?.cost_source==="estimated",IG=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},oM=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[Jr(e.cost,{estimated:lM(e)})];return t!=null&&r.push(`judge ${Jr(t,{estimated:IG(e)})}`),r.join(" \xB7 ")},DG=e=>{if(!lM(e))return;let t=e.cost_rate||null;return vf({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},pbe=(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(wc),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=>lM(u)||IG(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 TG({entry:e,testId:t}){return e?ye.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1,minWidth:0,textAlign:"right",fontFamily:Y,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":t},ye.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Jr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&ye.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap"}},`judge ${Jr(e.judgeCost,{estimated:e.estimated})}`)):ye.default.createElement("span",{style:{...zn(12),textAlign:"right"},"data-testid":t},"\u2014")}var zn=(e,t="var(--color-text-muted)",r={})=>({fontFamily:Y,fontSize:e,color:t,...r});function jG({calls:e,empty:t,style:r}){return ye.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:Y,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 $G({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a}){let i=e?.scores?._models||{},s=Fi(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(qe,null,"Models"),o&&ye.default.createElement("span",{style:zn(11)},`judged by ${o}`)),t.length===0&&ye.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&ye.default.createElement(e0,{rows:A_(e,{results:r,scenarioCount:n,columns:t,labelFor:l=>xc(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}=aM(e,l),d=i[l],{passed:p,total:f}=sM(e,l,r,n),m=Object.entries(d?.faults||{}),y=ig(d,d?.scenarios),b=d&&m.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!d&&sp(e)?{text:"scoring\u2026"}:null;return ye.default.createElement(Rv,{key:l,label:l,short:u,provider:c,winner:a?.winner===l,passed:p,total:f,avgScore:d?.avg_score,latencyMs:d?.avg_duration_ms,inputTokens:d?.input_tokens,outputTokens:d?.output_tokens,cost:d?.cost,perInteraction:tp(d?.cost,y),estimated:__(d,d?.scenarios),judgeCost:d?.judge_cost,judgeCalls:d?.judge_calls||0,judgeEstimated:s,unit:"scenario",badges:m.map(([h,g])=>({tone:"error",text:`${g0(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(qe,null,"Verdict"),a.judge&&ye.default.createElement("span",{style:zn(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:Y,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var mbe=e=>`minmax(240px, 1.6fr) 150px ${e.map(()=>"minmax(170px, 1fr)").join(" ")} 120px`;function gbe({result:e,expects:t,pending:r}){if(!e)return ye.default.createElement("span",{style:{...zn(12),fontWeight:600}},r?"\u2026":"\u2014");if(!wc(e))return ye.default.createElement("span",{style:{...zn(12),fontWeight:600}},"\u2026");let n=bc(e),o=n?"var(--color-success)":"var(--color-error)",a=PG(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:Y,fontSize:12}},ye.default.createElement("span",{style:{fontWeight:700,color:o}},n?"[+]":"[!]"),ye.default.createElement("span",{style:{fontWeight:600,color:o}},Ro(e.score)),e.fault&&ye.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},g0(e.fault))),ye.default.createElement(jG,{calls:a,empty:"no tools called"}),oM(e)&&ye.default.createElement("span",{style:{...zn(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:DG(e),"data-testid":"scenario-cell-cost"},oM(e)))}function LG({rows:e,columns:t,run:r,resultsByKey:n,runKeys:o,running:a,openKey:i,onToggleRow:s,emptyLabel:l,renderDetail:u}){let c=mbe(t),d=e.some(y=>y.group),p=y=>pbe(r,y.key,n[y.key]),f=e.some(y=>p(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(qe,{size:10,color:"var(--color-text-muted)"},"Scenario"),ye.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(y=>{let{short:b,provider:h}=aM(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:Y,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},b),ye.default.createElement("span",{style:zn(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(qe,{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=>wc(n[k.key]?.[v])).filter(k=>bc(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?`${Kn(S,w)} passed`:"\u2014",color:A}}),g=fbe(y.rows.map(p));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:zn(11)},Ut(y.rows.length,"scenario")),h.map(v=>ye.default.createElement("span",{key:v.label,style:{fontFamily:Y,fontSize:11,fontWeight:600,color:v.color}},v.text)),ye.default.createElement(TG,{entry:g,testId:"scenario-group-cost"})),y.rows.map(v=>{let x=i===v.key,S=nM(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:{...zn(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:Y,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"}},k)),S.length===0&&nM(v,"contains").map(k=>ye.default.createElement("span",{key:`contains-${k}`,style:{fontFamily:Y,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(gbe,{key:k,result:n[v.key]?.[k],expects:S,pending:a&&w})),ye.default.createElement(TG,{entry:p(v),testId:"scenario-row-cost"})),x&&u(v))}))}),e.length===0&&ye.default.createElement(Yn,{style:{borderTop:"1px solid var(--color-border-light)"}},l||"[+] nothing failed in this group"),f&&ye.default.createElement("div",{style:{...zn(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},_s)))}function hbe(e){let t=[];e.duration_ms!=null&&t.push(ao(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${fn((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=oM(e);return r&&t.push(r),t.join(" \xB7 ")}function ybe({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=aM(t,e),i=ye.default.createElement("span",{style:{fontFamily:Y,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||!wc(r))return s(ye.default.createElement("span",{style:zn(11)},o?"waiting for this replay\u2026":"not part of this run"),ye.default.createElement(Ee,{tone:"muted"},o?"pending":"no result"));let u=bc(r)?"success":"error",c=PG(r.tool_calls,n),d=r.diagnosis||{},p=d.judge||{},f=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=hbe(r);return s(ye.default.createElement(ye.default.Fragment,null,ye.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:Y,fontSize:11}},ye.default.createElement(qe,{size:10,color:"var(--color-text-muted)"},"tools"),ye.default.createElement(jG,{calls:c,empty:"none called",style:{display:"contents"}})),f&&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:Y,fontWeight:700}},`[!] ${g0(f)}`),m?` \u2014 ${m}`:"",p.suggested_tool?.name&&ye.default.createElement("div",{style:{marginTop:4,fontFamily:Y,fontSize:11}},`suggested tool: ${p.suggested_tool.name}${p.suggested_tool.description?` \u2014 ${p.suggested_tool.description}`:""}`),p.instruction_change&&ye.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${p.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:zn(11)},"answer not retained for this run"),y.length>0&&ye.default.createElement("div",{style:{...zn(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},y.map(([h,g])=>ye.default.createElement("span",{key:h},g0(h)," ",ye.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},g==null?"skipped":Ro(g)))))),ye.default.createElement(ye.default.Fragment,null,ye.default.createElement(Ee,{tone:u},r.score==null?r.status:`${r.status} \xB7 ${Ro(r.score)}`),b&&ye.default.createElement("span",{style:{marginLeft:"auto",...zn(11)},title:DG(r)},b),r.agent_run_id&&ye.default.createElement(fc,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:b?void 0:{marginLeft:"auto"}})))}function zG({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0}){let u=nM(e,"tools"),c=n[e.key]||{},d=r.some(f=>c[f]),p=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:zn(11)},e.key),ye.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),ye.default.createElement("span",{style:{fontFamily:Y,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:f=>{f.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:Y,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),ye.default.createElement(Bi,{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?p?ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12}},r.map(f=>ye.default.createElement(ybe,{key:f,label:f,run:t,result:c[f],expects:u,running:o}))):ye.default.createElement("div",{style:zn(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):ye.default.createElement("div",{style:zn(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function BG({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"),p=t.length>1,f=p?c:"all",m=p?cq(e,i,v=>xc(a,v)):e,y=jP(m,f),b=p?dq(m,t):{},h=v=>EG({item:v,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:O_(),labelFor:x=>xc(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=vc(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=>Po(k).short).join(", ");return`${x} \xB7 ${A}`};return ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},p&&ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},ye.default.createElement("span",{style:zn(11)},"for"),ye.default.createElement(oo,{square:!0,mono:!0,selected:f==="all",onClick:()=>d("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(v=>ye.default.createElement(oo,{key:v,square:!0,mono:!0,selected:f===v,onClick:()=>d(v),title:`Only what ${v} needs fixed`,testId:"fix-filter-model"},`${Po(v).short} ${b[v]??0}`))),y.length===0&&ye.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${Po(f).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(ni,{kind:S?"info":"fault"}),ye.default.createElement(Ee,{tone:w},`${g0(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:{...zn(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:zn(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(qe,{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:Y,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(le,{size:"sm",onClick:()=>n?.(v.action.path)},v.action.label),v.action?.hint&&ye.default.createElement("span",{style:{...zn(11),whiteSpace:"nowrap"}},v.action.hint),ye.default.createElement(t0,{build:()=>h(v),style:{marginLeft:"auto"}}),ye.default.createElement(QP,{item:v,evaluation:s,run:a})))})))}var vbe=e=>{let{results:t,fix_items:r,...n}=e;return n},uM={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:Y,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"};function cM({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,p]=(0,Fe.useState)(null),[f,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??_b,[t]),j=Nu(E),F=(0,Fe.useMemo)(()=>Gv(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)(""),[fe,re]=(0,Fe.useState)(null),[_e,de]=(0,Fe.useState)(null),[se,Z]=(0,Fe.useState)(!1),[ee,L]=(0,Fe.useState)(null),[B,V]=(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 p(`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),p(null),or}catch(we){return p(`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(qr=>({...qr,[Cr.id]:Cr})),g(qr=>qr.map(Pa=>Pa.id===Cr.id?{...Pa,...vbe(Cr)}:Pa)),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(qr=>qr.id===a)?a:null;w(qr=>Cr||(qr&&yt?.runs?.some(Pa=>Pa.id===qr)?qr: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=sp(ve)?ve.id:sp(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&&!sp(or)){await ne(),r?.();return}V(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=pq(yt.sandboxes);T(or),P(Cr=>gq(Cr,or))}catch{}},[]);(0,Fe.useEffect)(()=>{Mt()},[Mt]);let pe=mc(_),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(mq(we,pe,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(qr=>[Cr,...qr.filter(Pa=>Pa.id!==Cr.id)]),x(qr=>qr==null?null:qr+1),k(qr=>({...qr,[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?.()},Ve=ve,Gt=(0,Fe.useMemo)(()=>(Ve?.results||[]).filter(we=>we&&we.scenario_key),[Ve]),Ir=(0,Fe.useMemo)(()=>h0(Ve,Gt,e),[Ve,Gt,e]),lo=(0,Fe.useMemo)(()=>Gt.reduce((we,yt)=>((we[yt.scenario_key]||={})[xc(Ve,yt)]=yt,we),{}),[Gt,Ve]),ms=(0,Fe.useMemo)(()=>new Set(iM(Ve,f)),[Ve,f]),la=sp(Ve),Ql=wg(Ve,Ir,f),me=OG(Ve,Gt,Ir,f),Ge=(0,Fe.useCallback)(we=>ms.has(we.key)||!!lo[we.key],[ms,lo]),rt=(0,Fe.useMemo)(()=>ZV(f,lo),[f,lo]),ur=we=>Ir.some(yt=>{let or=lo[we.key]?.[yt];return wc(or)&&!bc(or)}),Go=rt.filter(we=>!_e||(we.group||"")===_e).filter(we=>!se||ur(we)),uo=h.findIndex(we=>we.id===Ve?.id),ua=Hv(h,v),Yo=uo>=0?ua-uo:null,Oa=new Set(rt.filter(Ge).map(we=>we.group).filter(Boolean)).size,Vs=Gt.filter(wc).length,Ki=Ql*Math.max(Ir.length,1),vp=new Set(Gt.filter(we=>wc(we)&&!bc(we)).map(we=>we.scenario_key)).size,gs=Ve?.scores?._verdict||null,Rl=Object.prototype.hasOwnProperty.call(Ve?.scores||{},"_judge_label")?Ve.scores._judge_label||"rules":gs?.judge&&gs.judge!=="pass rate"?gs.judge:e.judge_model||"rules",Zn=(0,Fe.useMemo)(()=>Ve?MG(Ve,Gt):[],[Ve,Gt]),B0=(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"})}))},[]),xp=Object.keys(Ve?.scores||{}).filter(we=>!we.startsWith("_")),F0=(0,Fe.useCallback)(we=>{let yt=we.id===Ve?.id?Gt:[],or=h0(we,yt,e),Cr=wg(we,or,f);return or.map(qr=>({label:qr,short:Po(qr).short,...sM(we,qr,yt,Cr)}))},[Ve,Gt,e,f]),U0=(0,Fe.useCallback)((we,yt,or)=>{if(!yt||yt.status!=="complete"||we.status!=="complete")return Kv(we,yt,{olderNumber:or});let Cr=h0(we,we.id===Ve?.id?Gt:[],e),qr=h0(yt,[],e),Pa=wg(yt,qr,f)===wg(we,Cr,f)&&qr.length===Cr.length;return Kv(we,yt,{olderNumber:or,comparable:Pa})},[Ve,Gt,e,f]),jg=u?f.length:e.scenario_count??0,$g=u?f.filter(we=>we.enabled!==!1&&(!_e||(we.group||"")===_e)).length:jg,W0=`Run ${Ut($g,"scenario")}${pe.length?` \xD7 ${Ut(pe.length,"model")}`:""}`,O2=Ve?[uo>0?`Viewing run #${Yo} (latest is #${ua})`:`Run #${Yo??"?"} \xB7 ${So(Ve.completed_at||Ve.created_at)}`,l,`${Ut(Ql,"scenario")}${Oa?` in ${Ut(Oa,"group")}`:""} \xD7 ${Ut(Ir.length,"model")}`,Ve.status==="failed"?"failed":`${Kn(me.passed,me.total)} passed`,fg(Ve)&&`against ${fg(Ve)}`].filter(Boolean).join(" \xB7 "):`${l} \xB7 ${Ut(jg,"scenario")}${y.length?` in ${Ut(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?"no runs yet":"loading\u2026"}`,H0=Ve&&Ve.status==="complete"?`/evaluations/${s}/runs/${Ve.id}/report`:null,P2=[...new Set([...y,...rt.map(we=>we.group).filter(Boolean)])],M2=[{label:`All ${rt.length||jg}`,value:null}].concat(P2.map(we=>({label:u?`${we} ${rt.filter(yt=>yt.group===we).length}`:we,value:we}))),Lg=rt.length===0,I2=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)"}},O2),la&&Fe.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"suite-run-progress"},`running \xB7 ${Vs} of ${Ki} results in`),Fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Fe.default.createElement(le,{size:"sm",onClick:()=>{ue(Nq(f)),re(null),Q(!H)}},H?"Cancel":"Edit scenarios"),Fe.default.createElement(Xv,{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:{...uM,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),$.length>0&&Fe.default.createElement("select",{value:I,onChange:we=>P(we.target.value),style:{...uM,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(le,{variant:"primary",size:"sm",disabled:N||!u||$g===0,onClick:()=>Xe(_e?{group:_e}:{}),testId:"suite-run-button"},N?"Starting\u2026":W0))),(d||D||Ve?.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: ${Ve.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(f.length+4,6),24),style:{...uM,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:Y}},"# Heading")," starts a group; ",Fe.default.createElement("code",{style:{fontFamily:Y}},"| tools: a, b"),", ",Fe.default.createElement("code",{style:{fontFamily:Y}},"| contains: x"),", ",Fe.default.createElement("code",{style:{fontFamily:Y}},"| not_contains: y")," set expectations. Keep a scenario's ",Fe.default.createElement("code",{style:{fontFamily:Y}},"key")," to keep its history."),Fe.default.createElement(le,{variant:"primary",size:"sm",onClick:nr},"Save scenarios")),fe&&Fe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},fe)),Fe.default.createElement(Jv,{runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Ve?.id??null,onOpen:we=>{gr(we.id),i?.(we.id)},barsFor:F0,deltaFor:U0}),Ve&&Ve.status!=="failed"&&Fe.default.createElement(Zv,{spend:Fi(Ve),judgedBy:Rl,testId:"suite-run-spend"}),Fe.default.createElement($G,{run:Ve,columns:Ve?Ir:[],results:Gt,scenarioCount:Ql,judgedBy:Rl,verdict:gs}),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"),M2.map(we=>Fe.default.createElement(oo,{key:we.label,selected:_e===we.value,onClick:()=>de(we.value)},we.label)),Fe.default.createElement(oo,{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")),Lg&&d?Fe.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[!] suite not loaded"):Lg&&!u?Fe.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"loading\u2026"):Lg?Fe.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):Fe.default.createElement(LG,{rows:Go,columns:Ve?Ir:[],run:Ve,resultsByKey:lo,runKeys:ms,running:la,openKey:ee,onToggleRow:we=>L(ee===we?null:we),emptyLabel:I2,renderDetail:we=>Fe.default.createElement(zG,{scenario:we,run:Ve,columns:Ve?Ir:[],resultsByKey:lo,running:la,inRun:Ge(we),canMutate:!we.orphan,onRerun:yt=>Xe({keys:[yt.key]}),onToggleEnabled:rr})})),Ve&&Ve.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:Y,fontSize:11,color:"var(--color-text-muted)"}},`${Ut(Zn.length,"item")} \xB7 ${Ut(Math.max(me.total-me.passed,0),"fault")} across ${Ut(vp,"scenario")}`)),Zn.length>0?Fe.default.createElement(BG,{items:Zn,columns:Ir,agentName:l,onNavigate:kt,onOpenScenario:B0,run:Ve,results:Gt,evaluation:e,runNumber:Yo,scenarios:f}):Fe.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},la?"[ ] scoring\u2026":"[+] nothing to fix")),Fe.default.createElement(np,{evaluation:e,run:Ve,keys:xp.length?xp:null,spend:Fi(Ve),reportPath:H0,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var Ye=q(X());var dM=[{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}}],FG=[{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}}],Yl={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)"},UG={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},xbe={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function pM({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:dM.map(C=>C.key),containsPattern:"",llmJudgePrompt:"",judgeKind:"manual",judgeModel:"",compareModels:"",scenariosText:"",compareRestore:new Map}),[u,c]=(0,Ye.useState)(null),[d,p]=(0,Ye.useState)(!1),f=(0,Ye.useId)(),m=(0,Ye.useMemo)(()=>o===void 0?[]:o??_b,[o]),y=Nu(r&&!m.includes(r)?[...m,r]:m),b=wbe(s.agent_id),h=(0,Ye.useMemo)(()=>r?Gv(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,Ye.useMemo)(()=>g?Gv(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}=vq(mc(E.compareModels),y,{providers:m,qualify:j,restore:E.compareRestore});return{...E,scenariosText:C,compareModels:Yv(F),compareRestore:D}}),w=(C,E)=>x({criteria:E?[...s.criteria,C]:s.criteria.filter(j=>j!==C)}),A=()=>{let C=[...dM,...FG].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(),p(!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:mc(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{p(!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(qe,{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:{...Yl,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(qe,{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:{...Yl,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:C=>x({sample_size:C.target.value}),style:{...Yl,width:"100%",fontFamily:Y}}))),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:C=>x({judgeKind:C.target.value}),style:{...Yl,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:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),Ye.default.createElement(pl,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>x({judgeModel:C}),style:{...Yl,width:"100%",fontFamily:Y,fontSize:12}}),r!==void 0&&Ye.default.createElement("p",{id:`${f}-judge-provider`,style:UG},bbe(r,n))),Ye.default.createElement("div",null,Ye.default.createElement(qe,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),Ye.default.createElement(Xv,{inputId:`${f}-compare`,describedBy:`${f}-compare-hint`,value:s.compareModels,onChange:C=>x({compareModels:C}),models:v,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Yl,width:"100%",fontFamily:Y,fontSize:12}}),Ye.default.createElement("p",{id:`${f}-compare-hint`,style:UG},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: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:{...Yl,width:"100%",fontFamily:Y,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:Y}},"# Heading")," lines group related tasks so they can be run together; ",Ye.default.createElement("code",{style:{fontFamily:Y}},"| 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}},dM.map(_))),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}},FG.map(_))),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:C=>x({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Yl,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:C=>x({llmJudgePrompt:C.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Yl,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(le,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&Ye.default.createElement(le,{onClick:i},"Cancel"))))}function bbe(e,t){return e?`The judge runs on ${xbe[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 wbe(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=q(X());var Sbe={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:Y,fontSize:12,color:"var(--color-info)"},Xn=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:Y,fontSize:e,color:t,...r});function kbe({stats:e}){if(!e)return Se.default.createElement("span",{style:Xn()},"\u2014");if(e.skipped)return Se.default.createElement("div",null,Se.default.createElement("span",{style:Xn(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Se.default.createElement("div",{style:{...Xn(),marginTop:2,textWrap:"pretty"},title:e.reason},Fv(e.reason,90)));let t=Number(e.score),r=ia[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${Kn(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${Ro(e.min)} \xB7 max ${Ro(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 ${ao(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:Xn(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",Ro(t)),e.source==="telemetry"&&Se.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:Xn(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Se.default.createElement("div",{style:{...Xn(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function _be({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>NG({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:O_()});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(ni,{kind:"fault"}),Se.default.createElement(Ee,{tone:"error"},e.label),Se.default.createElement("span",{style:Xn()},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:Y,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:Xn(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(le,{size:"sm",onClick:()=>kt(e.action.path)},e.action.label),e.action?.hint&&Se.default.createElement("span",{style:{...Xn(),whiteSpace:"nowrap"}},e.action.hint),Se.default.createElement(t0,{build:o,style:{marginLeft:"auto"}})))}function fM({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[p,f]=(0,Se.useState)("all"),[m,y]=(0,Se.useState)(!1),b=(K,ue)=>Se.default.createElement("button",{type:"button",onClick:ue,style:Sbe},K),h=t.findIndex(K=>K.id===n),g=h>=0?t[h]:t[0],v=g?dg(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:Xn(12)},"/"),b(e?.name||"Evaluation",u),Se.default.createElement("span",{style:Xn(12)},"/"),Se.default.createElement("span",{style:Xn(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=Wv(g),w=S.length?S:[null],A=cg(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=ug(g).map(([K,ue])=>({key:K,value:ue,criterion:Uv(e,K)})),j=K=>E.filter(ue=>Fs(ue.criterion)===K).length,F=OP.filter(K=>j(K.id)>0),D=K=>w.some(ue=>{let fe=ep(K.value,ue);return fe&&(fe.skipped||fe.score!=null&&fe.score<.7)}),z=E.filter(K=>(p==="all"||Fs(K.criterion)===p)&&(!m||D(K))),N=OP.map(K=>({...K,rows:z.filter(ue=>Fs(ue.criterion)===K.id)})).filter(K=>K.rows.length),O=C_(e,{...g,number:v}),$=Fi(g),T=So(g.completed_at||g.created_at),I=g.status==="complete"&&g.samples_evaluated?` \xB7 ${Kn(g.samples_passed||0,g.samples_evaluated)} passed`:"",P={fontFamily:Y,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 ${Rd(e,g)}${I}`)),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((K,ue)=>Se.default.createElement(oo,{key:K.id,square:!0,mono:!0,selected:K.id===g.id,onClick:()=>i?.(K),title:`${K.status} \xB7 ${So(K.completed_at||K.created_at)}`},`#${dg(K,ue,t,r)}`)),Se.default.createElement(le,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Se.default.createElement(Zv,{spend:$,judgedBy:lg(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:Xn(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:Xn(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(e0,{rows:A_(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=rq(g,K),fe=k(K),re=fe?.samples??(K==null?g.samples_evaluated:null),_e=fe?.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(Rv,{key:K||"all",label:K,short:K?Po(K).short:"all samples",provider:fe?.provider||(K?Po(K).provider:null)||null,winner:!!_?.winner&&_.winner===K,passed:_e,total:re,avgScore:ue.avg,criteria:{cleared:ue.cleared,scored:ue.scored},latencyMs:fe?.avg_duration_ms,inputTokens:fe?.input_tokens,outputTokens:fe?.output_tokens,cost:fe?.cost,perInteraction:tp(fe?.cost,fe?.priced),estimated:fe?.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(qe,null,"Verdict"),_.judge&&Se.default.createElement("span",{style:Xn()},`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:Y,fontSize:12}},_.winner),_.rationale?` \xB7 ${_.rationale}`:"")),C.length>0&&Se.default.createElement("span",{style:Xn(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(qe,{style:{marginRight:4}},"Criteria"),Se.default.createElement(oo,{selected:p==="all",onClick:()=>f("all")},`All ${E.length}`),F.map(K=>Se.default.createElement(oo,{key:K.id,selected:p===K.id,onClick:()=>f(K.id)},`${K.label} ${j(K.id)}`)),Se.default.createElement(oo,{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}},Po(K).short),(k(K)?.provider||Po(K).provider)&&Se.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},k(K)?.provider||Po(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:Xn()},`${K.rows.length} ${K.rows.length===1?"criterion":"criteria"}`)),w.map(ue=>{let fe=K.rows.filter(de=>{let se=ep(de.value,ue);return se&&se.score!=null}),re=fe.filter(de=>ep(de.value,ue).score>=.7).length,_e=fe.length&&re===fe.length?"var(--color-success-text)":re===0&&fe.length?"var(--color-error-text)":"var(--color-text-cell)";return Se.default.createElement("td",{key:ue||"score",style:Q},Se.default.createElement("span",{style:Xn(11,_e,{fontWeight:600})},fe.length?`${Kn(re,fe.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:Xn()},ue.key),Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},k_(ue.criterion))),Se.default.createElement("td",{style:H},Se.default.createElement("span",{style:{fontFamily:Y,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:sg(ue.criterion)},Fv(sg(ue.criterion),40))),w.map(fe=>Se.default.createElement("td",{key:fe||"score",style:H},Se.default.createElement(kbe,{stats:ep(ue.value,fe)}))))))),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(qe,null,"What to fix"),Se.default.createElement("span",{style:Xn()},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(_be,{key:K.kind,item:K,evaluation:e,run:g,number:v}))):Se.default.createElement(Yn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${kb(.7)}) and nothing was skipped.`)),Se.default.createElement(np,{evaluation:e,run:g,spend:$,onDelete:c,deleting:d}))}var WG=()=>{let e=Gn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=EP(window.location.search);return t?.runId?t:null},G_=()=>{let e=Gn().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},HG=()=>EP(window.location.search)?.evaluationId||(G_()?String(G_().evaluationId):null),q_=(e=11,t="var(--color-text-muted)")=>({fontFamily:Y,fontSize:e,color:t}),Cbe=e=>{let t=pg(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:C_(e,t).length+r:r},Abe={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 y0({embedded:e=!1,agentId:t=null}){let{darkMode:r}=lt(),[n,o]=(0,Le.useState)(()=>e?null:WG()),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)([]),[p,f]=(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=G_();return me?.runId?me:null}),[j,F]=(0,Le.useState)(()=>e?null:HG()),[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),[fe,re]=(0,Le.useState)(0);(0,Le.useEffect)(()=>{if(e)return;let me=()=>{o(WG());let Ge=G_();E(Ge?.runId?Ge:null);let rt=HG();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 Go=ur.evaluations||[],uo=null;try{Go=await JV(Go,j,fetch)}catch(ua){uo=ua.message}d(Go),_(ua=>{if(ua)return ua;let Yo=j?Go.find(Oa=>String(Oa.id)===j):Go.find(Oa=>Oa.scenario_suite)||Go[0];return new Set(Yo?[Yo.id]:[])}),A(uo)}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=>f(me.agents||[])).catch(()=>f([]))},[_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 se=me=>{!e&&Gn()!==me&&tg(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}),se(Ge?`/evaluations/${me.id}`:"/evaluations")},L=(me,Ge)=>{_(rt=>new Set([...rt||[],me.id])),E({evaluationId:me.id,runId:Ge.id}),se(`/evaluations/${me.id}/runs/${Ge.id}`)},B=me=>{E(null),se(me?`/evaluations/${me}`:"/evaluations")},V=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(window.confirm(`Delete "${me.name}"? Its runs are deleted with it.`)){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(le,{size:"sm",onClick:()=>{tg("/evaluations"),o(null)}},Le.default.createElement("span",{style:{fontFamily:Y}},"<-")," 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:q_(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:Y}},"->"))),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(fM,{evaluation:me,runs:Ge,runCount:rt,runId:C.runId,loading:!ur,running:$===C.evaluationId,onSelectRun:Go=>L(me,Go),onRun:()=>V(me),onBack:()=>B(null),onOpenEvaluation:()=>B(C.evaluationId),onDelete:me?()=>ne(me):void 0,deleting:I===C.evaluationId})}}let ve=sq(U,{focusId:j}),{samplesScored:Ze,samplesPassed:Ht,passRatio:Mt,spend:pe}=ve,Xe=lq(ve),gr=[...new Set(U.map(me=>me.agent?.name).filter(Boolean))],rr=U.reduce((me,Ge)=>Math.max(me,PP(Ge,pg(Ge)||Ge.latest_run)),0),nr=U.map(Cbe),Ve=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",lo=ve.focused?"headline run of this evaluation":`headline run of ${Ut(ve.counted,"current evaluation")}${Xe?` \xB7 ${Xe}`:""}`,ms=ve.perModel.length>1?ve.perModel.map(me=>`${me.label} ${Kn(me.passed,me.total)}`):[],la=pe.agentCost!=null?[`agent ${Jr(pe.agentCost,{estimated:pe.estimated})} over ${Ut(pe.interactions,"interaction")}`,pe.judgeCost!=null?`judge ${Jr(pe.judgeCost,{estimated:pe.judgeEstimated})} offline`:"no judge spend"].join(" \xB7 "):"no priced runs yet",Ql=pe.agentCost!=null&&pe.estimated||pe.judgeCost!=null&&pe.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}},(fe>0||K)&&Le.default.createElement(le,{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 (${fe})`),Le.default.createElement(le,{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(pM,{agents:p,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])),se(`/evaluations/${me.id}`))}}),Le.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},Le.default.createElement(rg,{label:"Evaluations",value:U.length,sub:Ir,testId:"stat-evaluations"}),Le.default.createElement(rg,{label:"Samples scored",value:Ze,sub:lo,testId:"stat-samples-scored"}),Le.default.createElement(rg,{label:"Pass rate",value:yf(Mt),valueColor:Mt==null?"var(--color-text-muted)":ia[Zd(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`),ms.map(me=>Le.default.createElement("span",{key:me,style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"stat-pass-rate-model"},me))),testId:"stat-pass-rate"}),Le.default.createElement(rg,{label:"To fix",value:Ve,valueColor:Ve?"var(--color-error)":void 0,sub:Ve?`across ${Ut(Gt,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Le.default.createElement(rg,{label:"Cost / interaction",value:Gl(pe.perInteraction,pe.estimated),valueColor:pe.perInteraction==null?"var(--color-text-muted)":void 0,sub:Ql?`${la} \xB7 ${_s}`:la,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=pg(me),Go=rt&&ur&&rt.id!==ur.id?rt:null,uo=DP(me),ua=Abe[uo],Yo=uo==="archived",Oa=Z(me.id),Vs=!!me.scenario_suite,Ki=nr[Ge],vp=(me.criteria||[]).some(Zn=>Fs(Zn)==="telemetry"),{runs:gs,runCount:Rl}=oe(me);return Le.default.createElement(He,{key:me.id,padding:0,testId:"evaluation-card","data-telemetry":vp?"true":"false","data-kind":Vs?"suite":"sampling","data-open":Oa?"true":"false","data-standing":uo,style:{overflow:"hidden",opacity:Yo?.75:1}},Le.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":Oa,onClick:()=>ee(me),onKeyDown:Zn=>{(Zn.key==="Enter"||Zn.key===" ")&&(Zn.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(ni,{kind:"chevron",open:Oa}),Le.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:Y,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:Vs?"scenario suite":"sampling evaluation"},Vs?"=":"~"),Le.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},me.name),Le.default.createElement("span",{style:q_(11)},`@${me.agent?.name||"agent"} \xB7 ${Rd(me)}`),Le.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},Le.default.createElement("span",{style:q_(11)},So(rt?.completed_at||rt?.created_at||me.created_at)),Ki>0&&Le.default.createElement("span",{style:q_(11,"var(--color-error)")},`${Ki} to fix`),ua&&Le.default.createElement(Ee,{tone:ua.tone,size:10,style:{padding:"1px 6px"},title:ua.title,testId:"evaluation-standing"},ua.text),Go&&Le.default.createElement(N_,{run:Go,testId:"evaluation-newer-run-badge"}),Le.default.createElement(N_,{run:ur||rt,testId:Vs?"suite-pass-badge":"evaluation-pass-badge"}),Le.default.createElement("button",{type:"button",onClick:Zn=>{Zn.stopPropagation(),M(me,!Yo)},disabled:H===me.id,title:Yo?"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:Y,fontSize:11,color:"var(--color-text-muted)",opacity:H===me.id?.5:1}},H===me.id?"\u2026":Yo?"unarchive":"archive"))),Oa&&Le.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Vs?Le.default.createElement(cM,{evaluation:me,modelProviders:g,onChanged:_e,onDelete:()=>ne(me),deleting:I===me.id,initialRunId:C?.evaluationId===me.id?C.runId:null,onRunSelected:Zn=>se(`/evaluations/${me.id}/runs/${Zn}`)}):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)"}},gs.length?Eq(gs,Rl):`@${me.agent?.name||"agent"} \xB7 no runs yet`),Le.default.createElement(le,{variant:"primary",size:"sm",disabled:$===me.id,onClick:Zn=>{Zn.stopPropagation(),V(me)},testId:"evaluation-run-button"},$===me.id?"Running\u2026":`Run ${Rd(me)}`)),Le.default.createElement(Jv,{runs:gs,runCount:Rl,evaluation:me,agentName:me.agent?.name,previousRun:me.previous_run,onOpen:Zn=>L(me,Zn),testId:"evaluation-runs-panel"}),Le.default.createElement(np,{evaluation:me,run:rt,spend:Fi(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=q(X());var Ebe=e=>new Date(`${e}T00:00:00`),Nbe=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function mM({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=lt(),o=hi(n),[a,i]=(0,$e.useState)(null),[s,l]=(0,$e.useState)(!0),{timeWindow:u,days:c}=Ls(),[d,p]=(0,$e.useState)("overview");(0,$e.useEffect)(()=>{f()},[e?.id,c]);let f=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(zs,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(zs,null))),!r&&$e.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},Nbe.map(v=>$e.default.createElement("button",{key:v.id,onClick:()=>p(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(Xd,{agentId:e.id,embedded:!0}),g==="interactions"&&$e.default.createElement(ql,{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(Y_,{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(Y_,{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(Y_,{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(Y_,{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}},Ebe(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 KG={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 Y_({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=KG[n]||KG.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=q(X());var Tbe={active:"success",configured:"info",available:"warning",idle:"muted"},Obe={agent_defined:"success",dashboard:"success",mcp:"info"},VG="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",qG="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",Pbe=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],GG={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:Y,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},Ws={fontFamily:Y,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},X_={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function ZG({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 YG({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:Y,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 Mbe({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(ZG,{on:n,title:o,onClick:()=>r(e)}))}function Z_({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:Y,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 XG({children:e}){return ie.default.createElement("div",{style:{overflowX:"auto"}},ie.default.createElement("div",{style:{minWidth:800}},e))}function gM({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"),[p,f]=(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=(v_.find(B=>B.value===c)||v_[1]).hours;(0,ie.useEffect)(()=>{let B=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${k}`).then(V=>{if(!V.ok)throw new Error(`Request failed (${V.status})`);return V.json()}).then(V=>{B||s(V)}).catch(V=>{B||u(V.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)(()=>y_(C,j),[C,j]),z=(0,ie.useMemo)(()=>SV(C,D,{query:p,filter:m}),[C,D,p,m]),N=(0,ie.useMemo)(()=>_V(C,D,E,{query:p,source:b,enabledOnly:g}),[C,D,E,p,b,g]),O=(0,ie.useMemo)(()=>CV(C,D,E,{range:c}),[C,D,E,c]),$=(0,ie.useMemo)(()=>NV(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",TV(C,B,j))},[C,j,r]),H=(0,ie.useCallback)(B=>{let V=D[B.key];P({...D,[B.key]:{...V,on:!V.on}})},[D,P]),Q=(0,ie.useCallback)((B,V)=>{let M=D[B.key];M.on&&P({...D,[B.key]:{...M,tools:{...M.tools,[V.name]:!M.tools[V.name]}}})},[D,P]),K=(0,ie.useCallback)((B,V)=>{let M=D[B.key],ne=Object.fromEntries((B.tools||[]).map(U=>[U.name,V]));P({...D,[B.key]:{on:V||M.on,tools:ne}})},[D,P]),ue=(0,ie.useCallback)(B=>{if(!B.editable)return;let V=B.on?E.filter(M=>M!==B.key):[...E,B.key];r("tools",bP(C,V))},[C,E,r]),fe=(0,ie.useCallback)((B,V)=>{if(!B.editable)return;let M=V?[...E,...B.keys.filter(ne=>!E.includes(ne))]:E.filter(ne=>!B.keys.includes(ne));r("tools",bP(C,M))},[C,E,r]),re=(0,ie.useCallback)(B=>{r("approval_required_tools",EV(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),se=N.find(B=>B.source==="mcp"),ee=N.filter(B=>B.source!=="mcp").reduce((B,V)=>B+V.enabledCount,0)+(se?se.total:0),L=N.reduce((B,V)=>B+V.total,0);return l?ie.default.createElement(He,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:Y,fontSize:12,color:"var(--color-text-muted)"}},"?"),ie.default.createElement("input",{value:p,onChange:B=>f(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(zi,{options:v_,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(qe,{size:11,spacing:"0.05em"},B.label),ie.default.createElement("div",{style:{marginTop:6,fontFamily:Y,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(qe,null,"MCP services"),ie.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},de.length," of ",(C.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(oo,{selected:!m,onClick:()=>y(null)},"All ",(C.services||[]).length),Pbe.map(B=>ie.default.createElement(oo,{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(Bi,{href:ct("/mcp"),onClick:()=>kt("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),ie.default.createElement(XG,null,ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:VG,...GG}},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 V=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:VG,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},ie.default.createElement(ZG,{on:B.on,onClick:()=>H(B),title:`${B.on?"Disable":"Enable"} ${B.name} for this agent`}),ie.default.createElement("div",{onClick:()=>S(V?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"),Jd(B)&&ie.default.createElement(Ee,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Lv(B)&&ie.default.createElement(Ee,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),x_(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)",...X_}},B.description)),ie.default.createElement("span",null,ie.default.createElement(Ee,{tone:Tbe[B.status]||"muted"},B.status)),ie.default.createElement("span",{style:{...Ws,color:B.on?"var(--color-text-primary)":"var(--color-text-muted)"}},B.toolsLabel),ie.default.createElement("span",{style:Ws},I(B.calls)),ie.default.createElement("span",{style:{...Ws,color:B.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(B.errors)),ie.default.createElement("span",{style:{...Ws,color:"var(--color-text-muted)"}},I($v(B.last_seen))),ie.default.createElement("span",{onClick:()=>S(V?null:B.key),style:{cursor:"pointer",textAlign:"center"}},ie.default.createElement(ni,{kind:"chevron",open:V}))),V&&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:Y,fontSize:11,color:"var(--color-text-muted)"}},B.transport),ie.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},ie.default.createElement(Z_,{onClick:()=>K(B,!0),title:`Offer every tool ${B.name} serves`},"all"),ie.default.createElement(Z_,{onClick:()=>K(B,!1),disabled:!B.on,title:`Offer none of ${B.name}'s tools`},"none"))),B.tools.length===0?ie.default.createElement(Yn,{style:{padding:"10px 0"}},bV(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(YG,{on:M.on,dim:!B.on}),ie.default.createElement("span",{style:{minWidth:0}},ie.default.createElement("span",{style:{display:"block",fontFamily:Y,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)",...X_}},M.name),ie.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...X_}},M.description)),ie.default.createElement("span",{style:{...Ws,color:"var(--color-text-secondary)"}},I(M.calls)),ie.default.createElement("span",{style:{...Ws,color:M.errors?"var(--color-error-text)":"var(--color-text-muted)"}},I(M.errors?`${M.errors} err`:vP(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(Yn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"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(qe,null,"Tools"),ie.default.createElement("span",{style:{fontFamily:Y,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(oo,{selected:!b,onClick:()=>h(null)},"All ",L),N.map(B=>ie.default.createElement(oo,{key:B.source,selected:b===B.source,onClick:()=>h(b===B.source?null:B.source)},B.name," ",B.total)),ie.default.createElement(oo,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),ie.default.createElement(XG,null,ie.default.createElement("div",{style:{display:"grid",gridTemplateColumns:qG,...GG}},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 V=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]:V}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},ie.default.createElement(ni,{kind:"chevron",open:V}),ie.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},B.name)),ie.default.createElement("span",{style:{fontFamily:Y,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:Y,fontSize:11,color:"var(--color-text-cell)"}},B.countLabel),B.editable&&ie.default.createElement(ie.default.Fragment,null,ie.default.createElement(Z_,{onClick:()=>fe(B,!0)},"all"),ie.default.createElement(Z_,{onClick:()=>fe(B,!1)},"none")))),V&&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:qG,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(YG,{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:Y,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)",...X_}},M.description)),ie.default.createElement("span",null,ie.default.createElement(Ee,{tone:Obe[M.source]||"muted"},yP[M.source])),ie.default.createElement("span",{style:Ws},I(M.calls)),ie.default.createElement("span",{style:{...Ws,color:M.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(M.errors)),ie.default.createElement("span",{style:{...Ws,color:"var(--color-text-secondary)"}},I(vP(M.avg_duration_ms))),ie.default.createElement("span",{style:{...Ws,color:"var(--color-text-muted)"}},I($v(M.last_seen))),ie.default.createElement(Mbe,{tool:M,state:xP(M,F),onToggle:re}))))}),N.every(B=>B.rows.length===0)&&ie.default.createElement(Yn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"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(qe,{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:Y,fontSize:11,color:"var(--color-warning-text)"}},$," change",$===1?"":"s"," pending"),ie.default.createElement(le,{variant:"secondary",onClick:_e},"Discard")),ie.default.createElement(le,{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(Yn,null,"loading the roster\u2026"))}var Ibe=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],RG=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],Dbe=RG.map(e=>e.id),JG={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"]}},jbe={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function Sc({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(JG[e]||JG.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 Ho({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:No,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 QG({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?No:"transparent"}`,color:a?No:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function J_({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=hi(c),[p,f]=(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=Nu([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)(()=>{p==="versions"?A():p==="code"&&k()},[p]);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=Dbe.includes(p),F=p==="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(gn,{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(Sc,{tone:jbe[m.status]||"neutral",darkMode:c},m.status),g&&ge.default.createElement(Sc,{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(Ho,{variant:"secondary",colors:d,onClick:a},"Duplicate"),ge.default.createElement(Ho,{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(QG,{tabs:Ibe,active:p,onChange:f,colors:d}),ge.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),ge.default.createElement(QG,{tabs:RG,active:p,onChange:f,colors:d})),F?ge.default.createElement(gM,{agent:e,formData:m,updateField:_,onSave:E,hasChanges:g,isLoading:l}):j?ge.default.createElement("div",null,p==="traces"&&ge.default.createElement(Xd,{agentId:e.id,embedded:!0}),p==="metrics"&&ge.default.createElement(mM,{agent:e,embedded:!0}),p==="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(ql,{agentId:e.id,embedded:!0})),p==="evals"&&ge.default.createElement(y0,{embedded:!0,agentId:e.id}),p==="feedback"&&ge.default.createElement(Ube,{colors:d})):ge.default.createElement("div",{style:{background:d.cardBg,border:`1px solid ${d.cardBorder}`,borderRadius:"12px",padding:"20px"}},p==="config"&&ge.default.createElement(Lbe,{formData:m,updateField:_,providerModels:w,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&ge.default.createElement(zbe,{formData:m,updateField:_,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&ge.default.createElement(Bbe,{versions:b,agentId:e.id,onRestore:A,colors:d,darkMode:c}),p==="code"&&ge.default.createElement(Fbe,{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(Ho,{variant:"primary",size:"sm",colors:d,onClick:E,disabled:l},l?"Saving\u2026":"Save Changes"))))}var Hs=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Xl=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),$be=e=>({fontFamily:vt.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function Lbe({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:Hs(n)},"Agent Name"),ge.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Xl(n)})),ge.default.createElement("div",null,ge.default.createElement("label",{style:Hs(n)},"Preset Type"),ge.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Xl(n)},Object.keys(gf).map(i=>ge.default.createElement("option",{key:i,value:i},i))))),ge.default.createElement("div",null,ge.default.createElement("label",{style:Hs(n)},"Description"),ge.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Xl(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:Hs(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:Xl(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:Hs(n)},"Model"),ge.default.createElement(pl,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Xl(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:Hs(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:No}})),ge.default.createElement("div",null,ge.default.createElement("label",{style:Hs(n)},"Status"),ge.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Xl(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:$be(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(Ho,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function zbe({formData:e,updateField:t,meta:r,toggleArrayItem:n,colors:o}){let a=e.action_prompts||[],i=(u,c)=>{t("action_prompts",a.map((d,p)=>p===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:Hs(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:{...Xl(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:{...Hs(o),marginBottom:0}},"Action Prompts"),ge.default.createElement(Ho,{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:{...Xl(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:No}}),"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:{...Xl(o),fontFamily:vt.mono,resize:"vertical"}}))))),ge.default.createElement("div",null,ge.default.createElement("label",{style:Hs(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?No:o.inputBorder}`,background:c?No:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function Bbe({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(confirm("Restore this version? This will create a new version with the restored configuration."))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?No: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(Sc,{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(Ho,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):ge.default.createElement(eY,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function Fbe({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(Ho,{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 Ube({colors:e}){return ge.default.createElement("div",{style:{background:e.cardBg,border:`1px solid ${e.cardBorder}`,borderRadius:"12px",padding:"20px"}},ge.default.createElement(eY,{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 eY({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=q(X());async function Sg(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var Q_=q(X());var Wbe='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var rY=Object.freeze({events:500,chars:262144}),Hbe=16*1024,Kbe=3;function Vbe(e){return{emit:e,maskAllInputs:!0,blockSelector:Wbe,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function qbe(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function Gbe(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function Ybe(e,t=rY){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 tY(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function nY({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=rY,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",p=null,f=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(){f&&f(),f=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=qbe(z);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&E()}async function _(z,N){let O=Gbe(z,n());try{let $=await r(`/api/session_recordings/${encodeURIComponent(p)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:O,keepalive:N&&O.length<=Hbe});return tY($.status)}catch{return"retry"}}async function C(z){for(;u.length>0&&!h;){let N=u.splice(0,Ybe(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>=Kbe){v=0,S(),m&&m();return}u.unshift(...N),c+=O;return}}function E({final:z=!1}={}){return p===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(tY(z.status)==="off"?"off":"failed");return}let N=await z.json().catch(()=>null);if(b)return;if(p=N?.recording?.id??null,p===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(Vbe(k)):null}catch{$=null}if(typeof $!="function"){A("failed");return}f=$,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 hM(e,t){let[r,n]=(0,Q_.useState)("idle");return(0,Q_.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=nY({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 Xbe={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},Zbe=(e,t)=>{let r=Xbe[e]||{role:e,label:e};return{...yn(r.role,t),label:r.label}},yM={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"],Qbe=["user","assistant","tool"],Rbe=1200,e1e=600*1e3,R_=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",oY=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},vM=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()]},Wi=e=>e?.context_id??e?.output_metadata?.context_id??null,v0=e=>e.json().catch(()=>({})),aY=({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 t1e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=vM(e),i=c_(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=Zbe(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&&` ${R_(s.duration_ms)}`),s.at&&G.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&G.default.createElement(aY,{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"}},oY(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"}:{}}},oY(s.output)))))}))}function r1e({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(Sc,{tone:yM[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,R_(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 xM({agent:e,onBack:t,recorderUrl:r=null}){let{darkMode:n}=lt(),o=hi(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,p]=(0,G.useState)([]),[f,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,fe]=(0,G.useState)(!1),[re,_e]=(0,G.useState)(null),[de,se]=(0,G.useState)(!1),[Z,ee]=(0,G.useState)(!1),[L,B]=(0,G.useState)(null),[V,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),pe=(0,G.useRef)(null),Xe=(0,G.useRef)(!1),gr=(0,G.useRef)(!0),rr=(0,G.useRef)(null),nr=(0,G.useRef)([]),Ve=(0,G.useRef)(null),Gt=(0,G.useRef)(null),Ir=(0,G.useRef)(null),lo=(0,G.useRef)(null),ms=hM(h,r),la=(v?.messages||[]).filter(ae=>Qbe.includes(ae.role));(0,G.useEffect)(()=>{rr.current=F},[F]),(0,G.useEffect)(()=>{nr.current=d},[d]),(0,G.useEffect)(()=>{gr.current=!0,Ql();let ae=VV(window.location.search);return ae&&O2(ae),()=>{gr.current=!1,Mt.current+=1,Ki(rr.current),Ki({attachments:nr.current}),D(null),p([])}},[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)},[la.length,F,E?.logs?.length,E?.input_requests?.length,L,z]),(0,G.useEffect)(()=>{if(!Z)return;let ae=je=>{lo.current&&!lo.current.contains(je.target)&&ee(!1)};return document.addEventListener("mousedown",ae),()=>document.removeEventListener("mousedown",ae)},[Z]);let Ql=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(Pn=>Pn&&(Ze.current===Pn||zt.some(Vi=>Vi.id===Pn))?Pn: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 v0(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(Pn=>Pn.id!==st.id)]),Ze.current=st.id,g(st.id),st.id},ur=()=>Ht.current?Promise.resolve(Ht.current):rt(),Go=ae=>{Ze.current=null,l(ae)},uo=ae=>{Xe.current=ae,C(ae)},ua=()=>{pe.current?.waiting&&(pe.current=null,uo(!1))},Yo=()=>{ua(),j(null),$(null),I({}),H([])},Oa=ae=>{let je=ae?Number(ae):null;je!==Ht.current&&Yo(),Ze.current=je,g(je),N(null)},Vs=async()=>{if(!_)try{await rt(),w(null),N(null),Yo(),Ki(rr.current),D(null),B(null)}catch(ae){w(ae.message)}},Ki=ae=>{(ae?.attachments||[]).forEach(je=>{je.url&&je.url.startsWith("blob:")&&URL.revokeObjectURL(je.url)})},vp=ae=>{let je=Array.from(ae||[]).filter(Boolean);je.length!==0&&p(st=>[...st,...je.map(zt=>({file:zt,filename:zt.name,content_type:zt.type||"application/octet-stream",byte_size:zt.size,kind:YK(zt),url:zt.type&&zt.type.startsWith("image/")?URL.createObjectURL(zt):null}))])},gs=ae=>{p(je=>{let st=je[ae];return st?.url&&URL.revokeObjectURL(st.url),je.filter((zt,Pn)=>Pn!==ae)})},Rl=(ae,je)=>{Ki(rr.current),D(null),Ql();let st=Wi(ae)??je;st&&(st!==Ht.current?(Ze.current=st,g(st)):Ge(st),me(s))},Zn=(ae,je)=>{pe.current=null,uo(!1),H([]),Rl(ae,je)},B0=(ae,je)=>{pe.current={id:ae.id,contextId:Wi(ae)??je,waiting:!0},Rl(ae,je),w_()},xp=(ae,je)=>{if(!gr.current)return;let st=++Mt.current,zt=Date.now(),Pn=async()=>{if(Mt.current===st){try{let Vi=await fetch(`/api/runs/${ae}`);if(Vi.ok){let Xo=await Vi.json();if(Mt.current!==st)return;j(Xo.run);let hs=SP(Xo.run);if(hs==="finished"){Zn(Xo.run,je);return}if(hs==="awaiting"){B0(Xo.run,je);return}}}catch{}Date.now()-ztVi&&{...Vi,status:"failed",error_message:"Timed out waiting for the run to finish."}),$("Timed out waiting for the run to finish."))}};Pn()},F0=async({text:ae,files:je,fromComposer:st=!1})=>{let zt=(ae||"").trim();if(!zt&&je.length===0||_)return;$(null),N(null),B(null),uo(!0),I({}),H([]),j({status:"pending",input_prompt:zt,output:"",logs:[],started_at:new Date().toISOString()}),Ki(rr.current),D({content:zt||"(see attached files)",attachments:je.map(({file:Xo,...hs})=>hs)}),st&&(c(""),p([]));let Pn=Ht.current;if(!Pn)try{Pn=await rt()}catch(Xo){$(`${Xo.message} \u2014 running without a pinned conversation.`)}let Vi=()=>{st&&(c(zt),p(je)),D(null)};try{let Xo=new FormData;Xo.append("prompt",zt),Xo.append("action_name",s),Pn&&Xo.append("params[context_id]",String(Pn)),je.forEach(({file:V0})=>Xo.append("attachments[]",V0,V0.name));let hs=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:Xo}),wp=await v0(hs);if(hs.status===402&&wp.upgrade_required){K(wp.usage),j(V0=>({...V0,status:"failed",error_message:wp.message||"Plan limit reached"})),uo(!1),Vi();return}if(!hs.ok)throw new Error(wp.error||"Run failed");xp(wp.run.id,Wi(wp.run)??Pn)}catch(Xo){j(hs=>({...hs,status:"failed",error_message:Xo.message})),uo(!1),Vi()}},U0=()=>F0({text:u,files:d,fromComposer:!0}),jg=(ae,je)=>{let st=pe.current;!st||String(st.id)!==String(ae.run_id)||(H(zt=>[...zt.filter(Pn=>Pn.request.id!==ae.id),{request:ae,outcome:je}]),pe.current={...st,waiting:!1},xp(st.id,st.contextId))},$g=ae=>{let je=SP(ae);je==="finished"||Xe.current||($(null),I({}),H([]),j(ae),uo(!0),je==="awaiting"?B0(ae,Wi(ae)):xp(ae.id,Wi(ae)))},W0=(ae,je)=>{Ze.current=ae,je&&i.includes(je)&&je!==s&&l(je),g(ae)},O2=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=Wi(st.run);zt&&W0(zt,st.run.action_name),$g(st.run)}catch(je){console.error("Failed to open the linked run:",je)}},H0=ae=>{!ae||!ae.text||F0({text:ae.text,files:[]})},P2=ae=>{ae.key==="Enter"&&(ae.metaKey||ae.ctrlKey)&&(ae.preventDefault(),U0())},M2=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})}),Pn=await v0(zt);if(!zt.ok)throw new Error(Pn.error||`Could not save the message (HTTP ${zt.status})`);await Ge(st)},Lg=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 v0(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)}},I2=ae=>{ee(!1),B(ae),M(""),ve(null)},we=async()=>{let ae=V.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 v0(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(Wi(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=Wi(je);st?(N(null),st!==Ht.current&&Yo(),W0(st,je.action_name||ae.action_name),$g(je)):N({...je,output:je.output??je.output_preview,error_message:je.error_message??je.error}),Ve.current?.scrollIntoView({behavior:"smooth",block:"start"})},or=async()=>{fe(!0),_e(null);try{await Sg({planSlug:"pro"})}catch(ae){_e(ae.message),fe(!1)}},Cr=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,qr=a.find(ae=>ae.name===s)?.prompt,Pa=[e.instructions,s==="ask"?null:qr].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||"",D2=y.slice();h&&!D2.some(ae=>ae.id===h)&&D2.unshift({id:h,message_count:la.length});let GZ=(u.trim().length>0||d.length>0)&&!_,K0=E?.status==="awaiting_input",X3=K0?og(E.input_requests):[],YZ=new Set(P.map(({request:ae})=>ae.id)),Z3=E&&!_&&E.status==="failed",XZ=E&&!_&&E.status==="complete"&&!Wi(E)&&!h,bp={background:o.cardBg,border:`1px solid ${o.cardBorder}`,borderRadius:"12px"},J3={borderBottom:`1px solid ${o.cardBorder}`},Q3={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontSize:"13px",fontFamily:vt.mono,maxWidth:"260px"},R3={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${f?No:o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},j2=yn("system",n),ZZ=c_(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:bp,className:"p-4 flex items-center gap-3 flex-wrap"},G.default.createElement(gn,{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=>Go(ae.target.value),disabled:_,className:"aa-field",style:Q3,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=>Oa(ae.target.value),disabled:_,className:"aa-field",style:Q3,title:"Conversation to continue"},G.default.createElement("option",{value:""},"New conversation on first run"),D2.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(Ho,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:o,onClick:Vs,disabled:_,title:"Start an empty conversation for this action"},"+ New conversation"),G.default.createElement(Ho,{testId:"runner-back",variant:"secondary",size:"sm",colors:o,onClick:t},"\u2190 Back to editor"))),G.default.createElement("div",{"data-testid":"runner-context",ref:Ve,style:bp,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:J3},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 ",la.length," message",la.length===1?"":"s"),ms==="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"),ms==="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(r1e,{run:E,darkMode:n,colors:o}),v&&G.default.createElement(Ho,{testId:"runner-replay",variant:"secondary",size:"sm",colors:o,onClick:()=>kt(ng("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:lo},G.default.createElement(Ho,{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:()=>I2(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:()=>se(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:j2.background,color:j2.color,textAlign:"center"}},j2.label)),G.default.createElement("div",{className:"min-w-0 flex-1"},Pa?de?G.default.createElement("pre",{style:{...ZZ,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},Pa):G.default.createElement("div",{className:"text-sm truncate",style:{color:o.textSecondary}},Pa.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(aY,{open:de,color:o.textMuted})),S&&G.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},S),la.length>0?G.default.createElement("div",{className:"mt-3"},G.default.createElement(Li,{messages:la,darkMode:n,testIdPrefix:"runner-message",onUiAction:H0,onEditMessage:M2,onDeleteMessage:Lg})):!F&&!z&&!Z3&&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:yn("user",n).background,color:yn("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(d_,{attachments:F.attachments,darkMode:n}))),E&&(_||vM(E).length>0)&&G.default.createElement("div",{className:"mt-3 space-y-2"},G.default.createElement(t1e,{run:E,darkMode:n,colors:o,expanded:T,onToggle:ae=>I(je=>({...je,[ae]:!je[ae]}))}),_&&!K0&&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,vM(E).length>0?"Working\u2026":"Starting run\u2026"))),(X3.length>0||P.length>0)&&G.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},K0&&G.default.createElement("div",{className:"text-sm",style:{color:o.textSecondary}},"Paused for input: answer to continue this run."),X3.filter(ae=>!YZ.has(ae.id)).map(ae=>G.default.createElement(Qd,{key:ae.id,request:ae,showRunLink:!1,onSettled:jg})),P.map(({request:ae,outcome:je})=>G.default.createElement(Qd,{key:ae.id,request:ae,initialOutcome:je,showRunLink:!1}))),O&&G.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},O),Z3&&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)),XZ&&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(ss,{text:E.output||"No output",darkMode:n,onUiAction:H0})),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(Sc,{tone:yM[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,R_(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(ss,{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:yn(L,n).background,color:yn(L,n).color}},yn(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:V,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:{...R3,border:`1px solid ${o.inputBorder}`}}),G.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},G.default.createElement(Ho,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:o,onClick:we,disabled:ne||!V.trim()},ne?"Adding\u2026":`Add ${L} message`),G.default.createElement(Ho,{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:bp,className:"p-4"},G.default.createElement("div",{onDragOver:ae=>{ae.preventDefault(),f||m(!0)},onDragLeave:()=>m(!1),onDrop:ae=>{ae.preventDefault(),m(!1),_||vp(ae.dataTransfer?.files)}},G.default.createElement("textarea",{"data-testid":"runner-prompt",value:u,onChange:ae=>c(ae.target.value),onKeyDown:P2,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:R3})),G.default.createElement(d_,{attachments:d,darkMode:n,testId:"runner-attachment-chip",onRemove:(ae,je)=>gs(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=>{vp(ae.target.files),ae.target.value=""}}),G.default.createElement(Ho,{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(Ho,{testId:"runner-run",variant:"primary",colors:o,onClick:U0,disabled:!GZ},_&&K0?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:bp,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(Sc,{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:bp,className:"overflow-hidden"},G.default.createElement("div",{className:"px-4 py-3",style:J3},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:Wi(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(Sc,{tone:yM[ae.status]||"neutral",darkMode:n},ae.status),G.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},R_(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),Wi(ae)&&G.default.createElement("span",{className:"font-mono"},"#",Wi(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:bp,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"},Jbe.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=q(X()),e2=e=>new Date(`${e}T00:00:00`),n1e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function bM({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 f=await(await fetch(`/api/analytics?days=${a}`)).json();r(f)}catch(p){console.error("Failed to load analytics:",p)}finally{o(!1)}},l=p=>p?p>=1e6?`${(p/1e6).toFixed(1)}M`:p>=1e3?`${(p/1e3).toFixed(1)}K`:p.toString():"0",u=p=>p?p<1e3?`${p}ms`:`${(p/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(p=>p.count)):1,d=t?.charts?.tokens_by_day?.length>0?Math.max(...t.charts.tokens_by_day.map(p=>p.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:p=>i(Number(p.target.value)),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},n1e.map(p=>Ue.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ue.default.createElement(x0,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ue.default.createElement(x0,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ue.default.createElement(x0,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ue.default.createElement(x0,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ue.default.createElement(x0,{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((p,f)=>Ue.default.createElement("div",{key:p.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:`${p.count/c*150}px`,minHeight:p.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"},p.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&&e2(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&&e2(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((p,f)=>Ue.default.createElement("div",{key:p.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:`${p.tokens/d*150}px`,minHeight:p.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(p.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&&e2(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&&e2(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((p,f)=>Ue.default.createElement("div",{key:p.id,onClick:()=>e?.(p),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"},f+1),Ue.default.createElement("div",{className:"flex-1 min-w-0"},Ue.default.createElement("p",{className:"font-medium text-gray-900 truncate"},p.name),Ue.default.createElement("p",{className:"text-sm text-gray-500"},p.run_count," runs")),Ue.default.createElement("div",{className:"text-right"},Ue.default.createElement("p",{className:"font-medium text-gray-900"},l(p.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(([p,f])=>{let m=t?.summary?.total_runs||1,y=(f/m*100).toFixed(1);return Ue.default.createElement("div",{key:p},Ue.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ue.default.createElement("span",{className:"capitalize text-gray-600"},p),Ue.default.createElement("span",{className:"text-gray-900 font-medium"},f)),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 x0({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=q(X());function wM({agent:e,onBack:t}){let{timeWindow:r}=Ls(),[n,o]=(0,R.useState)([]),[a,i]=(0,R.useState)([]),[s,l]=(0,R.useState)(null),[u,c]=(0,R.useState)(null),[d,p]=(0,R.useState)([]),[f,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=Gn(),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),p([]);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),p(oe.messages||[]),m("run"),c(null),ne&&K(`${H}/runs/${M}`)}catch(U){console.error("Failed to load run details:",U)}},fe=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),p([]),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)},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 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)}`,V=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(zs,{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:()=>fe(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"},V(M.created_at||M.occurred_at)),!ne&&R.default.createElement(fc,{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"},"/"),f==="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"},"/"),f==="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"},se)):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 ${f==="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 ${f==="all"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Sessions")),f==="run"&&s&&R.default.createElement("span",{className:`px-3 py-1 rounded-full text-sm font-medium ${ee(s.status)}`},s.status)),f==="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(gn,{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?`${se} \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(ql,{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(gn,{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(Li,{messages:d,darkMode:!1}):R.default.createElement(Li,{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(gn,{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(gn,{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,V(U.last_activity_at)),R.default.createElement(fc,{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 ",V(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,V(oe.created_at)))))))))))})()))}var Qe=q(X());var o1e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function SM({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),[p,f]=(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=>{f(!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{f(!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,o1e[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(gn,{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(gn,{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:p,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"},p?"Creating...":"Use This Template"),m&&Qe.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var tt=q(X());function kM({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 p=o?.name||"My Workspace",f=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=xV(s).map(g=>({...g,items:g.items.map(v=>({id:v.view,label:v.label,icon:v.glyph??go.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(gn,{size:28}),tt.default.createElement("span",{className:`font-semibold truncate ${l?"text-white":"text-gray-900"}`},p)),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(gn,{size:32}),tt.default.createElement("div",{className:"min-w-0"},tt.default.createElement("div",{className:`font-medium truncate ${l?"text-white":"text-gray-900"}`},p)))),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"},f))))),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"}},go.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"}},go.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=q(X());function _M({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(p){i.current&&!i.current.contains(p.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,p=document.createElement("form");p.method="POST",p.action=s;let f=document.createElement("input");f.type="hidden",f.name="_method",f.value="delete",p.appendChild(f);let m=document.createElement("input");m.type="hidden",m.name="authenticity_token",m.value=d,p.appendChild(m),document.body.appendChild(p),p.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=q(X());var nt=q(X());var CM=150,a1e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),i1e=e=>e.length?a1e(e)/e.length:0,ds=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),AM=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},lp=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),s1e=4,kg=e=>Math.max(s1e,AM(e)),iY=(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},l1e=5.5,u1e=12,c1e=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*l1e+u1e,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},d1e=typeof window>"u"?nt.useEffect:nt.useLayoutEffect,p1e=e=>{let[t,r]=(0,nt.useState)(0);return d1e(()=>{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},up=(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(" ")},t2=(e,t)=>{let r=up(e,t);return r?`0,100 ${r} 100,100`:""},sY=(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 i1e(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(" ")},b0=(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 lY({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(qe,{size:11,spacing:"0.05em"},e),nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,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:Y,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?nt.default.createElement("span",{style:{fontFamily:Y,fontSize:12,color:"var(--color-text-muted)"}},r):null),nt.default.createElement("div",{title:n,style:{fontFamily:Y,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 uY({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=CM}){let p=(0,nt.useRef)(null),f=p1e(p),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:Y,fontSize:10,color:"var(--color-text-muted)"}},t),nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,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:Y,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:p,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:Y,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=c1e(y,f),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:Y,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:Y,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,b)=>nt.default.createElement("span",{key:b},y))))}function _g({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(qe,null,e),t?nt.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?nt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function EM({template:e,columns:t}){return nt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:Y,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 r2({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 NM({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 w0({children:e}){return nt.default.createElement("div",{style:{padding:"12px 14px",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},e)}function TM({color:e}){return nt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function OM({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 PM({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 Hi({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return nt.default.createElement("span",{style:{fontFamily:Y,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var fY=6e4,f1e=1180,Ag={"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"}},m1e=Object.keys(Ag).map(e=>({value:e,label:e})),IM="24h",Cg=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],S0=[{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)"}],cY=e=>S0.find(t=>t.type===e)?.color||"var(--color-text-muted)",g1e=3,o2="var(--color-text-primary)",h1e={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},y1e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],MM=e=>String(e).padStart(2,"0"),Et=e=>e==null||Number.isNaN(Number(e))?0:Number(e),v1e=e=>e.reduce((t,r)=>t+Et(r),0),dY=e=>`${Et(e).toFixed(1)}%`,n2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,x1e=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,b1e=(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},w1e=e=>{let t=String(e.label||"incident"),r=S0.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},S1e=e=>{let t=Et(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},pY=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},k1e=(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()}))},_1e=(e,t)=>{let r=e.summary||{},n=Ag[e.range]||Ag[t]||Ag[IM],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:k1e(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(f=>({name:f.name,requests:Et(f.requests),share_pct:s?Et(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?Et(f.errors)/Et(f.requests)*100:0,cost:Et(f.cost),tokens:Et(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:S0.map(f=>({type:f.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:p,markers:Array.isArray(e.markers)?e.markers:[]}},mY=e=>{let t=Ag[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:S1e(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},C1e=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 DM(){let[e,t]=(0,Ie.useState)(IM),[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),p=(0,Ie.useRef)(0),f=C1e(f1e),m=(0,Ie.useRef)(null),y=(0,Ie.useCallback)(async()=>{let S=++p.current;try{let w=new URLSearchParams({range:e});r&&w.set("agent",r);let[A,k]=await Promise.all([pY(w),r?pY(new URLSearchParams({range:e})).catch(()=>null):null]);if(S!==p.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!==p.current)return;u(w.message)}finally{S===p.current&&s(!1)}},[e,r]);(0,Ie.useEffect)(()=>{let S=!1;d(!0),y().finally(()=>{S||d(!1)});let w=setInterval(y,fY);return()=>{S=!0,clearInterval(w)}},[y]);let b=(0,Ie.useMemo)(()=>o?_1e(o.data,e):null,[o,e]),h=(0,Ie.useMemo)(()=>b?b.agent?b1e(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,Cg[k%Cg.length]])),w=g.length;return(b?b.agents:[]).forEach(A=>{A.name&&!S[A.name]&&(S[A.name]=Cg[w++%Cg.length])}),A=>S[A]||Cg[0]},[g,b]),x=(0,Ie.useMemo)(()=>b?E1e(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:o2}},"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(A1e,{m:b,view:x,railAgents:h,range:Ag[e]?e:IM,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:f,pending:c,onRange:t,onAgent:n})}function A1e({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=mY(e),p=e.totals.requests===0,f=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:o2,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:o2,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:Y,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(zi,{options:m1e,value:n,onChange:u}),Ie.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${fY/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:Y,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"))),p?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:Y,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(lY,{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(uY,{key:m.title,...m,xLabels:t.xLabels,height:CM}))),Ie.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},Ie.default.createElement(_g,{label:"Agents",qualifier:"by requests \xB7 click to filter"},Ie.default.createElement(EM,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&Ie.default.createElement(w0,null,"no agents in this window"),r.map(m=>Ie.default.createElement(r2,{key:m.name,template:"minmax(0, 1fr) 44px 44px 40px 52px",active:o===m.name,onClick:()=>f(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(TM,{color:i(m.name)}),Ie.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),Ie.default.createElement(OM,{pct:m.share_pct,color:i(m.name)})),Ie.default.createElement(Hi,null,fn(m.requests)),Ie.default.createElement(Hi,{color:"var(--color-text-secondary)"},ao(m.p95_ms)),Ie.default.createElement(Hi,{color:Et(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},dY(m.error_rate)),Ie.default.createElement(Hi,null,zv(m.cost))))),Ie.default.createElement(_g,{label:"Models",qualifier:"by tokens"},e.models.length===0&&Ie.default.createElement(w0,null,"no model usage in this window"),e.models.map((m,y)=>Ie.default.createElement(r2,{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:Y,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&Ie.default.createElement("span",{style:{fontFamily:Y,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),Ie.default.createElement(OM,{pct:m.share_pct,color:"var(--color-token-in)"})),Ie.default.createElement(Hi,null,fn(m.tokens)),Ie.default.createElement(Hi,{color:"var(--color-text-secondary)"},zv(m.cost))))),Ie.default.createElement(_g,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&Ie.default.createElement(w0,null,"no actions in this window"),e.actions.map(m=>Ie.default.createElement(NM,{key:m.name},Ie.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:Y,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ie.default.createElement(PM,{pct:t.slowestP95?Et(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),Ie.default.createElement(Hi,{weight:600,width:40},ao(m.p95_ms))))),Ie.default.createElement(_g,{label:"Tools",qualifier:"by calls"},Ie.default.createElement(EM,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&Ie.default.createElement(w0,null,"no tool calls in this window"),e.tools.map(m=>Ie.default.createElement(r2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},Ie.default.createElement("span",{title:m.name,style:{fontFamily:Y,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ie.default.createElement(Hi,null,fn(m.calls)),Ie.default.createElement(Hi,{color:"var(--color-text-secondary)"},ao(m.avg_ms)),Ie.default.createElement(Hi,{color:Et(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},dY(m.error_rate))))),Ie.default.createElement(_g,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>Ie.default.createElement(NM,{key:m.type},Ie.default.createElement(TM,{color:cY(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(PM,{pct:t.errorTotal?Et(m.count)/t.errorTotal*100:0,color:cY(m.type)}),Ie.default.createElement(Hi,{weight:600,width:32},Math.round(Et(m.count))))))))))}function E1e(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=mY(e),s=r.map(U=>new Date(U.ts)),l=e.windowMinutes>=2880,u=U=>Number.isNaN(U.getTime())?"":l?`${y1e[U.getDay()]} ${MM(U.getHours())}h`:`${MM(U.getHours())}:${MM(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])),p=d("requests"),f=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:Cg[0],data:p}],C=S0.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(-g1e).map(U=>j(U,U.label)).filter(Boolean),D=e.markers.find(U=>U.kind==="incident"),z=D?j(D,w1e(D)):null,N=z?[z]:[],O=kg(ds(p)*1.1),$=kg(ds(f)*1.15),T=kg(Math.max(ds(w),ds(S),ds(x))*1.05),I=kg(Math.max(ds(m),ds(y))*1.1),P=AM(ds(b)*1.1),H=iY(P),Q=kg(ds(h)*1.1),K=Et(n.requests),ue=Et(n.requests_per_minute),fe=Et(n.errors),re=Et(n.error_rate),_e=Et(n.tokens)||Et(n.tokens_in)+Et(n.tokens_out),de=Et(n.cost),se=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===S0[0].type)?.count),B=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${fn(K)} \xB7 ${ue.toFixed(1)}/min`,legend:_.map(U=>({label:U.label,color:U.color})),ticks:lp(O,fn),buckets:b0(_,O,U=>`${u(s[U])} \xB7 ${Math.round(p[U])} req`),markers:F},{title:"Latency",sub:"generation percentiles",value:`p50 ${ao(n.p50_ms)}`,legend:[{label:`p50 ${ao(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${ao(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${ao(n.p99_ms)}`,color:"var(--color-error)"}],ticks:lp(T,x1e),lines:[{points:up(w,T),color:"var(--color-error)",width:1.5},{points:up(S,T),color:"var(--color-warning)",width:1.5},{points:up(x,T),color:"var(--color-token-in)",width:2}],areas:[{points:t2(x,T),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${re.toFixed(2)}% \xB7 ${n2(Math.round(fe),"error")}`,valueColor:re>1?"var(--color-error)":o2,legend:C.map(U=>({label:U.label,color:U.color})),ticks:lp($,U=>String(Math.round(U))),buckets:b0(C,$,U=>`${u(s[U])} \xB7 ${n2(Math.round(f[U]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${fn(_e)} \xB7 in ${fn(n.tokens_in)} / out ${fn(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:lp(I,fn),lines:[{points:up(m,I),color:"var(--color-token-in)",width:1.5},{points:up(y,I),color:"var(--color-token-out)",width:1.5}],areas:[{points:t2(m,I),color:"var(--color-token-in)"},{points:t2(y,I),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${zv(de)} \xB7 ${Bv(se)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:lp(P,U=>Bv(U,H)),buckets:b0([{color:"var(--color-text-secondary)",data:b}],P,U=>`${u(s[U])} \xB7 ${Bv(b[U],H)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${fn(Z)} \xB7 ${ee.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:lp(Q,fn),buckets:b0([{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 ${n2(Math.round(h[U]),"call")}`)}],V=(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,pe,Xe)=>({label:U,value:oe,unit:ve,sub:Ze,delta:Ht,deltaColor:h1e[Mt],spark:sY(pe),sparkColor:Xe});return{signals:[M("Requests",fn(K),"",`${ue.toFixed(1)} req/min`,ag(o.requests_pct),V(o.requests_pct,U=>U>0,null),p,"var(--color-token-in)"),M("Latency",ao(n.p50_ms),"p50",`p95 ${ao(n.p95_ms)} \xB7 p99 ${ao(n.p99_ms)}`,ag(o.p50_pct),V(o.p50_pct,U=>U<0,U=>U>0),x,"var(--color-token-in)"),M("Error rate",re.toFixed(2),"%",`${n2(Math.round(fe),"error")} \xB7 ${Math.round(L)} rate-limited`,ag(o.error_rate_pt," pt",1),V(o.error_rate_pt,U=>U<0,U=>U>0),f,"var(--color-error)"),M("Tokens",fn(_e),"",`in ${fn(n.tokens_in)} \xB7 out ${fn(n.tokens_out)}`,ag(o.tokens_pct),"muted",m.map((U,oe)=>U+y[oe]),"var(--color-token-in)"),M("Cost",zv(de),"",`${Bv(se)} per request`,ag(o.cost_pct),"muted",b,"var(--color-text-secondary)")],panels:B,xLabels:c,slowestP95:ds(e.actions.map(U=>U.p95_ms)),errorTotal:v1e(e.errorsByType.map(U=>U.count))}}var De=q(X());var N1e=6e4,T1e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],gY={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)"}},k0=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),hY=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,O1e=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 jM({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)(""),[p,f]=(0,De.useState)(168),[m,y]=(0,De.useState)(null),b=(0,De.useCallback)(async()=>{try{let _=new URLSearchParams({hours:String(p)});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,p]);(0,De.useEffect)(()=>{let _=setTimeout(b,c?250:0);return()=>clearTimeout(_)},[b,c]),(0,De.useEffect)(()=>{let _=setInterval(b,N1e);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=gY[_]||gY.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"}},T1e.map(_=>De.default.createElement("button",{key:_.value,onClick:()=>f(_.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${p===_.value?"#ef4444":h.border}`,background:p===_.value?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:p===_.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:k0(x.total_tools),hint:`${x.active_tools||0} called in this window`}),De.default.createElement(k,{label:"Tool Calls",value:k0(x.total_calls),hint:`${hY(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:k0(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:k0(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"}},k0(_.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"}},hY(_.avg_duration_ms)),De.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},O1e(_.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 P1e({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=q(X());var M1e=6e4,I1e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],D1e=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],j1e=["http","streamable_http","sse"],yY={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)"}},_0=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function $M({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,p]=(0,ze.useState)(168),[f,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,M1e);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=yY[D]||yY.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"}},I1e.map(D=>ze.default.createElement("button",{key:D.value,onClick:()=>p(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:_0(k.active),hint:"called in this window"}),ze.default.createElement(F,{label:"Configured",value:_0(k.configured),hint:"declared, no traffic yet"}),ze.default.createElement(F,{label:"Available",value:_0(k.available),hint:"defaults you can connect"}),ze.default.createElement(F,{label:"Tool Calls",value:_0(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"}},D1e.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=f===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"),Jd(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"),Lv(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"),x_(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}},_0(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($1e,{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 $1e({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:j1e.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=q(X());var kc=q(X());var i2={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},xn={log(...e){this.enabled&&(e.push(Date.now()),i2.logger.log("[ActionCable]",...e))}},A0=()=>new Date().getTime(),a2=e=>(A0()-e)/1e3,E0=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=A0(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),xn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=A0(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),xn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=A0()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,xn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=A0(),xn.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()&&(xn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${a2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?xn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${a2(this.disconnectedAt)} s`):(xn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return a2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&a2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(xn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};E0.staleThreshold=6;E0.reconnectionBackoffRate=.15;var xY={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:C0,protocols:LM}=xY,L1e=LM.slice(0,LM.length-1),vY=[].indexOf,N0=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new E0(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return xn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...LM,...this.consumer.subprotocols||[]];return xn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new i2.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(xn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){xn.log("Failed to reopen WebSocket",t)}finally{xn.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 vY.call(L1e,this.getProtocol())>=0}isState(...t){return vY.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in i2.WebSocket)if(i2.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(){}}};N0.reopenDelay=500;N0.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 C0.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case C0.disconnect:return xn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case C0.ping:return null;case C0.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 C0.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(xn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return xn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(xn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){xn.log("WebSocket onerror event")}};var z1e=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},zM=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),z1e(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)}},BM=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(xn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):xn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){xn.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=>{xn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},FM=class{constructor(t){this.consumer=t,this.guarantor=new BM(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new zM(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){xn.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})}},UM=class{constructor(t){this._url=t,this.subscriptions=new FM(this),this.connection=new N0(this),this.subprotocols=[]}get url(){return B1e(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 B1e(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 bY(e=F1e("url")||xY.default_mount_path){return new UM(e)}function F1e(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var s2=null;function U1e(){if(s2===null)try{s2=bY()}catch{s2=!1}return s2||null}function Eg(e,t,r,n=!0){let o=(0,kc.useRef)(null),a=(0,kc.useRef)(r);return(0,kc.useEffect)(()=>{a.current=r},[r]),(0,kc.useEffect)(()=>{if(!n||!e)return;let s=U1e();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,kc.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function Ng(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var l2=[{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"}],W1e={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"}]},wY={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function WM({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),[p,f]=(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 V=>{try{let M=await fetch(`/api/sandboxes/${V}`);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)(V=>{!Ng(V)||!o?.session_id||T(o.session_id)},[T,o?.session_id]);Eg("SandboxChannel",{session_id:o?.session_id},I,!!o?.session_id),(0,J.useEffect)(()=>{H(),P()},[r]);let P=async()=>{try{let V=await fetch("/api/usage");if(V.ok){let M=await V.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 V=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(V))},1e3);return()=>clearInterval(V)},[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 V=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:r})});if(!V.ok)throw new Error("Failed to create sandbox session");let M=await V.json();a(M.sandbox),u([]),d(null)}catch(V){h(V.message)}finally{y(!1)}},Q=async()=>{!i.trim()||p||!o||(F&&E.length>1?await ue():await K(E[0]||"anthropic"))},K=async V=>{f(!0),d({status:"running",task:i,provider:V,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:V})}),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"})),f(!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})),f(!1)}},ue=async()=>{f(!0),$([...E]),N({});let V={};E.forEach(M=>{V[M]={status:"running",result:"",started_at:new Date().toISOString()}}),N(V);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),fe(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}}))}),f(!1),$([])}},fe=(V,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(pe=>({...pe,[Mt.provider]:{...Mt,provider:Mt.provider}})),(Mt.status==="completed"||Mt.status==="failed")&&Ht.add(Mt.provider))}),V.every(Mt=>Ht.has(Mt))){f(!1),$([]);return}setTimeout(U,1e3)}catch(oe){console.error("Comparison polling failed:",oe),f(!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"})&&(f(!1),$([]))}catch(V){console.error("Polling error:",V)}},_e=V=>{j(M=>M.includes(V)?M.length===1?M:M.filter(ne=>ne!==V):[...M,V])},de=async V=>{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")){f(!1);return}setTimeout(M,1e3)}catch{f(!1)}};M()},se=V=>{V.key==="Enter"&&(V.metaKey||V.ctrlKey)&&Q()},Z=V=>{if(!V)return"--:--";let M=Math.floor(V/60),ne=V%60;return`${M}:${ne.toString().padStart(2,"0")}`},ee=V=>{switch(V){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 Sg({planSlug:"pro",billingInterval:V})}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(gn,{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:V=>s(V.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: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"}`},p?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(V=>{let M=l2.find(U=>U.id===V),ne=z[V];return J.default.createElement("div",{key:V,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||V),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 ${l2.find(V=>V.id===c.provider)?.color||"bg-gray-400"}`}),J.default.createElement("span",{className:"text-sm text-gray-600"},l2.find(V=>V.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:V=>D(V.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"},l2.map(V=>J.default.createElement("label",{key:V.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${E.includes(V.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(V.id),onChange:()=>_e(V.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),J.default.createElement("div",{className:`w-2 h-2 rounded-full ${V.color}`}),J.default.createElement("span",{className:"text-sm font-medium text-gray-900"},V.name)),J.default.createElement("span",{className:"text-xs text-gray-500"},V.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"},W1e[r]?.map((V,M)=>J.default.createElement("button",{key:M,onClick:()=>s(V.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"},V.name),J.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},V.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||wY.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"},wY.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((V,M)=>J.default.createElement("div",{key:V.id||M,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>d(V)},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(V.status||"completed")}`},V.status||"completed"),J.default.createElement("span",{className:"text-xs text-gray-400"},V.tokens||0," tokens")),J.default.createElement("p",{className:"text-sm text-gray-600 truncate"},V.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=q(X());var so=q(X());var HM=["message","llm","tool","browser"];function u2(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function SY(e={}){let t=[];return HM.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=u2(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 kY(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&u2(t.rrweb.first_at)!==null).map(t=>{let r=u2(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,u2(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function _Y(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function CY(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),p={startMs:u,endMs:d,axisStart:i,axisEnd:i+(d-u)};return i=p.axisEnd+r,p}),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 AY(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 EY(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 KM(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 TY(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 PY(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 Tg(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 c2(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 VM(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function H1e(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 MY(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=VM(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",H1e(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"}: ${VM(t.message??t.value)}`:e.kind==="marker"?`marker: ${VM(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function Og(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function K1e(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 V1e(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 IY(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(V1e(e,a));if(o())return{count:i,truncated:!1};let l=K1e(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 Zl=[{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)"}],T0=18,q1e=76,cp=(e,t)=>e.totalMs?t/e.totalMs*100:0,G1e=(0,so.memo)(function({axis:t,entries:r,recordings:n}){let o=AY(t);return so.default.createElement(so.default.Fragment,null,o.map(a=>so.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${c2(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${cp(t,a.axisStart)}%`,width:`${cp(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Zl.map((a,i)=>so.default.createElement(so.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=_c(t,s.startMs);return so.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*T0+7,height:4,borderRadius:2,left:`${cp(t,l)}%`,width:`${Math.max(cp(t,_c(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=_c(t,s.startMs);return so.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*T0+4,height:T0-8,borderRadius:2,left:`${cp(t,l)}%`,width:`max(3px, ${cp(t,_c(t,s.endMs)-l)}%)`,background:Og(s)?"var(--color-error)":a.color}})}))))});function qM({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,so.useRef)(null),i=Zl.length*T0,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 so.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},so.default.createElement("div",{style:{width:q1e,flexShrink:0}},Zl.map(u=>so.default.createElement("div",{key:u.lane,style:{height:T0,display:"flex",alignItems:"center",gap:6,fontFamily:Y,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},so.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),so.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"}},so.default.createElement(G1e,{axis:e,entries:t,recordings:r}),so.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${cp(e,n)}%`,background:"var(--color-text-primary)"}})))}var Io=q(X());var Y1e=Object.fromEntries(Zl.map(e=>[e.lane,e])),X1e=(0,Io.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=Y1e[t.lane],l=Og(t);return Io.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"}},Io.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},Tg(t.startMs-r)),Io.default.createElement("span",{style:{fontFamily:Y,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),Io.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},MY(t)),t.duration_ms>0&&Io.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),DY=(0,Io.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,Io.useRef)(null),l=(0,Io.useRef)(null);return(0,Io.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?Io.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>Io.default.createElement(X1e,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):Io.default.createElement("div",{style:{padding:20,fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var oi=q(X());var Z1e=Object.fromEntries(Zl.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:Y,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function Q1e(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function R1e({label:e,value:t}){let r=Q1e(t);return r==null?null:oi.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},oi.default.createElement(qe,{size:10},e),oi.default.createElement("pre",{style:J1e},r))}function ewe(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 GM({entry:e}){return e?oi.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},oi.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},oi.default.createElement(Ee,{tone:Og(e)?"error":"muted"},Z1e[e.lane]),e.role&&oi.default.createElement(Ee,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&oi.default.createElement("span",{style:{fontFamily:Y,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),oi.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,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&&oi.default.createElement("div",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),ewe(e).map(([t,r])=>oi.default.createElement(R1e,{key:t,label:t,value:r}))):oi.default.createElement("div",{style:{padding:16,fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var Bn=q(X());var jY="action-agent-session-player",$Y="/session_player",LY="allow-scripts allow-same-origin";function zY(e,t={}){return{...t,channel:jY,type:e}}function BY(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===jY&&typeof e.data.type=="string"}async function rwe(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 nwe="the session player did not start",owe={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 YM({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,Bn.useRef)(null),s=(0,Bn.useRef)(null),[l,u]=(0,Bn.useState)(!1),[c,d]=(0,Bn.useState)(!1),[p,f]=(0,Bn.useState)(null),[m,y]=(0,Bn.useState)({state:"loading"}),b=OY(e,t),h=b?.id,g=p!==null&&p===s.current,v=b?PY(b,t):null,x=(A,k)=>{i.current?.contentWindow?.postMessage(zY(A,k),window.location.origin)};(0,Bn.useEffect)(()=>{let A=k=>{if(!BY(k,i.current?.contentWindow,window.location.origin))return;let{type:_}=k.data;_==="ready"?d(!0):_==="loaded"?f(k.data.token):_==="error"&&y({state:"error",message:k.data.message})};return window.addEventListener("message",A),()=>window.removeEventListener("message",A)},[]),(0,Bn.useEffect)(()=>{if(!l||c)return;let A=setTimeout(()=>y({state:"error",message:nwe}),5e3);return()=>clearTimeout(A)},[l,c]),(0,Bn.useEffect)(()=>{if(!c||h==null)return;let A=!1,k=[],_=`${h}:${Date.now()}`;return s.current=_,f(null),y({state:"loading"}),IY(h,{fetchPage:rwe,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,Bn.useEffect)(()=>{!g||!v||x("seek",{offset:v.offsetMs,playing:n&&S==="during"})},[g,a,n,S]),(0,Bn.useEffect)(()=>{g&&x("speed",{speed:o})},[g,o]);let w=m.state==="error"?m.message:S==="before"?`the browser recording starts at ${Tg(b.startMs-r)}`:owe[m.state];return Bn.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},Bn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},Bn.default.createElement(qe,null,"browser"),b&&Bn.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},b.name||`recording ${b.id}`,e.length>1?` \xB7 ${e.indexOf(b)+1} of ${e.length}`:""),w&&Bn.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},w)),Bn.default.createElement("iframe",{ref:i,title:"Browser recording",src:ct($Y),sandbox:LY,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 sa=q(X());function XM(e){let[t,r]=(0,sa.useState)(0),[n,o]=(0,sa.useState)(!1),[a,i]=(0,sa.useState)(1),[s,l]=(0,sa.useState)(0),u=(0,sa.useRef)(0),c=(0,sa.useRef)(0),d=(0,sa.useCallback)((y,b)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=NY(e,h);return u.current=h,r(h),(b||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,sa.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 p=(0,sa.useCallback)(y=>d(y,!0),[d]),f=(0,sa.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,sa.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var awe=[.5,1,2,4,8,16],iwe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function swe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function lwe(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function uwe({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ot.useMemo)(()=>SY(r.lanes),[r]),i=(0,ot.useMemo)(()=>kY(r.recordings),[r]),s=(0,ot.useMemo)(()=>CY(_Y(a,i)),[a,i]),l=XM(s),{seek:u,pause:c}=l,[d,p]=(0,ot.useState)(()=>new Set(HM)),[f,m]=(0,ot.useState)(null),y=EY(s,l.position)??s.startMs,b=(0,ot.useMemo)(()=>a.filter(E=>d.has(E.lane)),[a,d]),h=a[KM(a,y)]||null,g=b[KM(b,y)]?.id??null,v=a.find(E=>E.id===f)||h,x=(0,ot.useMemo)(()=>lwe(a),[a]),S=(0,ot.useCallback)(E=>{c(),m(E.id),u(_c(s,E.startMs))},[s,c,u]),w=E=>{let j=TY(b,y,E);j!==null&&(c(),m(null),u(_c(s,j)))},A=()=>{m(null),l.togglePlay()},k=E=>p(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(le,{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)"}},iwe[e]||"Session"," #",t),ot.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:Y,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,c2(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(le,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>w(-1)},"|<"),ot.default.createElement(le,{size:"sm",variant:"primary",testId:"replay-play",onClick:A,style:{minWidth:72}},l.playing?"Pause":"Play"),ot.default.createElement(le,{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:Y,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},awe.map(E=>ot.default.createElement("option",{key:E,value:E},E,"x"))),ot.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:Y,fontSize:12,color:"var(--color-text-primary)"}},Tg(y-s.startMs)),ot.default.createElement("span",{style:{fontFamily:Y,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(qM,{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(qe,{style:{marginRight:6}},"timeline"),Zl.map(E=>ot.default.createElement(oo,{key:E.lane,mono:!0,selected:d.has(E.lane),onClick:()=>k(E.lane)},E.label," ",x[E.lane]||0))),ot.default.createElement(DY,{entries:b,startMs:s.startMs,currentId:g,selectedId:f,playing:l.playing,onChoose:S})),ot.default.createElement(He,{padding:0},ot.default.createElement(GM,{entry:v}))),i.length>0&&ot.default.createElement(He,{padding:14},ot.default.createElement(YM,{recordings:i,time:y,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function ZM({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(swe(e,t)).then(async d=>{if(c)return;if(d.status===404)return a({status:"missing"});let p=await d.json().catch(()=>({}));return d.ok?a({status:"ready",timeline:p.timeline||{}}):a({status:"error",message:p.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(uwe,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ot.default.createElement(le,{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(le,{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=q(X());function FY(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var QM=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],RM=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],O0=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),WY={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},JM=/^(\d{4})-(\d{2})-(\d{2})$/,cwe={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>QM.some(t=>t.value&&t.value===e),outcome:e=>RM.some(t=>t.value&&t.value===e),from:e=>JM.test(e),to:e=>JM.test(e)};function d2(e={}){let t={...O0};for(let r of Object.keys(O0)){let n=String(e[r]??"");n&&cwe[r](n)&&(t[r]=n)}return t}function e3(e={}){return Object.values(d2(e)).some(Boolean)}function HY(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(WY))r[n]=t.get(o)||"";return d2(r)}function KY(e={}){let t=new URLSearchParams,r=d2(e);for(let[o,a]of Object.entries(WY))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function UY(e,t=0){let[,r,n,o]=e.match(JM);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var VY=Object.freeze({openedFromSessions:!0});function qY(e){return e?.openedFromSessions===!0}function GY(e={},{before:t=null,perPage:r=25}={}){let n=d2(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",UY(n.from)),n.to&&o.set("to",UY(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var YY={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},dwe={failed:"error",passed:"success"},Pg={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 XY(e,t){let r=await fetch(GY(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 pwe(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 fwe({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:Pg},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:Pg},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:Pg},QM.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:Pg},RM.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:Pg})),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:Pg})),e3(e)&&Re.default.createElement(le,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(O0)},"Clear filters"))}function mwe({session:e}){let t=ng(e.kind,e.id),r=YY[e.source]||YY.agent,n=pwe(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,VY))},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:Y,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:Y,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&Re.default.createElement(Ee,{tone:dwe[e.outcome]||"muted"},e.outcome),Re.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},So(e.last_activity_at)),Re.default.createElement("span",{style:{fontFamily:Y,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function t3({agents:e=[],user:t=null}){let[r,n]=(0,Re.useState)(()=>HY(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),[p,f]=(0,Re.useState)(null),[m,y]=(0,Re.useState)(0),[b]=(0,Re.useState)(FY);(0,Re.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${KY(r)}`);let v=b.next();return s("loading"),d(!1),f(null),XY(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),f(null);try{let x=await XY(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()&&f(x.message)}finally{v()&&d(!1)}},g=e3(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(fwe,{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(Yn,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(le,{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(le,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(O0)},"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(mwe,{key:`${v.kind}-${v.id}`,session:v}))),i==="ready"&&o.nextBefore&&Re.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},p&&Re.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},p),Re.default.createElement(le,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":p?"Try again":"Load more")))}var Ce=q(X());var Tt=q(X());var gwe={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function ZY(e){return gwe[e]||null}function p2(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function JY({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 hwe="Setting your own host needs permission to manage the organization's keys.";function QY({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?hwe:null}}var eX={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 f2({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,p]=(0,Tt.useState)({}),[f,m]=(0,Tt.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:f,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(""),p(A=>({...A,[g]:null})),_E(),await e()}catch(S){t(`Could not save the ${eX[g]?.label||g} credential${S.message!=="save failed"?`: ${S.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(g,{editing:v=!1}={})=>{if(!f){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");p(A=>({...A,[g]:w}))}catch(x){p(S=>({...S,[g]:{ok:!1,models:[],error:x.message}}))}finally{m(null)}}},removeProviderKey:async g=>{let v=r==="personal"?"Remove your key? Your runs will use the organization's key, or the platform default.":"Remove this provider credential? Runs will fall back to the platform default credentials, or fail until a key is configured.";if(window.confirm(v))try{if(!(await fetch(p2(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(S=>({...S,[g]:null})),_E(),await e()}catch{t("Could not remove the provider credential.")}}}}var RY={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 P0({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:p,testingProvider:f,saveProviderKey:m,testProviderHost:y,removeProviderKey:b}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},g=RY[r]||RY.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=eX[x]||{label:x,icon:"\u{1F511}",placeholder:""},j=a===x,F=p[x],D=f===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"?ZY(v.effective_source):null,{canChange:$,canRemove:T,note:I}=QY({editable:n,scope:r,row:v}),P=r==="organization"&&w?JY(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 tX(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 m2=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function r3({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,p]=(0,Ce.useState)({status:"idle",value:null,error:null}),[f,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=f2({onKeysChanged:C,onError:k,scope:"organization"}),j=async()=>{m(!0),b(null);try{await Sg({planSlug:"pro"})}catch(P){b(P.message),m(!1)}},F=async()=>{if(d.status==="ready")return d.value;p({status:"loading",value:null,error:null});try{let P=await tX();return p({status:"ready",value:P,error:null}),P}catch(P){return p({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:f,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"},f?"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(P0,{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"}`},m2(a?.traces_used),a?.traces_limit>0&&Ce.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",m2(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"}`},m2(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"}`},m2(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=q(X());var Be=q(X());var ywe=/^[A-Za-z_][A-Za-z0-9_]*$/,vwe=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,xwe={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},bwe=["sk_live_","rk_live_"],rX=8,nX=2e3;function g2(e){return e?ywe.test(e)?vwe.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 h2(e,t){let r=[],n=typeof t=="string"?t:"";return bwe.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||xwe[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function oX(e,t){return[...e,...M0([{name:t}])]}function aX({name:e,edited:t,fullName:r}){return t?e:r}function I0(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 Mg(e){for(let t of e){let r=g2(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 iX({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 n3(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function wwe(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function sX({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=wwe(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 y2={supported:"success",bootstrap:"info",unsupported:"error"};function lX(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 uX(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 cX={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function dX(e){return e?.sandbox_state==="booting"}function dp(e){return e==null?"/projects/new":`/projects/${e}`}function D0(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var pX=["overview","explorations","environment","browser"];function fX(e=""){let t=new URLSearchParams(e).get("tab");return pX.includes(t)?t:"overview"}function mX(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!pX.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function v2(e){if(!e?.project?.id)return null;let t=dp(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function gX(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 mn=q(X());function x2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var hX=["left","middle","right"];function yX(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 b2(e,t,r){let n=yX(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:x2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:hX[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function vX(e,t,r){let n=b2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:x2(e),button:hX[e.button]||"left",clickCount:1}}var Swe=16,kwe=800;function xX(e,t){let r=yX(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?Swe:e.deltaMode===2?kwe:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:x2(e)}}function o3(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:x2(t)}}function bX(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var _we=600;function wX(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=_we}var j0={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 SX(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...j0.control,...t.control},agent:t.agent||j0.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 j0;default:return e}}function kX(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 _X(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 CX(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 AX(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 Cwe={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 EX(e,{requested:t=!1}={}){return t?null:Cwe[e]||"The live view lost its connection to the browser."}var Awe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function NX(e){return e?.status?Awe[e.status]||{label:e.status,tone:"neutral"}:null}function TX(e){return e?.status==="starting"||e?.status==="running"}function OX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}var Ot=q(X());async function PX(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 MX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v";function a3({sessionId:e,headed:t=!1,watchOnOpen:r=!1}){let{darkMode:n}=lt(),[o,a]=(0,Ot.useReducer)(SX,j0),[i,s]=(0,Ot.useState)("idle"),[l,u]=(0,Ot.useState)(null),[c,d]=(0,Ot.useState)(!1),p=(0,Ot.useRef)(null),f=(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=p.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 se=_e.pending;if(_e.pending=null,_e.decoding=!!se,!se)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,${se.data}`};de()},[]),_=(0,Ot.useCallback)(()=>{m.current+=1;let re=p.current;if(!re){s("idle");return}y.current&&re.readyState===WebSocket.OPEN&&re.send(JSON.stringify({type:"hand_back"})),f.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 PX(e,"view");if(m.current!==re)return;let se=new WebSocket(de);p.current=se,f.current=!1,se.onopen=()=>se.send(JSON.stringify({type:"auth",ticket:_e})),se.onmessage=Z=>{let ee;try{ee=JSON.parse(Z.data)}catch{return}ee.type==="ready"&&s("open"),ee.type==="frame"&&k(ee),a(ee)},se.onclose=Z=>{p.current===se&&(p.current=null,s("idle"),a({type:"reset"}),u(EX(Z.code,{requested:f.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 PX(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(xX(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(b2("down",re,D())),window.addEventListener("mouseup",_e=>z(vX(_e,D(),x.current)),{once:!0})},onMouseMove:re=>{let _e=v.current;_e.message=b2("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(wX(re,S.current)){re.preventDefault(),S.current=null,h.current?.focus();return}if(S.current=re.key==="Escape"&&!re.repeat?re.timeStamp:null,MX(re))return;let _e=o3("down",re);_e&&(re.preventDefault(),A(_e))},onKeyUp:re=>{if(MX(re))return;let _e=o3("up",re);_e&&(re.preventDefault(),A(_e))},onPaste:re=>{re.preventDefault(),A(bX(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=kX(o),H=_X(o),Q=CX(o,{taking:c}),K=AX(o.page),ue=i==="open",{frameSize:fe}=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:fe?`${fe.width} / ${fe.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 pp({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=lt(),[a,i]=(0,mn.useState)(e.browser||null),[s,l]=(0,mn.useState)(!1),[u,c]=(0,mn.useState)(null),[d,p]=(0,mn.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,mn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(k,_,C)=>{c(k),p(null);try{let E=await fetch(f,_),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){p(E.message)}finally{c(null)}},y=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(OX({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=NX(a),w=TX(a),A=a?.status==="running";return mn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},mn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},mn.default.createElement("div",{className:"flex items-center gap-2"},mn.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),S&&mn.default.createElement(yc,{tone:S.tone},S.label)),w?mn.default.createElement("button",{type:"button",onClick:b,disabled:u!==null,className:x},u==="stop"?"Stopping\u2026":"Stop browser"):mn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&mn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},mn.default.createElement("input",{type:"checkbox",checked:s,onChange:k=>l(k.target.checked),disabled:u!==null}),"Open a window on this machine"),mn.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:x},u==="start"?"Starting\u2026":"Start browser"))),d&&mn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!w&&!d&&mn.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&&mn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",mn.default.createElement("code",{className:"font-mono"},a.server_key),"."),A&&a.live_url&&mn.default.createElement(a3,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),A&&!a.live_url&&mn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var Wt=q(X());var Vr=q(X());function IX(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function w2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var DX={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 fp({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:p,typedNameError:f}){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=IX(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,_=p?Vr.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),n3(y)&&p(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:!n3(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}`},DX[l]||DX.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"&&_,f&&Vr.default.createElement("p",{className:"text-sm text-red-500"},f))}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,_,f&&Vr.default.createElement("p",{className:"text-sm text-red-500"},f)))}var jX={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 $X(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function S2(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 LX(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>S2(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 zX(e,t){let r=new Map;return(t||[]).forEach(n=>{S2(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 BX(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function FX(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function UX(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 i3({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,p]=(0,Wt.useState)(""),[f,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))),p(""),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(window.confirm(`Unlink the GitHub App installation on @${$.account_login}? New sandboxes can no longer check out its repositories. The App stays installed on GitHub; uninstall it there to remove its access.`)){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($&&!FX($)){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.");UX(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=S2($),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}`},$X($)),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: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 (${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(fp,{repositories:s,selection:u,onToggle:P=>c(H=>w2(H,P)),filter:d,onFilterChange:p}))}))}var Nwe={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 s3({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)(""),[p,f]=(0,Be.useState)(!1),[m,y]=(0,Be.useState)(null),[b,h]=(0,Be.useState)(Nwe[e]||jX[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 pe=await fetch("/api/github_connection");if(!pe.ok)throw new Error("status failed");let Xe=await pe.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 pe=await fetch("/api/sandboxes?sandbox_type=app_runtime"),Xe=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(Je(Xe,`Could not list your sandboxes (HTTP ${pe.status}).`));v(Xe.sandboxes||[]),S({codeSessions:!!Xe.code_sessions_supported,claudeCode:{...L_(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(pe){y(pe.message)}},[]),T=o!==null,I=!!o?.connected;(0,Be.useEffect)(()=>{T&&$()},[T,I,$,r]);let P=g.filter(pe=>D_(pe)&&!D[pe.session_id]?.stopped).map(pe=>pe.session_id).join(" ");(0,Be.useEffect)(()=>{if(!P)return;let pe=!1,Xe=setTimeout(async()=>{let gr=await Promise.all(P.split(" ").map(async nr=>{try{let Ve=await fetch(`/api/sandboxes/${encodeURIComponent(nr)}`);if(Ve.status===404)return{id:nr,gone:!0};let Gt=await Ve.json().catch(()=>({}));return Ve.ok?{id:nr,sandbox:Gt.sandbox||null}:{id:nr,status:Ve.status,error:Je(Gt,`Could not check on this sandbox (HTTP ${Ve.status}).`)}}catch{return{id:nr,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(pe)return;let rr={};gr.forEach(({id:nr,status:Ve,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:M_(Ve,Ir)}}),z(nr=>Object.entries(rr).reduce((Ve,[Gt,Ir])=>{if(Ir)return{...Ve,[Gt]:Ir};if(!(Gt in Ve))return Ve;let{[Gt]:lo,...ms}=Ve;return ms},nr)),v(nr=>gr.reduce((Ve,Gt)=>Gt.gone?Ve.filter(Ir=>Ir.session_id!==Gt.id):Gt.sandbox?Bq(Ve,Gt.sandbox,"session_id"):Ve,nr)),F(nr=>nr+1)},2e3);return()=>{pe=!0,clearTimeout(Xe)}},[P,j]);let H=pe=>{delete N.current[pe],z(Xe=>{let{[pe]:gr,...rr}=Xe;return rr})},Q=(pe,Xe)=>{A(gr=>({...gr,[pe]:Xe}))},K=async()=>{y(null);try{let pe=await fetch("/api/github_connection/repositories"),Xe=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(Xe.error||"Could not list repositories.");s(Xe.repositories||[])}catch(pe){y(pe.message)}},ue=pe=>{u(Xe=>w2(Xe,pe))},fe=async()=>{f(!0),y(null);try{let pe=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),Xe=await pe.json().catch(()=>({}));if(!pe.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(pe){y(pe.message)}finally{f(!1)}},re=async()=>{if(window.confirm("Disconnect GitHub? New checkout sandboxes will no longer be able to clone its repositories. Sandboxes already running keep running until you stop them or they expire."))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 pe=>{_(pe),Q(pe,null);try{let Xe=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:pe})}),gr=await Xe.json().catch(()=>({}));if(!Xe.ok)throw new Error(Je(gr,`Could not start the sandbox (HTTP ${Xe.status}).`));v(rr=>hc(rr,gr.sandbox,"session_id"))}catch(Xe){Q(pe,Xe.message)}finally{_(null)}},de=async pe=>{if(!(pe.status!=="failed"&&!window.confirm("Stop this sandbox? Its app stops and its checkout is deleted, including any changes Claude Code made there."))){E(pe.session_id),Q(pe.repository,null);try{let Xe=await fetch(`/api/sandboxes/${encodeURIComponent(pe.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!==pe.session_id)),H(pe.session_id)}catch(Xe){Q(pe.repository,Xe.message)}finally{E(null)}}},se=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,V=B?.repositories||[],M=o?.app?.configured?o.app.installations||[]:[],ne=zX(B,M),{byRepository:U,others:oe}=Uq(g,ne.map(pe=>pe.full_name)),ve=M.length>0,Ze=LX(M),Ht=n?"text-red-400":"text-red-600",Mt=(pe,{standalone:Xe=!1}={})=>{let{label:gr,tone:rr}=Dq(pe.status),nr=D_(pe),Ve=jq(pe),Gt=Ve?Iq(pe.expires_at):null,Ir=nr?D[pe.session_id]:null;return Be.default.createElement("div",{key:pe.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(yc,{tone:rr},gr),Be.default.createElement("span",{className:`font-mono truncate ${se}`},Xe?pe.repository:"","@",pe.repository_ref),Gt&&Be.default.createElement("span",{className:`shrink-0 ${se}`},"\xB7 ",Gt),v2(pe)&&Be.default.createElement("a",{href:ct(v2(pe)),onClick:lo=>{lo.preventDefault(),kt(v2(pe))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:pe.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",pe.project.name," \u2192")),Be.default.createElement("button",{onClick:()=>de(pe),disabled:C===pe.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===pe.session_id?"Stopping\u2026":pe.status==="failed"?"Dismiss":"Stop")),nr&&!Ir?.stopped&&Be.default.createElement("p",{className:`text-xs ${se}`},"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(pe.session_id),className:"underline"},"Retry")):"Trying again\u2026"),pe.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"}`},pe.error_message),pe.runtime_server_key&&Be.default.createElement("p",{className:`text-xs ${se}`},"Enable ",Be.default.createElement("code",{className:"font-mono"},pe.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),Ve&&x?.codeSessions&&Be.default.createElement(p0,{sandbox:pe,claudeCode:x.claudeCode?.mode==="sandbox_login"?{...x.claudeCode,connected:!!x.claudeCode.sandboxes.find(lo=>lo.session_id===pe.session_id)?.credential_mode}:x.claudeCode,codex:x.codex,onRecheckConnection:$}),Ve&&x&&!x.codeSessions&&Be.default.createElement("p",{className:`text-xs ${se}`},"The configured sandbox backend cannot run Claude Code sessions."),Ve&&x?.pullRequests&&Be.default.createElement(f0,{sandbox:pe}),Ve&&x?.browserModes.length>0&&Be.default.createElement(pp,{sandbox:pe,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":se}`},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 ${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."),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(i3,{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 ${se}`},V.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(V.map(pe=>pe.full_name)))},className:L},"Cancel"),Be.default.createElement("button",{onClick:fe,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 (${l.size})`)):Be.default.createElement("button",{onClick:K,className:L},"Choose repositories")),i&&Be.default.createElement(fp,{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 ${se}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Be.default.createElement("div",{className:"space-y-2"},ne.map(pe=>{let Xe=U[pe.full_name]||[],gr=Xe.some(D_),rr=o.app?.configured?` \xB7 via ${BX(pe)}`:"";return Be.default.createElement("div",{key:pe.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}`},pe.full_name),Be.default.createElement("p",{className:`text-xs ${se}`},pe.private?"private":"public"," \xB7 ",pe.default_branch,rr)),Be.default.createElement("button",{onClick:()=>_e(pe.full_name),disabled:k===pe.full_name||gr,className:`${L} disabled:opacity-50`},k===pe.full_name?"Starting\u2026":gr?"Booting\u2026":"Start sandbox")),w[pe.full_name]&&Be.default.createElement("p",{className:`mt-2 text-xs ${Ht}`},w[pe.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 ${se}`},I||ve?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),oe.map(pe=>Be.default.createElement(Be.default.Fragment,{key:pe.session_id},w[pe.repository]&&Be.default.createElement("p",{className:`text-xs ${Ht}`},w[pe.repository]),Mt(pe,{standalone:!0})))))}var xt=q(X());var l3="claude_code";function u3({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),[p,f]=(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===l3)||{configured:!1}),a(L_(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{f("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),f(null);try{let C=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:l3,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){f(C.message)}finally{d(!1)}}},x=async()=>{if(window.confirm("Remove the Claude Code API key? Sessions using a sandbox subscription will keep their login."))try{if(!(await fetch(`/api/provider_keys/${l3}`,{method:"DELETE"})).ok)throw new Error("delete failed");await g(),e?.()}catch{f("Could not disconnect Claude Code.")}},S=t?"text-gray-400":"text-gray-500",w=tG(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(""),f(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:()=>{f(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:Qq,"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:Rq,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:eG,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(op,{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.")),p&&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"}`},p))}var nn=q(X());function c3({onChange:e}){let{darkMode:t}=lt(),[r,n]=(0,nn.useState)(null),[o,a]=(0,nn.useState)(!1),[i,s]=(0,nn.useState)(""),[l,u]=(0,nn.useState)(!1),[c,d]=(0,nn.useState)(null),p=(0,nn.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,nn.useEffect)(()=>{p().catch(h=>d(h.message))},[p]);let f=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 p(),e?.()}catch(g){d(g.message)}finally{u(!1)}}},m=async()=>{if(window.confirm("Disconnect Codex? New Codex sessions will require reconnecting an API key.")){u(!0),d(null);try{if(!(await fetch("/api/provider_keys/codex",{method:"DELETE"})).ok)throw new Error("Could not disconnect Codex.");await p(),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 nn.default.createElement("div",{className:"space-y-3"},nn.default.createElement("div",{className:"flex items-center justify-between gap-3"},nn.default.createElement("div",null,nn.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),nn.default.createElement("p",{className:`text-sm ${y}`},r==null?"Loading\u2026":r.configured?`Connected \xB7 ${r.hint}`:"Not connected")),nn.default.createElement("div",{className:"flex gap-2"},r?.configured&&!o&&nn.default.createElement("button",{className:b,disabled:l,onClick:m},"Disconnect"),nn.default.createElement("button",{className:b,disabled:l||r==null,onClick:()=>{a(!o),s(""),d(null)}},o?"Cancel":r?.configured?"Update":"Connect"))),nn.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&&nn.default.createElement("form",{onSubmit:f,className:"flex flex-wrap gap-2"},nn.default.createElement("label",{className:`flex-1 text-sm ${y}`},"OpenAI API key for Codex",nn.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"}`})),nn.default.createElement("button",{type:"submit",className:`${b} self-end`,disabled:l||!i.trim()},l?"Saving\u2026":"Save API key")),c&&nn.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},c))}var Twe=["profile","api-keys","integrations","notifications","billing"];function Owe(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:Twe.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function d3({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)(Owe),[l,u]=(0,Ne.useState)(a),[c,d]=(0,Ne.useState)(0),[p,f]=(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(p2("/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();f(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=f2({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(window.confirm("Revoke this API key? Requests using it will stop working immediately."))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"))),p.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"},p.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(P0,{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(s3,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement(u3,{onChange:()=>d(T=>T+1)})),Ne.default.createElement("div",{className:"border rounded-lg p-6",style:O},Ne.default.createElement(c3,{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=q(X());var Pwe=[{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."}],p3={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"},ps={color:"var(--color-text-muted)",fontSize:12};function WX(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?ct(t):null}function Mwe({card:e,onAsk:t,busy:r}){let n=WX(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:ps},String(e.check_strength).replaceAll("_"," "))),Ke.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Ke.default.createElement("div",{style:{...ps,fontFamily:Y}},[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:ps},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Ke.default.createElement("div",{style:ps},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Ke.default.createElement("div",{style:ps},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Ke.default.createElement("details",{style:ps},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(le,{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 Iwe({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(qe,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:{...ps,fontFamily:Y}},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:ps},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Ke.default.createElement(le,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function f3({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,p]=(0,Ke.useState)(null),[f,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"&&p({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()||!f)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(""),p(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){p({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"&&(p({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(qe,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(le,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!g.length&&Ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},Pwe.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(qe,{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(Mwe,{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:{...ps,display:"flex",gap:12,flexWrap:"wrap"}},k.references.map(C=>{let E=WX(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(Iwe,{key:C.id,draft:C,onReview:r})),k.limitations?.length>0&&Ke.default.createElement("details",{style:ps},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(le,{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:{...p3,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:p3},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:p3})),Ke.default.createElement(le,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!x.trim()||!o||!f},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:f,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:{...ps,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 Vo=q(X());var at=q(X());var Do=q(X());function Dwe(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 m3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,Do.useState)(r),a=Dwe(t);return Do.default.createElement(rn,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},Do.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"}},Do.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),Do.default.createElement("span",{"data-testid":"capabilities-summary"},a),Do.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&Do.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>Do.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)"}},Do.default.createElement(ni,{kind:i.ok?"pass":i.blocking?"fault":"info"}),Do.default.createElement("div",{style:{minWidth:0,flex:1}},Do.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},Do.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&Do.default.createElement(qe,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&Do.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&Do.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:Y,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var Br=q(X());var HX={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:Y,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function $0({rows:e,onChange:t,repository:r}){let[n,o]=(0,Br.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?g2(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return Br.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&Br.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=g2(s.name),c=s.useOrganizationKey?[]:h2(s.name,s.value);return Br.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},Br.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Br.default.createElement("span",{style:{fontFamily:Y,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&Br.default.createElement(Ee,{tone:"warning"},"required"),s.set&&Br.default.createElement(Ee,{tone:"success"},"set"),s.sources?.length>0&&Br.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&Br.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?Br.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):Br.default.createElement(Br.default.Fragment,null,!s.useOrganizationKey&&Br.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:{...HX,marginTop:6}}),s.organizationKey&&Br.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},Br.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&&Br.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)"}},Br.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=>Br.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),Br.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},Br.default.createElement("div",{style:{flex:1}},Br.default.createElement(qe,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),Br.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...HX,marginTop:4}}),i&&Br.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),Br.default.createElement(le,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(oX(e,n)),o("")}},"Add")))}var KX={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 jwe({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:Y,fontSize:13,color:"var(--color-text-primary)"}},e),at.default.createElement(Ee,{tone:y2[t.status]||"muted"},t.summary)),at.default.createElement("div",{style:{fontFamily:Y,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 g3({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),[p,f]=(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),f(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?f(_e):F(_e);return}if(d(ue.repository.full_name),y(ue.preflight),S(_e=>aX({name:_e,edited:w,fullName:ue.repository.full_name})),v([]),ue.preflight.status==="unsupported")return;let fe=await fetch(`/api/projects/discover_secrets?${Q}`),re=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(Je(re,`Could not read ${P}'s environment variables (HTTP ${fe.status}).`));v(M0(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:I0(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=iX({github:$,repositories:o,reconnectRequired:i,pendingApproval:$?.pending_approval===!0}),I=b?"Checking the repository\u2026":sX({capabilities:r,preflight:m,secretsProblem:Mg(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(le,{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(qe,null,"Repository"),at.default.createElement("div",{style:{marginTop:8}},at.default.createElement(fp,{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:p})),m&&at.default.createElement("div",{style:{marginTop:12}},at.default.createElement(jwe,{repository:c,preflight:m}))),r&&at.default.createElement(m3,{capabilities:r}),m&&m.status!=="unsupported"&&at.default.createElement(He,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:x,onChange:P=>{S(P.target.value),A(P.target.value!=="")},style:{...KX,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:{...KX,marginTop:4,fontFamily:Y}}))),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($0,{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(le,{variant:"primary",onClick:O,disabled:!!I||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var We=q(X());var Zt=q(X());function VX(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function h3(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 qX(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"&&!h3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function GX(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function YX(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 XX(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||y3(e)||(Number(e?.pending_input_requests)||0)>0}var $we=6e4;function ZX(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<$we}function y3(e){return["queued","running"].includes(e?.setup?.claude_code?.last_session?.status)}function JX(e){let t=e?.setup?.claude_code;if(!t)return null;let r=t.failed_step||"the failed step",n=t.last_session;return n?.status==="queued"?`Claude Code is starting on ${r}\u2026`:n?.status==="running"?`Claude Code is fixing ${r}\u2026`:t.resume_error?`Claude Code changed the checkout, but the boot did not resume: ${t.resume_error}`:n?.status==="succeeded"?e?.sandbox_state==="failed"?`Claude Code finished on ${r} without a change that got the boot through.`:`Claude Code fixed ${r} and the boot resumed.`:n?.status==="failed"?`Claude Code could not fix ${r}${n.error_message?`: ${n.error_message}`:"."}`:t.available?e?.setup?.auto===!1?"Claude Code fixes a failed boot when you ask for it.":"When a boot fails, Claude Code fixes the step that failed in its checkout, then the boot resumes.":`Claude Code does not fix failed boots here: ${t.reason||"it is not available"}.`}function v3(e){return!e?.setup?.claude_code?.available||e?.sandbox_state!=="failed"?!1:!y3(e)&&!["pending","running","awaiting_input"].includes(e.setup.last_run?.status)}function QX(e){let t=e?.setup;return!t?.available||e?.sandbox_state!=="failed"?!1:!y3(e)&&!["pending","running","awaiting_input"].includes(t.last_run?.status)}function RX(e=[]){let t={};for(let r of e)t[r.model]={filterable:new Set(r.filterable||[]),returns:new Set(r.returns||[])};return t}function eZ(e,t,r,n){let o=e[t]||{filterable:new Set,returns:new Set},a={filterable:new Set(o.filterable),returns:new Set(o.returns)};a[r].has(n)?a[r].delete(n):a[r].add(n);let i={...e,[t]:a};return a.filterable.size===0&&a.returns.size===0&&delete i[t],i}function x3(e,t=[]){let r=new Map(t.map((n,o)=>[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 tZ(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(x3(e,r))!==n(t)}function rZ(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 nZ(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function oZ(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 aZ(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 iZ(e){return e.json().catch(()=>({}))}function b3({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||[],p=(0,Zt.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),y=await iZ(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(RX(y.schema_tools||[]))},[e.id]);(0,Zt.useEffect)(()=>{e.app_models_listed&&p().catch(m=>l(m.message))},[p,e.app_models_listed]);let f=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:x3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await iZ(b);if(b.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(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(Lwe,{listed:e.app_models_listed,models:n,selection:a,changed:n?tZ(a,d,n):!1,busy:u,error:s,onToggle:(m,y,b)=>i(h=>eZ(h,m,y,b)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function Lwe({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(rn,{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:Y,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(p=>Zt.default.createElement("tr",{key:p.name},Zt.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:Y,color:"var(--color-text-primary)"}},p.name," ",Zt.default.createElement("span",{style:{color:"var(--color-text-muted)"}},p.type)),["filterable","returns"].map(f=>Zt.default.createElement("td",{key:f,style:{padding:"2px 12px",textAlign:"center"}},Zt.default.createElement("input",{type:"checkbox","aria-label":`${f==="filterable"?"Filter on":"Read back"} ${c.name}.${p.name}`,checked:!!d?.[f]?.has(p.name),disabled:o,onChange:()=>i(c.name,f,p.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(le,{size:"sm",onClick:s,disabled:o||!n},"Save"),Zt.default.createElement(le,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var Na=q(X());function w3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return Na.default.createElement(rn,{title:"Boot",meta:VX(o)||n||"none",testId:"project-boot-progress"},a.length===0&&Na.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&&Na.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>Na.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)"}},Na.default.createElement(Ee,{tone:cX[i.status]||"muted"},i.status),Na.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},lX(i.name)," ",Na.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},i.name)),Na.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),Na.default.createElement("span",{style:{fontFamily:Y,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":uX(i.duration_ms))))),r&&Na.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&&Na.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Na.default.createElement("div",{style:{padding:"6px 12px",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),Na.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:Y,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Ks=q(X());var sZ="/settings?tab=integrations";function S3({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=Ks.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=Ks.default.createElement(Ks.default.Fragment,null,Ks.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 ",Ks.default.createElement("span",{style:{fontFamily:Y}},"browser:",o.session_id),"."),Ks.default.createElement(pp,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Ks.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."),Ks.default.createElement(rn,{title:"Browser",meta:Ks.default.createElement(Bi,{href:ct(sZ),onClick:()=>kt(sZ)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var bn=q(X());var zwe=e=>e?new Date(e).toLocaleString():"\u2014",Bwe={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function k3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,bn.useState)(null),[i,s]=(0,bn.useState)(""),[l,u]=(0,bn.useState)(!1),c=o?h2(o,i):[],d=async p=>{u(!0);try{await p()}catch{return}finally{u(!1)}};return bn.default.createElement(rn,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&bn.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&bn.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),bn.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(p=>bn.default.createElement("li",{key:p.name,"data-testid":`environment-${p.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},bn.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},bn.default.createElement("span",{style:{fontFamily:Y,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),bn.default.createElement(Ee,{tone:p.source==="organization_key"?"info":"muted"},Bwe[p.source]?.(p)||"entered"),bn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",zwe(p.updated_at)),bn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&bn.default.createElement(le,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),bn.default.createElement(le,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&bn.default.createElement("div",{style:{marginTop:4,fontFamily:Y,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&bn.default.createElement("form",{style:{display:"flex",gap:6,marginTop:8,flexWrap:"wrap"},onSubmit:f=>{f.preventDefault(),i&&d(async()=>{await t(p.name,i),a(null),s("")})}},bn.default.createElement("input",{type:"password",autoComplete:"off",value:i,onChange:f=>s(f.target.value),placeholder:"New value","aria-label":`New value for ${p.name}`,style:{flex:1,minWidth:200,padding:"6px 10px",borderRadius:6,fontFamily:Y,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),bn.default.createElement(le,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),bn.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>bn.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var wn=q(X());var Cc=q(X());var Fwe=["proposed","edited"],A3={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."}},k2={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},lZ={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function cZ(e){return e?.status==="pending"||e?.status==="running"}function _2(e){return Fwe.includes(e.state)}function E3(e=[],t=null){let r=e.filter(n=>_2(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function dZ(e=[],t=[]){let r=new Set(t.filter(_2).map(n=>n.id));return e.filter(n=>r.has(n))}function uZ(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function pZ(e={},t={}){return Object.keys(lZ).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:lZ[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${uZ(r,o)} / ${uZ(r,n)}`}]})}function fZ(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 mZ({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 gZ(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 _3(e){return(e||[]).join(", ")}function C3(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function hZ(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:_3(t.tools),contains:_3(t.contains),not_contains:_3(t.not_contains)}}function yZ(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:C3(e.tools),contains:C3(e.contains),not_contains:C3(e.not_contains)}}function C2(e){return`/explorations/${e}`}function A2(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function mp({explorations:e,onOpen:t,selectedId:r=null}){return Cc.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 Cc.default.createElement(He,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},Cc.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},Cc.default.createElement("span",{style:{fontFamily:Y,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),Cc.default.createElement(Ee,{tone:k2[n.status]||"muted"},n.status),Cc.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),Cc.default.createElement("span",{style:{marginLeft:"auto",fontFamily:Y,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",So(n.created_at))))}))}var pt=q(X());var gp=q(X());function N3({budget:e,usage:t}){let r=pZ(e,t);return r.length===0?null:gp.default.createElement(rn,{title:"Budget",testId:"exploration-budget",bodyStyle:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:8}},r.map(n=>{let o=n.ratio>=1?ia.error:n.ratio>=.8?ia.warning:ia.info;return gp.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},gp.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),gp.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},gp.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),gp.default.createElement("span",{style:{fontFamily:Y,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var bt=q(X());var Uwe={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},Ig={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 Dg({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 T3({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,bt.useState)(null),c=A3[e.verdict]||A3.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=fZ(e),y=_2(e),b=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,yZ(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:Uwe[e.state]||"muted"},e.state),e.group&&bt.default.createElement(Ee,null,e.group),e.scenario_key&&bt.default.createElement("span",{style:{fontFamily:Y,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(Dg,{label:"Prompt"},bt.default.createElement("input",{style:Ig,value:l.prompt,onChange:b("prompt")})),bt.default.createElement(Dg,{label:"Rubric: what a good answer does (the judge grades against it)"},bt.default.createElement("textarea",{style:{...Ig,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(Dg,{label:"Group"},bt.default.createElement("input",{style:Ig,value:l.group,onChange:b("group")})),bt.default.createElement(Dg,{label:"Tools (comma-separated)"},bt.default.createElement("input",{style:Ig,value:l.tools,onChange:b("tools")})),bt.default.createElement(Dg,{label:"Contains"},bt.default.createElement("input",{style:Ig,value:l.contains,onChange:b("contains")})),bt.default.createElement(Dg,{label:"Does not contain"},bt.default.createElement("input",{style:Ig,value:l.not_contains,onChange:b("not_contains")}))),bt.default.createElement("div",{style:{display:"flex",gap:8}},bt.default.createElement(le,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),bt.default.createElement(le,{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:Y,fontSize:11}},(d.tools||[]).map(g=>bt.default.createElement(Ee,{key:g,tone:p.has(g)?"warning":"muted",title:p.has(g)?"The agent cannot call this tool":void 0},p.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),(f.steps?.length>0||f.urls?.length>0||f.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"),f.urls?.length>0&&bt.default.createElement("div",{style:{marginTop:4,fontFamily:Y,fontSize:11}},f.urls.join(" \xB7 ")),f.steps?.length>0&&bt.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},f.steps.map((g,v)=>bt.default.createElement("li",{key:v},g))),f.screenshots?.length>0&&bt.default.createElement("div",{style:{marginTop:4,fontFamily:Y,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&bt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&bt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&bt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&bt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>u(hZ(e)),disabled:a},"Edit"),y&&bt.default.createElement(le,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&bt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var O3={minutes:15,steps:150},vZ={minutes:120,steps:1e3,cost:100},xZ={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function wZ(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:`${xZ[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>vZ[r])return{error:`${xZ[r]} may be at most ${vZ[r]}.`};t[r]=o}return{budget:t}}var bZ={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 SZ(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&bZ[t.code]?bZ[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var Wwe={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 kZ(e){return e?Wwe[e]||e:null}var Hwe={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function _Z(e){return e?{tone:Hwe[e.status]||"muted",text:e.message||e.status}:null}function CZ(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 P3(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function AZ(e){return e.json().catch(()=>({}))}var Vwe={explorer:"explorer agent",external:"submitted from outside the dashboard"};function hp({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,pt.useState)(null),[s,l]=(0,pt.useState)(null),[u,c]=(0,pt.useState)([]),[d,p]=(0,pt.useState)(!1),[f,m]=(0,pt.useState)(!1),[y,b]=(0,pt.useState)({}),[h,g]=(0,pt.useState)(null),[v,x]=(0,pt.useState)(null),S=(0,pt.useRef)(t);S.current=t;let w=(0,pt.useCallback)(async()=>{let P=await fetch(`/api/explorations/${e}`),H=await AZ(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,pt.useEffect)(()=>{w().catch(P=>l(P.message))},[w]);let A=a?.candidates||[];(0,pt.useEffect)(()=>{a&&c(P=>d?dZ(P,A):E3(A,a.preselect_limit))},[a,d]);let k=cZ(a?.exploration);(0,pt.useEffect)(()=>{if(!k)return;let P=setInterval(()=>w().catch(H=>l(H.message)),3e3);return()=>clearInterval(P)},[k,w]),Eg("ExplorationChannel",{exploration_id:e},P=>{Ng(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 AZ(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=>{p(!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),p(!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:fe}=await _(K,"POST",Q?{confirm:!0}:{});if(ue.status===409&&fe.code==="confirmation_required"){x({question:fe.confirmation,evaluation:P,project:H});return}if(!ue.ok){l(Je(fe,`The scenarios were accepted, but the run did not start (HTTP ${ue.status}).`));return}x(null),kt(`/evaluations/${fe.run?.evaluation_id||P.id}/runs/${fe.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?pt.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):pt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:O}=a,$=O.counts||{},T=mZ({evaluation:a.evaluation,candidates:A,selectedIds:u}),I=E3(A);return pt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},pt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},pt.default.createElement(qe,null,"Exploration ",O.id),pt.default.createElement(Ee,{tone:k2[O.status]||"muted",testId:"exploration-status"},O.status),pt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},Vwe[O.source]||O.source," \xB7 ",So(O.created_at),O.start_url?` \xB7 from ${O.start_url}`:""),k&&pt.default.createElement(le,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),O.stop_reason&&pt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},kZ(O.stop_reason)),O.error_message&&pt.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},O.error_message),pt.default.createElement(N3,{budget:O.budget,usage:O.usage}),s&&pt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&pt.default.createElement(He,{padding:12,testId:"exploration-accepted"},pt.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&&pt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),v&&pt.default.createElement(He,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},pt.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},v.question),pt.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},pt.default.createElement(le,{variant:"primary",onClick:()=>D(v.evaluation,v.project,{confirm:!0}),disabled:f},"Run it on this machine"),pt.default.createElement(le,{onClick:()=>x(null)},"Cancel"))),pt.default.createElement(rn,{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?pt.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."):pt.default.createElement("ul",{style:{margin:0,padding:0}},A.map(P=>pt.default.createElement(T3,{key:P.id,candidate:P,selected:u.includes(P.id),onToggle:j,onSave:C,onState:E,busy:f,problem:y?.[P.id]||y?.[String(P.id)],agentId:a.target_agent?.id})))),A.length>0&&pt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},pt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},pt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c(I)},disabled:f},"Select every answerable"),pt.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&I.length>a.preselect_limit&&pt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),pt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},pt.default.createElement(le,{variant:"primary",onClick:F,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&pt.default.createElement(pt.default.Fragment,null,pt.default.createElement(le,{onClick:z,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),pt.default.createElement("span",{style:{fontFamily:Y,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},gZ(T,a.runs_remaining))))))}var Ta=q(X());var qwe={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:Y,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function L0({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,Ta.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,Ta.useState)(null),[s,l]=(0,Ta.useState)(!1),{error:u,budget:c}=wZ(n),d=async()=>{l(!0),i(null);try{let f=await fetch(`/api/projects/${e}/explorations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({budget:c})}),m=await f.json().catch(()=>({}));if(!f.ok)throw new Error(SZ(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,y)=>Ta.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},Ta.default.createElement(qe,null,m),Ta.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:y,onChange:b=>o({...n,[f]:b.target.value}),"aria-label":m,style:qwe}));return Ta.default.createElement(rn,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Ta.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."),Ta.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(O3.minutes)),p("steps","Browser steps",String(O3.steps)),p("cost","Cost cap ($)","none"),Ta.default.createElement(le,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&Ta.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)&&Ta.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var jt=q(X());var Gwe={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:Y,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},Ywe=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],EZ=e=>e?new Date(e).toLocaleString():"\u2014";async function yp(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 M3({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,p]=(0,jt.useState)(null),[f,m]=(0,jt.useState)(null),[y,b]=(0,jt.useState)(!1),h=(0,jt.useCallback)(async()=>{let D=await yp(`/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=>p(D.message))},[h]);let g=async D=>{b(!0),p(null),m(null);try{await D()}catch(z){p(z.message)}finally{b(!1)}},v=n?.credentials,{error:x,payload:S}=CZ(s,{passwordSaved:!!v?.password_set}),w=_Z(u),A=()=>g(async()=>{let D=await yp(`/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 yp(`/api/projects/${e}/sign_in/check`,"POST");c(D.result),o(D.sign_in)}),_=()=>g(async()=>{await yp(`/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 yp(`/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 yp(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),j=()=>g(async()=>{let D=await yp(`/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(qe,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:Gwe}));return jt.default.createElement(rn,{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 ",EZ(v.updated_at)),n?.storage_state&&jt.default.createElement(Ee,{tone:"success"},"browser sign-in saved ",EZ(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&jt.default.createElement(Ee,null,"no sign-in")),jt.default.createElement(zi,{options:Ywe,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(le,{variant:"primary",size:"sm",onClick:A,disabled:y||!!x},"Save credentials"),jt.default.createElement(le,{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(le,{size:"sm",onClick:_,disabled:y||!r||n?.browser_running},"Open a browser window"),jt.default.createElement(le,{variant:"primary",size:"sm",onClick:C,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&jt.default.createElement(le,{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(le,{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:ia[w.tone]?.text||"var(--color-text-secondary)"}},w.text),f&&jt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f),d&&jt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function I3({projectId:e,project:t,onCount:r}){let[n,o]=(0,wn.useState)(null),[a,i]=(0,wn.useState)(null),[s,l]=(0,wn.useState)(null),u=(0,wn.useCallback)(async()=>{let f=await fetch(`/api/explorations?project_id=${e}`),m=await f.json().catch(()=>({}));if(!f.ok)throw new Error(Je(m,`Could not list the project's explorations (HTTP ${f.status}).`));o(m.explorations||[]),r?.(m.explorations?.length||0)},[e,r]);(0,wn.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=wn.default.createElement(wn.default.Fragment,null,wn.default.createElement(L0,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),wn.default.createElement(M3,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return wn.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return wn.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return wn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,wn.default.createElement(He,{testId:"project-explorations-empty"},wn.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 p=a||n[0].id;return wn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,wn.default.createElement(mp,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),wn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},wn.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(C2(p))},"Open on its own page")),wn.default.createElement(hp,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var Rt=q(X());var Xwe={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function NZ(e){return e.json().catch(()=>({}))}function D3({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 NZ(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,p)=>{let f=await fetch(`/api/input_requests/${c.id}/${d}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p||{})}),m=await NZ(f);if(!f.ok)throw new Error(Je(m,`Could not send the answer (HTTP ${f.status}).`));await l(),n?.()};return!o?.length&&!i?null:Rt.default.createElement(rn,{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(Zwe,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function Zwe({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(p){l(p.message)}finally{i(!1)}};return Rt.default.createElement(Jwe,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",GX(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=qX(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"},Xwe[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:Y,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"),h3(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"?Y:"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(le,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),Rt.default.createElement(le,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):Rt.default.createElement(Rt.default.Fragment,null,Rt.default.createElement(le,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),Rt.default.createElement(le,{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=q(X());async function E2(e){return e.json().catch(()=>({}))}function j3({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),[p,f]=(0,Ct.useState)(!1),m=(0,Ct.useCallback)(async()=>{let h=await fetch(n),g=await E2(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=nZ(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=>{f(!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 E2(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{f(!1)}},b=o?.pull_request||null;return e.install_state==="installed"&&!b?null:Ct.default.createElement(Ct.default.Fragment,null,Ct.default.createElement(Qwe,{project:e,pullRequest:b,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:y}),l&&Ct.default.createElement(Rwe,{project:e,base:n,pullRequest:b,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function Qwe({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=rZ(t),{canOpen:c,canUpdate:d,openBranch:p}=oZ(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(qe,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(le,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&Ct.default.createElement(le,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&Ct.default.createElement(le,{size:"sm",onClick:()=>s(p==="regular"),disabled:a,testId:"open-install-branch"},a?"Opening\u2026":p==="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:Y,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:Y,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>Ct.default.createElement("li",{key:f},f)))),o&&Ct.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function Rwe({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),[p,f]=(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)(z_),[C,E]=(0,Ct.useState)(!1),[j,F]=(0,Ct.useState)(0);(0,Ct.useEffect)(()=>{let z=!1,N=null;f(!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 E2(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(F_(I.preview.files)),A(P=>P||I.preview.suggested_branch||""),f(!1)}catch(T){z||(y(T.message),f(!1))}};return O(),()=>{z=!0,clearTimeout(N)}},[t,j]);let D=async()=>{E(!0),y(null);try{let z=W_({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 E2(N);if(!N.ok)throw B_(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(JP,{sandbox:{repository:e.repository,repository_ref:e.sandbox?.repository_ref||e.checkout_ref||"its default branch"},preview:l,loading:p,error:m,publishing:c,pullRequest:r,selection:b,onToggle:z=>h(N=>U_(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)=>aZ(e.id,z,N)})}var on=q(X());var eSe={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},tSe={progress:"info",success:"success",error:"error",neutral:"muted"};function $3({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 on.default.createElement(He,{testId:"project-setup"},on.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},on.default.createElement(qe,null,"Setup"),on.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},on.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},on.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&on.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},on.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},on.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&on.default.createElement(Ee,{tone:"muted"},"not used"),l&&on.default.createElement(Ee,{tone:tSe[ip(l.status).tone]||"muted"},ip(l.status).label),v3(e)&&n&&on.default.createElement(le,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),on.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},JX(e)),l?.sandbox_session_id&&on.default.createElement(p0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),on.default.createElement("div",{style:{marginTop:12}},on.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},on.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&on.default.createElement(Ee,{tone:"muted"},"unavailable"),i&&on.default.createElement(Ee,{tone:eSe[i.status]||"muted"},i.status.replace("_"," ")),on.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&on.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(`/agents/${a.agent_id}/interactions`)},"Open its runs"),QX(e)&&on.default.createElement(le,{size:"sm",variant:v3(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),on.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},YX(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."),on.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 TZ="/settings?tab=integrations",rSe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},nSe={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function fs(e){return e.json().catch(()=>({}))}function L3({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)(()=>fX(window.location.search)),[d,p]=(0,We.useState)(!1),[f,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 fs(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 fs(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"&&p(!1);let{pathname:ne,search:U}=window.location;window.history.replaceState(window.history.state,"",`${ne}${mX(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=dX(n),$=O||XX(n)||ZX(n,z);(0,We.useEffect)(()=>{if(!$)return;let M=setTimeout(()=>E().catch(ne=>m(ne.message)),nX);return()=>clearTimeout(M)},[$,a,E]);let T=n?.sandbox?.session_id;Eg("SandboxChannel",{session_id:T},M=>{Ng(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 fs(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 fs(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 fs(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 fs(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)}},fe=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 fs(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 fs(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 fs(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 fs(ne);if(!ne.ok){b(Je(U,`Could not read the repository's environment variables (HTTP ${ne.status}).`));return}C(M0(U.variables||[],s))},se=async()=>{if(!window.confirm(`Delete ${n.name}? Its secrets, agent and evaluation are deleted, and its sandbox is stopped.`))return;let M=await fetch(`/api/projects/${e}`,{method:"DELETE"});M.ok?r():m(Je(await fs(M),`Could not delete the project (HTTP ${M.status}).`))};if(!n)return f?We.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):We.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let Z=a?.browser_modes||[],ee=gX(n,Z),L=M=>{M&&p(!0),F("browser")},B=n.target_agent,V=!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(le,{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:Y,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),We.default.createElement(Ee,{tone:rSe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),We.default.createElement(Ee,{tone:y2[n.install_state==="installed"?"supported":"bootstrap"]},nSe[n.install_state]),We.default.createElement(Bi,{href:ct(TZ),onClick:()=>kt(TZ),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),We.default.createElement("div",{style:{display:"flex",gap:8}},We.default.createElement(le,{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(le,{onClick:()=>L(ee.watch),testId:"project-watch-live"},ee.label),We.default.createElement(le,{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(le,{variant:"primary",onClick:()=>{let{retry:M}=h;g(null),M?.()},disabled:v},"Run it on this machine"),We.default.createElement(le,{onClick:()=>g(null)},"Cancel"))),f&&We.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),We.default.createElement(zi,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${P3(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(w3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),We.default.createElement(D3,{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($3,{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(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(Ee,{tone:"accent"},B.kind==="app_assistant"?"App assistant":`synced agent ${B.synced_agent}`),We.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(`/agents/${B.id}/edit`)},"Open agent"),n.evaluation&&We.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&We.default.createElement(le,{size:"sm",onClick:K},"Change")),V&&!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(le,{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:Y,fontSize:13}},M.tool),We.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},M.description),We.default.createElement(le,{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(le,{size:"sm",variant:"ghost",onClick:()=>kt(`/evaluations/${S.evaluation_id}/runs/${S.id}`)},"Open run"))),B?.kind==="app_assistant"&&We.default.createElement(b3,{project:n,onSaved:M=>{M&&o(M),E().catch(()=>{})},onConfirmationRequired:H}),We.default.createElement(j3,{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(le,{variant:"danger",size:"sm",onClick:se},"Delete project"))),u==="explorations"&&We.default.createElement(I3,{projectId:e,project:n}),u==="browser"&&We.default.createElement(S3,{project:n,modes:Z,watchOnOpen:d,onChange:()=>E().catch(()=>{})}),u==="environment"&&We.default.createElement(We.default.Fragment,null,We.default.createElement(k3,{secrets:P3(s),onReplace:re,onDelete:_e,error:y}),_?We.default.createElement(He,null,We.default.createElement(qe,null,"Add secrets"),We.default.createElement("div",{style:{marginTop:8}},We.default.createElement($0,{rows:_,onChange:C,repository:n.repository})),We.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},We.default.createElement(le,{variant:"primary",disabled:!!Mg(_)||I0(_).length===0,onClick:async()=>{await fe(I0(_))&&C(null)}},"Save secrets"),We.default.createElement(le,{onClick:()=>C(null)},"Cancel"),Mg(_)&&We.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Mg(_)))):We.default.createElement("div",null,We.default.createElement(le,{size:"sm",onClick:de},"Add secrets"))))}var Ko=q(X());var oSe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function z3({projects:e,onOpen:t,onNew:r}){return Ko.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},Ko.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},Ko.default.createElement("div",{style:{flex:1}},Ko.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),Ko.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.")),Ko.default.createElement(le,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&Ko.default.createElement(He,null,Ko.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=>Ko.default.createElement(He,{key:n.id,padding:14,testId:`project-${n.id}`},Ko.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},Ko.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),Ko.default.createElement("span",{style:{fontFamily:Y,fontSize:12,color:"var(--color-text-muted)"}},n.repository),Ko.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},Ko.default.createElement(Ee,{tone:oSe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&Ko.default.createElement(Ee,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function B3({visit:e=0}){let[t,r]=(0,Vo.useState)(()=>D0(Gn())),[n,o]=(0,Vo.useState)(null),[a,i]=(0,Vo.useState)(null);(0,Vo.useEffect)(()=>{r(D0(Gn()))},[e]),(0,Vo.useEffect)(()=>{let u=()=>r(D0(Gn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,Vo.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,Vo.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{tg(u),r(D0(u))};return t.creating?Vo.default.createElement(g3,{onCreated:u=>l(dp(u.id)),onCancel:()=>l("/projects")}):t.projectId?Vo.default.createElement(L3,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?Vo.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?Vo.default.createElement(z3,{projects:n,onOpen:u=>l(dp(u.id)),onNew:()=>l(dp(null))}):Vo.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Mr=q(X());function F3({visit:e=0}){let[t,r]=(0,Mr.useState)(()=>A2(Gn())),[n,o]=(0,Mr.useState)(null),[a,i]=(0,Mr.useState)(null),[s,l]=(0,Mr.useState)(null);(0,Mr.useEffect)(()=>{r(A2(Gn()))},[e]),(0,Mr.useEffect)(()=>{let c=()=>r(A2(Gn()));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(le,{size:"sm",variant:"ghost",onClick:()=>kt(dp(c.id)),style:{padding:0}},"\u2190 ",c.name):Mr.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>kt("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Mr.default.createElement(le,{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(hp,{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(mp,{explorations:n,onOpen:c=>kt(C2(c.id))}))}var it=q(X());var ce=q(X());var Jl=q(X());var U3=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?Y:void 0});function an({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){return Jl.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,a?Jl.default.createElement("textarea",{value:t,onChange:l=>r(l.target.value),placeholder:n,rows:i,style:{...U3(o),resize:"vertical"},"data-testid":s}):Jl.default.createElement("input",{value:t,onChange:l=>r(l.target.value),placeholder:n,style:U3(o),"data-testid":s}))}function Ac({label:e,value:t,onChange:r,children:n,testId:o}){return Jl.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,Jl.default.createElement("select",{value:t,onChange:a=>r(a.target.value),style:U3(!1),"data-testid":o},n))}function z0({label:e,checked:t,onChange:r}){return Jl.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},Jl.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function qo({tone:e="info",children:t}){let r=e==="error";return Jl.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 On(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 OZ(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var aSe=["collections","generate","import"],iSe=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function W3(e=""){let r=String(e).match(iSe)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function PZ({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!aSe.includes(e)?"/scenarios":`/scenarios/${e}`}function H3(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 N2(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function MZ(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 IZ(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:N2(e.tools),contains:N2(e.contains),not_contains:N2(e.notContains)},tags:N2(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function DZ(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 jZ(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 sSe=["create","update","remove","keep"],lSe={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function $Z(e){let t=e?.changes||[];return sSe.map(r=>({action:r,label:lSe[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function LZ(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 BZ(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function K3({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,p]=(0,ce.useState)(null),[f,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 On(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 On(`${v}${E}`,{method:j,body:F,fallback:D});return z.catalog?l(z.catalog):await x(),a?.(),z},w=async E=>{c(null),p(null);try{await E()}catch(j){c(j.message)}},A=f.productIds.length+f.setIds.length+f.scenarioIds.length,k=(E,j)=>m(F=>({...F,[E]:BZ(F[E],j)})),_=E=>w(async()=>{let j=await OZ(H3(e,E,{inline:!0})),F=await T_(j);p(F?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=E=>window.open(H3(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(le,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),y?ce.default.createElement(uSe,{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(le,{size:"sm",variant:"ghost",onClick:()=>b(!0)},"Rename"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>_({})},"Copy YAML"),n&&ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>w(async()=>{await S("/sync","POST",{direction:"push"},"Sync failed"),p("Written to storage.")})},"Write to storage"),ce.default.createElement(le,{size:"sm",variant:"danger",onClick:()=>w(async()=>{window.confirm(`Delete the collection ${s.key}? The evaluations its sets became stay, with their runs.`)&&(await On(v,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&ce.default.createElement(qo,{tone:"error"},u),d&&ce.default.createElement(qo,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(le,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>_(f)},"Copy YAML"),ce.default.createElement(le,{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(cSe,{key:E.id,product:E,collection:s,agents:t,projects:r,selection:f,onToggle:k,change:S,act:w,setNotice:p})),h?ce.default.createElement(UZ,{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(le,{size:"sm",onClick:()=>g(!0),testId:"scenarios-add-product"},"Add product"))):u?ce.default.createElement(qo,{tone:"error"},u):ce.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function uSe({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(T2,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},ce.default.createElement(an,{label:"Name",value:n,onChange:o}),ce.default.createElement(an,{label:"Description",value:a,onChange:i}))}function cSe({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,p]=(0,ce.useState)(!1),f=`/products/${e.id}`;return ce.default.createElement(He,{testId:"scenarios-product"},u?ce.default.createElement(UZ,{product:e,agents:r,projects:n,onCancel:()=>c(!1),onSave:async m=>{await i(f,"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(le,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),ce.default.createElement(le,{size:"sm",variant:"danger",onClick:()=>s(async()=>{window.confirm(`Delete product ${e.key} and its ${e.set_count} sets?`)&&await i(f,"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(dSe,{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(WZ,{onCancel:()=>p(!1),onSave:async m=>{await i(`${f}/sets`,"POST",{set:m},"Could not add the set"),p(!1)}}):ce.default.createElement("div",null,ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function dSe({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),[p,f]=(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 On(`/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"},p?ce.default.createElement(WZ,{set:e,onCancel:()=>f(!1),onSave:async S=>{await s(v,"PATCH",{set:S},"Could not save the set"),f(!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(le,{size:"sm",onClick:x,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>d(S=>!S)},c?"Hide":"Scenarios"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),ce.default.createElement(le,{size:"sm",variant:"danger",onClick:()=>l(async()=>{window.confirm(`Delete set ${e.key} and its ${e.scenario_count} scenarios? Its evaluation stays.`)&&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(FZ,{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(pSe,{key:S.id,scenario:S,selected:a.scenarioIds.includes(S.id),onToggle:()=>i("scenarioIds",S.id),onEdit:()=>y(S.id),onDelete:()=>l(async()=>{window.confirm(`Delete scenario ${S.key}?`)&&await s(`${v}/scenarios/${S.id}`,"DELETE",void 0,"Could not delete the scenario")})})),ce.default.createElement("li",null,m==="new"?ce.default.createElement(FZ,{onCancel:()=>y(null),onSave:async S=>{await s(`${v}/scenarios`,"POST",S,"Could not add the scenario"),y(null)}}):ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:()=>{d(!0),y("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function pSe({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=jZ(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:Y}},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(le,{size:"sm",variant:"ghost",onClick:n},"Edit"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function T2({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(qo,{tone:"error"},s),ce.default.createElement("div",{style:{display:"flex",gap:8}},ce.default.createElement(le,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),ce.default.createElement(le,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function UZ({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,p]=(0,ce.useState)(e?.agent?String(e.agent.id):""),[f,m]=(0,ce.useState)(e?.project?String(e.project.id):"");return ce.default.createElement(T2,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:f}),testId:"scenarios-product-form"},ce.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ce.default.createElement(an,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),ce.default.createElement(an,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),ce.default.createElement(Ac,{label:"Agent",value:d,onChange:p},ce.default.createElement("option",{value:""},"None"),t.map(y=>ce.default.createElement("option",{key:y.id,value:y.id},y.name))),ce.default.createElement(Ac,{label:"Project",value:f,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(an,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function WZ({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(T2,{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(an,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),ce.default.createElement(an,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),ce.default.createElement(Ac,{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(an,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function FZ({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ce.useState)(()=>MZ(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return ce.default.createElement(T2,{onCancel:r,onSave:()=>t(IZ(n)),problem:DZ(n),testId:"scenarios-scenario-form"},ce.default.createElement(an,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),ce.default.createElement(an,{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(an,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),ce.default.createElement(an,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),ce.default.createElement(an,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),ce.default.createElement(an,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),ce.default.createElement(an,{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(z0,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),ce.default.createElement(z0,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var mt=q(X());function V3({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,p]=(0,mt.useState)([]),[f,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([On(`/api/projects/${n}`,{fallback:"Could not load the project"}),On("/api/projects/capabilities").catch(()=>({})),On("/api/sandboxes").catch(()=>({})),On(`/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||[]}),p(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}On(`/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 On("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,F=await On(`/api/scenario_catalogs/${j}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),D=await On(`/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=f||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(Ac,{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(qo,{tone:"error"},v),a&&mt.default.createElement(mt.default.Fragment,null,s&&!s.ok&&mt.default.createElement(qo,{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(qo,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(L0,{projectId:a.id,sandboxReady:_,onStarted:E=>{m(E.id),S()}}),_&&u.sandbox&&u.modes.length>0&&mt.default.createElement(rn,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},mt.default.createElement(pp,{sandbox:u.sandbox,modes:u.modes})),mt.default.createElement(rn,{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(Ac,{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(Ac,{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(le,{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(mp,{explorations:d,selectedId:C,onOpen:E=>m(E.id)}),!A&&mt.default.createElement(qo,null,"Choose the set to accept into, above."),mt.default.createElement(hp,{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=q(X());var fSe=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],mSe=`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] }`,gSe={create:"success",update:"warning",remove:"error",keep:"muted"};function q3({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,p]=(0,Pt.useState)(".activeagents/evals"),[f,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=f?"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 On("/api/scenario_catalogs/preview",{method:"POST",body:S(),fallback:"The preview failed"});b(j.previews||[])}),C=()=>k(async()=>{let j=await On("/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(zi,{options:fSe,value:t,onChange:j=>{r(j),b(null)}}),t==="document"&&Pt.default.createElement(an,{label:"YAML",value:n,onChange:A(o),placeholder:mSe,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:Y}},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(an,{label:"Repository",value:s,onChange:A(l),placeholder:"owner/name",mono:!0}),Pt.default.createElement(an,{label:"Ref",value:u,onChange:A(c),placeholder:"the default branch when empty",mono:!0}),Pt.default.createElement(an,{label:"Path",value:d,onChange:A(p),placeholder:".activeagents/evals or one .yml file",mono:!0})),Pt.default.createElement(z0,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:f,onChange:A(m)}),Pt.default.createElement("div",{style:{display:"flex",gap:8}},Pt.default.createElement(le,{onClick:_,disabled:h||!w,testId:"scenarios-import-preview"},h&&!y?"Reading\u2026":"Preview"),Pt.default.createElement(le,{variant:"primary",onClick:C,disabled:h||!y||y.length===0,testId:"scenarios-import-apply"},zZ(y||[])?"Apply, overwriting":"Apply")))),v&&Pt.default.createElement(qo,{tone:"error"},v),y&&y.map(j=>Pt.default.createElement(hSe,{key:`${j.catalog?.key}-${j.source_path||""}`,preview:j})))}function hSe({preview:e}){let t=$Z(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)"}},LZ(e))),e.source_path&&Pt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:Y,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:gSe[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:Y,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 ySe=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function G3({visit:e=0}){let[t,r]=(0,it.useState)(()=>W3(Gn())),[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,p]=(0,it.useState)(null),[f,m]=(0,it.useState)(!1);(0,it.useEffect)(()=>{let v=()=>r(W3(Gn()));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 On("/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([On("/api/agents").catch(()=>({})),On("/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=>{p(null),c(null),kt(PZ(v))},g=async v=>{let x=await On("/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(K3,{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(le,{variant:"primary",onClick:()=>m(v=>!v),testId:"scenarios-new-collection"},f?"Close":"New collection")),it.default.createElement(zi,{options:ySe,value:t.tab,onChange:v=>h({tab:v})}),u&&it.default.createElement(qo,{tone:"error"},u),d&&it.default.createElement(qo,null,d),t.tab==="generate"&&it.default.createElement(V3,{projects:s.projects,collections:n||[],onAccepted:y}),t.tab==="import"&&it.default.createElement(q3,{onImported:async v=>{await y(),v.length===1?h({collectionId:v[0].id}):p(`Imported ${v.map(x=>x.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&it.default.createElement(it.default.Fragment,null,f&&it.default.createElement(vSe,{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 vSe({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 p=>{p.preventDefault(),l(!0),c(null);try{await e({name:t.trim(),key:n.trim(),description:a.trim()})}catch(f){c(f.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(an,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),it.default.createElement(an,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),it.default.createElement(an,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&it.default.createElement(qo,{tone:"error"},u),it.default.createElement("div",null,it.default.createElement(le,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}function xSe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=lt(),[i,s]=(0,ht.useState)(t),[l,u]=(0,ht.useState)("list"),[c,d]=(0,ht.useState)(null),[p,f]=(0,ht.useState)(!1),[m,y]=(0,ht.useState)(null),[b,h]=(0,ht.useState)(!1),[g,v]=(0,ht.useState)("recent"),[x,S]=(0,ht.useState)({messages:[]}),[w,A]=(0,ht.useState)(null),k=hV(r),[_,C]=(0,ht.useState)(null),{requests:E}=S_({refreshKey:l}),[j,F]=(0,ht.useState)(0),[D,z]=(0,ht.useState)(null);(0,ht.useEffect)(()=>{let se=()=>{let Z=yV(Gn(),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 se(),window.addEventListener("popstate",se),window.addEventListener("dashboard:navigate",se),()=>{window.removeEventListener("popstate",se),window.removeEventListener("dashboard:navigate",se)}},[]);let N=async(se,Z)=>{f(!0);try{let L=await(await fetch(`/api/agents/${se}`)).json();d(L.agent),u(Z)}catch{T("Failed to load agent","error")}finally{f(!1)}},O=async(se=g)=>{f(!0);try{let ee=await(await fetch(`/api/agents?sort=${se}`)).json();s(ee.agents)}catch{T("Failed to refresh agents","error")}finally{f(!1)}},$=se=>{v(se),O(se)},T=(se,Z="info")=>{y({message:se,type:Z}),setTimeout(()=>y(null),3e3)},I=(se,Z=null)=>{let ee=h_(se,{agent:Z,features:k});ee!==null&&window.history.pushState({},"",ct(ee))},P=async se=>{f(!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"),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{f(!1)}},H=async(se,Z)=>{f(!0);try{let ee=await fetch(`/api/agents/${se}`,{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===se?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{f(!1)}},Q=async se=>{if(confirm("Are you sure you want to delete this agent?")){f(!0);try{(await fetch(`/api/agents/${se}`,{method:"DELETE"})).ok&&(s(i.filter(ee=>ee.id!==se)),d(null),u("list"),T("Agent deleted","success"),I("list"))}catch{T("Failed to delete agent","error")}finally{f(!1)}}},K=async se=>{f(!0);try{let Z=await fetch(`/api/agents/${se}/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{f(!1)}},ue=se=>{s([se,...i]),h(!1),T("Agent created from template!","success"),re("editor",se)},fe=["editor","runner","agent-analytics","history"],re=(se,Z=null)=>{jv(se,k)&&(F(ee=>ee+1),se==="builder"&&A(null),Z?.id&&fe.includes(se)&&Z.instructions===void 0?N(Z.id,se):(d(Z),u(se)),I(se,Z))},_e={assistant:()=>ht.default.createElement(f3,{session:x,onSessionChange:S,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>re("settings"),onReviewDraft:se=>{A(se),u("builder"),I("builder")}}),builder:()=>ht.default.createElement(CE,{key:w?.id||"new-agent",initialDraft:w,meta:r,onSave:P,onCancel:()=>re(w?"assistant":"list"),isLoading:p}),editor:()=>c?ht.default.createElement(J_,{key:`editor-${c.id}`,agent:c,meta:r,onSave:se=>H(c.id,se),onDelete:()=>Q(c.id),onRun:()=>re("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>re("history",c),onBack:()=>re("list"),isLoading:p}):null,runner:()=>c?ht.default.createElement(xM,{agent:c,recorderUrl:r.recorderUrl,onBack:()=>re("editor",c)}):null,"agent-analytics":()=>c?ht.default.createElement(J_,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:se=>H(c.id,se),onDelete:()=>Q(c.id),onRun:()=>re("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>re("history",c),onBack:()=>re("list"),isLoading:p}):null,history:()=>c?ht.default.createElement(wM,{agent:c,onBack:()=>re("editor",c)}):null,analytics:()=>ht.default.createElement(bM,{onSelectAgent:se=>{N(se.id,"agent-analytics")}}),traces:()=>ht.default.createElement(Xd,null),metrics:()=>ht.default.createElement(DM,null),interactions:()=>ht.default.createElement(ql,null),tools:()=>ht.default.createElement(jM,{onOpenServer:se=>{C(se),re("mcp")}}),mcp:()=>ht.default.createElement($M,{focusServer:_,onOpenTools:()=>{C(null),re("tools")}}),evaluations:()=>ht.default.createElement(y0,null),projects:()=>ht.default.createElement(B3,{visit:j}),scenarios:()=>ht.default.createElement(G3,{visit:j}),sessions:()=>ht.default.createElement(t3,{agents:i,user:e}),exploration:()=>ht.default.createElement(F3,{visit:j}),replay:()=>D?ht.default.createElement(ZM,{key:`${D.kind}-${D.id}`,kind:D.kind,id:D.id,onHandoff:se=>{let Z=se?.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:()=>qY(window.history.state)?window.history.back():re("sessions")}):null,sandbox:()=>ht.default.createElement(WM,{initialType:"playwright_mcp",onClose:()=>re("list")}),organization:()=>ht.default.createElement(r3,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>ht.default.createElement(d3,{user:e}),list:()=>ht.default.createElement(kE,{agents:i,meta:r,onSelect:se=>re("editor",se),onNew:()=>re("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:K,onDelete:Q,onRefresh:O,sort:g,onSortChange:$,isLoading:p})},de=()=>jv(l,k)?(_e[l]||_e.list)():null;return ht.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},ht.default.createElement(kM,{currentView:vV(l),onNavigate:re,agentCount:i.length,pendingInputCount:IV(E),account:n,user:e,gemVersion:r.activeagentVersion,features:k}),ht.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},ht.default.createElement(_M,{user:e,account:n}),ht.default.createElement("main",{className:"flex-1 p-6 overflow-auto"},de())),b&&ht.default.createElement(SM,{onUseTemplate:ue,onClose:()=>h(!1)}),m&&ht.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),p&&ht.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},ht.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},ht.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function Y3(e){return ht.default.createElement(K8,null,ht.default.createElement(DK,null,ht.default.createElement(xSe,{...e})))}var bSe=new Set(["POST","PUT","PATCH","DELETE"]);function wSe(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(!bSe.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 SSe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function HZ(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=wSe(o,a,{base:r,csrfToken:SSe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var kSe="active-agent-dashboard";function KZ(){let e=document.getElementById(kSe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,HZ(t.mountPath||"/"),(0,qZ.createRoot)(e).render(VZ.default.createElement(Y3,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",KZ):KZ(); /*! 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' ? ( -