diff --git a/CHANGELOG.md b/CHANGELOG.md index bee258049..74ec8eddc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- **The dashboard shows a run's per-group pass gates** (`actionagent`). A + published report's `pass_thresholds` are kept with the run, so the + rebuilt report, the export and the run page gate the stored results as + the application's report did, and a run started from the dashboard on a + catalog set is held to the set's and product's `pass` bars, recorded as + the run starts so a later catalog change does not regrade it. The run + page adds a **Pass rate by group** table, and the run's badge reads + `gate missed` when a gate was not met even if the whole-run pass rate + looks fine. The run's JSON adds `gates` and `gates_met`; a run without + bars reads as before (#678). - **An empty agent list shows how agents arrive** (`actionagent`). With no agents, the Agents page offered only Browse Templates and Create From Scratch. It now shows three ways in, telemetry first: @@ -23,6 +33,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- **The dashboard keeps a catalog's pass bars** (`actionagent`). A + product's and a set's `pass` blocks (`min_pass_rate`, `threshold`, + `gated`) parsed in `ActiveAgent::Evals::Catalog`, but neither + `ScenarioProduct` nor `ScenarioSet` kept them: an import dropped the + bars, the export left them out, the stored catalog's `pass_thresholds` + fell back to the defaults (every group gated at 100%), and the import + preview reported the product and its sets as `update` on every re-import + of an unchanged file. The bars are now stored and exported as imported, + and both import modes take the document's. Existing installs add the + columns with `bin/rails generate action_agent:install --skip` and + `bin/rails db:migrate` (`add_catalog_pass_bars`); imports keep working, + without the bars, until it runs. Bars dropped by an earlier version come + back when the original document is imported again. +- **The dashboard keeps a catalog product's named criteria lists** + (`actionagent`). A product's `criteria: { shared: [...], strict: [...] }` + parsed and round-tripped in `ActiveAgent::Evals::Catalog`, but + `ScenarioProduct` had nowhere to keep it: an import dropped the lists, the + export left them out, the stored digest never matched the records' + export, and the import preview reported the product as `update` on every + re-import of an unchanged file. The lists are now stored on the product + and exported as imported, so the documents and digests match and an + unchanged file previews as unchanged. Both import modes take the + document's lists, as they take a set's `criteria`. A set still runs on + its own `criteria`; which product lists a run uses is left for later. + Existing installs add the column with + `bin/rails generate action_agent:install --skip` and `bin/rails db:migrate` + (`add_catalog_product_criteria`); imports keep working, without the lists, + until it runs. Lists dropped by an earlier version come back when the + original document is imported again (#687). - **A self-hosted dashboard shows its own trace endpoint** (`actionagent`). The Organization page's Telemetry card showed the platform's `/v1/traces`. A self-hosted engine takes traces at `/api/traces`, and the card diff --git a/actionagent/app/assets/builds/action_agent.js b/actionagent/app/assets/builds/action_agent.js index dd6c7ae81..02a7f19d7 100644 --- a/actionagent/app/assets/builds/action_agent.js +++ b/actionagent/app/assets/builds/action_agent.js @@ -1,16 +1,16 @@ -var Lre=Object.create;var eE=Object.defineProperty;var zre=Object.getOwnPropertyDescriptor;var Bre=Object.getOwnPropertyNames;var Fre=Object.getPrototypeOf,Wre=Object.prototype.hasOwnProperty;var Wo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ure=(e,t)=>{for(var r in t)eE(e,r,{get:t[r],enumerable:!0})},Hre=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Bre(t))!Wre.call(e,o)&&o!==r&&eE(e,o,{get:()=>t[o],enumerable:!(n=zre(t,o))||n.enumerable});return e};var X=(e,t,r)=>(r=e!=null?Lre(Fre(e)):{},Hre(t||!e||!e.__esModule?eE(r,"default",{value:e,enumerable:!0}):r,e));var E$=Wo(Qt=>{"use strict";var nE=Symbol.for("react.transitional.element"),qre=Symbol.for("react.portal"),Kre=Symbol.for("react.fragment"),Vre=Symbol.for("react.strict_mode"),Gre=Symbol.for("react.profiler"),Yre=Symbol.for("react.consumer"),Xre=Symbol.for("react.context"),Zre=Symbol.for("react.forward_ref"),Jre=Symbol.for("react.suspense"),Qre=Symbol.for("react.memo"),w$=Symbol.for("react.lazy"),Rre=Symbol.for("react.activity"),y$=Symbol.iterator;function ene(e){return e===null||typeof e!="object"?null:(e=y$&&e[y$]||e["@@iterator"],typeof e=="function"?e:null)}var S$={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},k$=Object.assign,_$={};function Kf(e,t,r){this.props=e,this.context=t,this.refs=_$,this.updater=r||S$}Kf.prototype.isReactComponent={};Kf.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")};Kf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function C$(){}C$.prototype=Kf.prototype;function oE(e,t,r){this.props=e,this.context=t,this.refs=_$,this.updater=r||S$}var aE=oE.prototype=new C$;aE.constructor=oE;k$(aE,Kf.prototype);aE.isPureReactComponent=!0;var v$=Array.isArray;function rE(){}var yn={H:null,A:null,T:null,S:null},A$=Object.prototype.hasOwnProperty;function iE(e,t,r){var n=r.ref;return{$$typeof:nE,type:e,key:t,ref:n!==void 0?n:null,props:r}}function tne(e,t){return iE(e.type,t,e.props)}function sE(e){return typeof e=="object"&&e!==null&&e.$$typeof===nE}function rne(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var x$=/\/+/g;function tE(e,t){return typeof e=="object"&&e!==null&&e.key!=null?rne(""+e.key):t.toString(36)}function nne(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(rE,rE):(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 qf(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 nE:case qre:i=!0;break;case w$:return i=e._init,qf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+tE(e,0):n,v$(o)?(r="",i!=null&&(r=i.replace(x$,"$&/")+"/"),qf(o,t,r,"",function(u){return u})):o!=null&&(sE(o)&&(o=tne(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(x$,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(v$(e))for(var l=0;l{"use strict";N$.exports=E$()});var z$=Wo(Pn=>{"use strict";function dE(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nWb(s,r))lWb(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lWb(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function Wb(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}Pn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(T$=performance,Pn.unstable_now=function(){return T$.now()}):(lE=Date,O$=lE.now(),Pn.unstable_now=function(){return lE.now()-O$});var T$,lE,O$,ql=[],nc=[],ine=1,Hi=null,fa=3,pE=!1,my=!1,gy=!1,fE=!1,I$=typeof setTimeout=="function"?setTimeout:null,D$=typeof clearTimeout=="function"?clearTimeout:null,P$=typeof setImmediate<"u"?setImmediate:null;function Ub(e){for(var t=il(nc);t!==null;){if(t.callback===null)Hb(nc);else if(t.startTime<=e)Hb(nc),t.sortIndex=t.expirationTime,dE(ql,t);else break;t=il(nc)}}function mE(e){if(gy=!1,Ub(e),!my)if(il(ql)!==null)my=!0,Gf||(Gf=!0,Vf());else{var t=il(nc);t!==null&&gE(mE,t.startTime-e)}}var Gf=!1,hy=-1,j$=5,$$=-1;function L$(){return fE?!0:!(Pn.unstable_now()-$$e&&L$());){var n=Hi.callback;if(typeof n=="function"){Hi.callback=null,fa=Hi.priorityLevel;var o=n(Hi.expirationTime<=e);if(e=Pn.unstable_now(),typeof o=="function"){Hi.callback=o,Ub(e),t=!0;break t}Hi===il(ql)&&Hb(ql),Ub(e)}else Hb(ql);Hi=il(ql)}if(Hi!==null)t=!0;else{var a=il(nc);a!==null&&gE(mE,a.startTime-e),t=!1}}break e}finally{Hi=null,fa=r,pE=!1}t=void 0}}finally{t?Vf():Gf=!1}}}var Vf;typeof P$=="function"?Vf=function(){P$(uE)}:typeof MessageChannel<"u"?(cE=new MessageChannel,M$=cE.port2,cE.port1.onmessage=uE,Vf=function(){M$.postMessage(null)}):Vf=function(){I$(uE,0)};var cE,M$;function gE(e,t){hy=I$(function(){e(Pn.unstable_now())},t)}Pn.unstable_IdlePriority=5;Pn.unstable_ImmediatePriority=1;Pn.unstable_LowPriority=4;Pn.unstable_NormalPriority=3;Pn.unstable_Profiling=null;Pn.unstable_UserBlockingPriority=2;Pn.unstable_cancelCallback=function(e){e.callback=null};Pn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,dE(nc,e),il(ql)===null&&e===il(nc)&&(gy?(D$(hy),hy=-1):gy=!0,gE(mE,r-n))):(e.sortIndex=o,dE(ql,e),my||pE||(my=!0,Gf||(Gf=!0,Vf()))),e};Pn.unstable_shouldYield=L$;Pn.unstable_wrapCallback=function(e){var t=fa;return function(){var r=fa;fa=t;try{return e.apply(this,arguments)}finally{fa=r}}}});var F$=Wo((mNe,B$)=>{"use strict";B$.exports=z$()});var U$=Wo(Pa=>{"use strict";var sne=J();function W$(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function H$(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(H$)}catch(e){console.error(e)}}H$(),q$.exports=U$()});var r6=Wo(gw=>{"use strict";var No=F$(),hL=J(),cne=vy();function Ne(e){var t="https://react.dev/errors/"+e;if(1em||(e.current=eN[em],eN[em]=null,em--)}function cn(e,t){em++,eN[em]=e.current,e.current=t}var cl=dl(null),qy=dl(null),hc=dl(null),_1=dl(null);function C1(e,t){switch(cn(hc,t),cn(qy,e),cn(cl,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?R4(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=R4(t),e=Uz(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}qo(cl),cn(cl,e)}function vm(){qo(cl),qo(qy),qo(hc)}function tN(e){e.memoizedState!==null&&cn(_1,e);var t=cl.current,r=Uz(t,e.type);t!==r&&(cn(qy,e),cn(cl,r))}function A1(e){qy.current===e&&(qo(cl),qo(qy)),_1.current===e&&(qo(_1),tv._currentValue=Fd)}var hE,G$;function $d(e){if(hE===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);hE=t&&t[1]||"",G$=-1()=>(t||e((t={exports:{}}).exports,t),t.exports),Zre=(e,t)=>{for(var r in t)sE(e,r,{get:t[r],enumerable:!0})},Jre=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Gre(t))!Xre.call(e,o)&&o!==r&&sE(e,o,{get:()=>t[o],enumerable:!(n=Vre(t,o))||n.enumerable});return e};var X=(e,t,r)=>(r=e!=null?Kre(Yre(e)):{},Jre(t||!e||!e.__esModule?sE(r,"default",{value:e,enumerable:!0}):r,e));var Dj=Uo(Qt=>{"use strict";var cE=Symbol.for("react.transitional.element"),Qre=Symbol.for("react.portal"),Rre=Symbol.for("react.fragment"),ene=Symbol.for("react.strict_mode"),tne=Symbol.for("react.profiler"),rne=Symbol.for("react.consumer"),nne=Symbol.for("react.context"),one=Symbol.for("react.forward_ref"),ane=Symbol.for("react.suspense"),ine=Symbol.for("react.memo"),Nj=Symbol.for("react.lazy"),sne=Symbol.for("react.activity"),_j=Symbol.iterator;function lne(e){return e===null||typeof e!="object"?null:(e=_j&&e[_j]||e["@@iterator"],typeof e=="function"?e:null)}var Tj={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Oj=Object.assign,Pj={};function Vf(e,t,r){this.props=e,this.context=t,this.refs=Pj,this.updater=r||Tj}Vf.prototype.isReactComponent={};Vf.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")};Vf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Mj(){}Mj.prototype=Vf.prototype;function dE(e,t,r){this.props=e,this.context=t,this.refs=Pj,this.updater=r||Tj}var pE=dE.prototype=new Mj;pE.constructor=dE;Oj(pE,Vf.prototype);pE.isPureReactComponent=!0;var Cj=Array.isArray;function uE(){}var yn={H:null,A:null,T:null,S:null},Ij=Object.prototype.hasOwnProperty;function fE(e,t,r){var n=r.ref;return{$$typeof:cE,type:e,key:t,ref:n!==void 0?n:null,props:r}}function une(e,t){return fE(e.type,t,e.props)}function mE(e){return typeof e=="object"&&e!==null&&e.$$typeof===cE}function cne(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var Aj=/\/+/g;function lE(e,t){return typeof e=="object"&&e!==null&&e.key!=null?cne(""+e.key):t.toString(36)}function dne(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(uE,uE):(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 Kf(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 cE:case Qre:i=!0;break;case Nj:return i=e._init,Kf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+lE(e,0):n,Cj(o)?(r="",i!=null&&(r=i.replace(Aj,"$&/")+"/"),Kf(o,t,r,"",function(u){return u})):o!=null&&(mE(o)&&(o=une(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(Aj,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(Cj(e))for(var l=0;l{"use strict";$j.exports=Dj()});var Kj=Uo(Pn=>{"use strict";function vE(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nGb(s,r))lGb(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lGb(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function Gb(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}Pn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(jj=performance,Pn.unstable_now=function(){return jj.now()}):(gE=Date,Lj=gE.now(),Pn.unstable_now=function(){return gE.now()-Lj});var jj,gE,Lj,Kl=[],oc=[],mne=1,qi=null,ma=3,xE=!1,yy=!1,vy=!1,bE=!1,Fj=typeof setTimeout=="function"?setTimeout:null,Wj=typeof clearTimeout=="function"?clearTimeout:null,zj=typeof setImmediate<"u"?setImmediate:null;function Yb(e){for(var t=sl(oc);t!==null;){if(t.callback===null)Xb(oc);else if(t.startTime<=e)Xb(oc),t.sortIndex=t.expirationTime,vE(Kl,t);else break;t=sl(oc)}}function wE(e){if(vy=!1,Yb(e),!yy)if(sl(Kl)!==null)yy=!0,Yf||(Yf=!0,Gf());else{var t=sl(oc);t!==null&&SE(wE,t.startTime-e)}}var Yf=!1,xy=-1,Uj=5,Hj=-1;function qj(){return bE?!0:!(Pn.unstable_now()-Hje&&qj());){var n=qi.callback;if(typeof n=="function"){qi.callback=null,ma=qi.priorityLevel;var o=n(qi.expirationTime<=e);if(e=Pn.unstable_now(),typeof o=="function"){qi.callback=o,Yb(e),t=!0;break t}qi===sl(Kl)&&Xb(Kl),Yb(e)}else Xb(Kl);qi=sl(Kl)}if(qi!==null)t=!0;else{var a=sl(oc);a!==null&&SE(wE,a.startTime-e),t=!1}}break e}finally{qi=null,ma=r,xE=!1}t=void 0}}finally{t?Gf():Yf=!1}}}var Gf;typeof zj=="function"?Gf=function(){zj(hE)}:typeof MessageChannel<"u"?(yE=new MessageChannel,Bj=yE.port2,yE.port1.onmessage=hE,Gf=function(){Bj.postMessage(null)}):Gf=function(){Fj(hE,0)};var yE,Bj;function SE(e,t){xy=Fj(function(){e(Pn.unstable_now())},t)}Pn.unstable_IdlePriority=5;Pn.unstable_ImmediatePriority=1;Pn.unstable_LowPriority=4;Pn.unstable_NormalPriority=3;Pn.unstable_Profiling=null;Pn.unstable_UserBlockingPriority=2;Pn.unstable_cancelCallback=function(e){e.callback=null};Pn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,vE(oc,e),sl(Kl)===null&&e===sl(oc)&&(vy?(Wj(xy),xy=-1):vy=!0,SE(wE,r-n))):(e.sortIndex=o,vE(Kl,e),yy||xE||(yy=!0,Yf||(Yf=!0,Gf()))),e};Pn.unstable_shouldYield=qj;Pn.unstable_wrapCallback=function(e){var t=ma;return function(){var r=ma;ma=t;try{return e.apply(this,arguments)}finally{ma=r}}}});var Gj=Uo((SNe,Vj)=>{"use strict";Vj.exports=Kj()});var Xj=Uo(Ia=>{"use strict";var gne=J();function Yj(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function Zj(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Zj)}catch(e){console.error(e)}}Zj(),Jj.exports=Xj()});var u6=Uo(ww=>{"use strict";var To=Gj(),kL=J(),vne=wy();function Ne(e){var t="https://react.dev/errors/"+e;if(1tm||(e.current=sN[tm],sN[tm]=null,tm--)}function cn(e,t){tm++,sN[tm]=e.current,e.current=t}var dl=pl(null),Gy=pl(null),yc=pl(null),O1=pl(null);function P1(e,t){switch(cn(yc,t),cn(Gy,e),cn(dl,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?iL(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=iL(t),e=Xz(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Ko(dl),cn(dl,e)}function xm(){Ko(dl),Ko(Gy),Ko(yc)}function lN(e){e.memoizedState!==null&&cn(O1,e);var t=dl.current,r=Xz(t,e.type);t!==r&&(cn(Gy,e),cn(dl,r))}function M1(e){Gy.current===e&&(Ko(dl),Ko(Gy)),O1.current===e&&(Ko(O1),ov._currentValue=Wd)}var kE,e4;function Ld(e){if(kE===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);kE=t&&t[1]||"",e4=-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{yE=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?$d(r):""}function gne(e,t){switch(e.tag){case 26:case 27:case 5:return $d(e.type);case 16:return $d("Lazy");case 13:return e.child!==t&&t!==null?$d("Suspense Fallback"):$d("Suspense");case 19:return $d("SuspenseList");case 0:case 15:return vE(e.type,!1);case 11:return vE(e.type.render,!1);case 1:return vE(e.type,!0);case 31:return $d("Activity");default:return""}}function Y$(e){try{var t="",r=null;do t+=gne(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{_E=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?Ld(r):""}function kne(e,t){switch(e.tag){case 26:case 27:case 5:return Ld(e.type);case 16:return Ld("Lazy");case 13:return e.child!==t&&t!==null?Ld("Suspense Fallback"):Ld("Suspense");case 19:return Ld("SuspenseList");case 0:case 15:return CE(e.type,!1);case 11:return CE(e.type.render,!1);case 1:return CE(e.type,!0);case 31:return Ld("Activity");default:return""}}function t4(e){try{var t="",r=null;do t+=kne(e,r),r=e,e=e.return;while(e);return t}catch(n){return` Error generating stack: `+n.message+` -`+n.stack}}var rN=Object.prototype.hasOwnProperty,VN=No.unstable_scheduleCallback,xE=No.unstable_cancelCallback,hne=No.unstable_shouldYield,yne=No.unstable_requestPaint,vi=No.unstable_now,vne=No.unstable_getCurrentPriorityLevel,kL=No.unstable_ImmediatePriority,_L=No.unstable_UserBlockingPriority,E1=No.unstable_NormalPriority,xne=No.unstable_LowPriority,CL=No.unstable_IdlePriority,bne=No.log,wne=No.unstable_setDisableYieldValue,av=null,xi=null;function dc(e){if(typeof bne=="function"&&wne(e),xi&&typeof xi.setStrictMode=="function")try{xi.setStrictMode(av,e)}catch{}}var bi=Math.clz32?Math.clz32:_ne,Sne=Math.log,kne=Math.LN2;function _ne(e){return e>>>=0,e===0?32:31-(Sne(e)/kne|0)|0}var Vb=256,Gb=262144,Yb=4194304;function Ld(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 R1(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=Ld(n):(i&=s,i!==0?o=Ld(i):r||(r=s&~e,r!==0&&(o=Ld(r))))):(s=n&~a,s!==0?o=Ld(s):i!==0?o=Ld(i):r||(r=n&~e,r!==0&&(o=Ld(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 iv(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Cne(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 AL(){var e=Yb;return Yb<<=1,(Yb&62914560)===0&&(Yb=4194304),e}function bE(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function sv(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ane(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 Mne=/[\n"\\]/g;function Yi(e){return e.replace(Mne,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function aN(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=""+Ki(t)):e.value!==""+Ki(t)&&(e.value=""+Ki(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?iN(e,i,Ki(t)):r!=null?iN(e,i,Ki(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=""+Ki(s):e.removeAttribute("name")}function jL(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)){oN(e);return}r=r!=null?""+Ki(r):"",t=t!=null?""+Ki(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),oN(e)}function iN(e,t,r){t==="number"&&N1(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function pm(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"),lN=!1;if(ou)try{Yf={},Object.defineProperty(Yf,"passive",{get:function(){lN=!0}}),window.addEventListener("test",Yf,Yf),window.removeEventListener("test",Yf,Yf)}catch{lN=!1}var Yf,pc=null,QN=null,d1=null;function FL(){if(d1)return d1;var e,t=QN,r=t.length,n,o="value"in pc?pc.value:pc.textContent,a=o.length;for(e=0;e=Py),a4=" ",i4=!1;function UL(e,t){switch(e){case"keyup":return ioe.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function HL(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var nm=!1;function loe(e,t){switch(e){case"compositionend":return HL(t);case"keypress":return t.which!==32?null:(i4=!0,a4);case"textInput":return e=t.data,e===a4&&i4?null:e;default:return null}}function uoe(e,t){if(nm)return e==="compositionend"||!eT&&UL(e,t)?(e=FL(),d1=QN=pc=null,nm=!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=c4(r)}}function GL(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?GL(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function YL(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=N1(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=N1(e.document)}return t}function tT(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 yoe=ou&&"documentMode"in document&&11>=document.documentMode,om=null,uN=null,Iy=null,cN=!1;function p4(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;cN||om==null||om!==N1(n)||(n=om,"selectionStart"in n&&tT(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}),Iy&&Gy(Iy,n)||(Iy=n,n=V1(uN,"onSelect"),0>=i,o-=i,sl=1<<32-bi(t)+o|r<_?(A=w,w=null):A=w.sibling;var C=p(h,w,x[_],v);if(C===null){w===null&&(w=A);break}e&&w&&C.alternate===null&&t(h,w),y=a(C,y,_),S===null?k=C:S.sibling=C,S=C,w=A}if(_===x.length)return r(h,w),br&&Zl(h,_),k;if(w===null){for(;__?(A=w,w=null):A=w.sibling;var O=p(h,w,C.value,v);if(O===null){w===null&&(w=A);break}e&&w&&O.alternate===null&&t(h,w),y=a(O,y,_),S===null?k=O:S.sibling=O,S=O,w=A}if(C.done)return r(h,w),br&&Zl(h,_),k;if(w===null){for(;!C.done;_++,C=x.next())C=d(h,C.value,v),C!==null&&(y=a(C,y,_),S===null?k=C:S.sibling=C,S=C);return br&&Zl(h,_),k}for(w=n(w);!C.done;_++,C=x.next())C=f(w,h,_,C.value,v),C!==null&&(e&&C.alternate!==null&&w.delete(C.key===null?_:C.key),y=a(C,y,_),S===null?k=C:S.sibling=C,S=C);return e&&w.forEach(function(D){return t(h,D)}),br&&Zl(h,_),k}function b(h,y,x,v){if(typeof x=="object"&&x!==null&&x.type===Rf&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Kb:e:{for(var k=x.key;y!==null;){if(y.key===k){if(k=x.type,k===Rf){if(y.tag===7){r(h,y.sibling),v=o(y,x.props.children),v.return=h,h=v;break e}}else if(y.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===ac&&zd(k)===y.type){r(h,y.sibling),v=o(y,x.props),wy(v,x),v.return=h,h=v;break e}r(h,y);break}else t(h,y);y=y.sibling}x.type===Rf?(v=Wd(x.props.children,h.mode,v,x.key),v.return=h,h=v):(v=f1(x.type,x.key,x.props,null,h.mode,v),wy(v,x),v.return=h,h=v)}return i(h);case Ay:e:{for(k=x.key;y!==null;){if(y.key===k)if(y.tag===4&&y.stateNode.containerInfo===x.containerInfo&&y.stateNode.implementation===x.implementation){r(h,y.sibling),v=o(y,x.children||[]),v.return=h,h=v;break e}else{r(h,y);break}else t(h,y);y=y.sibling}v=NE(x,h.mode,v),v.return=h,h=v}return i(h);case ac:return x=zd(x),b(h,y,x,v)}if(Ey(x))return m(h,y,x,v);if(xy(x)){if(k=xy(x),typeof k!="function")throw Error(Ne(150));return x=k.call(x),g(h,y,x,v)}if(typeof x.then=="function")return b(h,y,e1(x),v);if(x.$$typeof===Ql)return b(h,y,Rb(h,x),v);t1(h,x)}return typeof x=="string"&&x!==""||typeof x=="number"||typeof x=="bigint"?(x=""+x,y!==null&&y.tag===6?(r(h,y.sibling),v=o(y,x),v.return=h,h=v):(r(h,y),v=EE(x,h.mode,v),v.return=h,h=v),i(h)):r(h,y)}return function(h,y,x,v){try{Zy=0;var k=b(h,y,x,v);return gm=null,k}catch(w){if(w===Mm||w===aw)throw w;var S=hi(29,w,null,h.mode);return S.lanes=v,S.return=h,S}}}var Gd=u8(!0),c8=u8(!1),ic=!1;function cT(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function yN(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 vc(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function xc(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(Ir&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=O1(e),t8(e,null,r),t}return ow(e,n,t,r),O1(e)}function jy(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,NL(e,r)}}function OE(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 vN=!1;function $y(){if(vN){var e=mm;if(e!==null)throw e}}function Ly(e,t,r,n){vN=!1;var o=e.updateQueue;ic=!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?(yr&p)===p:(n&p)===p){p!==0&&p===wm&&(vN=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,g=s;p=t;var b=r;switch(g.tag){case 1:if(m=g.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=g.payload,p=typeof m=="function"?m.call(b,d,p):m,p==null)break e;d=bn({},d,p);break e;case 2:ic=!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),Nc|=i,e.lanes=i,e.memoizedState=d}}function d8(e,t){if(typeof e!="function")throw Error(Ne(191,e));e.call(t)}function p8(e,t){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;ea?a:8;var i=Ft.T,s={};Ft.T=s,kT(e,!1,t,r);try{var l=o(),u=Ft.S;if(u!==null&&u(s,l),l!==null&&typeof l=="object"&&typeof l.then=="function"){var c=Aoe(l,n);zy(e,t,c,wi(e))}else zy(e,t,n,wi(e))}catch(d){zy(e,t,{then:function(){},status:"rejected",reason:d},wi())}finally{Dr.p=a,i!==null&&s.types!==null&&(i.types=s.types),Ft.T=i}}function Moe(){}function kN(e,t,r,n){if(e.tag!==5)throw Error(Ne(476));var o=L8(e).queue;$8(e,o,t,Fd,r===null?Moe:function(){return z8(e),r(n)})}function L8(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Fd,baseState:Fd,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:iu,lastRenderedState:Fd},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:iu,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function z8(e){var t=L8(e);t.next===null&&(t=e.alternate.memoizedState),zy(e,t.next.queue,{},wi())}function ST(){return ta(tv)}function B8(){return lo().memoizedState}function F8(){return lo().memoizedState}function Ioe(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=wi();e=vc(r);var n=xc(t,e,r);n!==null&&(Xa(n,t,r),jy(n,t,r)),t={cache:sT()},e.payload=t;return}t=t.return}}function Doe(e,t,r){var n=wi();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},uw(e)?U8(t,r):(r=nT(e,t,r,n),r!==null&&(Xa(r,e,n),H8(r,t,n)))}function W8(e,t,r){var n=wi();zy(e,t,r,n)}function zy(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(uw(e))U8(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,Si(s,i))return ow(e,t,o,0),Rr===null&&nw(),!1}catch{}if(r=nT(e,t,o,n),r!==null)return Xa(r,e,n),H8(r,t,n),!0}return!1}function kT(e,t,r,n){if(n={lane:2,revertLane:MT(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},uw(e)){if(t)throw Error(Ne(479))}else t=nT(e,r,n,2),t!==null&&Xa(t,e,2)}function uw(e){var t=e.alternate;return e===tr||t!==null&&t===tr}function U8(e,t){hm=$1=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function H8(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,NL(e,r)}}var Qy={readContext:ta,use:sw,useCallback:Yn,useContext:Yn,useEffect:Yn,useImperativeHandle:Yn,useLayoutEffect:Yn,useInsertionEffect:Yn,useMemo:Yn,useReducer:Yn,useRef:Yn,useState:Yn,useDebugValue:Yn,useDeferredValue:Yn,useTransition:Yn,useSyncExternalStore:Yn,useId:Yn,useHostTransitionStatus:Yn,useFormState:Yn,useActionState:Yn,useOptimistic:Yn,useMemoCache:Yn,useCacheRefresh:Yn};Qy.useEffectEvent=Yn;var q8={readContext:ta,use:sw,useCallback:function(e,t){return Ma().memoizedState=[e,t===void 0?null:t],e},useContext:ta,useEffect:E4,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,h1(4194308,4,P8.bind(null,t,e),r)},useLayoutEffect:function(e,t){return h1(4194308,4,e,t)},useInsertionEffect:function(e,t){h1(4,2,e,t)},useMemo:function(e,t){var r=Ma();t=t===void 0?null:t;var n=e();if(Yd){dc(!0);try{e()}finally{dc(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=Ma();if(r!==void 0){var o=r(t);if(Yd){dc(!0);try{r(t)}finally{dc(!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=Doe.bind(null,tr,e),[n.memoizedState,e]},useRef:function(e){var t=Ma();return e={current:e},t.memoizedState=e},useState:function(e){e=wN(e);var t=e.queue,r=W8.bind(null,tr,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:bT,useDeferredValue:function(e,t){var r=Ma();return wT(r,e,t)},useTransition:function(){var e=wN(!1);return e=$8.bind(null,tr,e.queue,!0,!1),Ma().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=tr,o=Ma();if(br){if(r===void 0)throw Error(Ne(407));r=r()}else{if(r=t(),Rr===null)throw Error(Ne(349));(yr&127)!==0||y8(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,E4(x8.bind(null,n,a,e),[e]),n.flags|=2048,km(9,{destroy:void 0},v8.bind(null,n,a,r,t),null),r},useId:function(){var e=Ma(),t=Rr.identifierPrefix;if(br){var r=ll,n=sl;r=(n&~(1<<32-bi(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=L1++,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[Ro]=t,a[Za]=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(ra(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&&Vl(t)}}return vn(t),zE(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Vl(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(Ne(166));if(e=hc.current,Xf(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=ea,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[Ro]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||Wz(e.nodeValue,r)),e||Ac(t,!0)}else e=G1(e).createTextNode(n),e[Ro]=t,t.stateNode=e}return vn(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=Xf(t),r!==null){if(e===null){if(!n)throw Error(Ne(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(Ne(557));e[Ro]=t}else Kd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;vn(t),e=!1}else r=TE(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(gi(t),t):(gi(t),null);if((t.flags&128)!==0)throw Error(Ne(558))}return vn(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=Xf(t),n!==null&&n.dehydrated!==null){if(e===null){if(!o)throw Error(Ne(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(Ne(317));o[Ro]=t}else Kd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;vn(t),o=!1}else o=TE(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(gi(t),t):(gi(t),null)}return gi(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),r1(t,t.updateQueue),vn(t),null);case 4:return vm(),e===null&&IT(t.stateNode.containerInfo),vn(t),null;case 10:return ru(t.type),vn(t),null;case 19:if(qo(so),n=t.memoizedState,n===null)return vn(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)Sy(n,!1);else{if(Xn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=j1(e),a!==null){for(t.flags|=128,Sy(n,!1),e=a.updateQueue,t.updateQueue=e,r1(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)r8(r,e),r=r.sibling;return cn(so,so.current&1|2),br&&Zl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&vi()>W1&&(t.flags|=128,o=!0,Sy(n,!1),t.lanes=4194304)}else{if(!o)if(e=j1(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,r1(t,e),Sy(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!br)return vn(t),null}else 2*vi()-n.renderingStartTime>W1&&r!==536870912&&(t.flags|=128,o=!0,Sy(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=vi(),e.sibling=null,r=so.current,cn(so,o?r&1|2:r&1),br&&Zl(t,n.treeForkCount),e):(vn(t),null);case 22:case 23:return gi(t),dT(),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&&(vn(t),t.subtreeFlags&6&&(t.flags|=8192)):vn(t),r=t.updateQueue,r!==null&&r1(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&&qo(Ud),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),ru(bo),vn(t),null;case 25:return null;case 30:return null}throw Error(Ne(156,t.tag))}function Boe(e,t){switch(iT(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ru(bo),vm(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return A1(t),null;case 31:if(t.memoizedState!==null){if(gi(t),t.alternate===null)throw Error(Ne(340));Kd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(gi(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ne(340));Kd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return qo(so),null;case 4:return vm(),null;case 10:return ru(t.type),null;case 22:case 23:return gi(t),dT(),e!==null&&qo(Ud),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ru(bo),null;case 25:return null;default:return null}}function rz(e,t){switch(iT(t),t.tag){case 3:ru(bo),vm();break;case 26:case 27:case 5:A1(t);break;case 4:vm();break;case 31:t.memoizedState!==null&&gi(t);break;case 13:gi(t);break;case 19:qo(so);break;case 10:ru(t.type);break;case 22:case 23:gi(t),dT(),e!==null&&qo(Ud);break;case 24:ru(bo)}}function pv(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){Kr(t,t.return,s)}}function Ec(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){Kr(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){Kr(t,t.return,c)}}function nz(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{p8(t,r)}catch(n){Kr(e,e.return,n)}}}function oz(e,t,r){r.props=Xd(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Kr(e,t,n)}}function By(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){Kr(e,t,o)}}function ul(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){Kr(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){Kr(e,t,o)}else r.current=null}function az(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){Kr(e,e.return,o)}}function BE(e,t,r){try{var n=e.stateNode;aae(n,e.type,r,t),n[Za]=t}catch(o){Kr(e,e.return,o)}}function iz(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Oc(e.type)||e.tag===4}function FE(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||iz(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&&Oc(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 NN(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=Rl));else if(n!==4&&(n===27&&Oc(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(NN(e,t,r),e=e.sibling;e!==null;)NN(e,t,r),e=e.sibling}function F1(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&&Oc(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(F1(e,t,r),e=e.sibling;e!==null;)F1(e,t,r),e=e.sibling}function sz(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);ra(t,n,r),t[Ro]=e,t[Za]=r}catch(a){Kr(e,e.return,a)}}var Jl=!1,xo=!1,WE=!1,F4=typeof WeakSet=="function"?WeakSet:Set,Uo=null;function Foe(e,t){if(e=e.containerInfo,jN=J1,e=YL(e),tT(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($N={focusedElem:e,selectionRange:r},J1=!1,Uo=t;Uo!==null;)if(t=Uo,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Uo=e;else for(;Uo!==null;){switch(t=Uo,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"))),ra(a,n,r),a[Ro]=e,Ho(a),n=a;break e;case"link":var i=lL("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sb&&(i=b,b=g,g=i);var h=d4(s,g),y=d4(s,b);if(h&&y&&(f.rangeCount!==1||f.anchorNode!==h.node||f.anchorOffset!==h.offset||f.focusNode!==y.node||f.focusOffset!==y.offset)){var x=d.createRange();x.setStart(h.node,h.offset),f.removeAllRanges(),g>b?(f.addRange(x),f.extend(y.node,y.offset)):(x.setEnd(y.node,y.offset),f.addRange(x))}}}}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,Ft.T=null,r=PN,PN=null;var a=wc,i=nu;if(Eo=0,Cm=wc=null,nu=0,(Ir&6)!==0)throw Error(Ne(331));var s=Ir;if(Ir|=4,vz(a.current),gz(a,a.current,i,r),Ir=s,fv(0,!1),xi&&typeof xi.onPostCommitFiberRoot=="function")try{xi.onPostCommitFiberRoot(av,a)}catch{}return!0}finally{Dr.p=o,Ft.T=n,Iz(e,t)}}function q4(e,t,r){t=Xi(r,t),t=CN(e.stateNode,t,2),e=xc(e,t,2),e!==null&&(sv(e,2),pl(e))}function Kr(e,t,r){if(e.tag===3)q4(e,e,r);else for(;t!==null;){if(t.tag===3){q4(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(bc===null||!bc.has(n))){e=Xi(r,e),r=X8(2),n=xc(t,r,2),n!==null&&(Z8(r,n,t,e),sv(n,2),pl(n));break}}t=t.return}}function HE(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new Hoe;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)||(TT=!0,o.add(r),e=Yoe.bind(null,e,t,r),t.then(e,e))}function Yoe(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Rr===e&&(yr&r)===r&&(Xn===4||Xn===3&&(yr&62914560)===yr&&300>vi()-cw?(Ir&2)===0&&Am(e,0):OT|=r,_m===yr&&(_m=0)),pl(e)}function jz(e,t){t===0&&(t=AL()),e=Rd(e,t),e!==null&&(sv(e,t),pl(e))}function Xoe(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),jz(e,r)}function Zoe(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(Ne(314))}n!==null&&n.delete(t),jz(e,r)}function Joe(e,t){return VN(e,t)}var q1=null,Qf=null,IN=!1,K1=!1,qE=!1,gc=0;function pl(e){e!==Qf&&e.next===null&&(Qf===null?q1=Qf=e:Qf=Qf.next=e),K1=!0,IN||(IN=!0,Roe())}function fv(e,t){if(!qE&&K1){qE=!0;do for(var r=!1,n=q1;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-bi(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,K4(n,a))}else a=yr,a=R1(n,n===Rr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||iv(n,a)||(r=!0,K4(n,a));n=n.next}while(r);qE=!1}}function Qoe(){$z()}function $z(){K1=IN=!1;var e=0;gc!==0&&sae()&&(e=gc);for(var t=vi(),r=null,n=q1;n!==null;){var o=n.next,a=Lz(n,t);a===0?(n.next=null,r===null?q1=o:r.next=o,o===null&&(Qf=r)):(r=n,(e!==0||(a&3)!==0)&&(K1=!0)),n=o}Eo!==0&&Eo!==5||fv(e,!1),gc!==0&&(gc=0)}function Lz(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&&Q4(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function Vz(e,t,r){var n=Dm;if(n&&typeof t=="string"&&t){var o=Yi(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),aL.has(o)||(aL.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),ra(t,"link",e),Ho(t),n.head.appendChild(t)))}}function hae(e){uu.D(e),Vz("dns-prefetch",e,null)}function yae(e,t){uu.C(e,t),Vz("preconnect",e,t)}function vae(e,t,r){uu.L(e,t,r);var n=Dm;if(n&&e&&t){var o='link[rel="preload"][as="'+Yi(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+Yi(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+Yi(r.imageSizes)+'"]')):o+='[href="'+Yi(e)+'"]';var a=o;switch(t){case"style":a=Em(e);break;case"script":a=jm(e)}Ri.has(a)||(e=bn({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),Ri.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(mv(a))||t==="script"&&n.querySelector(gv(a))||(t=n.createElement("link"),ra(t,"link",e),Ho(t),n.head.appendChild(t)))}}function xae(e,t){uu.m(e,t);var r=Dm;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+Yi(n)+'"][href="'+Yi(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=jm(e)}if(!Ri.has(a)&&(e=bn({rel:"modulepreload",href:e},t),Ri.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(gv(a)))return}n=r.createElement("link"),ra(n,"link",e),Ho(n),r.head.appendChild(n)}}}function bae(e,t,r){uu.S(e,t,r);var n=Dm;if(n&&e){var o=dm(n).hoistableStyles,a=Em(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(mv(a)))s.loading=5;else{e=bn({rel:"stylesheet",href:e,"data-precedence":t},r),(r=Ri.get(a))&&DT(e,r);var l=i=n.createElement("link");Ho(l),ra(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,b1(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function wae(e,t){uu.X(e,t);var r=Dm;if(r&&e){var n=dm(r).hoistableScripts,o=jm(e),a=n.get(o);a||(a=r.querySelector(gv(o)),a||(e=bn({src:e,async:!0},t),(t=Ri.get(o))&&jT(e,t),a=r.createElement("script"),Ho(a),ra(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function Sae(e,t){uu.M(e,t);var r=Dm;if(r&&e){var n=dm(r).hoistableScripts,o=jm(e),a=n.get(o);a||(a=r.querySelector(gv(o)),a||(e=bn({src:e,async:!0,type:"module"},t),(t=Ri.get(o))&&jT(e,t),a=r.createElement("script"),Ho(a),ra(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function iL(e,t,r,n){var o=(o=hc.current)?Y1(o):null;if(!o)throw Error(Ne(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=Em(r.href),r=dm(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=Em(r.href);var a=dm(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(mv(e)))&&!a._p&&(i.instance=a,i.state.loading=5),Ri.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},Ri.set(e,r),a||kae(o,e,r,i.state))),t&&n===null)throw Error(Ne(528,""));return i}if(t&&n!==null)throw Error(Ne(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=jm(r),r=dm(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(Ne(444,e))}}function Em(e){return'href="'+Yi(e)+'"'}function mv(e){return'link[rel="stylesheet"]['+e+"]"}function Gz(e){return bn({},e,{"data-precedence":e.precedence,precedence:null})}function kae(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}),ra(t,"link",r),Ho(t),e.head.appendChild(t))}function jm(e){return'[src="'+Yi(e)+'"]'}function gv(e){return"script[async]"+e}function sL(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+Yi(r.href)+'"]');if(n)return t.instance=n,Ho(n),n;var o=bn({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),Ho(n),ra(n,"style",o),b1(n,r.precedence,e),t.instance=n;case"stylesheet":o=Em(r.href);var a=e.querySelector(mv(o));if(a)return t.state.loading|=4,t.instance=a,Ho(a),a;n=Gz(r),(o=Ri.get(o))&&DT(n,o),a=(e.ownerDocument||e).createElement("link"),Ho(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),ra(a,"link",n),t.state.loading|=4,b1(a,r.precedence,e),t.instance=a;case"script":return a=jm(r.src),(o=e.querySelector(gv(a)))?(t.instance=o,Ho(o),o):(n=r,(o=Ri.get(a))&&(n=bn({},r),jT(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),Ho(o),ra(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(Ne(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,b1(n,r.precedence,e));return t.instance}function b1(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 _ae(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 Yz(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Cae(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=Em(n.href),a=t.querySelector(mv(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=X1.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,Ho(a);return}a=t.ownerDocument||t,n=Gz(n),(o=Ri.get(o))&&DT(n,o),a=a.createElement("link"),Ho(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),ra(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=X1.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var YE=0;function Aae(e,t){return e.stylesheets&&e.count===0&&S1(e,e.stylesheets),0YE?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function X1(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)S1(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Z1=null;function S1(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Z1=new Map,t.forEach(Eae,e),Z1=null,X1.call(e))}function Eae(e,t){if(!(t.state.loading&4)){var r=Z1.get(e);if(r)var n=r.get(null);else{r=new Map,Z1.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function n6(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n6)}catch(e){console.error(e)}}n6(),o6.exports=r6()});var XB=Wo(YB=>{"use strict";var og=J();function nse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ose=typeof Object.is=="function"?Object.is:nse,ase=og.useState,ise=og.useEffect,sse=og.useLayoutEffect,lse=og.useDebugValue;function use(e,t){var r=t(),n=ase({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return sse(function(){o.value=r,o.getSnapshot=t,WO(o)&&a({inst:o})},[e,r,t]),ise(function(){return WO(o)&&a({inst:o}),e(function(){WO(o)&&a({inst:o})})},[e]),lse(r),r}function WO(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!ose(e,r)}catch{return!0}}function cse(e,t){return t()}var dse=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?cse:use;YB.useSyncExternalStore=og.useSyncExternalStore!==void 0?og.useSyncExternalStore:dse});var JB=Wo((b5e,ZB)=>{"use strict";ZB.exports=XB()});var RB=Wo(QB=>{"use strict";var yS=J(),pse=JB();function fse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var mse=typeof Object.is=="function"?Object.is:fse,gse=pse.useSyncExternalStore,hse=yS.useRef,yse=yS.useEffect,vse=yS.useMemo,xse=yS.useDebugValue;QB.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=hse(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=vse(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,mse(c,f))return m;var g=n(f);return o!==void 0&&o(m,g)?(c=f,m):(c=f,d=g)}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=gse(e,a[0],a[1]);return yse(function(){i.hasValue=!0,i.value=s},[s]),xse(s),s}});var t7=Wo((S5e,e7)=>{"use strict";e7.exports=RB()});var U9=Wo(W9=>{"use strict";var Vv=J();function kue(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var _ue=typeof Object.is=="function"?Object.is:kue,Cue=Vv.useSyncExternalStore,Aue=Vv.useRef,Eue=Vv.useEffect,Nue=Vv.useMemo,Tue=Vv.useDebugValue;W9.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Aue(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Nue(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,_ue(c,f))return m;var g=n(f);return o!==void 0&&o(m,g)?(c=f,m):(c=f,d=g)}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=Cue(e,a[0],a[1]);return Eue(function(){i.hasValue=!0,i.value=s},[s]),Tue(s),s}});var q9=Wo((wDe,H9)=>{"use strict";H9.exports=U9()});var $P=Wo((gW,Ek)=>{(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),g={};g.absoluteValue=g.abs=function(){var N=new this.constructor(this);return N.s&&(N.s=1),N},g.comparedTo=g.cmp=function(N){var P,M,I,j,T=this;if(N=new T.constructor(N),T.s!==N.s)return T.s||-N.s;if(T.e!==N.e)return T.e>N.e^T.s<0?1:-1;for(I=T.d.length,j=N.d.length,P=0,M=IN.d[P]^T.s<0?1:-1;return I===j?0:I>j^T.s<0?1:-1},g.decimalPlaces=g.dp=function(){var N=this,P=N.d.length-1,M=(P-N.e)*p;if(P=N.d[P],P)for(;P%10==0;P/=10)M--;return M<0?0:M},g.dividedBy=g.div=function(N){return x(this,new this.constructor(N))},g.dividedToIntegerBy=g.idiv=function(N){var P=this,M=P.constructor;return C(x(P,new M(N),0,1),M.precision)},g.equals=g.eq=function(N){return!this.cmp(N)},g.exponent=function(){return k(this)},g.greaterThan=g.gt=function(N){return this.cmp(N)>0},g.greaterThanOrEqualTo=g.gte=function(N){return this.cmp(N)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(N){return this.cmp(N)<0},g.lessThanOrEqualTo=g.lte=function(N){return this.cmp(N)<1},g.logarithm=g.log=function(N){var P,M=this,I=M.constructor,j=I.precision,T=j+5;if(N===void 0)N=new I(10);else if(N=new I(N),N.s<1||N.eq(c))throw Error(o+"NaN");if(M.s<1)throw Error(o+(M.s?"NaN":"-Infinity"));return M.eq(c)?new I(0):(n=!1,P=x(_(M,T),_(N,T),T),n=!0,C(P,j))},g.minus=g.sub=function(N){var P=this;return N=new P.constructor(N),P.s==N.s?O(P,N):b(P,(N.s=-N.s,N))},g.modulo=g.mod=function(N){var P,M=this,I=M.constructor,j=I.precision;if(N=new I(N),!N.s)throw Error(o+"NaN");return M.s?(n=!1,P=x(M,N,0,1).times(N),n=!0,M.minus(P)):C(new I(M),j)},g.naturalExponential=g.exp=function(){return v(this)},g.naturalLogarithm=g.ln=function(){return _(this)},g.negated=g.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},g.plus=g.add=function(N){var P=this;return N=new P.constructor(N),P.s==N.s?b(P,N):O(P,(N.s=-N.s,N))},g.precision=g.sd=function(N){var P,M,I,j=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(P=k(j)+1,I=j.d.length-1,M=I*p+1,I=j.d[I],I){for(;I%10==0;I/=10)M--;for(I=j.d[0];I>=10;I/=10)M++}return N&&P>M?P:M},g.squareRoot=g.sqrt=function(){var N,P,M,I,j,T,q,G=this,L=G.constructor;if(G.s<1){if(!G.s)return new L(0);throw Error(o+"NaN")}for(N=k(G),n=!1,j=Math.sqrt(+G),j==0||j==1/0?(P=y(G.d),(P.length+N)%2==0&&(P+="0"),j=Math.sqrt(P),N=s((N+1)/2)-(N<0||N%2),j==1/0?P="5e"+N:(P=j.toExponential(),P=P.slice(0,P.indexOf("e")+1)+N),I=new L(P)):I=new L(j.toString()),M=L.precision,j=q=M+3;;)if(T=I,I=T.plus(x(G,T,q+2)).times(.5),y(T.d).slice(0,q)===(P=y(I.d)).slice(0,q)){if(P=P.slice(q-3,q+1),j==q&&P=="4999"){if(C(T,M+1,0),T.times(T).eq(G)){I=T;break}}else if(P!="9999")break;q+=4}return n=!0,C(I,M)},g.times=g.mul=function(N){var P,M,I,j,T,q,G,L,Y,K=this,pe=K.constructor,De=K.d,se=(N=new pe(N)).d;if(!K.s||!N.s)return new pe(0);for(N.s*=K.s,M=K.e+N.e,L=De.length,Y=se.length,L=0;){for(P=0,j=L+I;j>I;)G=T[j]+se[I]*De[j-I-1]+P,T[j--]=G%d|0,P=G/d|0;T[j]=(T[j]+P)%d|0}for(;!T[--q];)T.pop();return P?++M:T.shift(),N.d=T,N.e=M,n?C(N,pe.precision):N},g.toDecimalPlaces=g.todp=function(N,P){var M=this,I=M.constructor;return M=new I(M),N===void 0?M:(h(N,0,t),P===void 0?P=I.rounding:h(P,0,8),C(M,N+k(M)+1,P))},g.toExponential=function(N,P){var M,I=this,j=I.constructor;return N===void 0?M=D(I,!0):(h(N,0,t),P===void 0?P=j.rounding:h(P,0,8),I=C(new j(I),N+1,P),M=D(I,!0,N+1)),M},g.toFixed=function(N,P){var M,I,j=this,T=j.constructor;return N===void 0?D(j):(h(N,0,t),P===void 0?P=T.rounding:h(P,0,8),I=C(new T(j),N+k(j)+1,P),M=D(I.abs(),!1,N+k(I)+1),j.isneg()&&!j.isZero()?"-"+M:M)},g.toInteger=g.toint=function(){var N=this,P=N.constructor;return C(new P(N),k(N)+1,P.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(N){var P,M,I,j,T,q,G=this,L=G.constructor,Y=12,K=+(N=new L(N));if(!N.s)return new L(c);if(G=new L(G),!G.s){if(N.s<1)throw Error(o+"Infinity");return G}if(G.eq(c))return G;if(I=L.precision,N.eq(c))return C(G,I);if(P=N.e,M=N.d.length-1,q=P>=M,T=G.s,q){if((M=K<0?-K:K)<=f){for(j=new L(c),P=Math.ceil(I/p+4),n=!1;M%2&&(j=j.times(G),H(j.d,P)),M=s(M/2),M!==0;)G=G.times(G),H(G.d,P);return n=!0,N.s<0?new L(c).div(j):C(j,I)}}else if(T<0)throw Error(o+"NaN");return T=T<0&&N.d[Math.max(P,M)]&1?-1:1,G.s=1,n=!1,j=N.times(_(G,I+Y)),n=!0,j=v(j),j.s=T,j},g.toPrecision=function(N,P){var M,I,j=this,T=j.constructor;return N===void 0?(M=k(j),I=D(j,M<=T.toExpNeg||M>=T.toExpPos)):(h(N,1,t),P===void 0?P=T.rounding:h(P,0,8),j=C(new T(j),N,P),M=k(j),I=D(j,N<=M||M<=T.toExpNeg,N)),I},g.toSignificantDigits=g.tosd=function(N,P){var M=this,I=M.constructor;return N===void 0?(N=I.precision,P=I.rounding):(h(N,1,t),P===void 0?P=I.rounding:h(P,0,8)),C(new I(M),N,P)},g.toString=g.valueOf=g.val=g.toJSON=function(){var N=this,P=k(N),M=N.constructor;return D(N,P<=M.toExpNeg||P>=M.toExpPos)};function b(N,P){var M,I,j,T,q,G,L,Y,K=N.constructor,pe=K.precision;if(!N.s||!P.s)return P.s||(P=new K(N)),n?C(P,pe):P;if(L=N.d,Y=P.d,q=N.e,j=P.e,L=L.slice(),T=q-j,T){for(T<0?(I=L,T=-T,G=Y.length):(I=Y,j=q,G=L.length),q=Math.ceil(pe/p),G=q>G?q+1:G+1,T>G&&(T=G,I.length=1),I.reverse();T--;)I.push(0);I.reverse()}for(G=L.length,T=Y.length,G-T<0&&(T=G,I=Y,Y=L,L=I),M=0;T;)M=(L[--T]=L[T]+Y[T]+M)/d|0,L[T]%=d;for(M&&(L.unshift(M),++j),G=L.length;L[--G]==0;)L.pop();return P.d=L,P.e=j,n?C(P,pe):P}function h(N,P,M){if(N!==~~N||NM)throw Error(a+N)}function y(N){var P,M,I,j=N.length-1,T="",q=N[0];if(j>0){for(T+=q,P=1;Pq?1:-1;else for(G=L=0;Gj[G]?1:-1;break}return L}function M(I,j,T){for(var q=0;T--;)I[T]-=q,q=I[T]1;)I.shift()}return function(I,j,T,q){var G,L,Y,K,pe,De,se,xe,ue,R,we,Ce,z,ee,ae,E,W,F,B=I.constructor,Ee=I.s==j.s?1:-1,Ve=I.d,fe=j.d;if(!I.s)return new B(I);if(!j.s)throw Error(o+"Division by zero");for(L=I.e-j.e,W=fe.length,ae=Ve.length,se=new B(Ee),xe=se.d=[],Y=0;fe[Y]==(Ve[Y]||0);)++Y;if(fe[Y]>(Ve[Y]||0)&&--L,T==null?Ce=T=B.precision:q?Ce=T+(k(I)-k(j))+1:Ce=T,Ce<0)return new B(0);if(Ce=Ce/p+2|0,Y=0,W==1)for(K=0,fe=fe[0],Ce++;(Y1&&(fe=N(fe,K),Ve=N(Ve,K),W=fe.length,ae=Ve.length),ee=W,ue=Ve.slice(0,W),R=ue.length;R=d/2&&++E;do K=0,G=P(fe,ue,W,R),G<0?(we=ue[0],W!=R&&(we=we*d+(ue[1]||0)),K=we/E|0,K>1?(K>=d&&(K=d-1),pe=N(fe,K),De=pe.length,R=ue.length,G=P(pe,ue,De,R),G==1&&(K--,M(pe,W16)throw Error(i+k(N));if(!N.s)return new K(c);for(P==null?(n=!1,G=pe):G=P,q=new K(.03125);N.abs().gte(.1);)N=N.times(q),Y+=5;for(I=Math.log(l(2,Y))/Math.LN10*2+5|0,G+=I,M=j=T=new K(c),K.precision=G;;){if(j=C(j.times(N),G),M=M.times(++L),q=T.plus(x(j,M,G)),y(q.d).slice(0,G)===y(T.d).slice(0,G)){for(;Y--;)T=C(T.times(T),G);return K.precision=pe,P==null?(n=!0,C(T,pe)):T}T=q}}function k(N){for(var P=N.e*p,M=N.d[0];M>=10;M/=10)P++;return P}function S(N,P,M){if(P>N.LN10.sd())throw n=!0,M&&(N.precision=M),Error(o+"LN10 precision limit exceeded");return C(new N(N.LN10),P)}function w(N){for(var P="";N--;)P+="0";return P}function _(N,P){var M,I,j,T,q,G,L,Y,K,pe=1,De=10,se=N,xe=se.d,ue=se.constructor,R=ue.precision;if(se.s<1)throw Error(o+(se.s?"NaN":"-Infinity"));if(se.eq(c))return new ue(0);if(P==null?(n=!1,Y=R):Y=P,se.eq(10))return P==null&&(n=!0),S(ue,Y);if(Y+=De,ue.precision=Y,M=y(xe),I=M.charAt(0),T=k(se),Math.abs(T)<15e14){for(;I<7&&I!=1||I==1&&M.charAt(1)>3;)se=se.times(N),M=y(se.d),I=M.charAt(0),pe++;T=k(se),I>1?(se=new ue("0."+M),T++):se=new ue(I+"."+M.slice(1))}else return L=S(ue,Y+2,R).times(T+""),se=_(new ue(I+"."+M.slice(1)),Y-De).plus(L),ue.precision=R,P==null?(n=!0,C(se,R)):se;for(G=q=se=x(se.minus(c),se.plus(c),Y),K=C(se.times(se),Y),j=3;;){if(q=C(q.times(K),Y),L=G.plus(x(q,new ue(j),Y)),y(L.d).slice(0,Y)===y(G.d).slice(0,Y))return G=G.times(2),T!==0&&(G=G.plus(S(ue,Y+2,R).times(T+""))),G=x(G,new ue(pe),Y),ue.precision=R,P==null?(n=!0,C(G,R)):G;G=L,j+=2}}function A(N,P){var M,I,j;for((M=P.indexOf("."))>-1&&(P=P.replace(".","")),(I=P.search(/e/i))>0?(M<0&&(M=I),M+=+P.slice(I+1),P=P.substring(0,I)):M<0&&(M=P.length),I=0;P.charCodeAt(I)===48;)++I;for(j=P.length;P.charCodeAt(j-1)===48;)--j;if(P=P.slice(I,j),P){if(j-=I,M=M-I-1,N.e=s(M/p),N.d=[],I=(M+1)%p,M<0&&(I+=p),Im||N.e<-m))throw Error(i+M)}else N.s=0,N.e=0,N.d=[0];return N}function C(N,P,M){var I,j,T,q,G,L,Y,K,pe=N.d;for(q=1,T=pe[0];T>=10;T/=10)q++;if(I=P-q,I<0)I+=p,j=P,Y=pe[K=0];else{if(K=Math.ceil((I+1)/p),T=pe.length,K>=T)return N;for(Y=T=pe[K],q=1;T>=10;T/=10)q++;I%=p,j=I-p+q}if(M!==void 0&&(T=l(10,q-j-1),G=Y/T%10|0,L=P<0||pe[K+1]!==void 0||Y%T,L=M<4?(G||L)&&(M==0||M==(N.s<0?3:2)):G>5||G==5&&(M==4||L||M==6&&(I>0?j>0?Y/l(10,q-j):0:pe[K-1])%10&1||M==(N.s<0?8:7))),P<1||!pe[0])return L?(T=k(N),pe.length=1,P=P-T-1,pe[0]=l(10,(p-P%p)%p),N.e=s(-P/p)||0):(pe.length=1,pe[0]=N.e=N.s=0),N;if(I==0?(pe.length=K,T=1,K--):(pe.length=K+1,T=l(10,p-I),pe[K]=j>0?(Y/l(10,q-j)%l(10,j)|0)*T:0),L)for(;;)if(K==0){(pe[0]+=T)==d&&(pe[0]=1,++N.e);break}else{if(pe[K]+=T,pe[K]!=d)break;pe[K--]=0,T=1}for(I=pe.length;pe[--I]===0;)pe.pop();if(n&&(N.e>m||N.e<-m))throw Error(i+k(N));return N}function O(N,P){var M,I,j,T,q,G,L,Y,K,pe,De=N.constructor,se=De.precision;if(!N.s||!P.s)return P.s?P.s=-P.s:P=new De(N),n?C(P,se):P;if(L=N.d,pe=P.d,I=P.e,Y=N.e,L=L.slice(),q=Y-I,q){for(K=q<0,K?(M=L,q=-q,G=pe.length):(M=pe,I=Y,G=L.length),j=Math.max(Math.ceil(se/p),G)+2,q>j&&(q=j,M.length=1),M.reverse(),j=q;j--;)M.push(0);M.reverse()}else{for(j=L.length,G=pe.length,K=j0;--j)L[G++]=0;for(j=pe.length;j>q;){if(L[--j]0?T=T.charAt(0)+"."+T.slice(1)+w(I):q>1&&(T=T.charAt(0)+"."+T.slice(1)),T=T+(j<0?"e":"e+")+j):j<0?(T="0."+w(-j-1)+T,M&&(I=M-q)>0&&(T+=w(I))):j>=q?(T+=w(j+1-q),M&&(I=M-j-1)>0&&(T=T+"."+w(I))):((I=j+1)0&&(j+1===q&&(T+="."),T+=w(I))),N.s<0?"-"+T:T}function H(N,P){if(N.length>P)return N.length=P,!0}function $(N){var P,M,I;function j(T){var q=this;if(!(q instanceof j))return new j(T);if(q.constructor=j,T instanceof j){q.s=T.s,q.e=T.e,q.d=(T=T.d)?T.slice():T;return}if(typeof T=="number"){if(T*0!==0)throw Error(a+T);if(T>0)q.s=1;else if(T<0)T=-T,q.s=-1;else{q.s=0,q.e=0,q.d=[0];return}if(T===~~T&&T<1e7){q.e=0,q.d=[T];return}return A(q,T.toString())}else if(typeof T!="string")throw Error(a+T);if(T.charCodeAt(0)===45?(T=T.slice(1),q.s=-1):q.s=1,u.test(T))A(q,T);else throw Error(a+T)}if(j.prototype=g,j.ROUND_UP=0,j.ROUND_DOWN=1,j.ROUND_CEIL=2,j.ROUND_FLOOR=3,j.ROUND_HALF_UP=4,j.ROUND_HALF_DOWN=5,j.ROUND_HALF_EVEN=6,j.ROUND_HALF_CEIL=7,j.ROUND_HALF_FLOOR=8,j.clone=$,j.config=j.set=Z,N===void 0&&(N={}),N)for(I=["precision","rounding","toExpNeg","toExpPos","LN10"],P=0;P=j[P+1]&&I<=j[P+2])this[M]=I;else throw Error(a+M+": "+I);if((I=N[M="LN10"])!==void 0)if(I==Math.LN10)this[M]=new this(I);else throw Error(a+M+": "+I);return this}r=$(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof Ek<"u"&&Ek.exports?Ek.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(gW)});var cq=Wo((u9e,w5)=>{"use strict";var Mhe=Object.prototype.hasOwnProperty,Ba="~";function Lx(){}Object.create&&(Lx.prototype=Object.create(null),new Lx().__proto__||(Ba=!1));function Ihe(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function uq(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new Ihe(r,n||e,o),i=Ba?Ba+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 J_(e,t){--e._eventsCount===0?e._events=new Lx:delete e._events[t]}function ya(){this._events=new Lx,this._eventsCount=0}ya.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Mhe.call(r,n)&&t.push(Ba?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};ya.prototype.listeners=function(t){var r=Ba?Ba+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 P5=Symbol.for("react.transitional.element"),M5=Symbol.for("react.portal"),dC=Symbol.for("react.fragment"),pC=Symbol.for("react.strict_mode"),fC=Symbol.for("react.profiler"),mC=Symbol.for("react.consumer"),gC=Symbol.for("react.context"),hC=Symbol.for("react.forward_ref"),yC=Symbol.for("react.suspense"),vC=Symbol.for("react.suspense_list"),xC=Symbol.for("react.memo"),bC=Symbol.for("react.lazy"),vve=Symbol.for("react.view_transition"),xve=Symbol.for("react.client.reference");function ms(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case P5:switch(e=e.type,e){case dC:case fC:case pC:case yC:case vC:case vve:return e;default:switch(e=e&&e.$$typeof,e){case gC:case hC:case bC:case xC:return e;case mC:return e;default:return t}}case M5:return t}}}on.ContextConsumer=mC;on.ContextProvider=gC;on.Element=P5;on.ForwardRef=hC;on.Fragment=dC;on.Lazy=bC;on.Memo=xC;on.Portal=M5;on.Profiler=fC;on.StrictMode=pC;on.Suspense=yC;on.SuspenseList=vC;on.isContextConsumer=function(e){return ms(e)===mC};on.isContextProvider=function(e){return ms(e)===gC};on.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===P5};on.isForwardRef=function(e){return ms(e)===hC};on.isFragment=function(e){return ms(e)===dC};on.isLazy=function(e){return ms(e)===bC};on.isMemo=function(e){return ms(e)===xC};on.isPortal=function(e){return ms(e)===M5};on.isProfiler=function(e){return ms(e)===fC};on.isStrictMode=function(e){return ms(e)===pC};on.isSuspense=function(e){return ms(e)===yC};on.isSuspenseList=function(e){return ms(e)===vC};on.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===dC||e===fC||e===pC||e===yC||e===vC||typeof e=="object"&&e!==null&&(e.$$typeof===bC||e.$$typeof===xC||e.$$typeof===gC||e.$$typeof===mC||e.$$typeof===hC||e.$$typeof===xve||e.getModuleId!==void 0)};on.typeOf=ms});var SK=Wo((dWe,wK)=>{"use strict";wK.exports=bK()});var wre=X(J()),Sre=X(a6());var _t=X(J());var Ct=X(J());var Er=X(J()),tp={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"}},hv={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"}},$m={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 jae=({id:e="mascot"})=>Er.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},Er.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},Er.default.createElement("g",{fillRule:"nonzero"},Er.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"})),Er.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"}),Er.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"}),Er.default.createElement("g",{transform:"translate(75.105, 196.182)"},Er.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),Er.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),Er.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),Er.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),Er.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),Er.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),Er.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),Er.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),Er.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},Er.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},Er.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"})),Er.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"})),Er.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},Er.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"})),Er.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},Er.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"}),Er.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 wn({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return Er.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&Er.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=tp[c];return d?Er.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),Er.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"},Er.default.createElement("title",null,"ActiveAgent"),Er.default.createElement(jae,null)),n&&r.length>0&&Er.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=hv[c];return d?Er.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var Qa=X(J());var ma=X(J());var i6="dashboard-theme",hw=["system","light","dark"],s6=[{value:"system",label:"System"},{value:"light",label:"Light"},{value:"dark",label:"Dark"}],$ae="(prefers-color-scheme: dark)";function l6(e){try{let t=e?.getItem?.(i6);return hw.includes(t)?t:"system"}catch{return"system"}}function u6(e,t){try{e?.setItem?.(i6,hw.includes(t)?t:"system")}catch{}}function c6(e,t){return e==="system"?!!t:e==="dark"}function d6(e){return e?"light":"dark"}function p6(e,t){return e==="system"?`Follows your system's appearance, ${t?"dark":"light"} right now`:e==="dark"?"Dark across the dashboard":"Light across the dashboard"}function FT(e=globalThis.window){return typeof e?.matchMedia=="function"?e.matchMedia($ae):null}var f6=(0,ma.createContext)();function m6({children:e}){let[t,r]=(0,ma.useState)(()=>l6(globalThis.localStorage)),[n,o]=(0,ma.useState)(()=>!!FT()?.matches);(0,ma.useEffect)(()=>{let u=FT();if(!u)return;let c=d=>o(d.matches);return o(u.matches),u.addEventListener("change",c),()=>u.removeEventListener("change",c)},[]);let a=(0,ma.useCallback)(u=>{let c=hw.includes(u)?u:"system";r(c),u6(globalThis.localStorage,c)},[]),i=c6(t,n),s=(0,ma.useCallback)(()=>a(d6(i)),[i,a]),l=(0,ma.useMemo)(()=>({darkMode:i,theme:t,systemDark:n,setTheme:a,toggleDarkMode:s}),[i,t,n,a,s]);return ma.default.createElement(f6.Provider,{value:l},e)}function ut(){let e=(0,ma.useContext)(f6);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function Lm({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=ut(),[u,c]=Qa.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 Qa.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"}},Qa.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},Qa.default.createElement("div",{style:{minWidth:0}},Qa.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&&Qa.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&Qa.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&Qa.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>Qa.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},Qa.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),Qa.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&Qa.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&Qa.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function WT(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var $t=X(J());var Zr=X(J());var Ko={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 It={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}};var U="var(--font-mono)",cu=e=>e>=1?"success":e>=.7?"warning":"error",Fn={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)"},system:{strong:"var(--color-system)",soft:"var(--color-system-soft)",text:"var(--color-system-text)"},dev:{strong:"var(--color-dev)",soft:"var(--color-dev-soft)",text:"var(--color-dev-text)"}},Lae={active:"success",complete:"success",completed:"success",ready:"success",passed:"success",draft:"warning",pending:"warning",queued:"warning",waiting:"warning",running:"info",in_progress:"info",failed:"error",error:"error",expired:"error",archived:"muted",cancelled:"muted",canceled:"muted",skipped:"muted"},fl=e=>Lae[String(e||"").toLowerCase()]||"muted",zae={user:{tone:"info",label:"User"},assistant:{tone:"accent",label:"Assistant"},tool:{tone:"warning",label:"Tool"},system:{tone:"system",label:"System"},developer:{tone:"dev",label:"Dev"}},g6=e=>zae[e]||{tone:"muted",label:e},yv={object:"=",sample:"~",pass:Ko.success,fault:Ko.error,info:Ko.info,on:"[x]",off:"[ ]",link:Ko.arrow,chevron:Ko.chevronRight};function Ia({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Zr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:U,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},yv.chevron):Zr.default.createElement("span",{title:i,style:{fontFamily:U,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}},yv[e]||e)}function be({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=Fn[e]||Fn.muted;return Zr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:U,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function je({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return Zr.default.createElement(a,{htmlFor:i,style:{fontFamily:U,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function In({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,disabled:a=!1,title:i,style:s,testId:l}){return Zr.default.createElement("button",{type:"button","data-testid":l,onClick:a?void 0:t,disabled:a,"aria-disabled":a||void 0,title:i,style:{padding:"4px 10px",borderRadius:n?6:999,cursor:t&&!a?"pointer":"default",fontFamily:o?U:"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)",opacity:a?.5:void 0,...s}},r)}function To({options:e,value:t,onChange:r,style:n,labelledBy:o}){return Zr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group","aria-labelledby":o},e.map(a=>{let i=a.value===t;return Zr.default.createElement("button",{key:a.value,type:"button",onClick:()=>r(a.value),"aria-pressed":i,title:a.title,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${i?"var(--color-accent-ui)":"var(--color-border)"}`,color:i?"var(--color-accent-ui)":"var(--color-text-cell)"}},a.label)}))}function ie({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 Zr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function Le({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Zr.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 zm({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Zr.default.createElement(Le,{testId:a,className:"max-md:p-4!"},Zr.default.createElement(je,{size:11,spacing:"0.05em"},e),Zr.default.createElement("div",{className:"max-md:text-[24px]!",style:{marginTop:8,fontFamily:U,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Zr.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 Zr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Zr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Zr.default.createElement(je,null,e),t&&Zr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},t)),Zr.default.createElement("div",{style:a},r))}function du({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||Fn[cu(u)].strong;return Zr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Zr.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Zr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Zr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Zr.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function yw({parts:e=[],total:t=0,height:r=4,radius:n=2,style:o,testId:a,title:i,...s}){return Zr.default.createElement("div",{"data-testid":a,title:i,style:{display:"flex",height:r,borderRadius:n,overflow:"hidden",background:"var(--color-border-light)",...o},...s},e.map((l,u)=>Zr.default.createElement("span",{key:u,style:{width:`${t>0?100*(Number(l.value)||0)/t:0}%`,background:(Fn[l.tone]||Fn.muted).strong,transition:"width 300ms"}})))}function Jr({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i,testId:s}){return Zr.default.createElement("a",{href:r,"data-testid":s,title:i,onClick:l=>{t&&(l.preventDefault(),t(l))},style:{fontFamily:U,fontSize:o,color:n,textDecoration:"none",...a}},e," ",yv.link)}function tn({children:e,style:t}){return Zr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:U,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}function vw(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function h6(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function rt(e=""){return vw(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function Pc(e="",t={}){window.history.pushState(t,"",rt(e))}function Zn(e=window.location.pathname){return h6(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function st(e,t={}){if(!e)return;let r=Zn(e);Pc(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:rt(r)}}))}function Bae({origin:e,mountPath:t,multiTenant:r}){return r?`${e}/v1/traces`:`${e}${vw(t,"/api/traces")}`}function xw(e){return`production: +`+n.stack}}var uN=Object.prototype.hasOwnProperty,RN=To.unstable_scheduleCallback,AE=To.unstable_cancelCallback,_ne=To.unstable_shouldYield,Cne=To.unstable_requestPaint,xi=To.unstable_now,Ane=To.unstable_getCurrentPriorityLevel,OL=To.unstable_ImmediatePriority,PL=To.unstable_UserBlockingPriority,I1=To.unstable_NormalPriority,Ene=To.unstable_LowPriority,ML=To.unstable_IdlePriority,Nne=To.log,Tne=To.unstable_setDisableYieldValue,lv=null,bi=null;function pc(e){if(typeof Nne=="function"&&Tne(e),bi&&typeof bi.setStrictMode=="function")try{bi.setStrictMode(lv,e)}catch{}}var wi=Math.clz32?Math.clz32:Mne,One=Math.log,Pne=Math.LN2;function Mne(e){return e>>>=0,e===0?32:31-(One(e)/Pne|0)|0}var Qb=256,Rb=262144,e1=4194304;function zd(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 aw(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=zd(n):(i&=s,i!==0?o=zd(i):r||(r=s&~e,r!==0&&(o=zd(r))))):(s=n&~a,s!==0?o=zd(s):i!==0?o=zd(i):r||(r=n&~e,r!==0&&(o=zd(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 uv(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ine(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 IL(){var e=e1;return e1<<=1,(e1&62914560)===0&&(e1=4194304),e}function EE(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function cv(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Dne(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 Fne=/[\n"\\]/g;function Xi(e){return e.replace(Fne,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function pN(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=""+Vi(t)):e.value!==""+Vi(t)&&(e.value=""+Vi(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?fN(e,i,Vi(t)):r!=null?fN(e,i,Vi(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=""+Vi(s):e.removeAttribute("name")}function UL(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)){dN(e);return}r=r!=null?""+Vi(r):"",t=t!=null?""+Vi(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),dN(e)}function fN(e,t,r){t==="number"&&D1(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function fm(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"),gN=!1;if(au)try{Xf={},Object.defineProperty(Xf,"passive",{get:function(){gN=!0}}),window.addEventListener("test",Xf,Xf),window.removeEventListener("test",Xf,Xf)}catch{gN=!1}var Xf,fc=null,aT=null,y1=null;function GL(){if(y1)return y1;var e,t=aT,r=t.length,n,o="value"in fc?fc.value:fc.textContent,a=o.length;for(e=0;e=Dy),p4=" ",f4=!1;function XL(e,t){switch(e){case"keyup":return moe.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ZL(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var om=!1;function hoe(e,t){switch(e){case"compositionend":return ZL(t);case"keypress":return t.which!==32?null:(f4=!0,p4);case"textInput":return e=t.data,e===p4&&f4?null:e;default:return null}}function yoe(e,t){if(om)return e==="compositionend"||!sT&&XL(e,t)?(e=GL(),y1=aT=fc=null,om=!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=y4(r)}}function e8(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?e8(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function t8(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=D1(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=D1(e.document)}return t}function lT(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 Coe=au&&"documentMode"in document&&11>=document.documentMode,am=null,hN=null,jy=null,yN=!1;function x4(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;yN||am==null||am!==D1(n)||(n=am,"selectionStart"in n&&lT(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}),jy&&Zy(jy,n)||(jy=n,n=Q1(hN,"onSelect"),0>=i,o-=i,ll=1<<32-wi(t)+o|r<_?(A=w,w=null):A=w.sibling;var C=p(h,w,x[_],v);if(C===null){w===null&&(w=A);break}e&&w&&C.alternate===null&&t(h,w),y=a(C,y,_),S===null?k=C:S.sibling=C,S=C,w=A}if(_===x.length)return r(h,w),br&&Jl(h,_),k;if(w===null){for(;__?(A=w,w=null):A=w.sibling;var O=p(h,w,C.value,v);if(O===null){w===null&&(w=A);break}e&&w&&O.alternate===null&&t(h,w),y=a(O,y,_),S===null?k=O:S.sibling=O,S=O,w=A}if(C.done)return r(h,w),br&&Jl(h,_),k;if(w===null){for(;!C.done;_++,C=x.next())C=d(h,C.value,v),C!==null&&(y=a(C,y,_),S===null?k=C:S.sibling=C,S=C);return br&&Jl(h,_),k}for(w=n(w);!C.done;_++,C=x.next())C=f(w,h,_,C.value,v),C!==null&&(e&&C.alternate!==null&&w.delete(C.key===null?_:C.key),y=a(C,y,_),S===null?k=C:S.sibling=C,S=C);return e&&w.forEach(function(D){return t(h,D)}),br&&Jl(h,_),k}function b(h,y,x,v){if(typeof x=="object"&&x!==null&&x.type===em&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Jb:e:{for(var k=x.key;y!==null;){if(y.key===k){if(k=x.type,k===em){if(y.tag===7){r(h,y.sibling),v=o(y,x.props.children),v.return=h,h=v;break e}}else if(y.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===ic&&Bd(k)===y.type){r(h,y.sibling),v=o(y,x.props),_y(v,x),v.return=h,h=v;break e}r(h,y);break}else t(h,y);y=y.sibling}x.type===em?(v=Ud(x.props.children,h.mode,v,x.key),v.return=h,h=v):(v=x1(x.type,x.key,x.props,null,h.mode,v),_y(v,x),v.return=h,h=v)}return i(h);case Ty:e:{for(k=x.key;y!==null;){if(y.key===k)if(y.tag===4&&y.stateNode.containerInfo===x.containerInfo&&y.stateNode.implementation===x.implementation){r(h,y.sibling),v=o(y,x.children||[]),v.return=h,h=v;break e}else{r(h,y);break}else t(h,y);y=y.sibling}v=$E(x,h.mode,v),v.return=h,h=v}return i(h);case ic:return x=Bd(x),b(h,y,x,v)}if(Oy(x))return m(h,y,x,v);if(Sy(x)){if(k=Sy(x),typeof k!="function")throw Error(Ne(150));return x=k.call(x),g(h,y,x,v)}if(typeof x.then=="function")return b(h,y,i1(x),v);if(x.$$typeof===Rl)return b(h,y,a1(h,x),v);s1(h,x)}return typeof x=="string"&&x!==""||typeof x=="number"||typeof x=="bigint"?(x=""+x,y!==null&&y.tag===6?(r(h,y.sibling),v=o(y,x),v.return=h,h=v):(r(h,y),v=DE(x,h.mode,v),v.return=h,h=v),i(h)):r(h,y)}return function(h,y,x,v){try{Ry=0;var k=b(h,y,x,v);return hm=null,k}catch(w){if(w===Im||w===dw)throw w;var S=yi(29,w,null,h.mode);return S.lanes=v,S.return=h,S}}}var Yd=h8(!0),y8=h8(!1),sc=!1;function yT(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function _N(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 xc(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function bc(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(Ir&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=j1(e),l8(e,null,r),t}return cw(e,n,t,r),j1(e)}function zy(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,$L(e,r)}}function LE(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 CN=!1;function By(){if(CN){var e=gm;if(e!==null)throw e}}function Fy(e,t,r,n){CN=!1;var o=e.updateQueue;sc=!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?(yr&p)===p:(n&p)===p){p!==0&&p===Sm&&(CN=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,g=s;p=t;var b=r;switch(g.tag){case 1:if(m=g.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=g.payload,p=typeof m=="function"?m.call(b,d,p):m,p==null)break e;d=bn({},d,p);break e;case 2:sc=!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),Tc|=i,e.lanes=i,e.memoizedState=d}}function v8(e,t){if(typeof e!="function")throw Error(Ne(191,e));e.call(t)}function x8(e,t){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;ea?a:8;var i=Ft.T,s={};Ft.T=s,OT(e,!1,t,r);try{var l=o(),u=Ft.S;if(u!==null&&u(s,l),l!==null&&typeof l=="object"&&typeof l.then=="function"){var c=Doe(l,n);Wy(e,t,c,Si(e))}else Wy(e,t,n,Si(e))}catch(d){Wy(e,t,{then:function(){},status:"rejected",reason:d},Si())}finally{Dr.p=a,i!==null&&s.types!==null&&(i.types=s.types),Ft.T=i}}function Foe(){}function ON(e,t,r,n){if(e.tag!==5)throw Error(Ne(476));var o=q8(e).queue;H8(e,o,t,Wd,r===null?Foe:function(){return K8(e),r(n)})}function q8(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Wd,baseState:Wd,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:su,lastRenderedState:Wd},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:su,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function K8(e){var t=q8(e);t.next===null&&(t=e.alternate.memoizedState),Wy(e,t.next.queue,{},Si())}function TT(){return ra(ov)}function V8(){return uo().memoizedState}function G8(){return uo().memoizedState}function Woe(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=Si();e=xc(r);var n=bc(t,e,r);n!==null&&(Za(n,t,r),zy(n,t,r)),t={cache:mT()},e.payload=t;return}t=t.return}}function Uoe(e,t,r){var n=Si();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},gw(e)?X8(t,r):(r=cT(e,t,r,n),r!==null&&(Za(r,e,n),Z8(r,t,n)))}function Y8(e,t,r){var n=Si();Wy(e,t,r,n)}function Wy(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(gw(e))X8(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,ki(s,i))return cw(e,t,o,0),Rr===null&&uw(),!1}catch{}if(r=cT(e,t,o,n),r!==null)return Za(r,e,n),Z8(r,t,n),!0}return!1}function OT(e,t,r,n){if(n={lane:2,revertLane:BT(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},gw(e)){if(t)throw Error(Ne(479))}else t=cT(e,r,n,2),t!==null&&Za(t,e,2)}function gw(e){var t=e.alternate;return e===tr||t!==null&&t===tr}function X8(e,t){ym=U1=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Z8(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,$L(e,r)}}var tv={readContext:ra,use:fw,useCallback:Zn,useContext:Zn,useEffect:Zn,useImperativeHandle:Zn,useLayoutEffect:Zn,useInsertionEffect:Zn,useMemo:Zn,useReducer:Zn,useRef:Zn,useState:Zn,useDebugValue:Zn,useDeferredValue:Zn,useTransition:Zn,useSyncExternalStore:Zn,useId:Zn,useHostTransitionStatus:Zn,useFormState:Zn,useActionState:Zn,useOptimistic:Zn,useMemoCache:Zn,useCacheRefresh:Zn};tv.useEffectEvent=Zn;var J8={readContext:ra,use:fw,useCallback:function(e,t){return Da().memoizedState=[e,t===void 0?null:t],e},useContext:ra,useEffect:D4,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,S1(4194308,4,z8.bind(null,t,e),r)},useLayoutEffect:function(e,t){return S1(4194308,4,e,t)},useInsertionEffect:function(e,t){S1(4,2,e,t)},useMemo:function(e,t){var r=Da();t=t===void 0?null:t;var n=e();if(Xd){pc(!0);try{e()}finally{pc(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=Da();if(r!==void 0){var o=r(t);if(Xd){pc(!0);try{r(t)}finally{pc(!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=Uoe.bind(null,tr,e),[n.memoizedState,e]},useRef:function(e){var t=Da();return e={current:e},t.memoizedState=e},useState:function(e){e=NN(e);var t=e.queue,r=Y8.bind(null,tr,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:ET,useDeferredValue:function(e,t){var r=Da();return NT(r,e,t)},useTransition:function(){var e=NN(!1);return e=H8.bind(null,tr,e.queue,!0,!1),Da().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=tr,o=Da();if(br){if(r===void 0)throw Error(Ne(407));r=r()}else{if(r=t(),Rr===null)throw Error(Ne(349));(yr&127)!==0||_8(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,D4(A8.bind(null,n,a,e),[e]),n.flags|=2048,_m(9,{destroy:void 0},C8.bind(null,n,a,r,t),null),r},useId:function(){var e=Da(),t=Rr.identifierPrefix;if(br){var r=ul,n=ll;r=(n&~(1<<32-wi(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=H1++,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[ea]=t,a[Ja]=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(na(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&&Gl(t)}}return vn(t),KE(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Gl(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(Ne(166));if(e=yc.current,Zf(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=ta,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[ea]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||Yz(e.nodeValue,r)),e||Ec(t,!0)}else e=R1(e).createTextNode(n),e[ea]=t,t.stateNode=e}return vn(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=Zf(t),r!==null){if(e===null){if(!n)throw Error(Ne(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(Ne(557));e[ea]=t}else Vd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;vn(t),e=!1}else r=jE(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(hi(t),t):(hi(t),null);if((t.flags&128)!==0)throw Error(Ne(558))}return vn(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=Zf(t),n!==null&&n.dehydrated!==null){if(e===null){if(!o)throw Error(Ne(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(Ne(317));o[ea]=t}else Vd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;vn(t),o=!1}else o=jE(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(hi(t),t):(hi(t),null)}return hi(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),l1(t,t.updateQueue),vn(t),null);case 4:return xm(),e===null&&FT(t.stateNode.containerInfo),vn(t),null;case 10:return nu(t.type),vn(t),null;case 19:if(Ko(lo),n=t.memoizedState,n===null)return vn(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)Cy(n,!1);else{if(Jn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=W1(e),a!==null){for(t.flags|=128,Cy(n,!1),e=a.updateQueue,t.updateQueue=e,l1(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)u8(r,e),r=r.sibling;return cn(lo,lo.current&1|2),br&&Jl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&xi()>G1&&(t.flags|=128,o=!0,Cy(n,!1),t.lanes=4194304)}else{if(!o)if(e=W1(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,l1(t,e),Cy(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!br)return vn(t),null}else 2*xi()-n.renderingStartTime>G1&&r!==536870912&&(t.flags|=128,o=!0,Cy(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=xi(),e.sibling=null,r=lo.current,cn(lo,o?r&1|2:r&1),br&&Jl(t,n.treeForkCount),e):(vn(t),null);case 22:case 23:return hi(t),vT(),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&&(vn(t),t.subtreeFlags&6&&(t.flags|=8192)):vn(t),r=t.updateQueue,r!==null&&l1(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&&Ko(Hd),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),nu(wo),vn(t),null;case 25:return null;case 30:return null}throw Error(Ne(156,t.tag))}function Goe(e,t){switch(fT(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return nu(wo),xm(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return M1(t),null;case 31:if(t.memoizedState!==null){if(hi(t),t.alternate===null)throw Error(Ne(340));Vd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(hi(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ne(340));Vd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ko(lo),null;case 4:return xm(),null;case 10:return nu(t.type),null;case 22:case 23:return hi(t),vT(),e!==null&&Ko(Hd),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return nu(wo),null;case 25:return null;default:return null}}function uz(e,t){switch(fT(t),t.tag){case 3:nu(wo),xm();break;case 26:case 27:case 5:M1(t);break;case 4:xm();break;case 31:t.memoizedState!==null&&hi(t);break;case 13:hi(t);break;case 19:Ko(lo);break;case 10:nu(t.type);break;case 22:case 23:hi(t),vT(),e!==null&&Ko(Hd);break;case 24:nu(wo)}}function gv(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){Kr(t,t.return,s)}}function Nc(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){Kr(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){Kr(t,t.return,c)}}function cz(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{x8(t,r)}catch(n){Kr(e,e.return,n)}}}function dz(e,t,r){r.props=Zd(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Kr(e,t,n)}}function Uy(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){Kr(e,t,o)}}function cl(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){Kr(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){Kr(e,t,o)}else r.current=null}function pz(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){Kr(e,e.return,o)}}function VE(e,t,r){try{var n=e.stateNode;fae(n,e.type,r,t),n[Ja]=t}catch(o){Kr(e,e.return,o)}}function fz(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Pc(e.type)||e.tag===4}function GE(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||fz(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&&Pc(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 $N(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=eu));else if(n!==4&&(n===27&&Pc(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for($N(e,t,r),e=e.sibling;e!==null;)$N(e,t,r),e=e.sibling}function V1(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&&Pc(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(V1(e,t,r),e=e.sibling;e!==null;)V1(e,t,r),e=e.sibling}function mz(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);na(t,n,r),t[ea]=e,t[Ja]=r}catch(a){Kr(e,e.return,a)}}var Ql=!1,bo=!1,YE=!1,G4=typeof WeakSet=="function"?WeakSet:Set,Ho=null;function Yoe(e,t){if(e=e.containerInfo,UN=nw,e=t8(e),lT(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(HN={focusedElem:e,selectionRange:r},nw=!1,Ho=t;Ho!==null;)if(t=Ho,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ho=e;else for(;Ho!==null;){switch(t=Ho,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"))),na(a,n,r),a[ea]=e,qo(a),n=a;break e;case"link":var i=gL("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sb&&(i=b,b=g,g=i);var h=v4(s,g),y=v4(s,b);if(h&&y&&(f.rangeCount!==1||f.anchorNode!==h.node||f.anchorOffset!==h.offset||f.focusNode!==y.node||f.focusOffset!==y.offset)){var x=d.createRange();x.setStart(h.node,h.offset),f.removeAllRanges(),g>b?(f.addRange(x),f.extend(y.node,y.offset)):(x.setEnd(y.node,y.offset),f.addRange(x))}}}}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,Ft.T=null,r=zN,zN=null;var a=Sc,i=ou;if(No=0,Am=Sc=null,ou=0,(Ir&6)!==0)throw Error(Ne(331));var s=Ir;if(Ir|=4,Cz(a.current),Sz(a,a.current,i,r),Ir=s,hv(0,!1),bi&&typeof bi.onPostCommitFiberRoot=="function")try{bi.onPostCommitFiberRoot(lv,a)}catch{}return!0}finally{Dr.p=o,Ft.T=n,Fz(e,t)}}function J4(e,t,r){t=Zi(r,t),t=MN(e.stateNode,t,2),e=bc(e,t,2),e!==null&&(cv(e,2),fl(e))}function Kr(e,t,r){if(e.tag===3)J4(e,e,r);else for(;t!==null;){if(t.tag===3){J4(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(wc===null||!wc.has(n))){e=Zi(r,e),r=rz(2),n=bc(t,r,2),n!==null&&(nz(r,n,t,e),cv(n,2),fl(n));break}}t=t.return}}function ZE(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new Joe;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)||(jT=!0,o.add(r),e=rae.bind(null,e,t,r),t.then(e,e))}function rae(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Rr===e&&(yr&r)===r&&(Jn===4||Jn===3&&(yr&62914560)===yr&&300>xi()-hw?(Ir&2)===0&&Em(e,0):LT|=r,Cm===yr&&(Cm=0)),fl(e)}function Uz(e,t){t===0&&(t=IL()),e=ep(e,t),e!==null&&(cv(e,t),fl(e))}function nae(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),Uz(e,r)}function oae(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(Ne(314))}n!==null&&n.delete(t),Uz(e,r)}function aae(e,t){return RN(e,t)}var Z1=null,Rf=null,FN=!1,J1=!1,JE=!1,hc=0;function fl(e){e!==Rf&&e.next===null&&(Rf===null?Z1=Rf=e:Rf=Rf.next=e),J1=!0,FN||(FN=!0,sae())}function hv(e,t){if(!JE&&J1){JE=!0;do for(var r=!1,n=Z1;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-wi(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,Q4(n,a))}else a=yr,a=aw(n,n===Rr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||uv(n,a)||(r=!0,Q4(n,a));n=n.next}while(r);JE=!1}}function iae(){Hz()}function Hz(){J1=FN=!1;var e=0;hc!==0&&gae()&&(e=hc);for(var t=xi(),r=null,n=Z1;n!==null;){var o=n.next,a=qz(n,t);a===0?(n.next=null,r===null?Z1=o:r.next=o,o===null&&(Rf=r)):(r=n,(e!==0||(a&3)!==0)&&(J1=!0)),n=o}No!==0&&No!==5||hv(e,!1),hc!==0&&(hc=0)}function qz(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&&aL(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function Rz(e,t,r){var n=$m;if(n&&typeof t=="string"&&t){var o=Xi(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),pL.has(o)||(pL.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),na(t,"link",e),qo(t),n.head.appendChild(t)))}}function _ae(e){cu.D(e),Rz("dns-prefetch",e,null)}function Cae(e,t){cu.C(e,t),Rz("preconnect",e,t)}function Aae(e,t,r){cu.L(e,t,r);var n=$m;if(n&&e&&t){var o='link[rel="preload"][as="'+Xi(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+Xi(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+Xi(r.imageSizes)+'"]')):o+='[href="'+Xi(e)+'"]';var a=o;switch(t){case"style":a=Nm(e);break;case"script":a=jm(e)}es.has(a)||(e=bn({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),es.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(yv(a))||t==="script"&&n.querySelector(vv(a))||(t=n.createElement("link"),na(t,"link",e),qo(t),n.head.appendChild(t)))}}function Eae(e,t){cu.m(e,t);var r=$m;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+Xi(n)+'"][href="'+Xi(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=jm(e)}if(!es.has(a)&&(e=bn({rel:"modulepreload",href:e},t),es.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(vv(a)))return}n=r.createElement("link"),na(n,"link",e),qo(n),r.head.appendChild(n)}}}function Nae(e,t,r){cu.S(e,t,r);var n=$m;if(n&&e){var o=pm(n).hoistableStyles,a=Nm(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(yv(a)))s.loading=5;else{e=bn({rel:"stylesheet",href:e,"data-precedence":t},r),(r=es.get(a))&&WT(e,r);var l=i=n.createElement("link");qo(l),na(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,A1(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function Tae(e,t){cu.X(e,t);var r=$m;if(r&&e){var n=pm(r).hoistableScripts,o=jm(e),a=n.get(o);a||(a=r.querySelector(vv(o)),a||(e=bn({src:e,async:!0},t),(t=es.get(o))&&UT(e,t),a=r.createElement("script"),qo(a),na(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function Oae(e,t){cu.M(e,t);var r=$m;if(r&&e){var n=pm(r).hoistableScripts,o=jm(e),a=n.get(o);a||(a=r.querySelector(vv(o)),a||(e=bn({src:e,async:!0,type:"module"},t),(t=es.get(o))&&UT(e,t),a=r.createElement("script"),qo(a),na(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function fL(e,t,r,n){var o=(o=yc.current)?ew(o):null;if(!o)throw Error(Ne(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=Nm(r.href),r=pm(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=Nm(r.href);var a=pm(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(yv(e)))&&!a._p&&(i.instance=a,i.state.loading=5),es.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},es.set(e,r),a||Pae(o,e,r,i.state))),t&&n===null)throw Error(Ne(528,""));return i}if(t&&n!==null)throw Error(Ne(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=jm(r),r=pm(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(Ne(444,e))}}function Nm(e){return'href="'+Xi(e)+'"'}function yv(e){return'link[rel="stylesheet"]['+e+"]"}function e6(e){return bn({},e,{"data-precedence":e.precedence,precedence:null})}function Pae(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}),na(t,"link",r),qo(t),e.head.appendChild(t))}function jm(e){return'[src="'+Xi(e)+'"]'}function vv(e){return"script[async]"+e}function mL(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+Xi(r.href)+'"]');if(n)return t.instance=n,qo(n),n;var o=bn({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),qo(n),na(n,"style",o),A1(n,r.precedence,e),t.instance=n;case"stylesheet":o=Nm(r.href);var a=e.querySelector(yv(o));if(a)return t.state.loading|=4,t.instance=a,qo(a),a;n=e6(r),(o=es.get(o))&&WT(n,o),a=(e.ownerDocument||e).createElement("link"),qo(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),na(a,"link",n),t.state.loading|=4,A1(a,r.precedence,e),t.instance=a;case"script":return a=jm(r.src),(o=e.querySelector(vv(a)))?(t.instance=o,qo(o),o):(n=r,(o=es.get(a))&&(n=bn({},r),UT(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),qo(o),na(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(Ne(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,A1(n,r.precedence,e));return t.instance}function A1(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 Mae(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 t6(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Iae(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=Nm(n.href),a=t.querySelector(yv(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=tw.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,qo(a);return}a=t.ownerDocument||t,n=e6(n),(o=es.get(o))&&WT(n,o),a=a.createElement("link"),qo(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),na(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=tw.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var tN=0;function Dae(e,t){return e.stylesheets&&e.count===0&&N1(e,e.stylesheets),0tN?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function tw(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)N1(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var rw=null;function N1(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,rw=new Map,t.forEach($ae,e),rw=null,tw.call(e))}function $ae(e,t){if(!(t.state.loading&4)){var r=rw.get(e);if(r)var n=r.get(null);else{r=new Map,rw.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function c6(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(c6)}catch(e){console.error(e)}}c6(),d6.exports=u6()});var r7=Uo(t7=>{"use strict";var ag=J();function dse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var pse=typeof Object.is=="function"?Object.is:dse,fse=ag.useState,mse=ag.useEffect,gse=ag.useLayoutEffect,hse=ag.useDebugValue;function yse(e,t){var r=t(),n=fse({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return gse(function(){o.value=r,o.getSnapshot=t,YO(o)&&a({inst:o})},[e,r,t]),mse(function(){return YO(o)&&a({inst:o}),e(function(){YO(o)&&a({inst:o})})},[e]),hse(r),r}function YO(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!pse(e,r)}catch{return!0}}function vse(e,t){return t()}var xse=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?vse:yse;t7.useSyncExternalStore=ag.useSyncExternalStore!==void 0?ag.useSyncExternalStore:xse});var o7=Uo((N5e,n7)=>{"use strict";n7.exports=r7()});var i7=Uo(a7=>{"use strict";var kS=J(),bse=o7();function wse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Sse=typeof Object.is=="function"?Object.is:wse,kse=bse.useSyncExternalStore,_se=kS.useRef,Cse=kS.useEffect,Ase=kS.useMemo,Ese=kS.useDebugValue;a7.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=_se(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Ase(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,Sse(c,f))return m;var g=n(f);return o!==void 0&&o(m,g)?(c=f,m):(c=f,d=g)}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=kse(e,a[0],a[1]);return Cse(function(){i.hasValue=!0,i.value=s},[s]),Ese(s),s}});var l7=Uo((O5e,s7)=>{"use strict";s7.exports=i7()});var X9=Uo(Y9=>{"use strict";var Xv=J();function Pue(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Mue=typeof Object.is=="function"?Object.is:Pue,Iue=Xv.useSyncExternalStore,Due=Xv.useRef,$ue=Xv.useEffect,jue=Xv.useMemo,Lue=Xv.useDebugValue;Y9.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Due(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=jue(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,Mue(c,f))return m;var g=n(f);return o!==void 0&&o(m,g)?(c=f,m):(c=f,d=g)}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=Iue(e,a[0],a[1]);return $ue(function(){i.hasValue=!0,i.value=s},[s]),Lue(s),s}});var J9=Uo((TDe,Z9)=>{"use strict";Z9.exports=X9()});var HP=Uo((SW,Ik)=>{(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),g={};g.absoluteValue=g.abs=function(){var N=new this.constructor(this);return N.s&&(N.s=1),N},g.comparedTo=g.cmp=function(N){var P,M,I,$,T=this;if(N=new T.constructor(N),T.s!==N.s)return T.s||-N.s;if(T.e!==N.e)return T.e>N.e^T.s<0?1:-1;for(I=T.d.length,$=N.d.length,P=0,M=I<$?I:$;PN.d[P]^T.s<0?1:-1;return I===$?0:I>$^T.s<0?1:-1},g.decimalPlaces=g.dp=function(){var N=this,P=N.d.length-1,M=(P-N.e)*p;if(P=N.d[P],P)for(;P%10==0;P/=10)M--;return M<0?0:M},g.dividedBy=g.div=function(N){return x(this,new this.constructor(N))},g.dividedToIntegerBy=g.idiv=function(N){var P=this,M=P.constructor;return C(x(P,new M(N),0,1),M.precision)},g.equals=g.eq=function(N){return!this.cmp(N)},g.exponent=function(){return k(this)},g.greaterThan=g.gt=function(N){return this.cmp(N)>0},g.greaterThanOrEqualTo=g.gte=function(N){return this.cmp(N)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(N){return this.cmp(N)<0},g.lessThanOrEqualTo=g.lte=function(N){return this.cmp(N)<1},g.logarithm=g.log=function(N){var P,M=this,I=M.constructor,$=I.precision,T=$+5;if(N===void 0)N=new I(10);else if(N=new I(N),N.s<1||N.eq(c))throw Error(o+"NaN");if(M.s<1)throw Error(o+(M.s?"NaN":"-Infinity"));return M.eq(c)?new I(0):(n=!1,P=x(_(M,T),_(N,T),T),n=!0,C(P,$))},g.minus=g.sub=function(N){var P=this;return N=new P.constructor(N),P.s==N.s?O(P,N):b(P,(N.s=-N.s,N))},g.modulo=g.mod=function(N){var P,M=this,I=M.constructor,$=I.precision;if(N=new I(N),!N.s)throw Error(o+"NaN");return M.s?(n=!1,P=x(M,N,0,1).times(N),n=!0,M.minus(P)):C(new I(M),$)},g.naturalExponential=g.exp=function(){return v(this)},g.naturalLogarithm=g.ln=function(){return _(this)},g.negated=g.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},g.plus=g.add=function(N){var P=this;return N=new P.constructor(N),P.s==N.s?b(P,N):O(P,(N.s=-N.s,N))},g.precision=g.sd=function(N){var P,M,I,$=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(P=k($)+1,I=$.d.length-1,M=I*p+1,I=$.d[I],I){for(;I%10==0;I/=10)M--;for(I=$.d[0];I>=10;I/=10)M++}return N&&P>M?P:M},g.squareRoot=g.sqrt=function(){var N,P,M,I,$,T,q,G=this,L=G.constructor;if(G.s<1){if(!G.s)return new L(0);throw Error(o+"NaN")}for(N=k(G),n=!1,$=Math.sqrt(+G),$==0||$==1/0?(P=y(G.d),(P.length+N)%2==0&&(P+="0"),$=Math.sqrt(P),N=s((N+1)/2)-(N<0||N%2),$==1/0?P="5e"+N:(P=$.toExponential(),P=P.slice(0,P.indexOf("e")+1)+N),I=new L(P)):I=new L($.toString()),M=L.precision,$=q=M+3;;)if(T=I,I=T.plus(x(G,T,q+2)).times(.5),y(T.d).slice(0,q)===(P=y(I.d)).slice(0,q)){if(P=P.slice(q-3,q+1),$==q&&P=="4999"){if(C(T,M+1,0),T.times(T).eq(G)){I=T;break}}else if(P!="9999")break;q+=4}return n=!0,C(I,M)},g.times=g.mul=function(N){var P,M,I,$,T,q,G,L,Y,K=this,pe=K.constructor,De=K.d,se=(N=new pe(N)).d;if(!K.s||!N.s)return new pe(0);for(N.s*=K.s,M=K.e+N.e,L=De.length,Y=se.length,L=0;){for(P=0,$=L+I;$>I;)G=T[$]+se[I]*De[$-I-1]+P,T[$--]=G%d|0,P=G/d|0;T[$]=(T[$]+P)%d|0}for(;!T[--q];)T.pop();return P?++M:T.shift(),N.d=T,N.e=M,n?C(N,pe.precision):N},g.toDecimalPlaces=g.todp=function(N,P){var M=this,I=M.constructor;return M=new I(M),N===void 0?M:(h(N,0,t),P===void 0?P=I.rounding:h(P,0,8),C(M,N+k(M)+1,P))},g.toExponential=function(N,P){var M,I=this,$=I.constructor;return N===void 0?M=D(I,!0):(h(N,0,t),P===void 0?P=$.rounding:h(P,0,8),I=C(new $(I),N+1,P),M=D(I,!0,N+1)),M},g.toFixed=function(N,P){var M,I,$=this,T=$.constructor;return N===void 0?D($):(h(N,0,t),P===void 0?P=T.rounding:h(P,0,8),I=C(new T($),N+k($)+1,P),M=D(I.abs(),!1,N+k(I)+1),$.isneg()&&!$.isZero()?"-"+M:M)},g.toInteger=g.toint=function(){var N=this,P=N.constructor;return C(new P(N),k(N)+1,P.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(N){var P,M,I,$,T,q,G=this,L=G.constructor,Y=12,K=+(N=new L(N));if(!N.s)return new L(c);if(G=new L(G),!G.s){if(N.s<1)throw Error(o+"Infinity");return G}if(G.eq(c))return G;if(I=L.precision,N.eq(c))return C(G,I);if(P=N.e,M=N.d.length-1,q=P>=M,T=G.s,q){if((M=K<0?-K:K)<=f){for($=new L(c),P=Math.ceil(I/p+4),n=!1;M%2&&($=$.times(G),H($.d,P)),M=s(M/2),M!==0;)G=G.times(G),H(G.d,P);return n=!0,N.s<0?new L(c).div($):C($,I)}}else if(T<0)throw Error(o+"NaN");return T=T<0&&N.d[Math.max(P,M)]&1?-1:1,G.s=1,n=!1,$=N.times(_(G,I+Y)),n=!0,$=v($),$.s=T,$},g.toPrecision=function(N,P){var M,I,$=this,T=$.constructor;return N===void 0?(M=k($),I=D($,M<=T.toExpNeg||M>=T.toExpPos)):(h(N,1,t),P===void 0?P=T.rounding:h(P,0,8),$=C(new T($),N,P),M=k($),I=D($,N<=M||M<=T.toExpNeg,N)),I},g.toSignificantDigits=g.tosd=function(N,P){var M=this,I=M.constructor;return N===void 0?(N=I.precision,P=I.rounding):(h(N,1,t),P===void 0?P=I.rounding:h(P,0,8)),C(new I(M),N,P)},g.toString=g.valueOf=g.val=g.toJSON=function(){var N=this,P=k(N),M=N.constructor;return D(N,P<=M.toExpNeg||P>=M.toExpPos)};function b(N,P){var M,I,$,T,q,G,L,Y,K=N.constructor,pe=K.precision;if(!N.s||!P.s)return P.s||(P=new K(N)),n?C(P,pe):P;if(L=N.d,Y=P.d,q=N.e,$=P.e,L=L.slice(),T=q-$,T){for(T<0?(I=L,T=-T,G=Y.length):(I=Y,$=q,G=L.length),q=Math.ceil(pe/p),G=q>G?q+1:G+1,T>G&&(T=G,I.length=1),I.reverse();T--;)I.push(0);I.reverse()}for(G=L.length,T=Y.length,G-T<0&&(T=G,I=Y,Y=L,L=I),M=0;T;)M=(L[--T]=L[T]+Y[T]+M)/d|0,L[T]%=d;for(M&&(L.unshift(M),++$),G=L.length;L[--G]==0;)L.pop();return P.d=L,P.e=$,n?C(P,pe):P}function h(N,P,M){if(N!==~~N||NM)throw Error(a+N)}function y(N){var P,M,I,$=N.length-1,T="",q=N[0];if($>0){for(T+=q,P=1;P<$;P++)I=N[P]+"",M=p-I.length,M&&(T+=w(M)),T+=I;q=N[P],I=q+"",M=p-I.length,M&&(T+=w(M))}else if(q===0)return"0";for(;q%10===0;)q/=10;return T+q}var x=(function(){function N(I,$){var T,q=0,G=I.length;for(I=I.slice();G--;)T=I[G]*$+q,I[G]=T%d|0,q=T/d|0;return q&&I.unshift(q),I}function P(I,$,T,q){var G,L;if(T!=q)L=T>q?1:-1;else for(G=L=0;G$[G]?1:-1;break}return L}function M(I,$,T){for(var q=0;T--;)I[T]-=q,q=I[T]<$[T]?1:0,I[T]=q*d+I[T]-$[T];for(;!I[0]&&I.length>1;)I.shift()}return function(I,$,T,q){var G,L,Y,K,pe,De,se,be,ue,R,we,Ce,z,ee,ae,E,W,F,B=I.constructor,Ee=I.s==$.s?1:-1,Ve=I.d,fe=$.d;if(!I.s)return new B(I);if(!$.s)throw Error(o+"Division by zero");for(L=I.e-$.e,W=fe.length,ae=Ve.length,se=new B(Ee),be=se.d=[],Y=0;fe[Y]==(Ve[Y]||0);)++Y;if(fe[Y]>(Ve[Y]||0)&&--L,T==null?Ce=T=B.precision:q?Ce=T+(k(I)-k($))+1:Ce=T,Ce<0)return new B(0);if(Ce=Ce/p+2|0,Y=0,W==1)for(K=0,fe=fe[0],Ce++;(Y1&&(fe=N(fe,K),Ve=N(Ve,K),W=fe.length,ae=Ve.length),ee=W,ue=Ve.slice(0,W),R=ue.length;R=d/2&&++E;do K=0,G=P(fe,ue,W,R),G<0?(we=ue[0],W!=R&&(we=we*d+(ue[1]||0)),K=we/E|0,K>1?(K>=d&&(K=d-1),pe=N(fe,K),De=pe.length,R=ue.length,G=P(pe,ue,De,R),G==1&&(K--,M(pe,W16)throw Error(i+k(N));if(!N.s)return new K(c);for(P==null?(n=!1,G=pe):G=P,q=new K(.03125);N.abs().gte(.1);)N=N.times(q),Y+=5;for(I=Math.log(l(2,Y))/Math.LN10*2+5|0,G+=I,M=$=T=new K(c),K.precision=G;;){if($=C($.times(N),G),M=M.times(++L),q=T.plus(x($,M,G)),y(q.d).slice(0,G)===y(T.d).slice(0,G)){for(;Y--;)T=C(T.times(T),G);return K.precision=pe,P==null?(n=!0,C(T,pe)):T}T=q}}function k(N){for(var P=N.e*p,M=N.d[0];M>=10;M/=10)P++;return P}function S(N,P,M){if(P>N.LN10.sd())throw n=!0,M&&(N.precision=M),Error(o+"LN10 precision limit exceeded");return C(new N(N.LN10),P)}function w(N){for(var P="";N--;)P+="0";return P}function _(N,P){var M,I,$,T,q,G,L,Y,K,pe=1,De=10,se=N,be=se.d,ue=se.constructor,R=ue.precision;if(se.s<1)throw Error(o+(se.s?"NaN":"-Infinity"));if(se.eq(c))return new ue(0);if(P==null?(n=!1,Y=R):Y=P,se.eq(10))return P==null&&(n=!0),S(ue,Y);if(Y+=De,ue.precision=Y,M=y(be),I=M.charAt(0),T=k(se),Math.abs(T)<15e14){for(;I<7&&I!=1||I==1&&M.charAt(1)>3;)se=se.times(N),M=y(se.d),I=M.charAt(0),pe++;T=k(se),I>1?(se=new ue("0."+M),T++):se=new ue(I+"."+M.slice(1))}else return L=S(ue,Y+2,R).times(T+""),se=_(new ue(I+"."+M.slice(1)),Y-De).plus(L),ue.precision=R,P==null?(n=!0,C(se,R)):se;for(G=q=se=x(se.minus(c),se.plus(c),Y),K=C(se.times(se),Y),$=3;;){if(q=C(q.times(K),Y),L=G.plus(x(q,new ue($),Y)),y(L.d).slice(0,Y)===y(G.d).slice(0,Y))return G=G.times(2),T!==0&&(G=G.plus(S(ue,Y+2,R).times(T+""))),G=x(G,new ue(pe),Y),ue.precision=R,P==null?(n=!0,C(G,R)):G;G=L,$+=2}}function A(N,P){var M,I,$;for((M=P.indexOf("."))>-1&&(P=P.replace(".","")),(I=P.search(/e/i))>0?(M<0&&(M=I),M+=+P.slice(I+1),P=P.substring(0,I)):M<0&&(M=P.length),I=0;P.charCodeAt(I)===48;)++I;for($=P.length;P.charCodeAt($-1)===48;)--$;if(P=P.slice(I,$),P){if($-=I,M=M-I-1,N.e=s(M/p),N.d=[],I=(M+1)%p,M<0&&(I+=p),I<$){for(I&&N.d.push(+P.slice(0,I)),$-=p;I<$;)N.d.push(+P.slice(I,I+=p));P=P.slice(I),I=p-P.length}else I-=$;for(;I--;)P+="0";if(N.d.push(+P),n&&(N.e>m||N.e<-m))throw Error(i+M)}else N.s=0,N.e=0,N.d=[0];return N}function C(N,P,M){var I,$,T,q,G,L,Y,K,pe=N.d;for(q=1,T=pe[0];T>=10;T/=10)q++;if(I=P-q,I<0)I+=p,$=P,Y=pe[K=0];else{if(K=Math.ceil((I+1)/p),T=pe.length,K>=T)return N;for(Y=T=pe[K],q=1;T>=10;T/=10)q++;I%=p,$=I-p+q}if(M!==void 0&&(T=l(10,q-$-1),G=Y/T%10|0,L=P<0||pe[K+1]!==void 0||Y%T,L=M<4?(G||L)&&(M==0||M==(N.s<0?3:2)):G>5||G==5&&(M==4||L||M==6&&(I>0?$>0?Y/l(10,q-$):0:pe[K-1])%10&1||M==(N.s<0?8:7))),P<1||!pe[0])return L?(T=k(N),pe.length=1,P=P-T-1,pe[0]=l(10,(p-P%p)%p),N.e=s(-P/p)||0):(pe.length=1,pe[0]=N.e=N.s=0),N;if(I==0?(pe.length=K,T=1,K--):(pe.length=K+1,T=l(10,p-I),pe[K]=$>0?(Y/l(10,q-$)%l(10,$)|0)*T:0),L)for(;;)if(K==0){(pe[0]+=T)==d&&(pe[0]=1,++N.e);break}else{if(pe[K]+=T,pe[K]!=d)break;pe[K--]=0,T=1}for(I=pe.length;pe[--I]===0;)pe.pop();if(n&&(N.e>m||N.e<-m))throw Error(i+k(N));return N}function O(N,P){var M,I,$,T,q,G,L,Y,K,pe,De=N.constructor,se=De.precision;if(!N.s||!P.s)return P.s?P.s=-P.s:P=new De(N),n?C(P,se):P;if(L=N.d,pe=P.d,I=P.e,Y=N.e,L=L.slice(),q=Y-I,q){for(K=q<0,K?(M=L,q=-q,G=pe.length):(M=pe,I=Y,G=L.length),$=Math.max(Math.ceil(se/p),G)+2,q>$&&(q=$,M.length=1),M.reverse(),$=q;$--;)M.push(0);M.reverse()}else{for($=L.length,G=pe.length,K=$0;--$)L[G++]=0;for($=pe.length;$>q;){if(L[--$]0?T=T.charAt(0)+"."+T.slice(1)+w(I):q>1&&(T=T.charAt(0)+"."+T.slice(1)),T=T+($<0?"e":"e+")+$):$<0?(T="0."+w(-$-1)+T,M&&(I=M-q)>0&&(T+=w(I))):$>=q?(T+=w($+1-q),M&&(I=M-$-1)>0&&(T=T+"."+w(I))):((I=$+1)0&&($+1===q&&(T+="."),T+=w(I))),N.s<0?"-"+T:T}function H(N,P){if(N.length>P)return N.length=P,!0}function j(N){var P,M,I;function $(T){var q=this;if(!(q instanceof $))return new $(T);if(q.constructor=$,T instanceof $){q.s=T.s,q.e=T.e,q.d=(T=T.d)?T.slice():T;return}if(typeof T=="number"){if(T*0!==0)throw Error(a+T);if(T>0)q.s=1;else if(T<0)T=-T,q.s=-1;else{q.s=0,q.e=0,q.d=[0];return}if(T===~~T&&T<1e7){q.e=0,q.d=[T];return}return A(q,T.toString())}else if(typeof T!="string")throw Error(a+T);if(T.charCodeAt(0)===45?(T=T.slice(1),q.s=-1):q.s=1,u.test(T))A(q,T);else throw Error(a+T)}if($.prototype=g,$.ROUND_UP=0,$.ROUND_DOWN=1,$.ROUND_CEIL=2,$.ROUND_FLOOR=3,$.ROUND_HALF_UP=4,$.ROUND_HALF_DOWN=5,$.ROUND_HALF_EVEN=6,$.ROUND_HALF_CEIL=7,$.ROUND_HALF_FLOOR=8,$.clone=j,$.config=$.set=Z,N===void 0&&(N={}),N)for(I=["precision","rounding","toExpNeg","toExpPos","LN10"],P=0;P=$[P+1]&&I<=$[P+2])this[M]=I;else throw Error(a+M+": "+I);if((I=N[M="LN10"])!==void 0)if(I==Math.LN10)this[M]=new this(I);else throw Error(a+M+": "+I);return this}r=j(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof Ik<"u"&&Ik.exports?Ik.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(SW)});var yq=Uo((y9e,N5)=>{"use strict";var Fhe=Object.prototype.hasOwnProperty,Wa="~";function Fx(){}Object.create&&(Fx.prototype=Object.create(null),new Fx().__proto__||(Wa=!1));function Whe(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function hq(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new Whe(r,n||e,o),i=Wa?Wa+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 nC(e,t){--e._eventsCount===0?e._events=new Fx:delete e._events[t]}function va(){this._events=new Fx,this._eventsCount=0}va.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Fhe.call(r,n)&&t.push(Wa?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};va.prototype.listeners=function(t){var r=Wa?Wa+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 z5=Symbol.for("react.transitional.element"),B5=Symbol.for("react.portal"),yC=Symbol.for("react.fragment"),vC=Symbol.for("react.strict_mode"),xC=Symbol.for("react.profiler"),bC=Symbol.for("react.consumer"),wC=Symbol.for("react.context"),SC=Symbol.for("react.forward_ref"),kC=Symbol.for("react.suspense"),_C=Symbol.for("react.suspense_list"),CC=Symbol.for("react.memo"),AC=Symbol.for("react.lazy"),Ave=Symbol.for("react.view_transition"),Eve=Symbol.for("react.client.reference");function gs(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case z5:switch(e=e.type,e){case yC:case xC:case vC:case kC:case _C:case Ave:return e;default:switch(e=e&&e.$$typeof,e){case wC:case SC:case AC:case CC:return e;case bC:return e;default:return t}}case B5:return t}}}on.ContextConsumer=bC;on.ContextProvider=wC;on.Element=z5;on.ForwardRef=SC;on.Fragment=yC;on.Lazy=AC;on.Memo=CC;on.Portal=B5;on.Profiler=xC;on.StrictMode=vC;on.Suspense=kC;on.SuspenseList=_C;on.isContextConsumer=function(e){return gs(e)===bC};on.isContextProvider=function(e){return gs(e)===wC};on.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===z5};on.isForwardRef=function(e){return gs(e)===SC};on.isFragment=function(e){return gs(e)===yC};on.isLazy=function(e){return gs(e)===AC};on.isMemo=function(e){return gs(e)===CC};on.isPortal=function(e){return gs(e)===B5};on.isProfiler=function(e){return gs(e)===xC};on.isStrictMode=function(e){return gs(e)===vC};on.isSuspense=function(e){return gs(e)===kC};on.isSuspenseList=function(e){return gs(e)===_C};on.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===yC||e===xC||e===vC||e===kC||e===_C||typeof e=="object"&&e!==null&&(e.$$typeof===AC||e.$$typeof===CC||e.$$typeof===wC||e.$$typeof===bC||e.$$typeof===SC||e.$$typeof===Eve||e.getModuleId!==void 0)};on.typeOf=gs});var TK=Uo((xWe,NK)=>{"use strict";NK.exports=EK()});var Tre=X(J()),Ore=X(p6());var _t=X(J());var Ct=X(J());var Er=X(J()),rp={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"}},xv={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"}},Lm={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 Hae=({id:e="mascot"})=>Er.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},Er.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},Er.default.createElement("g",{fillRule:"nonzero"},Er.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"})),Er.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"}),Er.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"}),Er.default.createElement("g",{transform:"translate(75.105, 196.182)"},Er.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),Er.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),Er.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),Er.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),Er.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),Er.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),Er.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),Er.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),Er.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},Er.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},Er.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"})),Er.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"})),Er.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},Er.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"})),Er.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},Er.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"}),Er.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 wn({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return Er.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&Er.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=rp[c];return d?Er.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),Er.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"},Er.default.createElement("title",null,"ActiveAgent"),Er.default.createElement(Hae,null)),n&&r.length>0&&Er.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=xv[c];return d?Er.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var Ra=X(J());var ga=X(J());var f6="dashboard-theme",Sw=["system","light","dark"],m6=[{value:"system",label:"System"},{value:"light",label:"Light"},{value:"dark",label:"Dark"}],qae="(prefers-color-scheme: dark)";function g6(e){try{let t=e?.getItem?.(f6);return Sw.includes(t)?t:"system"}catch{return"system"}}function h6(e,t){try{e?.setItem?.(f6,Sw.includes(t)?t:"system")}catch{}}function y6(e,t){return e==="system"?!!t:e==="dark"}function v6(e){return e?"light":"dark"}function x6(e,t){return e==="system"?`Follows your system's appearance, ${t?"dark":"light"} right now`:e==="dark"?"Dark across the dashboard":"Light across the dashboard"}function GT(e=globalThis.window){return typeof e?.matchMedia=="function"?e.matchMedia(qae):null}var b6=(0,ga.createContext)();function w6({children:e}){let[t,r]=(0,ga.useState)(()=>g6(globalThis.localStorage)),[n,o]=(0,ga.useState)(()=>!!GT()?.matches);(0,ga.useEffect)(()=>{let u=GT();if(!u)return;let c=d=>o(d.matches);return o(u.matches),u.addEventListener("change",c),()=>u.removeEventListener("change",c)},[]);let a=(0,ga.useCallback)(u=>{let c=Sw.includes(u)?u:"system";r(c),h6(globalThis.localStorage,c)},[]),i=y6(t,n),s=(0,ga.useCallback)(()=>a(v6(i)),[i,a]),l=(0,ga.useMemo)(()=>({darkMode:i,theme:t,systemDark:n,setTheme:a,toggleDarkMode:s}),[i,t,n,a,s]);return ga.default.createElement(b6.Provider,{value:l},e)}function ut(){let e=(0,ga.useContext)(b6);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function zm({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=ut(),[u,c]=Ra.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 Ra.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"}},Ra.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},Ra.default.createElement("div",{style:{minWidth:0}},Ra.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&&Ra.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&Ra.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&Ra.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>Ra.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},Ra.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),Ra.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&Ra.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&Ra.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function YT(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var jt=X(J());var Zr=X(J());var Vo={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 It={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}};var U="var(--font-mono)",du=e=>e>=1?"success":e>=.7?"warning":"error",Wn={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)"},system:{strong:"var(--color-system)",soft:"var(--color-system-soft)",text:"var(--color-system-text)"},dev:{strong:"var(--color-dev)",soft:"var(--color-dev-soft)",text:"var(--color-dev-text)"}},Kae={active:"success",complete:"success",completed:"success",ready:"success",passed:"success",draft:"warning",pending:"warning",queued:"warning",waiting:"warning",running:"info",in_progress:"info",failed:"error",error:"error",expired:"error",archived:"muted",cancelled:"muted",canceled:"muted",skipped:"muted"},ml=e=>Kae[String(e||"").toLowerCase()]||"muted",Vae={user:{tone:"info",label:"User"},assistant:{tone:"accent",label:"Assistant"},tool:{tone:"warning",label:"Tool"},system:{tone:"system",label:"System"},developer:{tone:"dev",label:"Dev"}},S6=e=>Vae[e]||{tone:"muted",label:e},bv={object:"=",sample:"~",pass:Vo.success,fault:Vo.error,info:Vo.info,on:"[x]",off:"[ ]",link:Vo.arrow,chevron:Vo.chevronRight};function $a({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Zr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:U,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},bv.chevron):Zr.default.createElement("span",{title:i,style:{fontFamily:U,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}},bv[e]||e)}function ve({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=Wn[e]||Wn.muted;return Zr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:U,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function $e({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return Zr.default.createElement(a,{htmlFor:i,style:{fontFamily:U,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function In({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,disabled:a=!1,title:i,style:s,testId:l}){return Zr.default.createElement("button",{type:"button","data-testid":l,onClick:a?void 0:t,disabled:a,"aria-disabled":a||void 0,title:i,style:{padding:"4px 10px",borderRadius:n?6:999,cursor:t&&!a?"pointer":"default",fontFamily:o?U:"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)",opacity:a?.5:void 0,...s}},r)}function Oo({options:e,value:t,onChange:r,style:n,labelledBy:o}){return Zr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group","aria-labelledby":o},e.map(a=>{let i=a.value===t;return Zr.default.createElement("button",{key:a.value,type:"button",onClick:()=>r(a.value),"aria-pressed":i,title:a.title,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${i?"var(--color-accent-ui)":"var(--color-border)"}`,color:i?"var(--color-accent-ui)":"var(--color-text-cell)"}},a.label)}))}function ie({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 Zr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function je({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Zr.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 Bm({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Zr.default.createElement(je,{testId:a,className:"max-md:p-4!"},Zr.default.createElement($e,{size:11,spacing:"0.05em"},e),Zr.default.createElement("div",{className:"max-md:text-[24px]!",style:{marginTop:8,fontFamily:U,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Zr.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 Zr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Zr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Zr.default.createElement($e,null,e),t&&Zr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},t)),Zr.default.createElement("div",{style:a},r))}function pu({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||Wn[du(u)].strong;return Zr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Zr.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Zr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Zr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Zr.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function kw({parts:e=[],total:t=0,height:r=4,radius:n=2,style:o,testId:a,title:i,...s}){return Zr.default.createElement("div",{"data-testid":a,title:i,style:{display:"flex",height:r,borderRadius:n,overflow:"hidden",background:"var(--color-border-light)",...o},...s},e.map((l,u)=>Zr.default.createElement("span",{key:u,style:{width:`${t>0?100*(Number(l.value)||0)/t:0}%`,background:(Wn[l.tone]||Wn.muted).strong,transition:"width 300ms"}})))}function Jr({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i,testId:s}){return Zr.default.createElement("a",{href:r,"data-testid":s,title:i,onClick:l=>{t&&(l.preventDefault(),t(l))},style:{fontFamily:U,fontSize:o,color:n,textDecoration:"none",...a}},e," ",bv.link)}function tn({children:e,style:t}){return Zr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:U,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}function _w(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function k6(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function rt(e=""){return _w(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function Mc(e="",t={}){window.history.pushState(t,"",rt(e))}function Qn(e=window.location.pathname){return k6(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function st(e,t={}){if(!e)return;let r=Qn(e);Mc(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:rt(r)}}))}function Gae({origin:e,mountPath:t,multiTenant:r}){return r?`${e}/v1/traces`:`${e}${_w(t,"/api/traces")}`}function Cw(e){return`production: telemetry: enabled: true endpoint: ${e} - api_key: <%= ENV["ACTIVEAGENTS_API_KEY"] %>`}function bw(){let e=window.ACTIVE_AGENT_DASHBOARD||{};return Bae({origin:window.location.origin,mountPath:e.mountPath,multiTenant:!!e.meta?.multiTenant})}function y6(e){return`# Gemfile + api_key: <%= ENV["ACTIVEAGENTS_API_KEY"] %>`}function Aw(){let e=window.ACTIVE_AGENT_DASHBOARD||{};return Gae({origin:window.location.origin,mountPath:e.mountPath,multiTenant:!!e.meta?.multiTenant})}function _6(e){return`# Gemfile gem "activeagents-telemetry-ruby_llm" # config/initializers/ruby_llm_telemetry.rb @@ -19,90 +19,92 @@ ActiveAgents::Telemetry.configure do |config| config.api_key = ENV["ACTIVEAGENTS_API_KEY"] end -ActiveAgents::Telemetry::RubyLLM.subscribe!`}var v6={activeagent:{label:"ActiveAgent",docsUrl:"https://docs.activeagents.ai/framework/telemetry",docsLabel:"ActiveAgent telemetry docs"},ruby_llm:{label:"RubyLLM",docsUrl:"https://docs.activeagents.ai/framework/ruby_llm_dashboard",docsLabel:"RubyLLM setup guide"}},vv={fontFamily:U,fontSize:12,padding:"1px 4px",borderRadius:4,background:"var(--color-hover)",color:"var(--color-text-primary)"},x6={margin:0,padding:12,borderRadius:8,overflowX:"auto",textAlign:"left",fontFamily:U,fontSize:11,lineHeight:1.5,background:"#111827",color:"#f3f4f6"},xv={margin:0,fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"};function UT({label:e,title:t,children:r,testId:n,className:o}){return $t.default.createElement(Le,{testId:n,className:o,style:{display:"flex",flexDirection:"column",gap:12,textAlign:"left",minWidth:0}},$t.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},$t.default.createElement(je,null,e),$t.default.createElement("h4",{style:{margin:0,fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},t)),r)}function HT({endpoint:e,multiTenant:t,onRefresh:r,isLoading:n,onBrowseTemplates:o,onNew:a,initialRuntime:i="activeagent"}){let[s,l]=(0,$t.useState)(i),u=v6[s];return $t.default.createElement("div",{className:"py-10 max-md:py-6","data-testid":"agents-empty-state"},$t.default.createElement("div",{className:"text-center"},$t.default.createElement("div",{className:"inline-block mb-4"},$t.default.createElement(wn,{size:88})),$t.default.createElement("h3",{style:{margin:"0 0 8px",fontSize:18,fontWeight:500,color:"var(--color-text-primary)"}},"No agents yet"),$t.default.createElement("p",{style:{margin:"0 0 32px",fontSize:15,color:"var(--color-text-secondary)"}},"Agents appear here when your app reports its first trace, when you link a repository, or when you build one.")),$t.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4 max-w-6xl mx-auto"},$t.default.createElement(UT,{label:"From your app",title:"Connect your app",testId:"empty-connect-telemetry",className:"lg:col-span-2 lg:row-span-2"},$t.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},$t.default.createElement("span",{id:"empty-runtime-label",style:{fontSize:13,color:"var(--color-text-cell)"}},"What runs your agents?"),$t.default.createElement(To,{labelledBy:"empty-runtime-label",options:Object.entries(v6).map(([c,{label:d}])=>({value:c,label:d})),value:s,onChange:l})),s==="ruby_llm"?$t.default.createElement($t.default.Fragment,null,$t.default.createElement("p",{style:xv},"Add the RubyLLM adapter and subscribe it. Every chat turn reports as a trace; unnamed chats arrive as"," ",$t.default.createElement("code",{style:vv},"RubyLLM::Chat")," until you name them."),$t.default.createElement("pre",{style:x6,"data-testid":"empty-ruby-llm-snippet"},y6(e))):$t.default.createElement($t.default.Fragment,null,$t.default.createElement("p",{style:xv},"Add this to ",$t.default.createElement("code",{style:vv},"config/active_agent.yml"),", under each environment that should report, and every agent action that runs shows up here on its first trace."),$t.default.createElement("pre",{style:x6,"data-testid":"empty-activeagent-snippet"},xw(e))),$t.default.createElement("p",{style:xv},t?$t.default.createElement($t.default.Fragment,null,"Set ",$t.default.createElement("code",{style:vv},"ACTIVEAGENTS_API_KEY")," to this workspace's telemetry key, on the Organization page."):$t.default.createElement($t.default.Fragment,null,"Set ",$t.default.createElement("code",{style:vv},"ACTIVEAGENTS_API_KEY")," to the dashboard's"," ",$t.default.createElement("code",{style:vv},"ingest_api_key"),", or to any value when it has none: telemetry sends nothing without a key.")),$t.default.createElement("a",{href:u.docsUrl,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},u.docsLabel),$t.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:"auto"}},t&&$t.default.createElement(ie,{variant:"primary",size:"sm",onClick:()=>st("/organization"),testId:"empty-telemetry-key"},"Get the telemetry key"),$t.default.createElement(ie,{size:"sm",onClick:r,disabled:n,testId:"empty-check-again"},n?"Checking\u2026":"Check for agents"))),$t.default.createElement(UT,{label:"From GitHub",title:"Link a GitHub repository",testId:"empty-link-repository"},$t.default.createElement("p",{style:xv},"Connect GitHub and pick a Rails app. The dashboard boots it in a sandbox, opens a pull request to install the engine when it is missing, and lets Claude Code work on the app's agents there."),$t.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:"auto"}},$t.default.createElement(ie,{variant:"primary",size:"sm",onClick:()=>st("/projects/new"),testId:"empty-new-project"},"Link a repository"))),$t.default.createElement(UT,{label:"From scratch",title:"Build one here",testId:"empty-build-agent"},$t.default.createElement("p",{style:xv},"Start from a template or write the instructions yourself, then run it from the dashboard."),$t.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:"auto"}},$t.default.createElement(ie,{size:"sm",onClick:o,testId:"empty-browse-templates"},"Browse Templates"),$t.default.createElement(ie,{size:"sm",onClick:a,testId:"empty-create-agent"},"Create From Scratch")))))}var ml="~ estimated from tokens \xD7 model rates",ww=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),S6=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),Ds=e=>ww(e)?`${S6(Number(e)*100)}%`:"\u2014",Jn=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${S6(n*100/r)}%`},na=e=>Ds(e),Sw=e=>`pass \u2265 ${Ds(e)}`,kr=(e,{estimated:t=!1}={})=>{if(!ww(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},b6=e=>Math.round(Number(e)||0).toLocaleString("en-US"),w6=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},Fae=["pattern","default"],Bm=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!ww(r.input)||!ww(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${b6(e)} in \xD7 ${w6(r.input)} + ${b6(t)} out \xD7 ${w6(r.output)} \xB7 ${n} rate${Fae.includes(n)?" (fallback rate)":""}`};var Wae=[{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 qT({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,Ct.useState)(""),[f,m]=(0,Ct.useState)(""),[g,b]=(0,Ct.useState)(""),h=e.filter(w=>{let _=!d||w.name.toLowerCase().includes(d.toLowerCase())||w.description?.toLowerCase().includes(d.toLowerCase()),A=!f||w.provider===f,C=!g||w.status===g;return _&&A&&C}),y=w=>{let _=new Date(w),C=new Date-_,O=Math.floor(C/(1e3*60*60*24));return O===0?"Today":O===1?"Yesterday":O<7?`${O} days ago`:_.toLocaleDateString()},x=w=>w==null?"\u2014":w<1e3?`${Math.round(w)}ms`:`${(w/1e3).toFixed(1)}s`,v=w=>w==null?"\u2014":w>=1e6?`${(w/1e6).toFixed(1)}M`:w>=1e3?`${(w/1e3).toFixed(1)}k`:`${w}`,k=w=>w==null?"\u2014":w>0&&w<.01?"<$0.01":`$${w.toFixed(2)}`,S=w=>{if(!w)return"\u2014";let _=Math.floor((new Date-new Date(w))/(1e3*60*60*24));return _<=0?"Today":_<30?`${_}d ago`:new Date(w).toLocaleDateString()};return Ct.default.createElement("div",{className:"space-y-6 max-md:space-y-4"},Ct.default.createElement("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4 max-md:gap-3"},Ct.default.createElement("div",{className:"flex-1 flex flex-wrap items-center gap-4 max-md:gap-3 min-w-0"},Ct.default.createElement("div",{className:"relative flex-1 max-w-md max-md:basis-full"},Ct.default.createElement("input",{type:"text",placeholder:"Search agents...",value:d,onChange:w=>p(w.target.value),className:"w-full pl-10 pr-4 py-2 max-md:h-10 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),Ct.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"},Ct.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"}))),Ct.default.createElement("div",{className:"grid grid-cols-2 gap-3 max-md:basis-full md:contents","data-testid":"agent-filters"},Ct.default.createElement("select",{value:f,onChange:w=>m(w.target.value),className:"aa-select pl-3 pr-9 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 max-md:w-full max-md:min-w-0 max-md:h-10"},Ct.default.createElement("option",{value:""},"All Providers"),t.providers?.map(w=>Ct.default.createElement("option",{key:w,value:w},w.charAt(0).toUpperCase()+w.slice(1)))),Ct.default.createElement("select",{value:g,onChange:w=>b(w.target.value),className:"aa-select pl-3 pr-9 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 max-md:w-full max-md:min-w-0 max-md:h-10"},Ct.default.createElement("option",{value:""},"All Status"),Ct.default.createElement("option",{value:"active"},"Active"),Ct.default.createElement("option",{value:"draft"},"Draft"),Ct.default.createElement("option",{value:"archived"},"Archived")),Ct.default.createElement("select",{value:l,onChange:w=>u?.(w.target.value),className:"aa-select pl-3 pr-9 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 max-md:w-full max-md:min-w-0 max-md:h-10 max-md:col-span-2",title:"Rank agents by their scorecard"},Wae.map(w=>Ct.default.createElement("option",{key:w.value,value:w.value},w.label))))),Ct.default.createElement("div",{className:"flex flex-wrap items-center gap-3 md:flex-shrink-0","data-testid":"agent-actions"},Ct.default.createElement("button",{onClick:s,disabled:c,title:"Refresh","aria-label":"Refresh",className:"p-2 flex-shrink-0 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors disabled:opacity-50 max-md:h-10 max-md:w-10 max-md:inline-flex max-md:items-center max-md:justify-center max-md:border max-md:border-gray-300 max-md:hover:bg-gray-50"},Ct.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ct.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"}))),Ct.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 max-md:flex-1 max-md:justify-center max-md:h-10 max-md:px-3 max-md:text-sm max-md:whitespace-nowrap"},Ct.default.createElement("svg",{className:"h-5 w-5 max-sm:hidden",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ct.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"})),Ct.default.createElement("span",null,"Browse Templates")),Ct.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 max-md:flex-1 max-md:justify-center max-md:h-10 max-md:px-3 max-md:text-sm max-md:whitespace-nowrap"},Ct.default.createElement("svg",{className:"h-5 w-5 max-sm:hidden",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),Ct.default.createElement("span",null,"New Agent")))),h.length>0?Ct.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(w=>{let _=w.stats||{},A=_.run_sources||[],C=A.length?`Counted from ${A.map(O=>O==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return Ct.default.createElement(Lm,{key:w.id,name:w.name,subtitle:w.description||"No description",badge:Ct.default.createElement(be,{tone:fl(w.status)},w.status),onClick:()=>r(w),stats:[{label:`Runs ${_.window_days||30}d`,value:_.runs??0,title:C},{label:"Success",value:_.success_rate!=null?`${Math.round(_.success_rate)}%`:"\u2014",tone:WT(_.success_rate!=null?_.success_rate/100:null)},{label:"Avg time",value:x(_.avg_duration_ms)},{label:"Eval",title:_.eval_samples_evaluated?`${Jn(_.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:Ds(_.eval_score),tone:WT(_.eval_score)},{label:"Tokens",value:v(_.tokens)},{label:"Cost",value:k(_.cost),title:"Estimated from token counts at each model's published rates",tone:_.cost==null?"muted":void 0}],footer:Ct.default.createElement(Ct.default.Fragment,null,Ct.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},Ct.default.createElement(be,{tone:"muted",style:{flexShrink:0}},w.provider),Ct.default.createElement("span",{title:w.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},w.model)),Ct.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${y(w.updatedAt||w.updated_at)}`},_.last_run_at?`Last run ${S(_.last_run_at)}`:`Updated ${y(w.updatedAt||w.updated_at)}`)),actions:Ct.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},Ct.default.createElement("button",{onClick:O=>{O.stopPropagation(),a(w.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),Ct.default.createElement("button",{onClick:O=>{O.stopPropagation(),i(w.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):e.length===0?Ct.default.createElement(HT,{endpoint:bw(),multiTenant:!!t.multiTenant,onRefresh:s,isLoading:c,onBrowseTemplates:o,onNew:n}):Ct.default.createElement("div",{className:"text-center py-16"},Ct.default.createElement("div",{className:"inline-block mb-4"},Ct.default.createElement(wn,{size:100})),Ct.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},"No matching agents"),Ct.default.createElement("p",{className:"text-gray-500 mb-6"},"Try adjusting your search or filters")))}var he=X(J());function k6(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 Fm={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"]},kw=Object.keys(Fm),Uae=300*1e3,_6=k6(Hae,{ttlMs:Uae,keep:e=>e!==null});async function C6(e){return await _6(e)??(Fm[e]||[])}function KT(){_6.clear()}async function Hae(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 _w=X(J());function Mc(e){let[t,r]=(0,_w.useState)(Fm),n=e.join(",");return(0,_w.useEffect)(()=>{let o=!1;return e.forEach(a=>{C6(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var Ic=X(J());function pu({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,Ic.useId)();return Ic.default.createElement(Ic.default.Fragment,null,Ic.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}),Ic.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>Ic.default.createElement("option",{key:u,value:u}))))}var qae="custom:",Kae=["accept","content-type","content-length","host","mcp-session-id","user-agent","connection","transfer-encoding"],Vae=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Dc=e=>!!(e&&(e.custom===!0||String(e.key||"").startsWith(qae)));function A6(){return{id:null,name:"",description:"",url:"",enabled:!0,headers:[]}}function E6(e){return{id:e.id,name:e.name||"",description:e.description||"",url:e.url||"",enabled:e.enabled!==!1,headers:(e.headers||[]).map(t=>({name:t.name,value:"",hint:t.hint||"",stored:!0}))}}function N6(e){return{...e,headers:[...e.headers,{name:"",value:"",hint:"",stored:!1}]}}function VT(e,t,r,n){let o=e.headers.map((a,i)=>{if(i!==t)return a;let s={...a,[r]:n};return r==="name"&&a.stored&&n.trim().toLowerCase()!==a.name.trim().toLowerCase()&&(s.stored=!1,s.hint=""),s});return{...e,headers:o}}function T6(e,t){return{...e,headers:e.headers.filter((r,n)=>n!==t)}}function O6(e){let t={};e.name.trim()||(t.name="Name the server.");let r=e.url.trim();if(!r)t.url="Enter the server\u2019s URL.";else{let o=null;try{o=new URL(r)}catch{o=null}!o||!["http:","https:"].includes(o.protocol)?t.url="Use an http:// or https:// URL.":(o.username||o.password)&&(t.url="Send credentials in a header, not in the URL.")}let n=new Set;for(let o of e.headers){let a=o.name.trim();if(!a){o.value.trim()&&(t.headers="Every header needs a name.");continue}let i=a.toLowerCase();Vae.test(a)?Kae.includes(i)?t.headers=`${a} is set by the MCP client and cannot be replaced.`:n.has(i)?t.headers=`${a} is listed twice.`:!o.stored&&!o.value.trim()?t.headers=`${a} needs a value.`:/[\r\n]/.test(o.value)&&(t.headers=`${a} must not contain line breaks.`):t.headers=`${a} is not a valid header name.`,n.add(i)}return t}var P6=e=>Object.keys(e).length>0;function M6(e){return{mcp_server_config:{name:e.name.trim(),description:e.description.trim(),url:e.url.trim(),enabled:e.enabled,headers:e.headers.filter(t=>t.name.trim()).map(t=>({name:t.name.trim(),value:t.value}))}}}function bv(e,t="Something went wrong."){let r=e&&e.error;return Array.isArray(r)?r.join(" ")||t:r?String(r):t}function I6(e){if(!e.last_tested_at||!e.last_test_status)return{tone:"muted",label:"Not tested",title:"Test the connection to list the tools it serves"};if(e.last_test_status==="ok"){let t=(e.tools||[]).length;return{tone:"success",label:`Connected \xB7 ${t} tool${t===1?"":"s"}`,title:`Last tested ${e.last_tested_at}`}}return{tone:"error",label:"Failed",title:e.last_test_error||"The last test failed"}}var Gae=["agent_defined","dashboard","mcp"],GT={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},Yae={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},Aw=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],YT=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`},wv=(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`},Xae="sandbox:",rp=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(Xae))),Sv=e=>rp(e)&&!e.known,Ew=e=>!!e&&!e.known&&!rp(e)&&!Dc(e),kv=e=>Dc(e)&&!e.known;function D6(e){return Sv(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":rp(e)?"tools are listed by the running app each time the agent runs":kv(e)?"this server was removed from MCP Services, so it offers no tools \u2014 switch it off":Dc(e)?"test this server on the MCP Services page to list its tools":"no tools recorded for this service yet"}var Wm=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 Cw(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=Wm(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 j6=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function $6(e,t,{query:r="",filter:n=null}={}){let o=j6(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 L6(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(Zae(e,t).map(o=>({...o,on:!0})))}function z6(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=j6(n),s=L6(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return Gae.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:GT[u],meta:`${Yae[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 B6(e,t,r,{range:n="7d"}={}){let o=L6(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 F6(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function XT(e,t=[]){let r=F6(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 ZT(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 W6(e=[],t,r=[]){let n=(e||[]).map(String),o=XT(t,n);if(!o)return n;let a=new Set(ZT(n,F6(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 U6(e,t,r){let n=Cw(e,t.mcpServers),o=Cw(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 H6(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=Wm(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=Wm(i);s&&!a.has(s)&&o.push(i)}),o}function q6(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)}function JT(e){return(e?.tools||[]).filter(t=>t.editable&&t.implemented!==!1)}var Jae=["terminal","filesystem","edit","database"],Nw=(e=[])=>e.some(t=>Jae.includes(t)),Qae={terminal:["run_command"],filesystem:["write_file"],edit:["edit_file"],slack:["slack_post_message"]},Um=(e=[])=>[...new Set(e.flatMap(t=>Qae[t]||[]))];function K6(e){let t=e?.services||[],r=(n,o)=>(o.workspace_agents||0)-(n.workspace_agents||0)||String(n.name).localeCompare(String(o.name));return{callable:t.filter(n=>n.callable).sort(r),unavailable:t.filter(n=>!n.callable)}}function QT(e,t=[]){if(!e)return[...t];let r=new Set(JT(e).map(n=>n.key));return t.filter(n=>r.has(n))}var RT=(e=[],t)=>e.some(r=>Wm(r)===t);function V6(e=[],t){return RT(e,t.key)?e.filter(r=>Wm(r)!==t.key):[...e,{key:t.key,name:t.name}]}function G6(e){let t=e.workspace_agents||0;return t?`${t} agent${t===1?"":"s"}`:null}var Tw=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],_v={...hv,agents:{emoji:"\u{1F91D}",label:"Delegate to agents"},ask:{emoji:"\u{1F64B}",label:"Ask the user"}},Rae=["name","slug","description","provider","model"];function eO({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,he.useState)(0),[s,l]=(0,he.useState)({name:"",description:"",provider:"openai",model:Fm.openai[0],instructions:"",preset_type:"terminal",instruction_sets:["github"],tools:["terminal","code"],mcp_servers:[],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:o.mcp_servers||[]}:{}}),u=Mc([s.provider]),c=(0,he.useMemo)(()=>{let w=o?.model&&o.provider;return!w||!u[w]?u:{...u,[w]:[...new Set([o.model,...u[w]])]}},[u]),d=c[s.provider];(0,he.useEffect)(()=>{d?.length&&l(w=>d.includes(w.model)?w:{...w,model:d[0]})},[d]);let[p,f]=(0,he.useState)(null),[m,g]=(0,he.useState)(null);(0,he.useEffect)(()=>{fetch("/api/agents/tool_roster").then(w=>{if(!w.ok)throw new Error(`HTTP ${w.status}`);return w.json()}).then(w=>{f(w),l(_=>({..._,tools:QT(w,_.tools)}))}).catch(w=>g(w.message))},[]);let[b,h]=(0,he.useState)(null),y=(w,_)=>{l(A=>({...A,[w]:_}))},x=(w,_)=>{l(A=>{let C=A[w]||[],O=C.includes(_)?C.filter(D=>D!==_):[...C,_];return{...A,[w]:O}})},v=w=>{if(y("preset_type",w),$m[w]){let _=$m[w];y("instruction_sets",[..._.instructions]),y("tools",QT(p,_.tools))}},k=()=>{switch(a){case 0:return s.name.trim().length>=2;case 1:return!0;case 2:return!0;default:return!1}},S=async()=>{h(null);let w=await t({...s,approval_required_tools:Um(s.tools)});w&&(h(w),Object.keys(w.fieldErrors||{}).some(_=>Rae.includes(_))&&i(0))};return he.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&he.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."),he.default.createElement("div",{className:"mb-8"},he.default.createElement("div",{className:"flex items-center justify-between"},Tw.map((w,_)=>he.default.createElement("div",{key:w.id,className:"flex items-center"},he.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${_he.default.createElement("li",{key:w},w)))),he.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&he.default.createElement(eie,{formData:s,updateField:y,providerModels:c,fieldErrors:b?.fieldErrors||{}}),a===1&&he.default.createElement(tie,{formData:s,meta:e,roster:p,rosterError:m,toggleArrayItem:x,updateField:y,selectPreset:v}),a===2&&he.default.createElement(rie,{formData:s,roster:p})),he.default.createElement("div",{className:"flex justify-between mt-6"},he.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"),he.default.createElement("button",{onClick:a===Tw.length-1?S:()=>i(a+1),disabled:!k()||n,className:`px-6 py-2 rounded-lg transition-colors ${k()&&!n?"bg-red-500 text-white hover:bg-red-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},a===Tw.length-1?"Create Agent":"Continue")))}function Ow({messages:e}){return e.length?he.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function eie({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return he.default.createElement("div",{className:"space-y-6"},he.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),he.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),he.default.createElement("div",{className:"space-y-4"},he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),he.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"}),he.default.createElement(Ow,{messages:o("name","slug")})),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),he.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"}),he.default.createElement(Ow,{messages:o("description")})),he.default.createElement("div",{className:"grid grid-cols-2 gap-4"},he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),he.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=>he.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),he.default.createElement(Ow,{messages:o("provider")})),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),he.default.createElement(pu,{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"}),he.default.createElement(Ow,{messages:o("model")}))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),he.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"}),he.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},he.default.createElement("span",null,"Precise"),he.default.createElement("span",null,"Creative")))))}function tie({formData:e,meta:t,roster:r,rosterError:n,toggleArrayItem:o,updateField:a,selectPreset:i}){let s=Object.keys($m),l=Object.keys(tp),u=JT(r),{callable:c,unavailable:d}=K6(r);return he.default.createElement("div",{className:"space-y-6"},he.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),he.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),he.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},he.default.createElement("div",{className:"flex flex-col items-center"},he.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(p=>{let f=tp[p];return f?he.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})),he.default.createElement(wn,{size:120}),he.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(p=>{let f=hv[p];return f?he.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),he.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(p=>he.default.createElement("button",{key:p,onClick:()=>i(p),className:`px-4 py-2 rounded-lg border-2 text-sm transition-all ${e.preset_type===p?"border-red-500 bg-red-50 text-red-700":"border-gray-200 hover:border-gray-300 text-gray-600"}`},he.default.createElement("span",{className:"capitalize"},p.replace(/([A-Z])/g," $1").trim()))))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},he.default.createElement("strong",null,"Instructions"),he.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),he.default.createElement("div",{className:"flex flex-wrap gap-2"},l.map(p=>{let f=tp[p];return he.default.createElement("button",{key:p,onClick:()=>o("instruction_sets",p),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.instruction_sets.includes(p)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},he.default.createElement("span",null,f.emoji),he.default.createElement("span",null,f.label))}))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},he.default.createElement("strong",null,"Tools"),he.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Functions the model can call")),n&&he.default.createElement("p",{className:"text-sm text-red-600"},"Could not load the tools this workspace offers: ",n),!r&&!n&&he.default.createElement("p",{className:"text-sm text-gray-400"},"Loading tools\u2026"),he.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-tools"},u.map(p=>he.default.createElement(Y6,{key:p.key,testId:`builder-tool-${p.key}`,on:e.tools.includes(p.key),onClick:()=>o("tools",p.key),emoji:_v[p.key]?.emoji||"\u{1F9F1}",label:_v[p.key]?.label||p.name,title:p.description||p.name}))),Nw(e.tools)&&he.default.createElement("p",{className:"mt-2 text-xs text-gray-500","data-testid":"builder-checkout-hint"},"Terminal, Filesystem, Edit and Database act in a repository checkout: choose one under Checkout when you run the agent.")),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},he.default.createElement("strong",null,"MCP servers"),he.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Every tool the server serves is offered")),r&&c.length===0&&he.default.createElement("p",{className:"text-sm text-gray-500"},"No MCP server this workspace can call yet. Register one with its URL in ",he.default.createElement("code",null,"ActionAgent.mcp_catalog"),", or boot a project's checkout to offer its app runtime."),he.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-mcp-servers"},c.map(p=>he.default.createElement(Y6,{key:p.key,testId:`builder-mcp-${p.key}`,on:RT(e.mcp_servers,p.key),onClick:()=>a("mcp_servers",V6(e.mcp_servers,p)),emoji:p.runtime?"\u{1F4E6}":"\u{1F50C}",label:p.name,hint:G6(p),title:[p.description,p.transport].filter(Boolean).join(" \xB7 ")}))),d.length>0&&he.default.createElement("details",{className:"mt-3 text-sm","data-testid":"builder-mcp-unavailable"},he.default.createElement("summary",{className:"cursor-pointer text-gray-500"},d.length," catalog server",d.length===1?"":"s"," a run can't call"),he.default.createElement("ul",{className:"mt-2 space-y-1"},d.map(p=>he.default.createElement("li",{key:p.key,className:"text-xs text-gray-500"},he.default.createElement("span",{className:"font-medium text-gray-700"},p.name)," \u2014 ",p.unavailable_reason))))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),he.default.createElement("textarea",{value:e.instructions,onChange:p=>a("instructions",p.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 rie({formData:e,roster:t}){let r=n=>{let o=typeof n=="string"?n:n?.key;return t?.services?.find(a=>a.key===o)?.name||n?.name||o};return he.default.createElement("div",{className:"space-y-6"},he.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),he.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),he.default.createElement("div",{className:"grid grid-cols-2 gap-8"},he.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},he.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(n=>{let o=tp[n];return o?he.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),he.default.createElement(wn,{size:100}),he.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(n=>{let o=hv[n];return o?he.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),he.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),he.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),he.default.createElement("div",{className:"space-y-4"},he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),he.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),he.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),he.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(n=>{let o=tp[n];return o?he.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},o.emoji," ",o.label):null}):he.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),he.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(n=>he.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},_v[n]?`${_v[n].emoji} ${_v[n].label}`:n)):he.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),Um(e.tools).length>0&&he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Waits for your approval"),he.default.createElement("p",{className:"text-gray-900 text-sm font-mono"},Um(e.tools).join(", "))),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"MCP servers"),he.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.mcp_servers.length>0?e.mcp_servers.map(n=>he.default.createElement("span",{key:r(n),className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r(n))):he.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),he.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)))}function Y6({on:e,onClick:t,emoji:r,label:n,hint:o,title:a,testId:i}){return he.default.createElement("button",{type:"button","data-testid":i,"aria-pressed":e,onClick:t,title:a,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},he.default.createElement("span",null,r),he.default.createElement("span",null,n),o&&he.default.createElement("span",{className:`text-xs ${e?"text-red-100":"text-gray-400"}`},"\xB7 ",o))}var _e=X(J());var es=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"}),oa="#ef4444";var V=X(J());var Pw=X(J()),R6=X(J());function X6(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=sie(e,iie),d=a||{width:n,height:o,x:0,y:0},p=bt("recharts-surface",i);return Pw.createElement("svg",nO({},kn(c),{className:p,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),Pw.createElement("title",null,l),Pw.createElement("desc",null,u),r)});var Mw=X(J());var uie=["children","className"];function oO(){return oO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=cie(e,uie),a=bt("recharts-layer",n);return Mw.createElement("g",oO({className:a},kn(o),{ref:t}),r)});var Oi=X(J()),ak=X(J()),R9=X(vy());function Iw(e){return e==="__proto__"}var pie=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function Dw(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:pie.test(e);default:return!1}}function Hm(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function aO(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(aO).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function qm(e){if(Array.isArray(e))return e.map(Hm);if(typeof e=="symbol")return[e];e=aO(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]:mie,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function Oo(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+ts(s)+a:o+a},"")}var rn=e=>e===0?0:e>0?1:-1,Go=e=>typeof e=="number"&&e!=+e,fu=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,Be=e=>(typeof e=="number"||e instanceof Number)&&!Go(e),Da=e=>Be(e)||typeof e=="string",gie=0,mu=e=>{var t=++gie;return"".concat(e||"").concat(t)},Wn=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(!Be(t)&&typeof t!="string")return n;var a;if(fu(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return Go(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},iO=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):Vo(n,t))===r)}var dr=e=>e===null||typeof e>"u",gu=e=>dr(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function Po(e){return e!=null}function ja(){}function Ev(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 eB(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 gl(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=Ev(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,p=s.lowerWidth,f=l,m=l+(d-p)/2,g=(f+m)/2,b=(d+p)/2,h=f+d/2,y=c>=0?1:-1,x=y*o,v=y>0?"end":"start",k=y>0?"start":"end",S=d>=0?1:-1,w=S*o,_=S>0?"end":"start",A=S>0?"start":"end",C=a;if(r==="top"){var O={x:f+d/2,y:u-x,horizontalAnchor:"middle",verticalAnchor:v};return i&&C&&(O.height=Math.max(u-C.y,0),O.width=d),O}if(r==="bottom"){var D={x:m+p/2,y:u+c+x,horizontalAnchor:"middle",verticalAnchor:k};return i&&C&&(D.height=Math.max(C.y+C.height-(u+c),0),D.width=p),D}if(r==="left"){var H={x:g-w,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"};return i&&C&&(H.width=Math.max(H.x-C.x,0),H.height=c),H}if(r==="right"){var $={x:g+b+w,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"};return i&&C&&($.width=Math.max(C.x+C.width-$.x,0),$.height=c),$}var Z=i&&C?{width:b,height:c}:{};return r==="insideLeft"?gl({x:g+w,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"},Z):r==="insideRight"?gl({x:g+b-w,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"},Z):r==="insideTop"?gl({x:f+d/2,y:u+x,horizontalAnchor:"middle",verticalAnchor:k},Z):r==="insideBottom"?gl({x:m+p/2,y:u+c-x,horizontalAnchor:"middle",verticalAnchor:v},Z):r==="insideTopLeft"?gl({x:f+w,y:u+x,horizontalAnchor:A,verticalAnchor:k},Z):r==="insideTopRight"?gl({x:f+d-w,y:u+x,horizontalAnchor:_,verticalAnchor:k},Z):r==="insideBottomLeft"?gl({x:m+w,y:u+c-x,horizontalAnchor:A,verticalAnchor:v},Z):r==="insideBottomRight"?gl({x:m+p-w,y:u+c-x,horizontalAnchor:_,verticalAnchor:v},Z):r&&typeof r=="object"&&(Be(r.x)||fu(r.x))&&(Be(r.y)||fu(r.y))?gl({x:l+Wn(r.x,b),y:u+Wn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},Z):gl({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},Z)},xie=["top","left","right","bottom"];function Nv(e){return e==null?!1:typeof e=="object"?!0:xie.includes(e)}var Lw=X(J()),sO=(0,Lw.createContext)(null),tB=()=>(0,Lw.useContext)(sO);var $a=X(J());var bB=X(J());function Lr(e){return function(){return e}}var lO=Math.cos;var Tv=Math.sin,Yo=Math.sqrt;var np=Math.PI,YTe=np/2,Km=2*np;var uO=Math.PI,cO=2*uO,op=1e-6,bie=cO-op;function rB(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return rB;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oop)if(!(Math.abs(d*l-u*c)>op)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-i,m=o-s,g=l*l+u*u,b=f*f+m*m,h=Math.sqrt(g),y=Math.sqrt(p),x=a*Math.tan((uO-Math.acos((g+p-b)/(2*h*y)))/2),v=x/y,k=x/h;Math.abs(v-1)>op&&this._append`L${t+v*c},${r+v*d}`,this._append`A${a},${a},0,0,${+(d*f>c*m)},${this._x1=t+k*l},${this._y1=r+k*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)>op||Math.abs(this._y1-c)>op)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%cO+cO),p>bie?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>op&&this._append`A${n},${n},0,${+(p>=uO)},${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 nB(){return new ap}nB.prototype=ap.prototype;function Vm(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 ap(t)}var rOe=Array.prototype.slice;function Gm(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function oB(e){this._context=e}oB.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 jc(e){return new oB(e)}function zw(e){return e[0]}function Bw(e){return e[1]}function Ov(e,t){var r=Lr(!0),n=null,o=jc,a=null,i=Vm(s);e=typeof e=="function"?e:e===void 0?zw:Lr(e),t=typeof t=="function"?t:t===void 0?Bw:Lr(t);function s(l){var u,c=(l=Gm(l)).length,d,p=!1,f;for(n==null&&(a=o(f=i())),u=0;u<=c;++u)!(u=f;--m)s.point(x[m],v[m]);s.lineEnd(),s.areaEnd()}h&&(x[p]=+e(b,p,d),v[p]=+t(b,p,d),s.point(n?+n(b,p,d):x[p],r?+r(b,p,d):v[p]))}if(y)return s=null,y+""||null}function c(){return Ov().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Lr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Lr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Lr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Lr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Lr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Lr(+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:Lr(!!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 Fw=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 dO(e){return new Fw(e,!0)}function pO(e){return new Fw(e,!1)}var Xm={draw(e,t){let r=Yo(t/np);e.moveTo(r,0),e.arc(0,0,r,0,Km)}};var fO={draw(e,t){let r=Yo(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 aB=Yo(1/3),Sie=aB*2,mO={draw(e,t){let r=Yo(t/Sie),n=r*aB;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var gO={draw(e,t){let r=Yo(t),n=-r/2;e.rect(n,n,r,r)}};var kie=.8908130915292852,iB=Tv(np/10)/Tv(7*np/10),_ie=Tv(Km/10)*iB,Cie=-lO(Km/10)*iB,hO={draw(e,t){let r=Yo(t*kie),n=_ie*r,o=Cie*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Km*a/5,s=lO(i),l=Tv(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var yO=Yo(3),vO={draw(e,t){let r=-Yo(t/(yO*3));e.moveTo(0,r*2),e.lineTo(-yO*r,-r),e.lineTo(yO*r,-r),e.closePath()}};var rs=-.5,ns=Yo(3)/2,xO=1/Yo(12),Aie=(xO/2+1)*3,bO={draw(e,t){let r=Yo(t/Aie),n=r/2,o=r*xO,a=n,i=r*xO+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(rs*n-ns*o,ns*n+rs*o),e.lineTo(rs*a-ns*i,ns*a+rs*i),e.lineTo(rs*s-ns*l,ns*s+rs*l),e.lineTo(rs*n+ns*o,rs*o-ns*n),e.lineTo(rs*a+ns*i,rs*i-ns*a),e.lineTo(rs*s+ns*l,rs*l-ns*s),e.closePath()}};function Ww(e,t){let r=null,n=Vm(o);e=typeof e=="function"?e:Lr(e||Xm),t=typeof t=="function"?t:Lr(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:Lr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:Lr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function Zm(){}function Jm(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 sB(e){this._context=e}sB.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:Jm(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:Jm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function wO(e){return new sB(e)}function lB(e){this._context=e}lB.prototype={areaStart:Zm,areaEnd:Zm,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:Jm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function SO(e){return new lB(e)}function uB(e){this._context=e}uB.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:Jm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function kO(e){return new uB(e)}function cB(e){this._context=e}cB.prototype={areaStart:Zm,areaEnd:Zm,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 _O(e){return new cB(e)}function dB(e){return e<0?-1:1}function pB(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(dB(a)+dB(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function fB(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function CO(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 Uw(e){this._context=e}Uw.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:CO(this,this._t0,fB(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,CO(this,fB(this,r=pB(this,e,t)),r);break;default:CO(this,this._t0,r=pB(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function mB(e){this._context=new gB(e)}(mB.prototype=Object.create(Uw.prototype)).point=function(e,t){Uw.prototype.point.call(this,t,e)};function gB(e){this._context=e}gB.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 AO(e){return new Uw(e)}function EO(e){return new mB(e)}function yB(e){this._context=e}yB.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=hB(e),o=hB(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 TO(e){return new Hw(e,.5)}function OO(e){return new Hw(e,0)}function PO(e){return new Hw(e,1)}function Ci(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 Eie(e,t){return e[t]}function Nie(e){let t=[];return t.key=e,t}function MO(){var e=Lr([]),t=Qm,r=Ci,n=Eie;function o(a){var i=Array.from(e.apply(this,arguments),Nie),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(gu(e));return wB[t]||Xm},zie=(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*$ie;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}},Bie=(e,t)=>{wB["symbol".concat(gu(e))]=t},LO=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=Die(e,Oie),l=xB(xB({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var g=Lie(u),b=Ww().type(g).size(zie(o,i,u)),h=b();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=kn(l);return Be(p)&&Be(f)&&Be(o)?bB.createElement("path",$O({},m,{className:bt("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};LO.registerSymbol=Bie;var SB=X(J());var qw=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Rm=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,SB.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{Cv(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},Fie=(e,t,r)=>n=>(e(t,r,n),null),hu=(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];Cv(o)&&typeof a=="function"&&(n||(n={}),n[o]=Fie(a,t,r))}),n};function kB(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 Wie(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function Kw(){return Kw=Object.assign?Object.assign.bind():function(e){for(var t=1;t({value:c,label:d})),value:s,onChange:l})),s==="ruby_llm"?jt.default.createElement(jt.default.Fragment,null,jt.default.createElement("p",{style:Sv},"Add the RubyLLM adapter and subscribe it. Every chat turn reports as a trace; unnamed chats arrive as"," ",jt.default.createElement("code",{style:wv},"RubyLLM::Chat")," until you name them."),jt.default.createElement("pre",{style:A6,"data-testid":"empty-ruby-llm-snippet"},_6(e))):jt.default.createElement(jt.default.Fragment,null,jt.default.createElement("p",{style:Sv},"Add this to ",jt.default.createElement("code",{style:wv},"config/active_agent.yml"),", under each environment that should report, and every agent action that runs shows up here on its first trace."),jt.default.createElement("pre",{style:A6,"data-testid":"empty-activeagent-snippet"},Cw(e))),jt.default.createElement("p",{style:Sv},t?jt.default.createElement(jt.default.Fragment,null,"Set ",jt.default.createElement("code",{style:wv},"ACTIVEAGENTS_API_KEY")," to this workspace's telemetry key, on the Organization page."):jt.default.createElement(jt.default.Fragment,null,"Set ",jt.default.createElement("code",{style:wv},"ACTIVEAGENTS_API_KEY")," to the dashboard's"," ",jt.default.createElement("code",{style:wv},"ingest_api_key"),", or to any value when it has none: telemetry sends nothing without a key.")),jt.default.createElement("a",{href:u.docsUrl,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},u.docsLabel),jt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:"auto"}},t&&jt.default.createElement(ie,{variant:"primary",size:"sm",onClick:()=>st("/organization"),testId:"empty-telemetry-key"},"Get the telemetry key"),jt.default.createElement(ie,{size:"sm",onClick:r,disabled:n,testId:"empty-check-again"},n?"Checking\u2026":"Check for agents"))),jt.default.createElement(XT,{label:"From GitHub",title:"Link a GitHub repository",testId:"empty-link-repository"},jt.default.createElement("p",{style:Sv},"Connect GitHub and pick a Rails app. The dashboard boots it in a sandbox, opens a pull request to install the engine when it is missing, and lets Claude Code work on the app's agents there."),jt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:"auto"}},jt.default.createElement(ie,{variant:"primary",size:"sm",onClick:()=>st("/projects/new"),testId:"empty-new-project"},"Link a repository"))),jt.default.createElement(XT,{label:"From scratch",title:"Build one here",testId:"empty-build-agent"},jt.default.createElement("p",{style:Sv},"Start from a template or write the instructions yourself, then run it from the dashboard."),jt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:"auto"}},jt.default.createElement(ie,{size:"sm",onClick:o,testId:"empty-browse-templates"},"Browse Templates"),jt.default.createElement(ie,{size:"sm",onClick:a,testId:"empty-create-agent"},"Create From Scratch")))))}var gl="~ estimated from tokens \xD7 model rates",Ew=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),T6=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),$s=e=>Ew(e)?`${T6(Number(e)*100)}%`:"\u2014",Dn=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${T6(n*100/r)}%`},oa=e=>$s(e),Nw=e=>`pass \u2265 ${$s(e)}`,kr=(e,{estimated:t=!1}={})=>{if(!Ew(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},E6=e=>Math.round(Number(e)||0).toLocaleString("en-US"),N6=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},Yae=["pattern","default"],Fm=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!Ew(r.input)||!Ew(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${E6(e)} in \xD7 ${N6(r.input)} + ${E6(t)} out \xD7 ${N6(r.output)} \xB7 ${n} rate${Yae.includes(n)?" (fallback rate)":""}`};var Xae=[{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 JT({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,Ct.useState)(""),[f,m]=(0,Ct.useState)(""),[g,b]=(0,Ct.useState)(""),h=e.filter(w=>{let _=!d||w.name.toLowerCase().includes(d.toLowerCase())||w.description?.toLowerCase().includes(d.toLowerCase()),A=!f||w.provider===f,C=!g||w.status===g;return _&&A&&C}),y=w=>{let _=new Date(w),C=new Date-_,O=Math.floor(C/(1e3*60*60*24));return O===0?"Today":O===1?"Yesterday":O<7?`${O} days ago`:_.toLocaleDateString()},x=w=>w==null?"\u2014":w<1e3?`${Math.round(w)}ms`:`${(w/1e3).toFixed(1)}s`,v=w=>w==null?"\u2014":w>=1e6?`${(w/1e6).toFixed(1)}M`:w>=1e3?`${(w/1e3).toFixed(1)}k`:`${w}`,k=w=>w==null?"\u2014":w>0&&w<.01?"<$0.01":`$${w.toFixed(2)}`,S=w=>{if(!w)return"\u2014";let _=Math.floor((new Date-new Date(w))/(1e3*60*60*24));return _<=0?"Today":_<30?`${_}d ago`:new Date(w).toLocaleDateString()};return Ct.default.createElement("div",{className:"space-y-6 max-md:space-y-4"},Ct.default.createElement("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-4 max-md:gap-3"},Ct.default.createElement("div",{className:"flex-1 flex flex-wrap items-center gap-4 max-md:gap-3 min-w-0"},Ct.default.createElement("div",{className:"relative flex-1 max-w-md max-md:basis-full"},Ct.default.createElement("input",{type:"text",placeholder:"Search agents...",value:d,onChange:w=>p(w.target.value),className:"w-full pl-10 pr-4 py-2 max-md:h-10 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),Ct.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"},Ct.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"}))),Ct.default.createElement("div",{className:"grid grid-cols-2 gap-3 max-md:basis-full md:contents","data-testid":"agent-filters"},Ct.default.createElement("select",{value:f,onChange:w=>m(w.target.value),className:"aa-select pl-3 pr-9 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 max-md:w-full max-md:min-w-0 max-md:h-10"},Ct.default.createElement("option",{value:""},"All Providers"),t.providers?.map(w=>Ct.default.createElement("option",{key:w,value:w},w.charAt(0).toUpperCase()+w.slice(1)))),Ct.default.createElement("select",{value:g,onChange:w=>b(w.target.value),className:"aa-select pl-3 pr-9 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 max-md:w-full max-md:min-w-0 max-md:h-10"},Ct.default.createElement("option",{value:""},"All Status"),Ct.default.createElement("option",{value:"active"},"Active"),Ct.default.createElement("option",{value:"draft"},"Draft"),Ct.default.createElement("option",{value:"archived"},"Archived")),Ct.default.createElement("select",{value:l,onChange:w=>u?.(w.target.value),className:"aa-select pl-3 pr-9 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 max-md:w-full max-md:min-w-0 max-md:h-10 max-md:col-span-2",title:"Rank agents by their scorecard"},Xae.map(w=>Ct.default.createElement("option",{key:w.value,value:w.value},w.label))))),Ct.default.createElement("div",{className:"flex flex-wrap items-center gap-3 md:flex-shrink-0","data-testid":"agent-actions"},Ct.default.createElement("button",{onClick:s,disabled:c,title:"Refresh","aria-label":"Refresh",className:"p-2 flex-shrink-0 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors disabled:opacity-50 max-md:h-10 max-md:w-10 max-md:inline-flex max-md:items-center max-md:justify-center max-md:border max-md:border-gray-300 max-md:hover:bg-gray-50"},Ct.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ct.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"}))),Ct.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 max-md:flex-1 max-md:justify-center max-md:h-10 max-md:px-3 max-md:text-sm max-md:whitespace-nowrap"},Ct.default.createElement("svg",{className:"h-5 w-5 max-sm:hidden",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ct.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"})),Ct.default.createElement("span",null,"Browse Templates")),Ct.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 max-md:flex-1 max-md:justify-center max-md:h-10 max-md:px-3 max-md:text-sm max-md:whitespace-nowrap"},Ct.default.createElement("svg",{className:"h-5 w-5 max-sm:hidden",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),Ct.default.createElement("span",null,"New Agent")))),h.length>0?Ct.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(w=>{let _=w.stats||{},A=_.run_sources||[],C=A.length?`Counted from ${A.map(O=>O==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return Ct.default.createElement(zm,{key:w.id,name:w.name,subtitle:w.description||"No description",badge:Ct.default.createElement(ve,{tone:ml(w.status)},w.status),onClick:()=>r(w),stats:[{label:`Runs ${_.window_days||30}d`,value:_.runs??0,title:C},{label:"Success",value:_.success_rate!=null?`${Math.round(_.success_rate)}%`:"\u2014",tone:YT(_.success_rate!=null?_.success_rate/100:null)},{label:"Avg time",value:x(_.avg_duration_ms)},{label:"Eval",title:_.eval_samples_evaluated?`${Dn(_.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:$s(_.eval_score),tone:YT(_.eval_score)},{label:"Tokens",value:v(_.tokens)},{label:"Cost",value:k(_.cost),title:"Estimated from token counts at each model's published rates",tone:_.cost==null?"muted":void 0}],footer:Ct.default.createElement(Ct.default.Fragment,null,Ct.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},Ct.default.createElement(ve,{tone:"muted",style:{flexShrink:0}},w.provider),Ct.default.createElement("span",{title:w.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},w.model)),Ct.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${y(w.updatedAt||w.updated_at)}`},_.last_run_at?`Last run ${S(_.last_run_at)}`:`Updated ${y(w.updatedAt||w.updated_at)}`)),actions:Ct.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},Ct.default.createElement("button",{onClick:O=>{O.stopPropagation(),a(w.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),Ct.default.createElement("button",{onClick:O=>{O.stopPropagation(),i(w.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):e.length===0?Ct.default.createElement(ZT,{endpoint:Aw(),multiTenant:!!t.multiTenant,onRefresh:s,isLoading:c,onBrowseTemplates:o,onNew:n}):Ct.default.createElement("div",{className:"text-center py-16"},Ct.default.createElement("div",{className:"inline-block mb-4"},Ct.default.createElement(wn,{size:100})),Ct.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},"No matching agents"),Ct.default.createElement("p",{className:"text-gray-500 mb-6"},"Try adjusting your search or filters")))}var he=X(J());function O6(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 Wm={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"]},Tw=Object.keys(Wm),Zae=300*1e3,P6=O6(Jae,{ttlMs:Zae,keep:e=>e!==null});async function M6(e){return await P6(e)??(Wm[e]||[])}function QT(){P6.clear()}async function Jae(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 Ow=X(J());function Ic(e){let[t,r]=(0,Ow.useState)(Wm),n=e.join(",");return(0,Ow.useEffect)(()=>{let o=!1;return e.forEach(a=>{M6(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var Dc=X(J());function fu({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,Dc.useId)();return Dc.default.createElement(Dc.default.Fragment,null,Dc.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}),Dc.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>Dc.default.createElement("option",{key:u,value:u}))))}var Qae="custom:",Rae=["accept","content-type","content-length","host","mcp-session-id","user-agent","connection","transfer-encoding"],eie=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,$c=e=>!!(e&&(e.custom===!0||String(e.key||"").startsWith(Qae)));function I6(){return{id:null,name:"",description:"",url:"",enabled:!0,headers:[]}}function D6(e){return{id:e.id,name:e.name||"",description:e.description||"",url:e.url||"",enabled:e.enabled!==!1,headers:(e.headers||[]).map(t=>({name:t.name,value:"",hint:t.hint||"",stored:!0}))}}function $6(e){return{...e,headers:[...e.headers,{name:"",value:"",hint:"",stored:!1}]}}function RT(e,t,r,n){let o=e.headers.map((a,i)=>{if(i!==t)return a;let s={...a,[r]:n};return r==="name"&&a.stored&&n.trim().toLowerCase()!==a.name.trim().toLowerCase()&&(s.stored=!1,s.hint=""),s});return{...e,headers:o}}function j6(e,t){return{...e,headers:e.headers.filter((r,n)=>n!==t)}}function L6(e){let t={};e.name.trim()||(t.name="Name the server.");let r=e.url.trim();if(!r)t.url="Enter the server\u2019s URL.";else{let o=null;try{o=new URL(r)}catch{o=null}!o||!["http:","https:"].includes(o.protocol)?t.url="Use an http:// or https:// URL.":(o.username||o.password)&&(t.url="Send credentials in a header, not in the URL.")}let n=new Set;for(let o of e.headers){let a=o.name.trim();if(!a){o.value.trim()&&(t.headers="Every header needs a name.");continue}let i=a.toLowerCase();eie.test(a)?Rae.includes(i)?t.headers=`${a} is set by the MCP client and cannot be replaced.`:n.has(i)?t.headers=`${a} is listed twice.`:!o.stored&&!o.value.trim()?t.headers=`${a} needs a value.`:/[\r\n]/.test(o.value)&&(t.headers=`${a} must not contain line breaks.`):t.headers=`${a} is not a valid header name.`,n.add(i)}return t}var z6=e=>Object.keys(e).length>0;function B6(e){return{mcp_server_config:{name:e.name.trim(),description:e.description.trim(),url:e.url.trim(),enabled:e.enabled,headers:e.headers.filter(t=>t.name.trim()).map(t=>({name:t.name.trim(),value:t.value}))}}}function kv(e,t="Something went wrong."){let r=e&&e.error;return Array.isArray(r)?r.join(" ")||t:r?String(r):t}function F6(e){if(!e.last_tested_at||!e.last_test_status)return{tone:"muted",label:"Not tested",title:"Test the connection to list the tools it serves"};if(e.last_test_status==="ok"){let t=(e.tools||[]).length;return{tone:"success",label:`Connected \xB7 ${t} tool${t===1?"":"s"}`,title:`Last tested ${e.last_tested_at}`}}return{tone:"error",label:"Failed",title:e.last_test_error||"The last test failed"}}var tie=["agent_defined","dashboard","mcp"],eO={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},rie={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},Mw=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],tO=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`},nie="sandbox:",np=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(nie))),Cv=e=>np(e)&&!e.known,Iw=e=>!!e&&!e.known&&!np(e)&&!$c(e),Av=e=>$c(e)&&!e.known;function W6(e){return Cv(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":np(e)?"tools are listed by the running app each time the agent runs":Av(e)?"this server was removed from MCP Services, so it offers no tools \u2014 switch it off":$c(e)?"test this server on the MCP Services page to list its tools":"no tools recorded for this service yet"}var Um=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 Pw(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=Um(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 U6=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function H6(e,t,{query:r="",filter:n=null}={}){let o=U6(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 q6(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(oie(e,t).map(o=>({...o,on:!0})))}function K6(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=U6(n),s=q6(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return tie.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:eO[u],meta:`${rie[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 V6(e,t,r,{range:n="7d"}={}){let o=q6(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 G6(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function rO(e,t=[]){let r=G6(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 nO(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 Y6(e=[],t,r=[]){let n=(e||[]).map(String),o=rO(t,n);if(!o)return n;let a=new Set(nO(n,G6(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 X6(e,t,r){let n=Pw(e,t.mcpServers),o=Pw(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 Z6(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=Um(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=Um(i);s&&!a.has(s)&&o.push(i)}),o}function J6(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)}function oO(e){return(e?.tools||[]).filter(t=>t.editable&&t.implemented!==!1)}var aie=["terminal","filesystem","edit","database"],Dw=(e=[])=>e.some(t=>aie.includes(t)),iie={terminal:["run_command"],filesystem:["write_file"],edit:["edit_file"],slack:["slack_post_message"]},Hm=(e=[])=>[...new Set(e.flatMap(t=>iie[t]||[]))];function Q6(e){let t=e?.services||[],r=(n,o)=>(o.workspace_agents||0)-(n.workspace_agents||0)||String(n.name).localeCompare(String(o.name));return{callable:t.filter(n=>n.callable).sort(r),unavailable:t.filter(n=>!n.callable)}}function aO(e,t=[]){if(!e)return[...t];let r=new Set(oO(e).map(n=>n.key));return t.filter(n=>r.has(n))}var iO=(e=[],t)=>e.some(r=>Um(r)===t);function R6(e=[],t){return iO(e,t.key)?e.filter(r=>Um(r)!==t.key):[...e,{key:t.key,name:t.name}]}function eB(e){let t=e.workspace_agents||0;return t?`${t} agent${t===1?"":"s"}`:null}var $w=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],Ev={...xv,agents:{emoji:"\u{1F91D}",label:"Delegate to agents"},ask:{emoji:"\u{1F64B}",label:"Ask the user"}},sie=["name","slug","description","provider","model"];function sO({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,he.useState)(0),[s,l]=(0,he.useState)({name:"",description:"",provider:"openai",model:Wm.openai[0],instructions:"",preset_type:"terminal",instruction_sets:["github"],tools:["terminal","code"],mcp_servers:[],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:o.mcp_servers||[]}:{}}),u=Ic([s.provider]),c=(0,he.useMemo)(()=>{let w=o?.model&&o.provider;return!w||!u[w]?u:{...u,[w]:[...new Set([o.model,...u[w]])]}},[u]),d=c[s.provider];(0,he.useEffect)(()=>{d?.length&&l(w=>d.includes(w.model)?w:{...w,model:d[0]})},[d]);let[p,f]=(0,he.useState)(null),[m,g]=(0,he.useState)(null);(0,he.useEffect)(()=>{fetch("/api/agents/tool_roster").then(w=>{if(!w.ok)throw new Error(`HTTP ${w.status}`);return w.json()}).then(w=>{f(w),l(_=>({..._,tools:aO(w,_.tools)}))}).catch(w=>g(w.message))},[]);let[b,h]=(0,he.useState)(null),y=(w,_)=>{l(A=>({...A,[w]:_}))},x=(w,_)=>{l(A=>{let C=A[w]||[],O=C.includes(_)?C.filter(D=>D!==_):[...C,_];return{...A,[w]:O}})},v=w=>{if(y("preset_type",w),Lm[w]){let _=Lm[w];y("instruction_sets",[..._.instructions]),y("tools",aO(p,_.tools))}},k=()=>{switch(a){case 0:return s.name.trim().length>=2;case 1:return!0;case 2:return!0;default:return!1}},S=async()=>{h(null);let w=await t({...s,approval_required_tools:Hm(s.tools)});w&&(h(w),Object.keys(w.fieldErrors||{}).some(_=>sie.includes(_))&&i(0))};return he.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&he.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."),he.default.createElement("div",{className:"mb-8"},he.default.createElement("div",{className:"flex items-center justify-between"},$w.map((w,_)=>he.default.createElement("div",{key:w.id,className:"flex items-center"},he.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${_he.default.createElement("li",{key:w},w)))),he.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&he.default.createElement(lie,{formData:s,updateField:y,providerModels:c,fieldErrors:b?.fieldErrors||{}}),a===1&&he.default.createElement(uie,{formData:s,meta:e,roster:p,rosterError:m,toggleArrayItem:x,updateField:y,selectPreset:v}),a===2&&he.default.createElement(cie,{formData:s,roster:p})),he.default.createElement("div",{className:"flex justify-between mt-6"},he.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"),he.default.createElement("button",{onClick:a===$w.length-1?S:()=>i(a+1),disabled:!k()||n,className:`px-6 py-2 rounded-lg transition-colors ${k()&&!n?"bg-red-500 text-white hover:bg-red-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},a===$w.length-1?"Create Agent":"Continue")))}function jw({messages:e}){return e.length?he.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function lie({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return he.default.createElement("div",{className:"space-y-6"},he.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),he.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),he.default.createElement("div",{className:"space-y-4"},he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),he.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"}),he.default.createElement(jw,{messages:o("name","slug")})),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),he.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"}),he.default.createElement(jw,{messages:o("description")})),he.default.createElement("div",{className:"grid grid-cols-2 gap-4"},he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),he.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=>he.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),he.default.createElement(jw,{messages:o("provider")})),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),he.default.createElement(fu,{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"}),he.default.createElement(jw,{messages:o("model")}))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),he.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"}),he.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},he.default.createElement("span",null,"Precise"),he.default.createElement("span",null,"Creative")))))}function uie({formData:e,meta:t,roster:r,rosterError:n,toggleArrayItem:o,updateField:a,selectPreset:i}){let s=Object.keys(Lm),l=Object.keys(rp),u=oO(r),{callable:c,unavailable:d}=Q6(r);return he.default.createElement("div",{className:"space-y-6"},he.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),he.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),he.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},he.default.createElement("div",{className:"flex flex-col items-center"},he.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(p=>{let f=rp[p];return f?he.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})),he.default.createElement(wn,{size:120}),he.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(p=>{let f=xv[p];return f?he.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),he.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(p=>he.default.createElement("button",{key:p,onClick:()=>i(p),className:`px-4 py-2 rounded-lg border-2 text-sm transition-all ${e.preset_type===p?"border-red-500 bg-red-50 text-red-700":"border-gray-200 hover:border-gray-300 text-gray-600"}`},he.default.createElement("span",{className:"capitalize"},p.replace(/([A-Z])/g," $1").trim()))))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},he.default.createElement("strong",null,"Instructions"),he.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),he.default.createElement("div",{className:"flex flex-wrap gap-2"},l.map(p=>{let f=rp[p];return he.default.createElement("button",{key:p,onClick:()=>o("instruction_sets",p),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.instruction_sets.includes(p)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},he.default.createElement("span",null,f.emoji),he.default.createElement("span",null,f.label))}))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},he.default.createElement("strong",null,"Tools"),he.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Functions the model can call")),n&&he.default.createElement("p",{className:"text-sm text-red-600"},"Could not load the tools this workspace offers: ",n),!r&&!n&&he.default.createElement("p",{className:"text-sm text-gray-400"},"Loading tools\u2026"),he.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-tools"},u.map(p=>he.default.createElement(tB,{key:p.key,testId:`builder-tool-${p.key}`,on:e.tools.includes(p.key),onClick:()=>o("tools",p.key),emoji:Ev[p.key]?.emoji||"\u{1F9F1}",label:Ev[p.key]?.label||p.name,title:p.description||p.name}))),Dw(e.tools)&&he.default.createElement("p",{className:"mt-2 text-xs text-gray-500","data-testid":"builder-checkout-hint"},"Terminal, Filesystem, Edit and Database act in a repository checkout: choose one under Checkout when you run the agent.")),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},he.default.createElement("strong",null,"MCP servers"),he.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Every tool the server serves is offered")),r&&c.length===0&&he.default.createElement("p",{className:"text-sm text-gray-500"},"No MCP server this workspace can call yet. Register one with its URL in ",he.default.createElement("code",null,"ActionAgent.mcp_catalog"),", or boot a project's checkout to offer its app runtime."),he.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-mcp-servers"},c.map(p=>he.default.createElement(tB,{key:p.key,testId:`builder-mcp-${p.key}`,on:iO(e.mcp_servers,p.key),onClick:()=>a("mcp_servers",R6(e.mcp_servers,p)),emoji:p.runtime?"\u{1F4E6}":"\u{1F50C}",label:p.name,hint:eB(p),title:[p.description,p.transport].filter(Boolean).join(" \xB7 ")}))),d.length>0&&he.default.createElement("details",{className:"mt-3 text-sm","data-testid":"builder-mcp-unavailable"},he.default.createElement("summary",{className:"cursor-pointer text-gray-500"},d.length," catalog server",d.length===1?"":"s"," a run can't call"),he.default.createElement("ul",{className:"mt-2 space-y-1"},d.map(p=>he.default.createElement("li",{key:p.key,className:"text-xs text-gray-500"},he.default.createElement("span",{className:"font-medium text-gray-700"},p.name)," \u2014 ",p.unavailable_reason))))),he.default.createElement("div",null,he.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),he.default.createElement("textarea",{value:e.instructions,onChange:p=>a("instructions",p.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 cie({formData:e,roster:t}){let r=n=>{let o=typeof n=="string"?n:n?.key;return t?.services?.find(a=>a.key===o)?.name||n?.name||o};return he.default.createElement("div",{className:"space-y-6"},he.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),he.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),he.default.createElement("div",{className:"grid grid-cols-2 gap-8"},he.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},he.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(n=>{let o=rp[n];return o?he.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),he.default.createElement(wn,{size:100}),he.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(n=>{let o=xv[n];return o?he.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),he.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),he.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),he.default.createElement("div",{className:"space-y-4"},he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),he.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),he.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),he.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(n=>{let o=rp[n];return o?he.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},o.emoji," ",o.label):null}):he.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),he.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(n=>he.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},Ev[n]?`${Ev[n].emoji} ${Ev[n].label}`:n)):he.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),Hm(e.tools).length>0&&he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Waits for your approval"),he.default.createElement("p",{className:"text-gray-900 text-sm font-mono"},Hm(e.tools).join(", "))),he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"MCP servers"),he.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.mcp_servers.length>0?e.mcp_servers.map(n=>he.default.createElement("span",{key:r(n),className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r(n))):he.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&he.default.createElement("div",null,he.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),he.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)))}function tB({on:e,onClick:t,emoji:r,label:n,hint:o,title:a,testId:i}){return he.default.createElement("button",{type:"button","data-testid":i,"aria-pressed":e,onClick:t,title:a,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},he.default.createElement("span",null,r),he.default.createElement("span",null,n),o&&he.default.createElement("span",{className:`text-xs ${e?"text-red-100":"text-gray-400"}`},"\xB7 ",o))}var _e=X(J());var ts=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"}),aa="#ef4444";var V=X(J());var Lw=X(J()),iB=X(J());function rB(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=gie(e,mie),d=a||{width:n,height:o,x:0,y:0},p=bt("recharts-surface",i);return Lw.createElement("svg",cO({},kn(c),{className:p,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),Lw.createElement("title",null,l),Lw.createElement("desc",null,u),r)});var zw=X(J());var yie=["children","className"];function dO(){return dO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=vie(e,yie),a=bt("recharts-layer",n);return zw.createElement("g",dO({className:a},kn(o),{ref:t}),r)});var Pi=X(J()),dk=X(J()),iF=X(wy());function Bw(e){return e==="__proto__"}var bie=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function Fw(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:bie.test(e);default:return!1}}function qm(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function pO(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(pO).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function Km(e){if(Array.isArray(e))return e.map(qm);if(typeof e=="symbol")return[e];e=pO(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]:Sie,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function Po(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+rs(s)+a:o+a},"")}var rn=e=>e===0?0:e>0?1:-1,Yo=e=>typeof e=="number"&&e!=+e,mu=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,Be=e=>(typeof e=="number"||e instanceof Number)&&!Yo(e),ja=e=>Be(e)||typeof e=="string",kie=0,gu=e=>{var t=++kie;return"".concat(e||"").concat(t)},Un=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(!Be(t)&&typeof t!="string")return n;var a;if(mu(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},fO=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):Go(n,t))===r)}var dr=e=>e===null||typeof e>"u",hu=e=>dr(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function Mo(e){return e!=null}function La(){}function Ov(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 sB(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 hl(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=Ov(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,p=s.lowerWidth,f=l,m=l+(d-p)/2,g=(f+m)/2,b=(d+p)/2,h=f+d/2,y=c>=0?1:-1,x=y*o,v=y>0?"end":"start",k=y>0?"start":"end",S=d>=0?1:-1,w=S*o,_=S>0?"end":"start",A=S>0?"start":"end",C=a;if(r==="top"){var O={x:f+d/2,y:u-x,horizontalAnchor:"middle",verticalAnchor:v};return i&&C&&(O.height=Math.max(u-C.y,0),O.width=d),O}if(r==="bottom"){var D={x:m+p/2,y:u+c+x,horizontalAnchor:"middle",verticalAnchor:k};return i&&C&&(D.height=Math.max(C.y+C.height-(u+c),0),D.width=p),D}if(r==="left"){var H={x:g-w,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"};return i&&C&&(H.width=Math.max(H.x-C.x,0),H.height=c),H}if(r==="right"){var j={x:g+b+w,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"};return i&&C&&(j.width=Math.max(C.x+C.width-j.x,0),j.height=c),j}var Z=i&&C?{width:b,height:c}:{};return r==="insideLeft"?hl({x:g+w,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"},Z):r==="insideRight"?hl({x:g+b-w,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"},Z):r==="insideTop"?hl({x:f+d/2,y:u+x,horizontalAnchor:"middle",verticalAnchor:k},Z):r==="insideBottom"?hl({x:m+p/2,y:u+c-x,horizontalAnchor:"middle",verticalAnchor:v},Z):r==="insideTopLeft"?hl({x:f+w,y:u+x,horizontalAnchor:A,verticalAnchor:k},Z):r==="insideTopRight"?hl({x:f+d-w,y:u+x,horizontalAnchor:_,verticalAnchor:k},Z):r==="insideBottomLeft"?hl({x:m+w,y:u+c-x,horizontalAnchor:A,verticalAnchor:v},Z):r==="insideBottomRight"?hl({x:m+p-w,y:u+c-x,horizontalAnchor:_,verticalAnchor:v},Z):r&&typeof r=="object"&&(Be(r.x)||mu(r.x))&&(Be(r.y)||mu(r.y))?hl({x:l+Un(r.x,b),y:u+Un(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},Z):hl({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},Z)},Eie=["top","left","right","bottom"];function Pv(e){return e==null?!1:typeof e=="object"?!0:Eie.includes(e)}var Hw=X(J()),mO=(0,Hw.createContext)(null),lB=()=>(0,Hw.useContext)(mO);var za=X(J());var EB=X(J());function Lr(e){return function(){return e}}var gO=Math.cos;var Mv=Math.sin,Xo=Math.sqrt;var op=Math.PI,rOe=op/2,Vm=2*op;var hO=Math.PI,yO=2*hO,ap=1e-6,Nie=yO-ap;function uB(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return uB;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oap)if(!(Math.abs(d*l-u*c)>ap)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-i,m=o-s,g=l*l+u*u,b=f*f+m*m,h=Math.sqrt(g),y=Math.sqrt(p),x=a*Math.tan((hO-Math.acos((g+p-b)/(2*h*y)))/2),v=x/y,k=x/h;Math.abs(v-1)>ap&&this._append`L${t+v*c},${r+v*d}`,this._append`A${a},${a},0,0,${+(d*f>c*m)},${this._x1=t+k*l},${this._y1=r+k*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)>ap||Math.abs(this._y1-c)>ap)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%yO+yO),p>Nie?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>ap&&this._append`A${n},${n},0,${+(p>=hO)},${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 cB(){return new ip}cB.prototype=ip.prototype;function Gm(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 ip(t)}var cOe=Array.prototype.slice;function Ym(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function dB(e){this._context=e}dB.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 jc(e){return new dB(e)}function qw(e){return e[0]}function Kw(e){return e[1]}function Iv(e,t){var r=Lr(!0),n=null,o=jc,a=null,i=Gm(s);e=typeof e=="function"?e:e===void 0?qw:Lr(e),t=typeof t=="function"?t:t===void 0?Kw:Lr(t);function s(l){var u,c=(l=Ym(l)).length,d,p=!1,f;for(n==null&&(a=o(f=i())),u=0;u<=c;++u)!(u=f;--m)s.point(x[m],v[m]);s.lineEnd(),s.areaEnd()}h&&(x[p]=+e(b,p,d),v[p]=+t(b,p,d),s.point(n?+n(b,p,d):x[p],r?+r(b,p,d):v[p]))}if(y)return s=null,y+""||null}function c(){return Iv().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Lr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Lr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Lr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Lr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Lr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Lr(+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:Lr(!!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 Vw=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 vO(e){return new Vw(e,!0)}function xO(e){return new Vw(e,!1)}var Zm={draw(e,t){let r=Xo(t/op);e.moveTo(r,0),e.arc(0,0,r,0,Vm)}};var bO={draw(e,t){let r=Xo(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 pB=Xo(1/3),Oie=pB*2,wO={draw(e,t){let r=Xo(t/Oie),n=r*pB;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var SO={draw(e,t){let r=Xo(t),n=-r/2;e.rect(n,n,r,r)}};var Pie=.8908130915292852,fB=Mv(op/10)/Mv(7*op/10),Mie=Mv(Vm/10)*fB,Iie=-gO(Vm/10)*fB,kO={draw(e,t){let r=Xo(t*Pie),n=Mie*r,o=Iie*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Vm*a/5,s=gO(i),l=Mv(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var _O=Xo(3),CO={draw(e,t){let r=-Xo(t/(_O*3));e.moveTo(0,r*2),e.lineTo(-_O*r,-r),e.lineTo(_O*r,-r),e.closePath()}};var ns=-.5,os=Xo(3)/2,AO=1/Xo(12),Die=(AO/2+1)*3,EO={draw(e,t){let r=Xo(t/Die),n=r/2,o=r*AO,a=n,i=r*AO+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(ns*n-os*o,os*n+ns*o),e.lineTo(ns*a-os*i,os*a+ns*i),e.lineTo(ns*s-os*l,os*s+ns*l),e.lineTo(ns*n+os*o,ns*o-os*n),e.lineTo(ns*a+os*i,ns*i-os*a),e.lineTo(ns*s+os*l,ns*l-os*s),e.closePath()}};function Gw(e,t){let r=null,n=Gm(o);e=typeof e=="function"?e:Lr(e||Zm),t=typeof t=="function"?t:Lr(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:Lr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:Lr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function Jm(){}function Qm(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 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=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Qm(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:Qm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function NO(e){return new mB(e)}function gB(e){this._context=e}gB.prototype={areaStart:Jm,areaEnd:Jm,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:Qm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function TO(e){return new gB(e)}function hB(e){this._context=e}hB.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:Qm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function OO(e){return new hB(e)}function yB(e){this._context=e}yB.prototype={areaStart:Jm,areaEnd:Jm,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 PO(e){return new yB(e)}function vB(e){return e<0?-1:1}function xB(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(vB(a)+vB(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function bB(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function MO(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 Yw(e){this._context=e}Yw.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:MO(this,this._t0,bB(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,MO(this,bB(this,r=xB(this,e,t)),r);break;default:MO(this,this._t0,r=xB(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function wB(e){this._context=new SB(e)}(wB.prototype=Object.create(Yw.prototype)).point=function(e,t){Yw.prototype.point.call(this,t,e)};function SB(e){this._context=e}SB.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 IO(e){return new Yw(e)}function DO(e){return new wB(e)}function _B(e){this._context=e}_B.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=kB(e),o=kB(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 jO(e){return new Xw(e,.5)}function LO(e){return new Xw(e,0)}function zO(e){return new Xw(e,1)}function Ai(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 $ie(e,t){return e[t]}function jie(e){let t=[];return t.key=e,t}function BO(){var e=Lr([]),t=Rm,r=Ai,n=$ie;function o(a){var i=Array.from(e.apply(this,arguments),jie),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(hu(e));return NB[t]||Zm},Vie=(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*qie;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}},Gie=(e,t)=>{NB["symbol".concat(hu(e))]=t},qO=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=Uie(e,zie),l=AB(AB({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var g=Kie(u),b=Gw().type(g).size(Vie(o,i,u)),h=b();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=kn(l);return Be(p)&&Be(f)&&Be(o)?EB.createElement("path",HO({},m,{className:bt("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};qO.registerSymbol=Gie;var TB=X(J());var Zw=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,eg=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,TB.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{Nv(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},Yie=(e,t,r)=>n=>(e(t,r,n),null),yu=(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];Nv(o)&&typeof a=="function"&&(n||(n={}),n[o]=Yie(a,t,r))}),n};function OB(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Xie(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function Jw(){return Jw=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var f,m,g=d.formatter||o,b=bt({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?CB({},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 y=g?g(d.value,d,p):d.value;return $a.createElement("li",Kw({className:b,style:u,key:"legend-item-".concat(p)},hu(e,d,p)),$a.createElement(Av,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},$a.createElement(Zie,{data:d,iconType:i,inactiveColor:a})),$a.createElement("span",{className:"recharts-legend-item-text",style:h},y))})}var AB=e=>{var t=ur(e,Yie),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 $a.createElement("ul",{className:"recharts-default-legend",style:a},$a.createElement(Jie,Kw({},t,{payload:r})))};function EB(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function yu(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Gw="[object RegExp]",eg="[object String]",tg="[object Number]",rg="[object Boolean]",Yw="[object Arguments]",Xw="[object Symbol]",Zw="[object Date]",Jw="[object Map]",Qw="[object Set]",Rw="[object Array]",PB="[object Function]",eS="[object ArrayBuffer]",ng="[object Object]",MB="[object Error]",tS="[object DataView]",rS="[object Uint8Array]",nS="[object Uint8ClampedArray]",oS="[object Uint16Array]",aS="[object Uint32Array]",IB="[object BigUint64Array]",iS="[object Int8Array]",sS="[object Int16Array]",lS="[object Int32Array]",DB="[object BigInt64Array]",uS="[object Float32Array]",cS="[object Float64Array]";var zO=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function Iv(e){return typeof zO.Buffer<"u"&&zO.Buffer.isBuffer(e)}function jB(e,t){return $c(e,void 0,e,new Map,t)}function $c(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(Pv(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{}):BO(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:BO(o,a,n,u,!1)},new Map,!0)}function BO(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return Rie(e,t,r,n);case"function":return Object.keys(t).length>0?BO(e,{...t},r,n,o):Lc(e,t);default:return dS(e)?o?typeof t=="string"?t==="":!0:Lc(e,t):Lc(e,t)}}function Rie(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return LB(e,t,r,n);if(t instanceof Map)return ese(e,t,r,n);if(t instanceof Set)return tse(e,t,r,n);let o=Object.keys(t);if(e==null||Pv(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 zB(e){return e=$B(e),t=>pS(t,e)}function BB(e,t){return jB(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(yu(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),as(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case tg:case eg:case rg:{let s=new e.constructor(e?.valueOf());return as(s,e),s}case Yw:{let s={};return as(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function FB(e){return BB(e)}var rse=/^(?:0|[1-9]\d*)$/;function fS(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function mS(e){return e!=null&&typeof e!="function"&&KB(e.length)}function VB(e){return typeof e=="object"&&e!==null}function GB(e){return VB(e)&&mS(e)}function gS(e,t=Vw){return GB(e)?EB(Array.from(e),NB(qB(t),1)):[]}function hS(e,t,r){return t===!0?gS(e,r):typeof t=="function"?gS(e,t):e}var n7=X(t7()),jv=X(J());var r7=X(J()),Dv=(0,r7.createContext)(null);var bse=e=>e,Lt=()=>{var e=(0,jv.useContext)(Dv);return e?e.store.dispatch:bse},vS=()=>{},wse=()=>vS,Sse=(e,t)=>e===t;function Fe(e){var t=(0,jv.useContext)(Dv),r=(0,jv.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:vS,[t,e]);return(0,n7.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:wse,t?t.store.getState:vS,t?t.store.getState:vS,r,Sse)}function kse(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function _se(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 o7=e=>Array.isArray(e)?e:[e];function Cse(e){let t=Array.isArray(e[0])?e[0]:e;return _se(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Ase(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?Ese:WeakRef,i7=Nse(),Tse=0,a7=1;function xS(){return{s:Tse,v:void 0,o:null,p:null}}function Ose(e){return e instanceof i7?e.deref():e}function s7(e,t={}){let r=xS(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=xS(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function Pse(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()),kse(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=s7,argsMemoizeOptions:m=[]}=c,g=o7(p),b=o7(m),h=Cse(o),y=d(function(){return a++,u.apply(null,arguments)},...g),x=!0,v=f(function(){i++;let S=Ase(h,arguments);return s=y.apply(null,S),s},...b);return Object.assign(v,{resultFunc:u,memoizedResultFunc:y,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 oe=Pse(s7);function l7(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=u7(e),o=u7(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function bS(e){return typeof e=="symbol"||e instanceof Symbol}var Mse=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ise=/^\w*$/;function d7(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||bS(e)?!0:typeof e=="string"&&(Ise.test(e)||!Mse.test(e))||t!=null&&Object.hasOwn(t,e)}function p7(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)||d7(s)?s:{key:s,path:qm(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 vu(e,...t){let r=t.length;return r>1&&$v(e,t[0],t[1])?t=[]:r>2&&$v(t[0],t[1],t[2])&&(t=[t[0]]),p7(e,l7(t),["asc"])}var UO=e=>e.legend.settings,f7=e=>e.legend.size,Dse=e=>e.legend.payload,m7=oe([Dse,UO],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?vu(n,r):n});function g7(){return Fe(m7)}var xu=X(J());function jse(e,t){return Bse(e)||zse(e,t)||Lse(e,t)||$se()}function $se(){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 Lse(e,t){if(e){if(typeof e=="string")return h7(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)?h7(e,t):void 0}}function h7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rwS||Math.abs(e.left-t.left)>wS||Math.abs(e.top-t.top)>wS||Math.abs(e.width-t.width)>wS}function v7(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function SS(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,xu.useState)({height:0,left:0,top:0,width:0}),r=jse(t,2),n=r[0],o=r[1],a=(0,xu.useRef)(null),i=(0,xu.useRef)(n);i.current=n;var s=(0,xu.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=v7(l);if(y7(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=v7(l);y7(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,xu.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var D9=X(J());function aa(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 Fse=typeof Symbol=="function"&&Symbol.observable||"@@observable",x7=Fse,HO=()=>Math.random().toString(36).substring(7).split("").join("."),Wse={INIT:`@@redux/INIT${HO()}`,REPLACE:`@@redux/REPLACE${HO()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${HO()}`},kS=Wse;function _S(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 qO(e,t,r){if(typeof e!="function")throw new Error(aa(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(aa(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(aa(1));return r(qO)(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(aa(3));return o}function d(b){if(typeof b!="function")throw new Error(aa(4));if(l)throw new Error(aa(5));let h=!0;u();let y=s++;return i.set(y,b),function(){if(h){if(l)throw new Error(aa(6));h=!1,u(),i.delete(y),a=null}}}function p(b){if(!_S(b))throw new Error(aa(7));if(typeof b.type>"u")throw new Error(aa(8));if(typeof b.type!="string")throw new Error(aa(17));if(l)throw new Error(aa(9));try{l=!0,o=n(o,b)}finally{l=!1}return(a=i).forEach(y=>{y()}),b}function f(b){if(typeof b!="function")throw new Error(aa(10));n=b,p({type:kS.REPLACE})}function m(){let b=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(aa(11));function y(){let v=h;v.next&&v.next(c())}return y(),{unsubscribe:b(y)}},[x7](){return this}}}return p({type:kS.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[x7]:m}}function Use(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:kS.INIT})>"u")throw new Error(aa(12));if(typeof r(void 0,{type:kS.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(aa(13))})}function CS(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let b=l&&l.type;throw new Error(aa(14))}c[p]=g,u=u||g!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function Lv(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function b7(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(aa(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=Lv(...s)(o.dispatch),{...o,dispatch:a}}}function KO(e){return _S(e)&&"type"in e&&typeof e.type=="string"}var T7=Symbol.for("immer-nothing"),w7=Symbol.for("immer-draftable"),ga=Symbol.for("immer-state");function js(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Ai=Object,ig=Ai.getPrototypeOf,TS="constructor",jS="prototype",XO="configurable",OS="enumerable",ES="writable",zv="value",hl=e=>!!e&&!!e[ga];function Ei(e){return e?O7(e)||LS(e)||!!e[w7]||!!e[TS]?.[w7]||zS(e)||BS(e):!1}var Hse=Ai[jS][TS].toString(),S7=new WeakMap;function O7(e){if(!e||!nP(e))return!1;let t=ig(e);if(t===null||t===Ai[jS])return!0;let r=Ai.hasOwnProperty.call(t,TS)&&t[TS];if(r===Object)return!0;if(!ag(r))return!1;let n=S7.get(r);return n===void 0&&(n=Function.toString.call(r),S7.set(r,n)),n===Hse}function $S(e,t,r=!0){Wv(e)===0?(r?Reflect.ownKeys(e):Ai.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function Wv(e){let t=e[ga];return t?t.type_:LS(e)?1:zS(e)?2:BS(e)?3:0}var VO=(e,t,r=Wv(e))=>r===2?e.has(t):Ai[jS].hasOwnProperty.call(e,t),ZO=(e,t,r=Wv(e))=>r===2?e.get(t):e[t],PS=(e,t,r,n=Wv(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function qse(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var LS=Array.isArray,zS=e=>e instanceof Map,BS=e=>e instanceof Set,nP=e=>typeof e=="object",ag=e=>typeof e=="function",GO=e=>typeof e=="boolean";function Kse(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var bu=e=>e.copy_||e.base_;var oP=e=>e.modified_?e.copy_:e.base_;function JO(e,t){if(zS(e))return new Map(e);if(BS(e))return new Set(e);if(LS(e))return Array[jS].slice.call(e);let r=O7(e);if(t===!0||t==="class_only"&&!r){let n=Ai.getOwnPropertyDescriptors(e);delete n[ga];let o=Reflect.ownKeys(n);for(let a=0;a1&&Ai.defineProperties(e,{set:AS,add:AS,clear:AS,delete:AS}),Ai.freeze(e),t&&$S(e,(r,n)=>{aP(n,!0)},!1)),e}function Vse(){js(2)}var AS={[zv]:Vse};function FS(e){return e===null||!nP(e)?!0:Ai.isFrozen(e)}var MS="MapSet",QO="Patches",k7="ArrayMethods",P7={};function ip(e){let t=P7[e];return t||js(0,e),t}var _7=e=>!!P7[e];var Bv,M7=()=>Bv,Gse=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:_7(MS)?ip(MS):void 0,arrayMethodsPlugin_:_7(k7)?ip(k7):void 0});function C7(e,t){t&&(e.patchPlugin_=ip(QO),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function RO(e){eP(e),e.drafts_.forEach(Yse),e.drafts_=null}function eP(e){e===Bv&&(Bv=e.parent_)}var A7=e=>Bv=Gse(Bv,e);function Yse(e){let t=e[ga];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function E7(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[ga].modified_&&(RO(t),js(4)),Ei(e)&&(e=N7(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[ga].base_,e,t)}else e=N7(t,r);return Xse(t,e,!0),RO(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==T7?e:void 0}function N7(e,t){if(FS(t))return t;let r=t[ga];if(!r)return IS(t,e.handledSet_,e);if(!WS(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);j7(r,e)}return r.copy_}function Xse(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&aP(t,r)}function I7(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var WS=(e,t)=>e.scope_===t,Zse=[];function D7(e,t,r,n){let o=bu(e),a=e.type_;if(n!==void 0&&ZO(o,n,a)===t){PS(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;$S(o,(l,u)=>{if(hl(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??Zse;for(let s of i)PS(o,s,r,a)}function Jse(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!WS(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=oP(a);D7(e,a.draft_??a,i,r),j7(a,o)})}function j7(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)}I7(e)}}function Qse(e,t,r){let{scope_:n}=e;if(hl(r)){let o=r[ga];WS(o,n)&&o.callbacks_.push(function(){NS(e);let i=oP(o);D7(e,r,i,t)})}else Ei(r)&&e.callbacks_.push(function(){let a=bu(e);e.type_===3?a.has(r)&&IS(r,n.handledSet_,n):ZO(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&IS(ZO(e.copy_,t,e.type_),n.handledSet_,n)})}function IS(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||hl(e)||t.has(e)||!Ei(e)||FS(e)||(t.add(e),$S(e,(n,o)=>{if(hl(o)){let a=o[ga];if(WS(a,r)){let i=oP(a);PS(e,n,i,e.type_),I7(a)}}else Ei(o)&&IS(o,t,r)})),e}function Rse(e,t){let r=LS(e),n={type_:r?1:0,scope_:t?t.scope_:M7(),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=DS;r&&(o=[n],a=Fv);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var DS={get(e,t){if(t===ga)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=bu(e);if(!VO(o,t,e.type_))return tle(e,o,t);let a=o[t];if(e.finalized_||!Ei(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&Kse(t))return a;if(a===YO(e.base_,t)||ele(e,t,a)){NS(e);let i=e.type_===1?+t:t,s=rP(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in bu(e)},ownKeys(e){return Reflect.ownKeys(bu(e))},set(e,t,r){let n=$7(bu(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=YO(bu(e),t),a=o?.[ga];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(qse(r,o)&&(r!==void 0||VO(e.base_,t,e.type_)))return!0;NS(e),tP(e)}return e.copy_[t]===r&&(r!==void 0||VO(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),Qse(e,t,r)),!0},deleteProperty(e,t){return NS(e),YO(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),tP(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=bu(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[ES]:!0,[XO]:e.type_!==1||t!=="length",[OS]:n[OS],[zv]:r[t]}},defineProperty(){js(11)},getPrototypeOf(e){return ig(e.base_)},setPrototypeOf(){js(12)}},Fv={};for(let e in DS){let t=DS[e];Fv[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}Fv.deleteProperty=function(e,t){return Fv.set.call(this,e,t,void 0)};Fv.set=function(e,t,r){return DS.set.call(this,e[0],t,r,e[0])};function YO(e,t){let r=e[ga];return(r?bu(r):e)[t]}function ele(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Ei(r)||r[ga]?!1:e.baseRefs_.has(r)}function tle(e,t,r){let n=$7(t,r);return n?zv in n?n[zv]:n.get?.call(e.draft_):void 0}function $7(e,t){if(!(t in e))return;let r=ig(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=ig(r)}}function tP(e){e.modified_||(e.modified_=!0,e.parent_&&tP(e.parent_))}function NS(e){e.copy_||(e.assigned_=new Map,e.copy_=JO(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var rle=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(ag(t)&&!ag(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}ag(r)||js(6),n!==void 0&&!ag(n)&&js(7);let o;if(Ei(t)){let a=A7(this),i=rP(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?RO(a):eP(a)}return C7(a,n),E7(o,a)}else if(!t||!nP(t)){if(o=r(t),o===void 0&&(o=t),o===T7&&(o=void 0),this.autoFreeze_&&aP(o,!0),n){let a=[],i=[];ip(QO).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else js(1,t)},this.produceWithPatches=(t,r)=>{if(ag(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]},GO(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),GO(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),GO(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Ei(e)||js(8),hl(e)&&(e=ia(e));let t=A7(this),r=rP(t,e,void 0);return r[ga].isManual_=!0,eP(t),r}finishDraft(e,t){let r=e&&e[ga];(!r||!r.isManual_)&&js(9);let{scope_:n}=r;return C7(n,t),E7(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=ip(QO).applyPatches_;return hl(e)?n(e,t):this.produce(e,o=>n(o,t))}};function rP(e,t,r,n){let[o,a]=zS(t)?ip(MS).proxyMap_(t,r):BS(t)?ip(MS).proxySet_(t,r):Rse(t,r);return(r?.scope_??M7()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?Jse(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 ia(e){return hl(e)||js(10,e),L7(e)}function L7(e){if(!Ei(e)||FS(e))return e;let t=e[ga],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=JO(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=JO(e,!0);return $S(r,(o,a)=>{PS(r,o,L7(a))},n),t&&(t.finalized_=!1),r}var nle=new rle,iP=nle.produce;var rr=e=>e;function z7(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var B7=z7(),F7=z7;var ole=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Lv:Lv.apply(null,arguments)},lIe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},ale=e=>e&&typeof e.match=="function";function So(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(Ni(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=>KO(n)&&n.type===e,r}var Y7=class Uv extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,Uv.prototype)}static get[Symbol.species](){return Uv}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new Uv(...t[0].concat(this)):new Uv(...t.concat(this))}};function W7(e){return Ei(e)?iP(e,()=>{}):e}function US(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function ile(e){return typeof e=="boolean"}var sle=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new Y7;return r&&(ile(r)?i.push(B7):i.push(F7(r.extraArgument))),i},X7="RTK_autoBatch",zr=()=>e=>({payload:e,meta:{[X7]:!0}}),U7=e=>t=>{setTimeout(t,e)},lle=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},cP=(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?lle(window.requestAnimationFrame,100):U7(10):e.type==="callback"?e.queueNotification:U7(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?.[X7],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},ule=e=>function(r){let{autoBatch:n=!0}=r??{},o=new Y7(e);return n&&o.push(cP(typeof n=="object"?n:void 0)),o};function Z7(e){let t=sle(),{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(_S(r))l=CS(r);else throw new Error(Ni(1));let u;typeof n=="function"?u=n(t):u=t();let c=Lv;o&&(c=ole({trace:!1,...typeof o=="object"&&o}));let d=b7(...u),p=ule(d),f=typeof s=="function"?s(p):p(),m=c(...f);return qO(l,i,m)}function J7(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(Ni(28));if(s in t)throw new Error(Ni(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 cle(e){return typeof e=="function"}function dle(e,t){let[r,n,o]=J7(t),a;if(cle(e))a=()=>W7(e());else{let s=W7(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(hl(c)){let f=d(c,l);return f===void 0?c:f}else{if(Ei(c))return iP(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 ple=(e,t)=>ale(e)?e.match(t):e(t);function fle(...e){return t=>e.some(r=>ple(r,t))}var mle="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",Q7=(e=21)=>{let t="",r=e;for(;r--;)t+=mle[Math.random()*64|0];return t},gle=["name","message","stack","code"],sP=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},H7=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},hle=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of gle)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},q7="External signal was aborted",yle=(()=>{function e(t,r,n){let o=So(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=So(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=So(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||hle)(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):Q7(),m=new AbortController,g,b;function h(x){b=x,m.abort()}u&&(u.aborted?h(q7):u.addEventListener("abort",()=>h(q7),{once:!0}));let y=(async function(){let x;try{let k=n?.condition?.(l,{getState:d,extra:p});if(xle(k)&&(k=await k),k===!1||m.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};let S=new Promise((w,_)=>{g=()=>{_({name:"AbortError",message:b||"Aborted"})},m.signal.addEventListener("abort",g,{once:!0})});c(a(f,l,n?.getPendingMeta?.({requestId:f,arg:l},{getState:d,extra:p}))),x=await Promise.race([S,Promise.resolve(r(l,{dispatch:c,getState:d,extra:p,requestId:f,signal:m.signal,abort:h,rejectWithValue:((w,_)=>new sP(w,_)),fulfillWithValue:((w,_)=>new H7(w,_))})).then(w=>{if(w instanceof sP)throw w;return w instanceof H7?o(w.payload,f,l,w.meta):o(w,f,l)})])}catch(k){x=k instanceof sP?i(null,f,l,k.payload,k.meta):i(k,f,l)}finally{g&&m.signal.removeEventListener("abort",g)}return n&&!n.dispatchConditionRejection&&i.match(x)&&x.meta.condition||c(x),x})();return Object.assign(y,{abort:h,requestId:f,arg:l,unwrap(){return y.then(vle)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:fle(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function vle(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function xle(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var R7=Symbol.for("rtk-slice-createasyncthunk"),cIe={[R7]:yle};function ble(e,t){return`${e}/${t}`}function wle({creators:e}={}){let t=e?.asyncThunk?.[R7];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(Ni(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(kle()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(x,v){let k=typeof x=="string"?x:x.type;if(!k)throw new Error(Ni(12));if(k in l.sliceCaseReducersByType)throw new Error(Ni(13));return l.sliceCaseReducersByType[k]=v,u},addMatcher(x,v){return l.sliceMatchers.push({matcher:x,reducer:v}),u},exposeAction(x,v){return l.actionCreators[x]=v,u},exposeCaseReducer(x,v){return l.sliceCaseReducersByName[x]=v,u}};s.forEach(x=>{let v=i[x],k={reducerName:x,type:ble(o,x),createNotation:typeof n.reducers=="function"};Cle(v)?Ele(k,v,u,t):_le(k,v,u)});function c(){let[x={},v=[],k=void 0]=typeof n.extraReducers=="function"?J7(n.extraReducers):[n.extraReducers],S={...x,...l.sliceCaseReducersByType};return dle(n.initialState,w=>{for(let _ in S)w.addCase(_,S[_]);for(let _ of l.sliceMatchers)w.addMatcher(_.matcher,_.reducer);for(let _ of v)w.addMatcher(_.matcher,_.reducer);k&&w.addDefaultCase(k)})}let d=x=>x,p=new Map,f=new WeakMap,m;function g(x,v){return m||(m=c()),m(x,v)}function b(){return m||(m=c()),m.getInitialState()}function h(x,v=!1){function k(w){let _=w[x];return typeof _>"u"&&v&&(_=US(f,k,b)),_}function S(w=d){let _=US(p,v,()=>new WeakMap);return US(_,w,()=>{let A={};for(let[C,O]of Object.entries(n.selectors??{}))A[C]=Sle(O,w,()=>US(f,w,b),v);return A})}return{reducerPath:x,getSelectors:S,get selectors(){return S(k)},selectSlice:k}}let y={name:o,reducer:g,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:b,...h(a),injectInto(x,{reducerPath:v,...k}={}){let S=v??a;return x.inject({reducerPath:S,reducer:g},k),{...y,...h(S,!0)}}};return y}}function Sle(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 Tr=wle();function kle(){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 _le({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!Ale(n))throw new Error(Ni(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?So(e,i):So(e))}function Cle(e){return e._reducerDefinitionType==="asyncThunk"}function Ale(e){return e._reducerDefinitionType==="reducerWithPrepare"}function Ele({type:e,reducerName:t},r,n,o){if(!o)throw new Error(Ni(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||HS,pending:s||HS,rejected:l||HS,settled:u||HS})}function HS(){}var Nle="task",e9="listener",t9="completed",dP="cancelled",Tle=`task-${dP}`,Ole=`task-${t9}`,lP=`${e9}-${dP}`,Ple=`${e9}-${t9}`,VS=class{constructor(e){this.code=e,this.message=`${Nle} ${dP} (reason: ${e})`}code;name="TaskAbortError";message},pP=(e,t)=>{if(typeof e!="function")throw new TypeError(Ni(32))},qS=()=>{},r9=(e,t=qS)=>(e.catch(t),e),n9=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),sp=e=>{if(e.aborted)throw new VS(e.reason)};function o9(e,t){let r=qS;return new Promise((n,o)=>{let a=()=>o(new VS(e.reason));if(e.aborted){a();return}r=n9(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=qS})}var Mle=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof VS?"cancelled":"rejected",error:r}}finally{t?.()}},KS=e=>t=>r9(o9(e,t).then(r=>(sp(e),r))),a9=e=>{let t=KS(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:sg}=Object,K7={},GS="listenerMiddleware",Ile=(e,t)=>{let r=n=>n9(e,()=>n.abort(e.reason));return(n,o)=>{pP(n,"taskExecutor");let a=new AbortController;r(a);let i=Mle(async()=>{sp(e),sp(a.signal);let s=await n({pause:KS(a.signal),delay:a9(a.signal),signal:a.signal});return sp(a.signal),s},()=>a.abort(Ole));return o?.autoJoin&&t.push(i.catch(qS)),{result:KS(e)(i),cancel(){a.abort(Tle)}}}},Dle=(e,t)=>{let r=async(n,o)=>{sp(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 o9(t,Promise.race(s));return sp(t),l}finally{a()}};return((n,o)=>r9(r(n,o)))},i9=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=So(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(Ni(21));return pP(a,"options.listener"),{predicate:o,type:t,effect:a}},s9=sg(e=>{let{type:t,predicate:r,effect:n}=i9(e);return{id:Q7(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(Ni(22))}}},{withTypes:()=>s9}),V7=(e,t)=>{let{type:r,effect:n,predicate:o}=i9(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},uP=e=>{e.pending.forEach(t=>{t.abort(lP)})},jle=(e,t)=>()=>{for(let r of t.keys())uP(r);e.clear()},G7=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},l9=sg(So(`${GS}/add`),{withTypes:()=>l9}),$le=So(`${GS}/removeAll`),u9=sg(So(`${GS}/remove`),{withTypes:()=>u9}),Lle=(...e)=>{console.error(`${GS}/error`,...e)},wu=(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=Lle}=e;pP(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&uP(f)}),l=(f=>{let m=V7(t,f)??s9(f);return s(m)});sg(l,{withTypes:()=>l});let u=f=>{let m=V7(t,f);return m&&(m.unsubscribe(),f.cancelActive&&uP(m)),!!m};sg(u,{withTypes:()=>u});let c=async(f,m,g,b)=>{let h=new AbortController,y=Dle(l,h.signal),x=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,sg({},g,{getOriginalState:b,condition:(v,k)=>y(v,k).then(Boolean),take:y,delay:a9(h.signal),pause:KS(h.signal),extra:a,signal:h.signal,fork:Ile(h.signal,x),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((v,k,S)=>{v!==h&&(v.abort(lP),S.delete(v))})},cancel:()=>{h.abort(lP),f.pending.delete(h)},throwIfCancelled:()=>{sp(h.signal)}})))}catch(v){v instanceof VS||G7(i,v,{raisedBy:"effect"})}finally{await Promise.all(x),h.abort(Ple),o(f),f.pending.delete(h)}},d=jle(t,r);return{middleware:f=>m=>g=>{if(!KO(g))return m(g);if(l9.match(g))return l(g.payload);if($le.match(g)){d();return}if(u9.match(g))return u(g.payload);let b=f.getState(),h=()=>{if(b===K7)throw new Error(Ni(23));return b},y;try{if(y=m(g),t.size>0){let x=f.getState(),v=Array.from(t.values());for(let k of v){let S=!1;try{S=k.predicate(g,x,b)}catch(w){S=!1,G7(i,w,{raisedBy:"predicate"})}S&&c(k,g,f,h)}}}finally{b=K7}return y},startListening:l,stopListening:u,clearListeners:d}};function Ni(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 zle={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},c9=Tr({name:"chartLayout",initialState:zle,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}}}),YS=c9.actions,fP=YS.setMargin,d9=YS.setLayout,p9=YS.setChartSize,f9=YS.setScale;var m9=c9.reducer;function XS(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 Ra(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}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 ei(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(Nv(l)){if(l==="top"&&Be(e.top))return ei(ei({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&Be(e.bottom))return ei(ei({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&Be(e.left))return ei(ei({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&Be(e.right))return ei(ei({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&Be(e[a]))return ei(ei({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&Be(e[i]))return ei(ei({},e),{},{[i]:e[i]+(o||0)})}return e},ha=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",mP=(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},gP=(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,g=(t||r)&&o==="category"&&i.bandwidth?i.bandwidth()/m:0;if(g=f==="angleAxis"&&a&&a.length>=2?rn(a[0]-a[1])*2*g:g,t&&(d||p)){var b=(d||p||[]).map((h,y)=>{var x=n?n.indexOf(h):h,v=i.map(x);return Pt(v)?{coordinate:v+g,value:h,offset:g,index:y}:null}).filter(Po);return b}return l&&u?u.map((h,y)=>{var x=i.map(h);return Pt(x)?{coordinate:x+g,value:h,index:y,offset:g}:null}).filter(Po):i.ticks&&!r&&c!=null?i.ticks(c).map((h,y)=>{var x=i.map(h);return Pt(x)?{coordinate:x+g,value:h,index:y,offset:g}:null}).filter(Po):i.domain().map((h,y)=>{var x=i.map(h);return Pt(x)?{coordinate:x+g,value:n?n[h]:h,index:y,offset:g}:null}).filter(Po)},y9=(e,t)=>{if(!t||t.length!==2||!Be(t[0])||!Be(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(!Be(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)}}}},Hle=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)}}}},qle={sign:Ule,expand:IO,none:Ci,silhouette:DO,wiggle:jO,positive:Hle},v9=(e,t,r)=>{var n,o=(n=qle[r])!==null&&n!==void 0?n:Ci,a=MO().keys(t).value((s,l)=>Number(Zt(s,l,0))).order(Qm).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=Zt(e[c],t[l],0);Array.isArray(d)&&d.length===2&&Be(d[0])&&Be(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function ZS(e){return e==null?void 0:String(e)}function lg(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&&!dr(o[t.dataKey])){var s=jw(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=Zt(o,dr(i)?t.dataKey:i),u=t.scale.map(l);return Be(u)?u:null}var hP=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=Zt(a,t.dataKey,t.scale.domain()[i]);if(dr(s))return null;var l=t.scale.map(s);return Be(l)?l-o/2+n:null},x9=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]},Kle=e=>{var t=e.flat(2).filter(Be);return[Math.min(...t),Math.max(...t)]},Vle=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],b9=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return Vle(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=XS(u,t,r),d=Kle(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]))},yP=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,vP=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,is=(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=vu(t,g=>g.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 xP(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return ei(ei({},t),{},{dataKey:r,payload:n,value:o,name:a})}function Ti(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var w9=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},S9=(e,t)=>t==="centric"?e.angle:e.radius;var Xo=e=>e.layout.width,Zo=e=>e.layout.height,k9=e=>e.layout.scale,ug=e=>e.layout.margin;var cg=oe(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),dg=oe(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var JS="data-recharts-item-index",QS="data-recharts-item-id",lp=60,Hv=30;function _9(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 RS(e){for(var t=1;te.brush.height;function Jle(e){var t=dg(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:lp;return r+o}return r},0)}function Qle(e){var t=dg(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:lp;return r+o}return r},0)}function Rle(e){var t=cg(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:Hv;return r+o}return r},0)}function eue(e){var t=cg(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:Hv;return r+o}return r},0)}var Vr=oe([Xo,Zo,ug,Zle,Jle,Qle,Rle,eue,UO,f7],(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=RS(RS({},d),c),f=p.bottom;p.bottom+=n,p=h9(p,l,u);var m=e-p.left-p.right,g=t-p.top-p.bottom;return RS(RS({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(g,0)})}),ek=oe(Vr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),pg=oe(Xo,Zo,(e,t)=>({x:0,y:0,width:e,height:t}));var tue=X(J()),tk=X(J()),rue=(0,tk.createContext)(null),Or=()=>(0,tk.useContext)(rue)!=null;var fg=e=>e.brush,up=oe([fg,Vr,ug],(e,t,r)=>({height:e.height,x:Be(e.x)?e.x:t.left,y:Be(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:Be(e.width)?e.width:t.width}));var cp=X(J()),ko=X(J());function C9(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()},g=function(...b){if(r?.aborted)return;o=this,a=b;let h=c==null;d(),i&&h&&l()};return g.schedule=d,g.cancel=f,g.flush=m,r?.addEventListener("abort",f,{once:!0}),g}function A9(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=C9(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 bP(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return A9(e,t,{leading:n,maxWait:t,trailing:o})}var nue=!0,mg=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var $s={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},wP=(e,t,r)=>{var n=r.width,o=n===void 0?$s.width:n,a=r.height,i=a===void 0?$s.height:a,s=r.aspect,l=r.maxHeight,u=fu(o)?e:Number(o),c=fu(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}},oue={width:0,height:0,overflow:"visible"},aue={width:0,overflowX:"visible"},iue={height:0,overflowY:"visible"},sue={},E9=e=>{var t=e.width,r=e.height,n=fu(t),o=fu(r);return n&&o?oue:n?aue:o?iue:sue};function N9(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=$s.width,a=$s.height):o===void 0?o=n&&n>0?void 0:$s.width:a===void 0&&(a=n&&n>0?void 0:$s.height),{width:o,height:a}}var lue=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function rk(){return rk=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 xue(o)?cp.createElement(M9.Provider,{value:o},t):null}var qv=()=>(0,ko.useContext)(M9),bue=(0,ko.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?$s.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?$s.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?$s.debounce:p,m=e.id,g=e.className,b=e.onResize,h=e.style,y=h===void 0?{}:h,x=yue(e,lue),v=(0,ko.useRef)(null),k=(0,ko.useRef)();k.current=b,(0,ko.useImperativeHandle)(t,()=>v.current);var S=(0,ko.useState)({containerWidth:o.width,containerHeight:o.height}),w=pue(S,2),_=w[0],A=w[1],C=(0,ko.useCallback)((N,P)=>{A(M=>{var I=Math.round(N),j=Math.round(P);return M.containerWidth===I&&M.containerHeight===j?M:{containerWidth:I,containerHeight:j}})},[]);(0,ko.useEffect)(()=>{if(v.current==null||typeof ResizeObserver>"u")return ja;var N=T=>{var q,G=T[0];if(G!=null){var L=G.contentRect,Y=L.width,K=L.height;C(Y,K),(q=k.current)===null||q===void 0||q.call(k,Y,K)}};f>0&&(N=bP(N,f,{trailing:!0,leading:!1}));var P=new ResizeObserver(N),M=v.current.getBoundingClientRect(),I=M.width,j=M.height;return C(I,j),P.observe(v.current),()=>{P.disconnect()}},[C,f]);var O=_.containerWidth,D=_.containerHeight;mg(!r||r>0,"The aspect(%s) must be greater than zero.",r);var H=wP(O,D,{width:a,height:i,aspect:r,maxHeight:c}),$=H.calculatedWidth,Z=H.calculatedHeight;return mg(O<0||D<0||$!=null&&$>0||Z!=null&&Z>0,`The width(%s) and height(%s) of chart should be greater than 0, + H`).concat(as,"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 za.createElement("path",{stroke:"none",fill:s,d:"M0,".concat(as/8,"h").concat(as,"v").concat(as*3/4,"h").concat(-as,"z"),className:"recharts-legend-icon"});if(za.isValidElement(t.legendIcon)){var u=MB({},t);return delete u.legendIcon,za.cloneElement(t.legendIcon,u)}return za.createElement(qO,{fill:s,cx:o,cy:o,size:as,sizeType:"diameter",type:l})}function ase(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:as,height:as},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,g=d.formatter||o,b=bt({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?MB({},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 y=g?g(d.value,d,p):d.value;return za.createElement("li",Jw({className:b,style:u,key:"legend-item-".concat(p)},yu(e,d,p)),za.createElement(Tv,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},za.createElement(ose,{data:d,iconType:i,inactiveColor:a})),za.createElement("span",{className:"recharts-legend-item-text",style:h},y))})}var IB=e=>{var t=ur(e,rse),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 za.createElement("ul",{className:"recharts-default-legend",style:a},za.createElement(ase,Jw({},t,{payload:r})))};function DB(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function vu(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Rw="[object RegExp]",tg="[object String]",rg="[object Number]",ng="[object Boolean]",eS="[object Arguments]",tS="[object Symbol]",rS="[object Date]",nS="[object Map]",oS="[object Set]",aS="[object Array]",zB="[object Function]",iS="[object ArrayBuffer]",og="[object Object]",BB="[object Error]",sS="[object DataView]",lS="[object Uint8Array]",uS="[object Uint8ClampedArray]",cS="[object Uint16Array]",dS="[object Uint32Array]",FB="[object BigUint64Array]",pS="[object Int8Array]",fS="[object Int16Array]",mS="[object Int32Array]",WB="[object BigInt64Array]",gS="[object Float32Array]",hS="[object Float64Array]";var KO=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function jv(e){return typeof KO.Buffer<"u"&&KO.Buffer.isBuffer(e)}function UB(e,t){return Lc(e,void 0,e,new Map,t)}function Lc(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(Dv(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{}):VO(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:VO(o,a,n,u,!1)},new Map,!0)}function VO(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return sse(e,t,r,n);case"function":return Object.keys(t).length>0?VO(e,{...t},r,n,o):zc(e,t);default:return yS(e)?o?typeof t=="string"?t==="":!0:zc(e,t):zc(e,t)}}function sse(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return qB(e,t,r,n);if(t instanceof Map)return lse(e,t,r,n);if(t instanceof Set)return use(e,t,r,n);let o=Object.keys(t);if(e==null||Dv(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 KB(e){return e=HB(e),t=>vS(t,e)}function VB(e,t){return UB(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(vu(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),is(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case rg:case tg:case ng:{let s=new e.constructor(e?.valueOf());return is(s,e),s}case eS:{let s={};return is(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function GB(e){return VB(e)}var cse=/^(?:0|[1-9]\d*)$/;function xS(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function bS(e){return e!=null&&typeof e!="function"&&QB(e.length)}function RB(e){return typeof e=="object"&&e!==null}function e7(e){return RB(e)&&bS(e)}function wS(e,t=Qw){return e7(e)?DB(Array.from(e),$B(JB(t),1)):[]}function SS(e,t,r){return t===!0?wS(e,r):typeof t=="function"?wS(e,t):e}var c7=X(l7()),zv=X(J());var u7=X(J()),Lv=(0,u7.createContext)(null);var Nse=e=>e,Lt=()=>{var e=(0,zv.useContext)(Lv);return e?e.store.dispatch:Nse},_S=()=>{},Tse=()=>_S,Ose=(e,t)=>e===t;function Fe(e){var t=(0,zv.useContext)(Lv),r=(0,zv.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:_S,[t,e]);return(0,c7.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Tse,t?t.store.getState:_S,t?t.store.getState:_S,r,Ose)}function Pse(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function Mse(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 d7=e=>Array.isArray(e)?e:[e];function Ise(e){let t=Array.isArray(e[0])?e[0]:e;return Mse(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Dse(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?$se:WeakRef,f7=jse(),Lse=0,p7=1;function CS(){return{s:Lse,v:void 0,o:null,p:null}}function zse(e){return e instanceof f7?e.deref():e}function m7(e,t={}){let r=CS(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=CS(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function Bse(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()),Pse(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=m7,argsMemoizeOptions:m=[]}=c,g=d7(p),b=d7(m),h=Ise(o),y=d(function(){return a++,u.apply(null,arguments)},...g),x=!0,v=f(function(){i++;let S=Dse(h,arguments);return s=y.apply(null,S),s},...b);return Object.assign(v,{resultFunc:u,memoizedResultFunc:y,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 oe=Bse(m7);function g7(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=h7(e),o=h7(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function AS(e){return typeof e=="symbol"||e instanceof Symbol}var Fse=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wse=/^\w*$/;function v7(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||AS(e)?!0:typeof e=="string"&&(Wse.test(e)||!Fse.test(e))||t!=null&&Object.hasOwn(t,e)}function x7(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)||v7(s)?s:{key:s,path:Km(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 xu(e,...t){let r=t.length;return r>1&&Bv(e,t[0],t[1])?t=[]:r>2&&Bv(t[0],t[1],t[2])&&(t=[t[0]]),x7(e,g7(t),["asc"])}var XO=e=>e.legend.settings,b7=e=>e.legend.size,Use=e=>e.legend.payload,w7=oe([Use,XO],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?xu(n,r):n});function S7(){return Fe(w7)}var bu=X(J());function Hse(e,t){return Gse(e)||Vse(e,t)||Kse(e,t)||qse()}function qse(){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 Kse(e,t){if(e){if(typeof e=="string")return k7(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)?k7(e,t):void 0}}function k7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rES||Math.abs(e.left-t.left)>ES||Math.abs(e.top-t.top)>ES||Math.abs(e.width-t.width)>ES}function C7(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function NS(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,bu.useState)({height:0,left:0,top:0,width:0}),r=Hse(t,2),n=r[0],o=r[1],a=(0,bu.useRef)(null),i=(0,bu.useRef)(n);i.current=n;var s=(0,bu.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=C7(l);if(_7(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=C7(l);_7(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,bu.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var W9=X(J());function ia(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 Yse=typeof Symbol=="function"&&Symbol.observable||"@@observable",A7=Yse,ZO=()=>Math.random().toString(36).substring(7).split("").join("."),Xse={INIT:`@@redux/INIT${ZO()}`,REPLACE:`@@redux/REPLACE${ZO()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${ZO()}`},TS=Xse;function OS(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 JO(e,t,r){if(typeof e!="function")throw new Error(ia(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(ia(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(ia(1));return r(JO)(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(ia(3));return o}function d(b){if(typeof b!="function")throw new Error(ia(4));if(l)throw new Error(ia(5));let h=!0;u();let y=s++;return i.set(y,b),function(){if(h){if(l)throw new Error(ia(6));h=!1,u(),i.delete(y),a=null}}}function p(b){if(!OS(b))throw new Error(ia(7));if(typeof b.type>"u")throw new Error(ia(8));if(typeof b.type!="string")throw new Error(ia(17));if(l)throw new Error(ia(9));try{l=!0,o=n(o,b)}finally{l=!1}return(a=i).forEach(y=>{y()}),b}function f(b){if(typeof b!="function")throw new Error(ia(10));n=b,p({type:TS.REPLACE})}function m(){let b=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(ia(11));function y(){let v=h;v.next&&v.next(c())}return y(),{unsubscribe:b(y)}},[A7](){return this}}}return p({type:TS.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[A7]:m}}function Zse(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:TS.INIT})>"u")throw new Error(ia(12));if(typeof r(void 0,{type:TS.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(ia(13))})}function PS(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let b=l&&l.type;throw new Error(ia(14))}c[p]=g,u=u||g!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function Fv(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function E7(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(ia(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=Fv(...s)(o.dispatch),{...o,dispatch:a}}}function QO(e){return OS(e)&&"type"in e&&typeof e.type=="string"}var j7=Symbol.for("immer-nothing"),N7=Symbol.for("immer-draftable"),ha=Symbol.for("immer-state");function js(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Ei=Object,sg=Ei.getPrototypeOf,$S="constructor",WS="prototype",rP="configurable",jS="enumerable",IS="writable",Wv="value",yl=e=>!!e&&!!e[ha];function Ni(e){return e?L7(e)||HS(e)||!!e[N7]||!!e[$S]?.[N7]||qS(e)||KS(e):!1}var Jse=Ei[WS][$S].toString(),T7=new WeakMap;function L7(e){if(!e||!cP(e))return!1;let t=sg(e);if(t===null||t===Ei[WS])return!0;let r=Ei.hasOwnProperty.call(t,$S)&&t[$S];if(r===Object)return!0;if(!ig(r))return!1;let n=T7.get(r);return n===void 0&&(n=Function.toString.call(r),T7.set(r,n)),n===Jse}function US(e,t,r=!0){qv(e)===0?(r?Reflect.ownKeys(e):Ei.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function qv(e){let t=e[ha];return t?t.type_:HS(e)?1:qS(e)?2:KS(e)?3:0}var RO=(e,t,r=qv(e))=>r===2?e.has(t):Ei[WS].hasOwnProperty.call(e,t),nP=(e,t,r=qv(e))=>r===2?e.get(t):e[t],LS=(e,t,r,n=qv(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function Qse(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var HS=Array.isArray,qS=e=>e instanceof Map,KS=e=>e instanceof Set,cP=e=>typeof e=="object",ig=e=>typeof e=="function",eP=e=>typeof e=="boolean";function Rse(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var wu=e=>e.copy_||e.base_;var dP=e=>e.modified_?e.copy_:e.base_;function oP(e,t){if(qS(e))return new Map(e);if(KS(e))return new Set(e);if(HS(e))return Array[WS].slice.call(e);let r=L7(e);if(t===!0||t==="class_only"&&!r){let n=Ei.getOwnPropertyDescriptors(e);delete n[ha];let o=Reflect.ownKeys(n);for(let a=0;a1&&Ei.defineProperties(e,{set:MS,add:MS,clear:MS,delete:MS}),Ei.freeze(e),t&&US(e,(r,n)=>{pP(n,!0)},!1)),e}function ele(){js(2)}var MS={[Wv]:ele};function VS(e){return e===null||!cP(e)?!0:Ei.isFrozen(e)}var zS="MapSet",aP="Patches",O7="ArrayMethods",z7={};function sp(e){let t=z7[e];return t||js(0,e),t}var P7=e=>!!z7[e];var Uv,B7=()=>Uv,tle=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:P7(zS)?sp(zS):void 0,arrayMethodsPlugin_:P7(O7)?sp(O7):void 0});function M7(e,t){t&&(e.patchPlugin_=sp(aP),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function iP(e){sP(e),e.drafts_.forEach(rle),e.drafts_=null}function sP(e){e===Uv&&(Uv=e.parent_)}var I7=e=>Uv=tle(Uv,e);function rle(e){let t=e[ha];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function D7(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[ha].modified_&&(iP(t),js(4)),Ni(e)&&(e=$7(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[ha].base_,e,t)}else e=$7(t,r);return nle(t,e,!0),iP(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==j7?e:void 0}function $7(e,t){if(VS(t))return t;let r=t[ha];if(!r)return BS(t,e.handledSet_,e);if(!GS(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);U7(r,e)}return r.copy_}function nle(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&pP(t,r)}function F7(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var GS=(e,t)=>e.scope_===t,ole=[];function W7(e,t,r,n){let o=wu(e),a=e.type_;if(n!==void 0&&nP(o,n,a)===t){LS(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;US(o,(l,u)=>{if(yl(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??ole;for(let s of i)LS(o,s,r,a)}function ale(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!GS(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=dP(a);W7(e,a.draft_??a,i,r),U7(a,o)})}function U7(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)}F7(e)}}function ile(e,t,r){let{scope_:n}=e;if(yl(r)){let o=r[ha];GS(o,n)&&o.callbacks_.push(function(){DS(e);let i=dP(o);W7(e,r,i,t)})}else Ni(r)&&e.callbacks_.push(function(){let a=wu(e);e.type_===3?a.has(r)&&BS(r,n.handledSet_,n):nP(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&BS(nP(e.copy_,t,e.type_),n.handledSet_,n)})}function BS(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||yl(e)||t.has(e)||!Ni(e)||VS(e)||(t.add(e),US(e,(n,o)=>{if(yl(o)){let a=o[ha];if(GS(a,r)){let i=dP(a);LS(e,n,i,e.type_),F7(a)}}else Ni(o)&&BS(o,t,r)})),e}function sle(e,t){let r=HS(e),n={type_:r?1:0,scope_:t?t.scope_:B7(),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=FS;r&&(o=[n],a=Hv);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var FS={get(e,t){if(t===ha)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=wu(e);if(!RO(o,t,e.type_))return ule(e,o,t);let a=o[t];if(e.finalized_||!Ni(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&Rse(t))return a;if(a===tP(e.base_,t)||lle(e,t,a)){DS(e);let i=e.type_===1?+t:t,s=uP(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in wu(e)},ownKeys(e){return Reflect.ownKeys(wu(e))},set(e,t,r){let n=H7(wu(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=tP(wu(e),t),a=o?.[ha];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(Qse(r,o)&&(r!==void 0||RO(e.base_,t,e.type_)))return!0;DS(e),lP(e)}return e.copy_[t]===r&&(r!==void 0||RO(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),ile(e,t,r)),!0},deleteProperty(e,t){return DS(e),tP(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),lP(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=wu(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[IS]:!0,[rP]:e.type_!==1||t!=="length",[jS]:n[jS],[Wv]:r[t]}},defineProperty(){js(11)},getPrototypeOf(e){return sg(e.base_)},setPrototypeOf(){js(12)}},Hv={};for(let e in FS){let t=FS[e];Hv[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}Hv.deleteProperty=function(e,t){return Hv.set.call(this,e,t,void 0)};Hv.set=function(e,t,r){return FS.set.call(this,e[0],t,r,e[0])};function tP(e,t){let r=e[ha];return(r?wu(r):e)[t]}function lle(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Ni(r)||r[ha]?!1:e.baseRefs_.has(r)}function ule(e,t,r){let n=H7(t,r);return n?Wv in n?n[Wv]:n.get?.call(e.draft_):void 0}function H7(e,t){if(!(t in e))return;let r=sg(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=sg(r)}}function lP(e){e.modified_||(e.modified_=!0,e.parent_&&lP(e.parent_))}function DS(e){e.copy_||(e.assigned_=new Map,e.copy_=oP(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var cle=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(ig(t)&&!ig(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}ig(r)||js(6),n!==void 0&&!ig(n)&&js(7);let o;if(Ni(t)){let a=I7(this),i=uP(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?iP(a):sP(a)}return M7(a,n),D7(o,a)}else if(!t||!cP(t)){if(o=r(t),o===void 0&&(o=t),o===j7&&(o=void 0),this.autoFreeze_&&pP(o,!0),n){let a=[],i=[];sp(aP).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else js(1,t)},this.produceWithPatches=(t,r)=>{if(ig(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]},eP(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),eP(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),eP(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Ni(e)||js(8),yl(e)&&(e=sa(e));let t=I7(this),r=uP(t,e,void 0);return r[ha].isManual_=!0,sP(t),r}finishDraft(e,t){let r=e&&e[ha];(!r||!r.isManual_)&&js(9);let{scope_:n}=r;return M7(n,t),D7(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=sp(aP).applyPatches_;return yl(e)?n(e,t):this.produce(e,o=>n(o,t))}};function uP(e,t,r,n){let[o,a]=qS(t)?sp(zS).proxyMap_(t,r):KS(t)?sp(zS).proxySet_(t,r):sle(t,r);return(r?.scope_??B7()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?ale(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 sa(e){return yl(e)||js(10,e),q7(e)}function q7(e){if(!Ni(e)||VS(e))return e;let t=e[ha],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=oP(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=oP(e,!0);return US(r,(o,a)=>{LS(r,o,q7(a))},n),t&&(t.finalized_=!1),r}var dle=new cle,fP=dle.produce;var rr=e=>e;function K7(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var V7=K7(),G7=K7;var ple=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Fv:Fv.apply(null,arguments)},hIe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},fle=e=>e&&typeof e.match=="function";function ko(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(Ti(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=>QO(n)&&n.type===e,r}var t9=class Kv extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,Kv.prototype)}static get[Symbol.species](){return Kv}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new Kv(...t[0].concat(this)):new Kv(...t.concat(this))}};function Y7(e){return Ni(e)?fP(e,()=>{}):e}function YS(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function mle(e){return typeof e=="boolean"}var gle=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new t9;return r&&(mle(r)?i.push(V7):i.push(G7(r.extraArgument))),i},r9="RTK_autoBatch",zr=()=>e=>({payload:e,meta:{[r9]:!0}}),X7=e=>t=>{setTimeout(t,e)},hle=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},yP=(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?hle(window.requestAnimationFrame,100):X7(10):e.type==="callback"?e.queueNotification:X7(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?.[r9],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},yle=e=>function(r){let{autoBatch:n=!0}=r??{},o=new t9(e);return n&&o.push(yP(typeof n=="object"?n:void 0)),o};function n9(e){let t=gle(),{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(OS(r))l=PS(r);else throw new Error(Ti(1));let u;typeof n=="function"?u=n(t):u=t();let c=Fv;o&&(c=ple({trace:!1,...typeof o=="object"&&o}));let d=E7(...u),p=yle(d),f=typeof s=="function"?s(p):p(),m=c(...f);return JO(l,i,m)}function o9(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(Ti(28));if(s in t)throw new Error(Ti(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 vle(e){return typeof e=="function"}function xle(e,t){let[r,n,o]=o9(t),a;if(vle(e))a=()=>Y7(e());else{let s=Y7(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(yl(c)){let f=d(c,l);return f===void 0?c:f}else{if(Ni(c))return fP(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 ble=(e,t)=>fle(e)?e.match(t):e(t);function wle(...e){return t=>e.some(r=>ble(r,t))}var Sle="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",a9=(e=21)=>{let t="",r=e;for(;r--;)t+=Sle[Math.random()*64|0];return t},kle=["name","message","stack","code"],mP=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},Z7=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},_le=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of kle)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},J7="External signal was aborted",Cle=(()=>{function e(t,r,n){let o=ko(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=ko(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=ko(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||_le)(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):a9(),m=new AbortController,g,b;function h(x){b=x,m.abort()}u&&(u.aborted?h(J7):u.addEventListener("abort",()=>h(J7),{once:!0}));let y=(async function(){let x;try{let k=n?.condition?.(l,{getState:d,extra:p});if(Ele(k)&&(k=await k),k===!1||m.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};let S=new Promise((w,_)=>{g=()=>{_({name:"AbortError",message:b||"Aborted"})},m.signal.addEventListener("abort",g,{once:!0})});c(a(f,l,n?.getPendingMeta?.({requestId:f,arg:l},{getState:d,extra:p}))),x=await Promise.race([S,Promise.resolve(r(l,{dispatch:c,getState:d,extra:p,requestId:f,signal:m.signal,abort:h,rejectWithValue:((w,_)=>new mP(w,_)),fulfillWithValue:((w,_)=>new Z7(w,_))})).then(w=>{if(w instanceof mP)throw w;return w instanceof Z7?o(w.payload,f,l,w.meta):o(w,f,l)})])}catch(k){x=k instanceof mP?i(null,f,l,k.payload,k.meta):i(k,f,l)}finally{g&&m.signal.removeEventListener("abort",g)}return n&&!n.dispatchConditionRejection&&i.match(x)&&x.meta.condition||c(x),x})();return Object.assign(y,{abort:h,requestId:f,arg:l,unwrap(){return y.then(Ale)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:wle(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function Ale(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function Ele(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var i9=Symbol.for("rtk-slice-createasyncthunk"),vIe={[i9]:Cle};function Nle(e,t){return`${e}/${t}`}function Tle({creators:e}={}){let t=e?.asyncThunk?.[i9];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(Ti(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(Ple()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(x,v){let k=typeof x=="string"?x:x.type;if(!k)throw new Error(Ti(12));if(k in l.sliceCaseReducersByType)throw new Error(Ti(13));return l.sliceCaseReducersByType[k]=v,u},addMatcher(x,v){return l.sliceMatchers.push({matcher:x,reducer:v}),u},exposeAction(x,v){return l.actionCreators[x]=v,u},exposeCaseReducer(x,v){return l.sliceCaseReducersByName[x]=v,u}};s.forEach(x=>{let v=i[x],k={reducerName:x,type:Nle(o,x),createNotation:typeof n.reducers=="function"};Ile(v)?$le(k,v,u,t):Mle(k,v,u)});function c(){let[x={},v=[],k=void 0]=typeof n.extraReducers=="function"?o9(n.extraReducers):[n.extraReducers],S={...x,...l.sliceCaseReducersByType};return xle(n.initialState,w=>{for(let _ in S)w.addCase(_,S[_]);for(let _ of l.sliceMatchers)w.addMatcher(_.matcher,_.reducer);for(let _ of v)w.addMatcher(_.matcher,_.reducer);k&&w.addDefaultCase(k)})}let d=x=>x,p=new Map,f=new WeakMap,m;function g(x,v){return m||(m=c()),m(x,v)}function b(){return m||(m=c()),m.getInitialState()}function h(x,v=!1){function k(w){let _=w[x];return typeof _>"u"&&v&&(_=YS(f,k,b)),_}function S(w=d){let _=YS(p,v,()=>new WeakMap);return YS(_,w,()=>{let A={};for(let[C,O]of Object.entries(n.selectors??{}))A[C]=Ole(O,w,()=>YS(f,w,b),v);return A})}return{reducerPath:x,getSelectors:S,get selectors(){return S(k)},selectSlice:k}}let y={name:o,reducer:g,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:b,...h(a),injectInto(x,{reducerPath:v,...k}={}){let S=v??a;return x.inject({reducerPath:S,reducer:g},k),{...y,...h(S,!0)}}};return y}}function Ole(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 Tr=Tle();function Ple(){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 Mle({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!Dle(n))throw new Error(Ti(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?ko(e,i):ko(e))}function Ile(e){return e._reducerDefinitionType==="asyncThunk"}function Dle(e){return e._reducerDefinitionType==="reducerWithPrepare"}function $le({type:e,reducerName:t},r,n,o){if(!o)throw new Error(Ti(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||XS,pending:s||XS,rejected:l||XS,settled:u||XS})}function XS(){}var jle="task",s9="listener",l9="completed",vP="cancelled",Lle=`task-${vP}`,zle=`task-${l9}`,gP=`${s9}-${vP}`,Ble=`${s9}-${l9}`,QS=class{constructor(e){this.code=e,this.message=`${jle} ${vP} (reason: ${e})`}code;name="TaskAbortError";message},xP=(e,t)=>{if(typeof e!="function")throw new TypeError(Ti(32))},ZS=()=>{},u9=(e,t=ZS)=>(e.catch(t),e),c9=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),lp=e=>{if(e.aborted)throw new QS(e.reason)};function d9(e,t){let r=ZS;return new Promise((n,o)=>{let a=()=>o(new QS(e.reason));if(e.aborted){a();return}r=c9(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=ZS})}var Fle=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof QS?"cancelled":"rejected",error:r}}finally{t?.()}},JS=e=>t=>u9(d9(e,t).then(r=>(lp(e),r))),p9=e=>{let t=JS(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:lg}=Object,Q7={},RS="listenerMiddleware",Wle=(e,t)=>{let r=n=>c9(e,()=>n.abort(e.reason));return(n,o)=>{xP(n,"taskExecutor");let a=new AbortController;r(a);let i=Fle(async()=>{lp(e),lp(a.signal);let s=await n({pause:JS(a.signal),delay:p9(a.signal),signal:a.signal});return lp(a.signal),s},()=>a.abort(zle));return o?.autoJoin&&t.push(i.catch(ZS)),{result:JS(e)(i),cancel(){a.abort(Lle)}}}},Ule=(e,t)=>{let r=async(n,o)=>{lp(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 d9(t,Promise.race(s));return lp(t),l}finally{a()}};return((n,o)=>u9(r(n,o)))},f9=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=ko(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(Ti(21));return xP(a,"options.listener"),{predicate:o,type:t,effect:a}},m9=lg(e=>{let{type:t,predicate:r,effect:n}=f9(e);return{id:a9(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(Ti(22))}}},{withTypes:()=>m9}),R7=(e,t)=>{let{type:r,effect:n,predicate:o}=f9(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},hP=e=>{e.pending.forEach(t=>{t.abort(gP)})},Hle=(e,t)=>()=>{for(let r of t.keys())hP(r);e.clear()},e9=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},g9=lg(ko(`${RS}/add`),{withTypes:()=>g9}),qle=ko(`${RS}/removeAll`),h9=lg(ko(`${RS}/remove`),{withTypes:()=>h9}),Kle=(...e)=>{console.error(`${RS}/error`,...e)},Su=(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=Kle}=e;xP(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&hP(f)}),l=(f=>{let m=R7(t,f)??m9(f);return s(m)});lg(l,{withTypes:()=>l});let u=f=>{let m=R7(t,f);return m&&(m.unsubscribe(),f.cancelActive&&hP(m)),!!m};lg(u,{withTypes:()=>u});let c=async(f,m,g,b)=>{let h=new AbortController,y=Ule(l,h.signal),x=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,lg({},g,{getOriginalState:b,condition:(v,k)=>y(v,k).then(Boolean),take:y,delay:p9(h.signal),pause:JS(h.signal),extra:a,signal:h.signal,fork:Wle(h.signal,x),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((v,k,S)=>{v!==h&&(v.abort(gP),S.delete(v))})},cancel:()=>{h.abort(gP),f.pending.delete(h)},throwIfCancelled:()=>{lp(h.signal)}})))}catch(v){v instanceof QS||e9(i,v,{raisedBy:"effect"})}finally{await Promise.all(x),h.abort(Ble),o(f),f.pending.delete(h)}},d=Hle(t,r);return{middleware:f=>m=>g=>{if(!QO(g))return m(g);if(g9.match(g))return l(g.payload);if(qle.match(g)){d();return}if(h9.match(g))return u(g.payload);let b=f.getState(),h=()=>{if(b===Q7)throw new Error(Ti(23));return b},y;try{if(y=m(g),t.size>0){let x=f.getState(),v=Array.from(t.values());for(let k of v){let S=!1;try{S=k.predicate(g,x,b)}catch(w){S=!1,e9(i,w,{raisedBy:"predicate"})}S&&c(k,g,f,h)}}}finally{b=Q7}return y},startListening:l,stopListening:u,clearListeners:d}};function Ti(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 Vle={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},y9=Tr({name:"chartLayout",initialState:Vle,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}}}),ek=y9.actions,bP=ek.setMargin,v9=ek.setLayout,x9=ek.setChartSize,b9=ek.setScale;var w9=y9.reducer;function tk(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 ei(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function S9(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 ti(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(Pv(l)){if(l==="top"&&Be(e.top))return ti(ti({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&Be(e.bottom))return ti(ti({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&Be(e.left))return ti(ti({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&Be(e.right))return ti(ti({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&Be(e[a]))return ti(ti({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&Be(e[i]))return ti(ti({},e),{},{[i]:e[i]+(o||0)})}return e},ya=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",wP=(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},SP=(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,g=(t||r)&&o==="category"&&i.bandwidth?i.bandwidth()/m:0;if(g=f==="angleAxis"&&a&&a.length>=2?rn(a[0]-a[1])*2*g:g,t&&(d||p)){var b=(d||p||[]).map((h,y)=>{var x=n?n.indexOf(h):h,v=i.map(x);return Pt(v)?{coordinate:v+g,value:h,offset:g,index:y}:null}).filter(Mo);return b}return l&&u?u.map((h,y)=>{var x=i.map(h);return Pt(x)?{coordinate:x+g,value:h,index:y,offset:g}:null}).filter(Mo):i.ticks&&!r&&c!=null?i.ticks(c).map((h,y)=>{var x=i.map(h);return Pt(x)?{coordinate:x+g,value:h,index:y,offset:g}:null}).filter(Mo):i.domain().map((h,y)=>{var x=i.map(h);return Pt(x)?{coordinate:x+g,value:n?n[h]:h,index:y,offset:g}:null}).filter(Mo)},_9=(e,t)=>{if(!t||t.length!==2||!Be(t[0])||!Be(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(!Be(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)}}}},Jle=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)}}}},Qle={sign:Zle,expand:FO,none:Ai,silhouette:WO,wiggle:UO,positive:Jle},C9=(e,t,r)=>{var n,o=(n=Qle[r])!==null&&n!==void 0?n:Ai,a=BO().keys(t).value((s,l)=>Number(Zt(s,l,0))).order(Rm).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=Zt(e[c],t[l],0);Array.isArray(d)&&d.length===2&&Be(d[0])&&Be(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function rk(e){return e==null?void 0:String(e)}function ug(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&&!dr(o[t.dataKey])){var s=Ww(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=Zt(o,dr(i)?t.dataKey:i),u=t.scale.map(l);return Be(u)?u:null}var kP=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=Zt(a,t.dataKey,t.scale.domain()[i]);if(dr(s))return null;var l=t.scale.map(s);return Be(l)?l-o/2+n:null},A9=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]},Rle=e=>{var t=e.flat(2).filter(Be);return[Math.min(...t),Math.max(...t)]},eue=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],E9=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return eue(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=tk(u,t,r),d=Rle(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]))},_P=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,CP=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,ss=(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=xu(t,g=>g.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 AP(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return ti(ti({},t),{},{dataKey:r,payload:n,value:o,name:a})}function Oi(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var N9=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},T9=(e,t)=>t==="centric"?e.angle:e.radius;var Zo=e=>e.layout.width,Jo=e=>e.layout.height,O9=e=>e.layout.scale,cg=e=>e.layout.margin;var dg=oe(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),pg=oe(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var nk="data-recharts-item-index",ok="data-recharts-item-id",up=60,Vv=30;function P9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function ak(e){for(var t=1;te.brush.height;function aue(e){var t=pg(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:up;return r+o}return r},0)}function iue(e){var t=pg(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:up;return r+o}return r},0)}function sue(e){var t=dg(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:Vv;return r+o}return r},0)}function lue(e){var t=dg(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:Vv;return r+o}return r},0)}var Vr=oe([Zo,Jo,cg,oue,aue,iue,sue,lue,XO,b7],(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=ak(ak({},d),c),f=p.bottom;p.bottom+=n,p=k9(p,l,u);var m=e-p.left-p.right,g=t-p.top-p.bottom;return ak(ak({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(g,0)})}),ik=oe(Vr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),fg=oe(Zo,Jo,(e,t)=>({x:0,y:0,width:e,height:t}));var uue=X(J()),sk=X(J()),cue=(0,sk.createContext)(null),Or=()=>(0,sk.useContext)(cue)!=null;var mg=e=>e.brush,cp=oe([mg,Vr,cg],(e,t,r)=>({height:e.height,x:Be(e.x)?e.x:t.left,y:Be(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:Be(e.width)?e.width:t.width}));var dp=X(J()),_o=X(J());function M9(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()},g=function(...b){if(r?.aborted)return;o=this,a=b;let h=c==null;d(),i&&h&&l()};return g.schedule=d,g.cancel=f,g.flush=m,r?.addEventListener("abort",f,{once:!0}),g}function I9(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=M9(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 EP(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return I9(e,t,{leading:n,maxWait:t,trailing:o})}var due=!0,gg=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var Ls={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},NP=(e,t,r)=>{var n=r.width,o=n===void 0?Ls.width:n,a=r.height,i=a===void 0?Ls.height:a,s=r.aspect,l=r.maxHeight,u=mu(o)?e:Number(o),c=mu(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}},pue={width:0,height:0,overflow:"visible"},fue={width:0,overflowX:"visible"},mue={height:0,overflowY:"visible"},gue={},D9=e=>{var t=e.width,r=e.height,n=mu(t),o=mu(r);return n&&o?pue:n?fue:o?mue:gue};function $9(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=Ls.width,a=Ls.height):o===void 0?o=n&&n>0?void 0:Ls.width:a===void 0&&(a=n&&n>0?void 0:Ls.height),{width:o,height:a}}var hue=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function lk(){return lk=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 Eue(o)?dp.createElement(B9.Provider,{value:o},t):null}var Gv=()=>(0,_o.useContext)(B9),Nue=(0,_o.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?Ls.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?Ls.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?Ls.debounce:p,m=e.id,g=e.className,b=e.onResize,h=e.style,y=h===void 0?{}:h,x=Cue(e,hue),v=(0,_o.useRef)(null),k=(0,_o.useRef)();k.current=b,(0,_o.useImperativeHandle)(t,()=>v.current);var S=(0,_o.useState)({containerWidth:o.width,containerHeight:o.height}),w=bue(S,2),_=w[0],A=w[1],C=(0,_o.useCallback)((N,P)=>{A(M=>{var I=Math.round(N),$=Math.round(P);return M.containerWidth===I&&M.containerHeight===$?M:{containerWidth:I,containerHeight:$}})},[]);(0,_o.useEffect)(()=>{if(v.current==null||typeof ResizeObserver>"u")return La;var N=T=>{var q,G=T[0];if(G!=null){var L=G.contentRect,Y=L.width,K=L.height;C(Y,K),(q=k.current)===null||q===void 0||q.call(k,Y,K)}};f>0&&(N=EP(N,f,{trailing:!0,leading:!1}));var P=new ResizeObserver(N),M=v.current.getBoundingClientRect(),I=M.width,$=M.height;return C(I,$),P.observe(v.current),()=>{P.disconnect()}},[C,f]);var O=_.containerWidth,D=_.containerHeight;gg(!r||r>0,"The aspect(%s) must be greater than zero.",r);var H=NP(O,D,{width:a,height:i,aspect:r,maxHeight:c}),j=H.calculatedWidth,Z=H.calculatedHeight;return gg(O<0||D<0||j!=null&&j>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.`,$,Z,a,i,l,u,r),cp.createElement("div",rk({id:m?"".concat(m):void 0,className:bt("recharts-responsive-container",g),style:O9(O9({},y),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:v},x),cp.createElement("div",{style:E9({width:a,height:i})},cp.createElement(I9,{width:$,height:Z},d)))}),zc=(0,ko.forwardRef)((e,t)=>{var r=qv();if(Ra(r.width)&&Ra(r.height))return e.children;var n=N9({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=wP(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return Be(s)&&Be(l)?cp.createElement(I9,{width:s,height:l},e.children):cp.createElement(bue,rk({},e,{width:o,height:a,ref:t}))});var dp=()=>{var e,t=Or(),r=Fe(ek),n=Fe(up),o=(e=Fe(fg))===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}},wue={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},nk=()=>{var e;return(e=Fe(Vr))!==null&&e!==void 0?e:wue},gg=()=>Fe(Xo),hg=()=>Fe(Zo),j9=()=>Fe(e=>e.layout.margin),Wt=e=>e.layout.layoutType,ti=()=>Fe(Wt),yg=()=>{var e=ti();if(e==="horizontal"||e==="vertical")return e},ok=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},$9=()=>Fe(ok),L9=()=>{var e=ti();return e!==void 0},pp=e=>{var t=Lt(),r=Or(),n=e.width,o=e.height,a=qv(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,D9.useEffect)(()=>{!r&&Ra(i)&&Ra(s)&&t(p9({width:i,height:s}))},[t,r,i,s]),null};var Sue={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},z9=Tr({name:"legend",initialState:Sue,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(rr(t.payload))},prepare:zr()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ia(e).payload.indexOf(rr(n));a>-1&&(e.payload[a]=rr(o))},prepare:zr()},removeLegendPayload:{reducer(e,t){var r=ia(e).payload.indexOf(rr(t.payload));r>-1&&e.payload.splice(r,1)},prepare:zr()}}}),Kv=z9.actions,SP=Kv.setLegendSize,B9=Kv.setLegendSettings,kP=Kv.addLegendPayload,_P=Kv.replaceLegendPayload,CP=Kv.removeLegendPayload;var F9=z9.reducer;var Qn=X(J(),1),Zue=X(q9(),1);var Oue=Symbol.for("react.forward_ref");var Pue=Symbol.for("react.memo");var Mue=Oue,Iue=Pue;function Due(e){e()}function jue(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Due(()=>{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 K9={notify(){},get:()=>[]};function $ue(e,t){let r,n=K9,o=0,a=!1;function i(g){c();let b=n.subscribe(g),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=jue())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=K9)}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 Lue=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",zue=Lue(),Bue=()=>typeof navigator<"u"&&navigator.product==="ReactNative",Fue=Bue(),Wue=()=>zue||Fue?Qn.useLayoutEffect:Qn.useEffect,Uue=Wue();function V9(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function G9(e,t){if(V9(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=$ue(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=Qn.useMemo(()=>o.getState(),[o]);return Uue(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),Qn.createElement((r||Yue).Provider,{value:a},t)}var Y9=Xue;var Jue=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function Que(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function ri(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(Jue.has(n)){if(e[n]==null&&t[n]==null)continue;if(!G9(e[n],t[n]))return!1}else if(!Que(e[n],t[n]))return!1;return!0}var X9=oe([Xo,Zo,ug],(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 Z9(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 Rue=["contextPayload"];function AP(){return AP=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(B9({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function yce(e){var t=e.width,r=e.height,n=Lt();return(0,ak.useLayoutEffect)(()=>{n(SP({width:t,height:r}))},[n,t,r]),(0,ak.useLayoutEffect)(()=>()=>{n(SP({width:0,height:0}))},[n]),null}function vce(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var xce={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function bce(e){var t,r,n,o,a,i,s,l,u=ur(e,xce),c=e.layout&&e.layout!=="auto"?e.layout:pce(u.position),d=g7(),p=tB(),f=j9(),m=Fe(j=>fce(j,u.position)),g=u.width,b=u.height,h=u.wrapperStyle,y=u.portal,x=y==null&&(u.position==null||Nv(u.position)),v=SS([d]),k=ece(v,2),S=k[0],w=k[1],_=gg(),A=hg();if(_==null||A==null||u.position!=null&&m==null)return null;var C=_-(f?.left||0)-(f?.right||0),O=vce(c,b,g,C),D=u.position==null?null:$w({viewBox:m??{x:0,y:0,width:_,height:A},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),H=mce(u.position,(r=u.offset)!==null&&r!==void 0?r:0,S),$=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=D?{width:"max-content",height:"max-content",maxWidth:$,maxHeight:Z,overflowY:"auto",top:D.y+((s=H.top)!==null&&s!==void 0?s:0),left:D.x+((l=H.left)!==null&&l!==void 0?l:0),transform:Z9(D.horizontalAnchor,D.verticalAnchor)}:gce(h,u,f,_,A,S),P=y?h:vg(vg({position:"absolute",width:O?.width||g||"auto",height:O?.height||b||"auto"},N),h),M=y??p;if(M==null||d==null)return null;var I=Oi.createElement("div",{className:"recharts-legend-wrapper",style:P,ref:w},Oi.createElement(hce,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),x&&Oi.createElement(yce,S),Oi.createElement(dce,AP({},u,{layout:c},O,{margin:f,chartWidth:_,chartHeight:A,contextPayload:d})));return(0,R9.createPortal)(I,M)}var ik=Oi.memo(bce,ri);ik.displayName="Legend";var fs=X(J()),Eq=X(J()),Nq=X(vy());var Ls=X(J());function EP(){return EP=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?xg.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?xg.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,g=m===void 0?xg.accessibilityLayer:m,b=()=>{if(s&&s.length){var _={padding:0,margin:0},A=Oce(s,u),C=A.map((O,D)=>{if(!O||O.type==="none")return null;var H=O.formatter||l||Tce,$=O.value,Z=O.name,N=$,P=Z;if(H){var M=H($,Z,O,D,s);if(Array.isArray(M)){var I=_ce(M,2);N=I[0],P=I[1]}else if(M!=null)N=M;else return null}var j=Gv(Gv({},xg.itemStyle),{},{color:O.color||xg.itemStyle.color},o);return Ls.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(D),style:j},Da(P)?Ls.createElement("span",{className:"recharts-tooltip-item-name"},P):null,Da(P)?Ls.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,Ls.createElement("span",{className:"recharts-tooltip-item-value"},N),Ls.createElement("span",{className:"recharts-tooltip-item-unit"},O.unit||""))});return Ls.createElement("ul",{className:"recharts-tooltip-item-list",style:_},C)}return null},h=Gv(Gv({},xg.contentStyle),n),y=Gv({margin:0},i),x=!dr(p),v=x?p:"",k=bt("recharts-default-tooltip",c),S=bt("recharts-tooltip-label",d);x&&f&&s!==void 0&&s!==null&&(v=f(p,s));var w=g?{role:"status","aria-live":"assertive"}:{};return Ls.createElement("div",EP({className:k,style:h},w),Ls.createElement("p",{className:S,style:y},Ls.isValidElement(v)?v:"".concat(v)),b())};var Bc=X(J());var Yv="recharts-tooltip-wrapper",Pce={visibility:"hidden"};function Mce(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return bt(Yv,{["".concat(Yv,"-right")]:Be(r)&&t&&Be(t.x)&&r>=t.x,["".concat(Yv,"-left")]:Be(r)&&t&&Be(t.x)&&r=t.y,["".concat(Yv,"-top")]:Be(n)&&t&&Be(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 Ice(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 oF(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=nF({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=nF({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=Ice({translateX:d,translateY:p,useTranslate3d:l})):c=Pce,{cssProperties:c,cssClasses:Mce({translateX:d,translateY:p,coordinate:r})}}var sk=X(J());var Dce=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),ss={devToolsEnabled:!0,isSsr:Dce()};function jce(e,t){return Bce(e)||zce(e,t)||Lce(e,t)||$ce()}function $ce(){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 Lce(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);rss.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=jce(e,2),r=t[0],n=t[1];return(0,sk.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 iF(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 bg(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=Hce(l,2),c=u[0],d=u[1];Bc.useEffect(()=>{var h=y=>{if(y.key==="Escape"){var x,v,k,S;d({dismissed:!0,dismissedAtCoordinate:{x:(x=(v=e.coordinate)===null||v===void 0?void 0:v.x)!==null&&x!==void 0?x:0,y:(k=(S=e.coordinate)===null||S===void 0?void 0:S.y)!==null&&k!==void 0?k: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(bg(bg({},c),{},{dismissed:!1}));var p=oF({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,g=e.hasPortalFromProps?{}:bg(bg({transition:Yce({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),b=bg(bg({},g),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return Bc.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:b,ref:e.innerRef},e.children)}var lF=Bc.memo(Xce);var uk=()=>{var e;return(e=Fe(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var X_=X(J()),Yg=X(J());var mF=X(J());function NP(){return NP=Object.assign?Object.assign.bind():function(e){for(var t=1;tPt(e.x)&&Pt(e.y),pF=e=>e.base!=null&&ck(e.base)&&ck(e),Xv=e=>e.x,Zv=e=>e.y,Rce=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(gu(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=dF["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return dF[r]||jc},fF={connectNulls:!1,type:"linear"},ede=e=>{var t=e.type,r=t===void 0?fF.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?fF.connectNulls:s,u=Rce(r,i),c=l?o.filter(ck):o;if(Array.isArray(a)){var d,p=o.map((h,y)=>cF(cF({},h),{},{base:a[y]}));i==="vertical"?d=Ym().y(Zv).x1(Xv).x0(h=>h.base.x):d=Ym().x(Xv).y1(Zv).y0(h=>h.base.y);var f=d.defined(pF).curve(u),m=l?p.filter(pF):p;return f(m)}var g;i==="vertical"&&Be(a)?g=Ym().y(Zv).x1(Xv).x0(a):Be(a)?g=Ym().x(Xv).y1(Zv).y0(a):g=Ov().x(Xv).y(Zv);var b=g.defined(ck).curve(u);return b(c)},yl=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=ti();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?ede(i):n;return mF.createElement("path",NP({},Sn(e),Rm(e),{className:bt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var hF=X(J());var tde=["x","y","top","left","width","height","className"];function TP(){return TP=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),yF=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=ide(e,tde),g=rde({x:r,y:o,top:i,left:l,width:c,height:p},m);return!Be(r)||!Be(o)||!Be(c)||!Be(p)||!Be(i)||!Be(l)?null:hF.createElement("path",TP({},kn(g),{className:bt("recharts-cross",f),d:lde(r,o,c,p,i,l)}))};function vF(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 hk=X(J()),ls=X(J());var Jv=X(J());var dk=1e-4,wF=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],SF=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),xF=(e,t)=>r=>{var n=wF(e,t);return SF(n,r)},ude=(e,t)=>r=>{var n=wF(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return SF(o,r)},cde=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]]},dde=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=xF(e,r),a=xF(t,n),i=ude(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 y,x,v;if(h<=0)return 0;if(h>=1)return l;var k=h*b,S=Math.floor(k),w=k-S;return((y=u[S])!==null&&y!==void 0?y:0)+(((x=u[S+1])!==null&&x!==void 0?x:0)-((v=u[S])!==null&&v!==void 0?v:0))*w}},kF=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return bF(e);case"spring":return fde();default:if(e.split("(")[0]==="cubic-bezier")return bF(e)}return typeof e=="function"?e:null};var wg=X(J());var _F=(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 CF=(0,wg.createContext)(_F),k3e=CF.Provider;function AF(e){var t=(0,wg.useContext)(CF);return(0,wg.useMemo)(()=>e??t,[e,t])}function mde(e,t,r){return(t=gde(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function gde(e){var t=hde(e,"string");return typeof t=="symbol"?t:t+""}function hde(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 EF="init",NF="pending",TF="active",yde="completed";function OP(e){return Math.max(0,e)}var PP=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;mde(this,"state",EF),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=OP(t.animationDuration),this.animationBegin=OP(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()===EF)return this.state=NF,this.beginStartedTime=t,this.animationBegin;if(this.getState()===NF){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=TF,this.animationStartedTime=t,this.nextAnimationUpdate(0)):OP(this.animationBegin-r)}if(this.getState()===TF){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=yde}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},pk=class extends PP{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(Nr(this.getFrom(),this.getTo(),this.getProgress()))}};var fk=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 vde(e,t){return Sde(e)||wde(e,t)||bde(e,t)||xde()}function xde(){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 bde(e,t){if(e){if(typeof e=="string")return OF(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)?OF(e,t):void 0}}function OF(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},PF=0,MP=1;function mk(e){var t=ur(e,kde),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=lk(),p=n==="auto"?!ss.isSsr&&!d:n,f=AF(t.animationController),m=(0,Jv.useState)(p?PF:MP),g=vde(m,2),b=g[0],h=g[1];return(0,Jv.useEffect)(()=>{p||h(MP)},[p]),(0,Jv.useEffect)(()=>{var y=kF(i);if(!p||!o||y==null)return ja;var x=new fk,v=new pk({animationId:r,easing:y,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:PF,to:MP});return f(x,v,h)},[f,r,p,o,a,i,s,u,l]),c(Number(b))}var IP=X(J());function gk(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,IP.useRef)(mu(t)),n=(0,IP.useRef)(e);return n.current!==e&&(r.current=mu(t),n.current=e),r.current}var _de=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),MF=(e,t,r)=>e.map(n=>"".concat(_de(n)," ").concat(t,"ms ").concat(r)).join(",");var Cde=["radius"],Ade=["radius"],IF,DF,jF,$F,LF,zF,BF,FF,WF,UF;function HF(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 qF(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=ts(r),i=ts(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=Oo(IF||(IF=vl(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=Oo(DF||(DF=vl(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=Oo(jF||(jF=vl(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=Oo($F||($F=vl(["A ",",",",0,0,",`, - `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=Oo(LF||(LF=vl(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=Oo(zF||(zF=vl(["A ",",",",0,0,",`, - `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=Oo(BF||(BF=vl(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=Oo(FF||(FF=vl(["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=Oo(WF||(WF=vl(["M ",",",` + height and width.`,j,Z,a,i,l,u,r),dp.createElement("div",lk({id:m?"".concat(m):void 0,className:bt("recharts-responsive-container",g),style:L9(L9({},y),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:v},x),dp.createElement("div",{style:D9({width:a,height:i})},dp.createElement(F9,{width:j,height:Z},d)))}),Bc=(0,_o.forwardRef)((e,t)=>{var r=Gv();if(ei(r.width)&&ei(r.height))return e.children;var n=$9({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=NP(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return Be(s)&&Be(l)?dp.createElement(F9,{width:s,height:l},e.children):dp.createElement(Nue,lk({},e,{width:o,height:a,ref:t}))});var pp=()=>{var e,t=Or(),r=Fe(ik),n=Fe(cp),o=(e=Fe(mg))===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}},Tue={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},uk=()=>{var e;return(e=Fe(Vr))!==null&&e!==void 0?e:Tue},hg=()=>Fe(Zo),yg=()=>Fe(Jo),U9=()=>Fe(e=>e.layout.margin),Wt=e=>e.layout.layoutType,ri=()=>Fe(Wt),vg=()=>{var e=ri();if(e==="horizontal"||e==="vertical")return e},ck=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},H9=()=>Fe(ck),q9=()=>{var e=ri();return e!==void 0},fp=e=>{var t=Lt(),r=Or(),n=e.width,o=e.height,a=Gv(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,W9.useEffect)(()=>{!r&&ei(i)&&ei(s)&&t(x9({width:i,height:s}))},[t,r,i,s]),null};var Oue={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},K9=Tr({name:"legend",initialState:Oue,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(rr(t.payload))},prepare:zr()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=sa(e).payload.indexOf(rr(n));a>-1&&(e.payload[a]=rr(o))},prepare:zr()},removeLegendPayload:{reducer(e,t){var r=sa(e).payload.indexOf(rr(t.payload));r>-1&&e.payload.splice(r,1)},prepare:zr()}}}),Yv=K9.actions,TP=Yv.setLegendSize,V9=Yv.setLegendSettings,OP=Yv.addLegendPayload,PP=Yv.replaceLegendPayload,MP=Yv.removeLegendPayload;var G9=K9.reducer;var Rn=X(J(),1),oce=X(J9(),1);var zue=Symbol.for("react.forward_ref");var Bue=Symbol.for("react.memo");var Fue=zue,Wue=Bue;function Uue(e){e()}function Hue(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Uue(()=>{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 Q9={notify(){},get:()=>[]};function que(e,t){let r,n=Q9,o=0,a=!1;function i(g){c();let b=n.subscribe(g),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=Hue())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=Q9)}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 Kue=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Vue=Kue(),Gue=()=>typeof navigator<"u"&&navigator.product==="ReactNative",Yue=Gue(),Xue=()=>Vue||Yue?Rn.useLayoutEffect:Rn.useEffect,Zue=Xue();function R9(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function eF(e,t){if(R9(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=que(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=Rn.useMemo(()=>o.getState(),[o]);return Zue(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),Rn.createElement((r||rce).Provider,{value:a},t)}var tF=nce;var ace=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function ice(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function ni(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(ace.has(n)){if(e[n]==null&&t[n]==null)continue;if(!eF(e[n],t[n]))return!1}else if(!ice(e[n],t[n]))return!1;return!0}var rF=oe([Zo,Jo,cg],(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 nF(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 sce=["contextPayload"];function IP(){return IP=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(V9({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function Cce(e){var t=e.width,r=e.height,n=Lt();return(0,dk.useLayoutEffect)(()=>{n(TP({width:t,height:r}))},[n,t,r]),(0,dk.useLayoutEffect)(()=>()=>{n(TP({width:0,height:0}))},[n]),null}function Ace(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var Ece={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function Nce(e){var t,r,n,o,a,i,s,l,u=ur(e,Ece),c=e.layout&&e.layout!=="auto"?e.layout:bce(u.position),d=S7(),p=lB(),f=U9(),m=Fe($=>wce($,u.position)),g=u.width,b=u.height,h=u.wrapperStyle,y=u.portal,x=y==null&&(u.position==null||Pv(u.position)),v=NS([d]),k=lce(v,2),S=k[0],w=k[1],_=hg(),A=yg();if(_==null||A==null||u.position!=null&&m==null)return null;var C=_-(f?.left||0)-(f?.right||0),O=Ace(c,b,g,C),D=u.position==null?null:Uw({viewBox:m??{x:0,y:0,width:_,height:A},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),H=Sce(u.position,(r=u.offset)!==null&&r!==void 0?r:0,S),j=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=D?{width:"max-content",height:"max-content",maxWidth:j,maxHeight:Z,overflowY:"auto",top:D.y+((s=H.top)!==null&&s!==void 0?s:0),left:D.x+((l=H.left)!==null&&l!==void 0?l:0),transform:nF(D.horizontalAnchor,D.verticalAnchor)}:kce(h,u,f,_,A,S),P=y?h:xg(xg({position:"absolute",width:O?.width||g||"auto",height:O?.height||b||"auto"},N),h),M=y??p;if(M==null||d==null)return null;var I=Pi.createElement("div",{className:"recharts-legend-wrapper",style:P,ref:w},Pi.createElement(_ce,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),x&&Pi.createElement(Cce,S),Pi.createElement(xce,IP({},u,{layout:c},O,{margin:f,chartWidth:_,chartHeight:A,contextPayload:d})));return(0,iF.createPortal)(I,M)}var pk=Pi.memo(Nce,ni);pk.displayName="Legend";var ms=X(J()),Dq=X(J()),$q=X(wy());var zs=X(J());function DP(){return DP=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?bg.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?bg.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,g=m===void 0?bg.accessibilityLayer:m,b=()=>{if(s&&s.length){var _={padding:0,margin:0},A=zce(s,u),C=A.map((O,D)=>{if(!O||O.type==="none")return null;var H=O.formatter||l||Lce,j=O.value,Z=O.name,N=j,P=Z;if(H){var M=H(j,Z,O,D,s);if(Array.isArray(M)){var I=Mce(M,2);N=I[0],P=I[1]}else if(M!=null)N=M;else return null}var $=Zv(Zv({},bg.itemStyle),{},{color:O.color||bg.itemStyle.color},o);return zs.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(D),style:$},ja(P)?zs.createElement("span",{className:"recharts-tooltip-item-name"},P):null,ja(P)?zs.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,zs.createElement("span",{className:"recharts-tooltip-item-value"},N),zs.createElement("span",{className:"recharts-tooltip-item-unit"},O.unit||""))});return zs.createElement("ul",{className:"recharts-tooltip-item-list",style:_},C)}return null},h=Zv(Zv({},bg.contentStyle),n),y=Zv({margin:0},i),x=!dr(p),v=x?p:"",k=bt("recharts-default-tooltip",c),S=bt("recharts-tooltip-label",d);x&&f&&s!==void 0&&s!==null&&(v=f(p,s));var w=g?{role:"status","aria-live":"assertive"}:{};return zs.createElement("div",DP({className:k,style:h},w),zs.createElement("p",{className:S,style:y},zs.isValidElement(v)?v:"".concat(v)),b())};var Fc=X(J());var Jv="recharts-tooltip-wrapper",Bce={visibility:"hidden"};function Fce(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return bt(Jv,{["".concat(Jv,"-right")]:Be(r)&&t&&Be(t.x)&&r>=t.x,["".concat(Jv,"-left")]:Be(r)&&t&&Be(t.x)&&r=t.y,["".concat(Jv,"-top")]:Be(n)&&t&&Be(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 Wce(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 dF(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=cF({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=cF({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=Wce({translateX:d,translateY:p,useTranslate3d:l})):c=Bce,{cssProperties:c,cssClasses:Fce({translateX:d,translateY:p,coordinate:r})}}var fk=X(J());var Uce=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),ls={devToolsEnabled:!0,isSsr:Uce()};function Hce(e,t){return Gce(e)||Vce(e,t)||Kce(e,t)||qce()}function qce(){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 Kce(e,t){if(e){if(typeof e=="string")return pF(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)?pF(e,t):void 0}}function pF(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rls.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=Hce(e,2),r=t[0],n=t[1];return(0,fk.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 fF(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 wg(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=Jce(l,2),c=u[0],d=u[1];Fc.useEffect(()=>{var h=y=>{if(y.key==="Escape"){var x,v,k,S;d({dismissed:!0,dismissedAtCoordinate:{x:(x=(v=e.coordinate)===null||v===void 0?void 0:v.x)!==null&&x!==void 0?x:0,y:(k=(S=e.coordinate)===null||S===void 0?void 0:S.y)!==null&&k!==void 0?k: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(wg(wg({},c),{},{dismissed:!1}));var p=dF({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,g=e.hasPortalFromProps?{}:wg(wg({transition:rde({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),b=wg(wg({},g),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return Fc.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:b,ref:e.innerRef},e.children)}var gF=Fc.memo(nde);var gk=()=>{var e;return(e=Fe(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var tC=X(J()),Xg=X(J());var wF=X(J());function $P(){return $P=Object.assign?Object.assign.bind():function(e){for(var t=1;tPt(e.x)&&Pt(e.y),xF=e=>e.base!=null&&hk(e.base)&&hk(e),Qv=e=>e.x,Rv=e=>e.y,sde=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(hu(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=vF["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return vF[r]||jc},bF={connectNulls:!1,type:"linear"},lde=e=>{var t=e.type,r=t===void 0?bF.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?bF.connectNulls:s,u=sde(r,i),c=l?o.filter(hk):o;if(Array.isArray(a)){var d,p=o.map((h,y)=>yF(yF({},h),{},{base:a[y]}));i==="vertical"?d=Xm().y(Rv).x1(Qv).x0(h=>h.base.x):d=Xm().x(Qv).y1(Rv).y0(h=>h.base.y);var f=d.defined(xF).curve(u),m=l?p.filter(xF):p;return f(m)}var g;i==="vertical"&&Be(a)?g=Xm().y(Rv).x1(Qv).x0(a):Be(a)?g=Xm().x(Qv).y1(Rv).y0(a):g=Iv().x(Qv).y(Rv);var b=g.defined(hk).curve(u);return b(c)},vl=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=ri();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?lde(i):n;return wF.createElement("path",$P({},Sn(e),eg(e),{className:bt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var kF=X(J());var ude=["x","y","top","left","width","height","className"];function jP(){return jP=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),_F=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=mde(e,ude),g=cde({x:r,y:o,top:i,left:l,width:c,height:p},m);return!Be(r)||!Be(o)||!Be(c)||!Be(p)||!Be(i)||!Be(l)?null:kF.createElement("path",jP({},kn(g),{className:bt("recharts-cross",f),d:hde(r,o,c,p,i,l)}))};function CF(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 Sk=X(J()),us=X(J());var ex=X(J());var yk=1e-4,NF=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],TF=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),AF=(e,t)=>r=>{var n=NF(e,t);return TF(n,r)},yde=(e,t)=>r=>{var n=NF(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return TF(o,r)},vde=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]]},xde=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=AF(e,r),a=AF(t,n),i=yde(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 y,x,v;if(h<=0)return 0;if(h>=1)return l;var k=h*b,S=Math.floor(k),w=k-S;return((y=u[S])!==null&&y!==void 0?y:0)+(((x=u[S+1])!==null&&x!==void 0?x:0)-((v=u[S])!==null&&v!==void 0?v:0))*w}},OF=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return EF(e);case"spring":return wde();default:if(e.split("(")[0]==="cubic-bezier")return EF(e)}return typeof e=="function"?e:null};var Sg=X(J());var PF=(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 MF=(0,Sg.createContext)(PF),P3e=MF.Provider;function IF(e){var t=(0,Sg.useContext)(MF);return(0,Sg.useMemo)(()=>e??t,[e,t])}function Sde(e,t,r){return(t=kde(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function kde(e){var t=_de(e,"string");return typeof t=="symbol"?t:t+""}function _de(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 DF="init",$F="pending",jF="active",Cde="completed";function LP(e){return Math.max(0,e)}var zP=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;Sde(this,"state",DF),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=LP(t.animationDuration),this.animationBegin=LP(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()===DF)return this.state=$F,this.beginStartedTime=t,this.animationBegin;if(this.getState()===$F){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=jF,this.animationStartedTime=t,this.nextAnimationUpdate(0)):LP(this.animationBegin-r)}if(this.getState()===jF){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=Cde}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},vk=class extends zP{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(Nr(this.getFrom(),this.getTo(),this.getProgress()))}};var xk=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 Ade(e,t){return Ode(e)||Tde(e,t)||Nde(e,t)||Ede()}function Ede(){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 Nde(e,t){if(e){if(typeof e=="string")return LF(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)?LF(e,t):void 0}}function LF(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},zF=0,BP=1;function bk(e){var t=ur(e,Pde),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=mk(),p=n==="auto"?!ls.isSsr&&!d:n,f=IF(t.animationController),m=(0,ex.useState)(p?zF:BP),g=Ade(m,2),b=g[0],h=g[1];return(0,ex.useEffect)(()=>{p||h(BP)},[p]),(0,ex.useEffect)(()=>{var y=OF(i);if(!p||!o||y==null)return La;var x=new xk,v=new vk({animationId:r,easing:y,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:zF,to:BP});return f(x,v,h)},[f,r,p,o,a,i,s,u,l]),c(Number(b))}var FP=X(J());function wk(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,FP.useRef)(gu(t)),n=(0,FP.useRef)(e);return n.current!==e&&(r.current=gu(t),n.current=e),r.current}var Mde=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),BF=(e,t,r)=>e.map(n=>"".concat(Mde(n)," ").concat(t,"ms ").concat(r)).join(",");var Ide=["radius"],Dde=["radius"],FF,WF,UF,HF,qF,KF,VF,GF,YF,XF;function ZF(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{var a=rs(r),i=rs(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=Po(FF||(FF=xl(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=Po(WF||(WF=xl(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=Po(UF||(UF=xl(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=Po(HF||(HF=xl(["A ",",",",0,0,",`, + `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=Po(qF||(qF=xl(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=Po(KF||(KF=xl(["A ",",",",0,0,",`, + `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=Po(VF||(VF=xl(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=Po(GF||(GF=xl(["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=Po(YF||(YF=xl(["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=Oo(UF||(UF=vl(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},YF={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},vk=e=>{var t=ur(e,YF),r=(0,ls.useRef)(null),n=(0,ls.useState)(-1),o=Pde(n,2),a=o[0],i=o[1];(0,ls.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var I=r.current.getTotalLength();I&&i(I)}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,g=t.animationBegin,b=t.isAnimationActive,h=t.isUpdateAnimationActive,y=(0,ls.useRef)(u),x=(0,ls.useRef)(c),v=(0,ls.useRef)(s),k=(0,ls.useRef)(l),S=(0,ls.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),w=gk(S,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var _=bt("recharts-rectangle",p);if(!h){var A=kn(t),C=A.radius,O=KF(A,Cde);return hk.createElement("path",yk({},O,{x:ts(s),y:ts(l),width:ts(u),height:ts(c),radius:typeof d=="number"?d:void 0,className:_,d:GF(s,l,u,c,d)}))}var D=y.current,H=x.current,$=v.current,Z=k.current,N="0px ".concat(a===-1?1:a,"px"),P="".concat(a,"px ").concat(a,"px"),M=MF(["strokeDasharray"],m,typeof f=="string"?f:YF.animationEasing);return hk.createElement(mk,{animationId:w,key:w,canBegin:a>0,duration:m,easing:f,isActive:h,begin:g},I=>{var j=Nr(D,u,I),T=Nr(H,c,I),q=Nr($,s,I),G=Nr(Z,l,I);r.current&&(y.current=j,x.current=T,v.current=q,k.current=G);var L;b?I>0?L={transition:M,strokeDasharray:P}:L={strokeDasharray:N}:L={strokeDasharray:P};var Y=kn(t),K=Y.radius,pe=KF(Y,Ade);return hk.createElement("path",yk({},pe,{radius:typeof d=="number"?d:void 0,className:_,d:GF(q,G,j,T,d),ref:r,style:qF(qF({},L),t.style)}))})};function XF(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 ZF(e){for(var t=1;te*180/Math.PI,dn=(e,t,r,n)=>({x:e+Math.cos(-Qv*n)*r,y:t+Math.sin(-Qv*n)*r}),xk=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},Fde=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},Wde=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=Fde({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:Bde(l),angleInRadian:l}},Ude=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}},Hde=(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},JF=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=Wde({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=Ude(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?ZF(ZF({},t),{},{radius:a,angle:Hde(p,t)}):null};function bk(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=dn(t,r,n,o),s=dn(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var aW=X(J());var QF,RF,eW,tW,rW,nW,oW;function DP(){return DP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=rn(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},wk=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)/Qv,d=l?o:o+a*c,p=dn(t,r,u,d),f=dn(t,r,n,d),m=l?o-a*c:o,g=dn(t,r,u*Math.cos(c*Qv),m);return{center:p,circleTangency:f,lineTangency:g,theta:c}},iW=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=qde(a,i),l=a+s,u=dn(t,r,o,a),c=dn(t,r,o,l),d=Oo(QF||(QF=fp(["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=Po(XF||(XF=xl(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},tW={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},_k=e=>{var t=ur(e,tW),r=(0,us.useRef)(null),n=(0,us.useState)(-1),o=Bde(n,2),a=o[0],i=o[1];(0,us.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var I=r.current.getTotalLength();I&&i(I)}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,g=t.animationBegin,b=t.isAnimationActive,h=t.isUpdateAnimationActive,y=(0,us.useRef)(u),x=(0,us.useRef)(c),v=(0,us.useRef)(s),k=(0,us.useRef)(l),S=(0,us.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),w=wk(S,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var _=bt("recharts-rectangle",p);if(!h){var A=kn(t),C=A.radius,O=QF(A,Ide);return Sk.createElement("path",kk({},O,{x:rs(s),y:rs(l),width:rs(u),height:rs(c),radius:typeof d=="number"?d:void 0,className:_,d:eW(s,l,u,c,d)}))}var D=y.current,H=x.current,j=v.current,Z=k.current,N="0px ".concat(a===-1?1:a,"px"),P="".concat(a,"px ").concat(a,"px"),M=BF(["strokeDasharray"],m,typeof f=="string"?f:tW.animationEasing);return Sk.createElement(bk,{animationId:w,key:w,canBegin:a>0,duration:m,easing:f,isActive:h,begin:g},I=>{var $=Nr(D,u,I),T=Nr(H,c,I),q=Nr(j,s,I),G=Nr(Z,l,I);r.current&&(y.current=$,x.current=T,v.current=q,k.current=G);var L;b?I>0?L={transition:M,strokeDasharray:P}:L={strokeDasharray:N}:L={strokeDasharray:P};var Y=kn(t),K=Y.radius,pe=QF(Y,Dde);return Sk.createElement("path",kk({},pe,{radius:typeof d=="number"?d:void 0,className:_,d:eW(q,G,$,T,d),ref:r,style:JF(JF({},L),t.style)}))})};function rW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function nW(e){for(var t=1;te*180/Math.PI,dn=(e,t,r,n)=>({x:e+Math.cos(-tx*n)*r,y:t+Math.sin(-tx*n)*r}),Ck=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},Yde=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},Xde=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=Yde({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:Gde(l),angleInRadian:l}},Zde=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}},Jde=(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},oW=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=Xde({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=Zde(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?nW(nW({},t),{},{radius:a,angle:Jde(p,t)}):null};function Ak(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=dn(t,r,n,o),s=dn(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var pW=X(J());var aW,iW,sW,lW,uW,cW,dW;function WP(){return WP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=rn(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},Ek=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)/tx,d=l?o:o+a*c,p=dn(t,r,u,d),f=dn(t,r,n,d),m=l?o-a*c:o,g=dn(t,r,u*Math.cos(c*tx),m);return{center:p,circleTangency:f,lineTangency:g,theta:c}},fW=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=Qde(a,i),l=a+s,u=dn(t,r,o,a),c=dn(t,r,o,l),d=Po(aW||(aW=mp(["M ",",",` A `,",",`,0, `,",",`, `,",",` - `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var p=dn(t,r,n,a),f=dn(t,r,n,l);d+=Oo(RF||(RF=fp(["L ",",",` + `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var p=dn(t,r,n,a),f=dn(t,r,n,l);d+=Po(iW||(iW=mp(["L ",",",` A `,",",`,0, `,",",`, - `,","," Z"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=Oo(eW||(eW=fp(["L ",","," Z"])),t,r);return d},Kde=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=rn(u-l),d=wk({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,g=wk({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),b=g.circleTangency,h=g.lineTangency,y=g.theta,x=s?Math.abs(l-u):Math.abs(l-u)-m-y;if(x<0)return i?Oo(tW||(tW=fp(["M ",",",` + `,","," Z"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=Po(sW||(sW=mp(["L ",","," Z"])),t,r);return d},Rde=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=rn(u-l),d=Ek({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,g=Ek({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),b=g.circleTangency,h=g.lineTangency,y=g.theta,x=s?Math.abs(l-u):Math.abs(l-u)-m-y;if(x<0)return i?Po(lW||(lW=mp(["M ",",",` a`,",",",0,0,1,",`,0 a`,",",",0,0,1,",`,0 - `])),f.x,f.y,a,a,a*2,a,a,-a*2):iW({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var v=Oo(rW||(rW=fp(["M ",",",` + `])),f.x,f.y,a,a,a*2,a,a,-a*2):fW({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var v=Po(uW||(uW=mp(["M ",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` A`,",",",0,0,",",",",",` - `])),f.x,f.y,a,a,+(c<0),p.x,p.y,o,o,+(x>180),+(c<0),b.x,b.y,a,a,+(c<0),h.x,h.y);if(n>0){var k=wk({cx:t,cy:r,radius:n,angle:l,sign:c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),S=k.circleTangency,w=k.lineTangency,_=k.theta,A=wk({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),C=A.circleTangency,O=A.lineTangency,D=A.theta,H=s?Math.abs(l-u):Math.abs(l-u)-_-D;if(H<0&&a===0)return"".concat(v,"L").concat(t,",").concat(r,"Z");v+=Oo(nW||(nW=fp(["L",",",` + `])),f.x,f.y,a,a,+(c<0),p.x,p.y,o,o,+(x>180),+(c<0),b.x,b.y,a,a,+(c<0),h.x,h.y);if(n>0){var k=Ek({cx:t,cy:r,radius:n,angle:l,sign:c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),S=k.circleTangency,w=k.lineTangency,_=k.theta,A=Ek({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),C=A.circleTangency,O=A.lineTangency,D=A.theta,H=s?Math.abs(l-u):Math.abs(l-u)-_-D;if(H<0&&a===0)return"".concat(v,"L").concat(t,",").concat(r,"Z");v+=Po(cW||(cW=mp(["L",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` - A`,",",",0,0,",",",",","Z"])),O.x,O.y,a,a,+(c<0),C.x,C.y,n,n,+(H>180),+(c>0),S.x,S.y,a,a,+(c<0),w.x,w.y)}else v+=Oo(oW||(oW=fp(["L",",","Z"])),t,r);return v},Vde={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Sk=e=>{var t=ur(e,Vde),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?g=Kde({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):g=iW({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),aW.createElement("path",DP({},kn(t),{className:p,d:g}))};function sW(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(qw(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=dn(n,o,a,s),u=dn(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return bk(t)}}function lW(e){return bS(e)?NaN:Number(e)}function kk(e){return e?(e=lW(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function _k(e,t,r){r&&typeof r!="number"&&$v(e,t,r)&&(t=r=void 0),e=kk(e),t===void 0?(t=e,e=0):t=kk(t),r=r===void 0?ee.chartData,mp=oe([ni],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),gp=(e,t,r,n)=>n?mp(e):ni(e),Ck=(e,t,r)=>r?mp(e):ni(e),uW=oe([gp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),cW=oe([mp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),dW=oe([ni],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function jP(e,t){return Zde(e)||Xde(e,t)||Yde(e,t)||Gde()}function Gde(){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 Yde(e,t){if(e){if(typeof e=="string")return pW(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)?pW(e,t):void 0}}function pW(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=Rv(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},FP=(e,t,r)=>{if(e.lte(0))return new Cr.default(0);var n=zP(e.toNumber()),o=new Cr.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new Cr.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new Cr.default(l.toNumber()):new Cr.default(Math.ceil(l.toNumber()))},vW=(e,t,r)=>{var n;if(e.lte(0))return new Cr.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new Cr.default(a).abs().log(10).toNumber()),s=new Cr.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 Cr.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,p=new Cr.default(d).mul(s);return t?p:new Cr.default(Math.ceil(p.toNumber()))},tpe=(e,t,r)=>{var n=new Cr.default(1),o=new Cr.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new Cr.default(10).pow(zP(e)-1),o=new Cr.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new Cr.default(Math.floor(e)))}else e===0?o=new Cr.default(Math.floor((t-1)/2)):r||(o=new Cr.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]:FP;if(!Number.isFinite((r-t)/(n-1)))return{step:new Cr.default(0),tickMin:new Cr.default(0),tickMax:new Cr.default(0)};var s=i(new Cr.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new Cr.default(0):(l=new Cr.default(t).add(r).div(2),l=l.sub(new Cr.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new Cr.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?xW(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 Cr.default(u).mul(s)),tickMax:l.add(new Cr.default(c).mul(s))})};var Nk=function(t){var r=Rv(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=yW([n,o]),c=Rv(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 tpe(d,a,i);var m=s==="snap125"?vW:FP,g=xW(d,p,l,i,0,m),b=g.step,h=g.tickMin,y=g.tickMax,x=BP(h,y.add(new Cr.default(.1).mul(b)),b);return n>o?x.reverse():x},Tk=function(t,r){var n=Rv(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=yW([o,a]),u=Rv(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"?vW:FP,f=Math.max(r,2),m=p(new Cr.default(d).sub(c).div(f-1),i,0),g=[...BP(new Cr.default(c),new Cr.default(d),m),d];if(i===!1){g=g.map(h=>Math.round(h));var b=g.length-1;b>0&&g[b]===g[b-1]&&(g=g.slice(0,b))}return o>a?g.reverse():g};var WP=e=>e.rootProps.maxBarSize,bW=e=>e.rootProps.barGap,Ok=e=>e.rootProps.barCategoryGap,wW=e=>e.rootProps.barSize,Fc=e=>e.rootProps.stackOffset,Pk=e=>e.rootProps.reverseStackOrder,Sg=e=>e.options.chartName,Mk=e=>e.rootProps.syncId,UP=e=>e.rootProps.syncMethod,Ik=e=>e.options.eventEmitter,SW=e=>e.rootProps.baseValue;var pr={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 Wc={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:pr.axis};var zs={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:pr.axis};var hp=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function yp(e,t,r){if(r!=="auto")return r;if(e!=null)return ha(e,t)?"category":"number"}function kW(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 Dk(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},jk=oe([ape,ok],(e,t)=>{var r;if(e!=null)return e;var n=(r=yp(t,"angleAxis",_W.type))!==null&&r!==void 0?r:"category";return Dk(Dk({},_W),{},{type:n})}),ipe=(e,t)=>e.polarAxis.radiusAxis[t],$k=oe([ipe,ok],(e,t)=>{var r;if(e!=null)return e;var n=(r=yp(t,"radiusAxis",CW.type))!==null&&r!==void 0?r:"category";return Dk(Dk({},CW),{},{type:n})}),Lk=e=>e.polarOptions,HP=oe([Xo,Zo,Vr],xk),AW=oe([Lk,HP],(e,t)=>{if(e!=null)return Wn(e.innerRadius,t,0)}),EW=oe([Lk,HP],(e,t)=>{if(e!=null)return Wn(e.outerRadius,t,t*.8)}),spe=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},qP=oe([Lk],spe),Yje=oe([jk,qP],hp),KP=oe([HP,AW,EW],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),Xje=oe([$k,KP],hp),zk=oe([Wt,Lk,AW,EW,Xo,Zo],(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:Wn(i,o,o/2),cy:Wn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var _n=(e,t)=>t;var vp=(e,t,r)=>r;function Uc(e){return e?.id}function Bk(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=Uc(l);c.forEach((p,f)=>{var m=i==null||a?f:String(Zt(p,i,null)),g=Zt(p,l.dataKey,0),b;s.has(m)?b=s.get(m):b={},Object.assign(b,{[d]:g}),s.set(m,b)})}}),Array.from(s.values())}function xp(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var bp=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function kg(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function NW(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 Hc=e=>e.tooltip.settings.axisId;function ex(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 Fk=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!Pi(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 wx={};Ure(wx,{scaleBand:()=>ox,scaleDiverging:()=>w_,scaleDivergingLog:()=>_M,scaleDivergingPow:()=>S_,scaleDivergingSqrt:()=>ZU,scaleDivergingSymlog:()=>CM,scaleIdentity:()=>a_,scaleImplicit:()=>Gk,scaleLinear:()=>o_,scaleLog:()=>i_,scaleOrdinal:()=>Ag,scalePoint:()=>jW,scalePow:()=>gx,scaleQuantile:()=>u_,scaleQuantize:()=>c_,scaleRadial:()=>l_,scaleSequential:()=>y_,scaleSequentialLog:()=>SM,scaleSequentialPow:()=>v_,scaleSequentialQuantile:()=>x_,scaleSequentialSqrt:()=>XU,scaleSequentialSymlog:()=>kM,scaleSqrt:()=>yU,scaleSymlog:()=>s_,scaleThreshold:()=>d_,scaleTime:()=>bM,scaleUtc:()=>wM,tickFormat:()=>cx});function La(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function VP(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function wp(e){let t,r,n;e.length!==2?(t=La,r=(s,l)=>La(e(s),l),n=(s,l)=>e(s)-l):(t=e===La||e===VP?e:lpe,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 lpe(){return 0}function tx(e){return e===null?NaN:+e}function*TW(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 OW=wp(La),PW=OW.right,upe=OW.left,cpe=wp(tx).center,Bs=PW;var _g=class extends Map{constructor(t,r=fpe){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(MW(this,t))}has(t){return super.has(MW(this,t))}set(t,r){return super.set(dpe(this,t),r)}delete(t){return super.delete(ppe(this,t))}};function MW({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function dpe({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function ppe({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function fpe(e){return e!==null&&typeof e=="object"?e.valueOf():e}function IW(e=La){if(e===La)return GP;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 GP(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var mpe=Math.sqrt(50),gpe=Math.sqrt(10),hpe=Math.sqrt(2);function Wk(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>=mpe?10:a>=gpe?5:a>=hpe?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 Hk(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 qk(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?GP:IW(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));qk(e,t,f,m,o)}let a=e[t],i=r,s=n;for(nx(e,r,t),o(e[n],a)>0&&nx(e,r,n);i0;)--s}o(e[r],a)===0?nx(e,r,s):(++s,nx(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function nx(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function Kk(e,t,r){if(e=Float64Array.from(TW(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Hk(e);if(t>=1)return Uk(e);var n,o=(n-1)*t,a=Math.floor(o),i=Uk(qk(e,a).subarray(0,a+1)),s=Hk(e.subarray(a+1));return i+(s-i)*(o-a)}}function YP(e,t,r=tx){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 Vk(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?Xk(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Xk(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=vpe.exec(e))?new oi(t[1],t[2],t[3],1):(t=xpe.exec(e))?new oi(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=bpe.exec(e))?Xk(t[1],t[2],t[3],t[4]):(t=wpe.exec(e))?Xk(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Spe.exec(e))?UW(t[1],t[2]/100,t[3]/100,1):(t=kpe.exec(e))?UW(t[1],t[2]/100,t[3]/100,t[4]):$W.hasOwnProperty(e)?BW($W[e]):e==="transparent"?new oi(NaN,NaN,NaN,0):null}function BW(e){return new oi(e>>16&255,e>>8&255,e&255,1)}function Xk(e,t,r,n){return n<=0&&(e=t=r=NaN),new oi(e,t,r,n)}function Ape(e){return e instanceof sx||(e=qc(e)),e?(e=e.rgb(),new oi(e.r,e.g,e.b,e.opacity)):new oi}function Ng(e,t,r,n){return arguments.length===1?Ape(e):new oi(e,t,r,n??1)}function oi(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Yk(oi,Ng,XP(sx,{brighter(e){return e=e==null?Jk:Math.pow(Jk,e),new oi(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?ax:Math.pow(ax,e),new oi(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new oi(_p(this.r),_p(this.g),_p(this.b),Qk(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:FW,formatHex:FW,formatHex8:Epe,formatRgb:WW,toString:WW}));function FW(){return`#${kp(this.r)}${kp(this.g)}${kp(this.b)}`}function Epe(){return`#${kp(this.r)}${kp(this.g)}${kp(this.b)}${kp((isNaN(this.opacity)?1:this.opacity)*255)}`}function WW(){let e=Qk(this.opacity);return`${e===1?"rgb(":"rgba("}${_p(this.r)}, ${_p(this.g)}, ${_p(this.b)}${e===1?")":`, ${e})`}`}function Qk(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function _p(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function kp(e){return e=_p(e),(e<16?"0":"")+e.toString(16)}function UW(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Fs(e,t,r,n)}function qW(e){if(e instanceof Fs)return new Fs(e.h,e.s,e.l,e.opacity);if(e instanceof sx||(e=qc(e)),!e)return new Fs;if(e instanceof Fs)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 Fs(i,s,l,e.opacity)}function KW(e,t,r,n){return arguments.length===1?qW(e):new Fs(e,t,r,n??1)}function Fs(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Yk(Fs,KW,XP(sx,{brighter(e){return e=e==null?Jk:Math.pow(Jk,e),new Fs(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?ax:Math.pow(ax,e),new Fs(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 oi(ZP(e>=240?e-240:e+120,o,n),ZP(e,o,n),ZP(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new Fs(HW(this.h),Zk(this.s),Zk(this.l),Qk(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=Qk(this.opacity);return`${e===1?"hsl(":"hsla("}${HW(this.h)}, ${Zk(this.s)*100}%, ${Zk(this.l)*100}%${e===1?")":`, ${e})`}`}}));function HW(e){return e=(e||0)%360,e<0?e+360:e}function Zk(e){return Math.max(0,Math.min(1,e||0))}function ZP(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 JP(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 VW(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 Npe(e,t){return function(r){return e+r*t}}function Tpe(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 YW(e){return(e=+e)==1?Rk:function(t,r){return r-t?Tpe(t,r,e):lx(isNaN(t)?r:t)}}function Rk(e,t){var r=t-e;return r?Npe(e,r):lx(isNaN(e)?t:e)}var QP=(function e(t){var r=YW(t);function n(o,a){var i=r((o=Ng(o)).r,(a=Ng(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=Rk(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 XW(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:Kc(n,o)})),r=RP.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Ipe(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?Dpe:Ipe,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),Kc)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Vc),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=Cp,c()},d.clamp=function(p){return arguments.length?(i=p?!0:Mo,c()):i!==Mo},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 Ep(){return Ap()(Mo,Mo)}function nU(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Np(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 wl(e){return e=Np(Math.abs(e)),e?e[1]:NaN}function oU(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 aU(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var jpe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Sl(e){if(!(t=jpe.exec(e)))throw new Error("invalid format: "+e);var t;return new t_({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]})}Sl.prototype=t_.prototype;function t_(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+""}t_.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 iU(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 ux;function sU(e,t){var r=Np(e,t);if(!r)return ux=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(ux=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")+Np(e,Math.max(0,t+a-1))[0]}function nM(e,t){var r=Np(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 oM={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:nU,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)=>nM(e*100,t),r:nM,s:sU,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function aM(e){return e}var lU=Array.prototype.map,uU=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function cU(e){var t=e.grouping===void 0||e.thousands===void 0?aM:oU(lU.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?aM:aU(lU.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=Sl(d);var f=d.fill,m=d.align,g=d.sign,b=d.symbol,h=d.zero,y=d.width,x=d.comma,v=d.precision,k=d.trim,S=d.type;S==="n"?(x=!0,S="g"):oM[S]||(v===void 0&&(v=12),k=!0,S="g"),(h||f==="0"&&m==="=")&&(h=!0,f="0",m="=");var w=(p&&p.prefix!==void 0?p.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():""),_=(b==="$"?n:/[%p]/.test(S)?i:"")+(p&&p.suffix!==void 0?p.suffix:""),A=oM[S],C=/[defgprs%]/.test(S);v=v===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var H=w,$=_,Z,N,P;if(S==="c")$=A(D)+$,D="";else{D=+D;var M=D<0||1/D<0;if(D=isNaN(D)?l:A(Math.abs(D),v),k&&(D=iU(D)),M&&+D==0&&g!=="+"&&(M=!1),H=(M?g==="("?g:s:g==="-"||g==="("?"":g)+H,$=(S==="s"&&!isNaN(D)&&ux!==void 0?uU[8+ux/3]:"")+$+(M&&g==="("?")":""),C){for(Z=-1,N=D.length;++ZP||P>57){$=(P===46?o+D.slice(Z+1):D.slice(Z))+$,D=D.slice(0,Z);break}}}x&&!h&&(D=t(D,1/0));var I=H.length+D.length+$.length,j=I>1)+H+D+$+j.slice(I);break;default:D=j+H+D+$;break}return a(D)}return O.toString=function(){return d+""},O}function c(d,p){var f=Math.max(-8,Math.min(8,Math.floor(wl(p)/3)))*3,m=Math.pow(10,-f),g=u((d=Sl(d),d.type="f",d),{suffix:uU[8+f/3]});return function(b){return g(m*b)}}return{format:u,formatPrefix:c}}var r_,Tg,n_;iM({thousands:",",grouping:[3],currency:["$",""]});function iM(e){return r_=cU(e),Tg=r_.format,n_=r_.formatPrefix,r_}function sM(e){return Math.max(0,-wl(Math.abs(e)))}function lM(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(wl(t)/3)))*3-wl(Math.abs(e)))}function uM(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,wl(t)-wl(e))+1}function cx(e,t,r,n){var o=Cg(e,t,r),a;switch(n=Sl(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=lM(o,i))&&(n.precision=a),n_(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=uM(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=sM(o))&&(n.precision=a-(n.type==="%")*2);break}}return Tg(n)}function za(e){var t=e.domain;return e.ticks=function(r){var n=t();return Sp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return cx(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=rx(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 o_(){var e=Ep();return e.copy=function(){return bl(e,o_())},Dn.apply(e,arguments),za(e)}function a_(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,Vc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return a_(e).unknown(t)},e=arguments.length?Array.from(e,Vc):[0,1],za(r)}function dx(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 Fpe(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 fU(e){return(t,r)=>-e(-t,r)}function px(e){let t=e(dU,pU),r=t.domain,n=10,o,a;function i(){return o=Fpe(n),a=Bpe(n),r()[0]<0?(o=fU(o),a=fU(a),e($pe,Lpe)):e(dU,pU),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(g)}}else for(;p<=f;++p)for(m=n-1;m>=1;--m)if(g=p>0?m/a(-p):m*a(p),!(gc)break;h.push(g)}h.length*2{if(s==null&&(s=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=Sl(l)).precision==null&&(l.trim=!0),l=Tg(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(dx(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function i_(){let e=px(Ap()).domain([1,10]);return e.copy=()=>bl(e,i_()).base(e.base()),Dn.apply(e,arguments),e}function mU(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function gU(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function fx(e){var t=1,r=e(mU(t),gU(t));return r.constant=function(n){return arguments.length?e(mU(t=+n),gU(t)):t},za(r)}function s_(){var e=fx(Ap());return e.copy=function(){return bl(e,s_()).constant(e.constant())},Dn.apply(e,arguments)}function hU(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Wpe(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Upe(e){return e<0?-e*e:e*e}function mx(e){var t=e(Mo,Mo),r=1;function n(){return r===1?e(Mo,Mo):r===.5?e(Wpe,Upe):e(hU(r),hU(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},za(t)}function gx(){var e=mx(Ap());return e.copy=function(){return bl(e,gx()).exponent(e.exponent())},Dn.apply(e,arguments),e}function yU(){return gx.apply(null,arguments).exponent(.5)}function vU(e){return Math.sign(e)*e*e}function Hpe(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function l_(){var e=Ep(),t=[0,1],r=!1,n;function o(a){var i=Hpe(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(vU(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,Vc)).map(vU)),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 l_(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},Dn.apply(o,arguments),za(o)}function u_(){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 c_().domain([e,t]).range(o).unknown(a)},Dn.apply(za(i),arguments)}function d_(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Bs(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 d_().domain(e).range(t).unknown(r)},Dn.apply(o,arguments)}var cM=new Date,dM=new Date;function nn(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(unn(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)=>(cM.setTime(+a),dM.setTime(+i),e(cM),e(dM),Math.floor(r(cM,dM))),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 hx=nn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);hx.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?nn(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):hx);var E8e=hx.range;var cs=nn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),xU=cs.range;var Og=nn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),qpe=Og.range,Pg=nn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),Kpe=Pg.range;var Mg=nn(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()),Vpe=Mg.range,Ig=nn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),Gpe=Ig.range;var Su=nn(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),Ype=Su.range,Pp=nn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),Xpe=Pp.range,p_=nn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),Zpe=p_.range;function Mp(e){return nn(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 ku=Mp(0),Dg=Mp(1),wU=Mp(2),SU=Mp(3),Gc=Mp(4),kU=Mp(5),_U=Mp(6),CU=ku.range,Jpe=Dg.range,Qpe=wU.range,Rpe=SU.range,efe=Gc.range,tfe=kU.range,rfe=_U.range;function Ip(e){return nn(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 _u=Ip(0),jg=Ip(1),AU=Ip(2),EU=Ip(3),Yc=Ip(4),NU=Ip(5),TU=Ip(6),OU=_u.range,nfe=jg.range,ofe=AU.range,afe=EU.range,ife=Yc.range,sfe=NU.range,lfe=TU.range;var $g=nn(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()),ufe=$g.range,Lg=nn(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()),cfe=Lg.range;var Ii=nn(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());Ii.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:nn(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 dfe=Ii.range,Di=nn(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());Di.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:nn(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 pfe=Di.range;function MU(e,t,r,n,o,a){let i=[[cs,1,1e3],[cs,5,5*1e3],[cs,15,15*1e3],[cs,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(Cg(u/31536e6,c/31536e6,d));if(f===0)return hx.every(Math.max(Cg(u,c,d),1));let[m,g]=i[p/i[f-1][2]53)return null;"w"in R||(R.w=1),"Z"in R?(Ce=yM(vx(R.y,0,1)),z=Ce.getUTCDay(),Ce=z>4||z===0?jg.ceil(Ce):jg(Ce),Ce=Pp.offset(Ce,(R.V-1)*7),R.y=Ce.getUTCFullYear(),R.m=Ce.getUTCMonth(),R.d=Ce.getUTCDate()+(R.w+6)%7):(Ce=hM(vx(R.y,0,1)),z=Ce.getDay(),Ce=z>4||z===0?Dg.ceil(Ce):Dg(Ce),Ce=Su.offset(Ce,(R.V-1)*7),R.y=Ce.getFullYear(),R.m=Ce.getMonth(),R.d=Ce.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),z="Z"in R?yM(vx(R.y,0,1)).getUTCDay():hM(vx(R.y,0,1)).getDay(),R.m=0,R.d="W"in R?(R.w+6)%7+R.W*7-(z+5)%7:R.w+R.U*7-(z+6)%7);return"Z"in R?(R.H+=R.Z/100|0,R.M+=R.Z%100,yM(R)):hM(R)}}function _(se,xe,ue,R){for(var we=0,Ce=xe.length,z=ue.length,ee,ae;we=z)return-1;if(ee=xe.charCodeAt(we++),ee===37){if(ee=xe.charAt(we++),ae=k[ee in IU?xe.charAt(we++):ee],!ae||(R=ae(se,ue,R))<0)return-1}else if(ee!=ue.charCodeAt(R++))return-1}return R}function A(se,xe,ue){var R=u.exec(xe.slice(ue));return R?(se.p=c.get(R[0].toLowerCase()),ue+R[0].length):-1}function C(se,xe,ue){var R=f.exec(xe.slice(ue));return R?(se.w=m.get(R[0].toLowerCase()),ue+R[0].length):-1}function O(se,xe,ue){var R=d.exec(xe.slice(ue));return R?(se.w=p.get(R[0].toLowerCase()),ue+R[0].length):-1}function D(se,xe,ue){var R=h.exec(xe.slice(ue));return R?(se.m=y.get(R[0].toLowerCase()),ue+R[0].length):-1}function H(se,xe,ue){var R=g.exec(xe.slice(ue));return R?(se.m=b.get(R[0].toLowerCase()),ue+R[0].length):-1}function $(se,xe,ue){return _(se,t,xe,ue)}function Z(se,xe,ue){return _(se,r,xe,ue)}function N(se,xe,ue){return _(se,n,xe,ue)}function P(se){return i[se.getDay()]}function M(se){return a[se.getDay()]}function I(se){return l[se.getMonth()]}function j(se){return s[se.getMonth()]}function T(se){return o[+(se.getHours()>=12)]}function q(se){return 1+~~(se.getMonth()/3)}function G(se){return i[se.getUTCDay()]}function L(se){return a[se.getUTCDay()]}function Y(se){return l[se.getUTCMonth()]}function K(se){return s[se.getUTCMonth()]}function pe(se){return o[+(se.getUTCHours()>=12)]}function De(se){return 1+~~(se.getUTCMonth()/3)}return{format:function(se){var xe=S(se+="",x);return xe.toString=function(){return se},xe},parse:function(se){var xe=w(se+="",!1);return xe.toString=function(){return se},xe},utcFormat:function(se){var xe=S(se+="",v);return xe.toString=function(){return se},xe},utcParse:function(se){var xe=w(se+="",!0);return xe.toString=function(){return se},xe}}}var IU={"-":"",_:" ",0:"0"},Jo=/^\s*\d+/,mfe=/^%/,gfe=/[\\^$*+?|[\]().{}]/g;function Pr(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function yfe(e,t,r){var n=Jo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function vfe(e,t,r){var n=Jo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function xfe(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function bfe(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function wfe(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function DU(e,t,r){var n=Jo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function jU(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Sfe(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 kfe(e,t,r){var n=Jo.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function _fe(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function $U(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Cfe(e,t,r){var n=Jo.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function LU(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Afe(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Efe(e,t,r){var n=Jo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Nfe(e,t,r){var n=Jo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Tfe(e,t,r){var n=Jo.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Ofe(e,t,r){var n=mfe.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Pfe(e,t,r){var n=Jo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Mfe(e,t,r){var n=Jo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function zU(e,t){return Pr(e.getDate(),t,2)}function Ife(e,t){return Pr(e.getHours(),t,2)}function Dfe(e,t){return Pr(e.getHours()%12||12,t,2)}function jfe(e,t){return Pr(1+Su.count(Ii(e),e),t,3)}function HU(e,t){return Pr(e.getMilliseconds(),t,3)}function $fe(e,t){return HU(e,t)+"000"}function Lfe(e,t){return Pr(e.getMonth()+1,t,2)}function zfe(e,t){return Pr(e.getMinutes(),t,2)}function Bfe(e,t){return Pr(e.getSeconds(),t,2)}function Ffe(e){var t=e.getDay();return t===0?7:t}function Wfe(e,t){return Pr(ku.count(Ii(e)-1,e),t,2)}function qU(e){var t=e.getDay();return t>=4||t===0?Gc(e):Gc.ceil(e)}function Ufe(e,t){return e=qU(e),Pr(Gc.count(Ii(e),e)+(Ii(e).getDay()===4),t,2)}function Hfe(e){return e.getDay()}function qfe(e,t){return Pr(Dg.count(Ii(e)-1,e),t,2)}function Kfe(e,t){return Pr(e.getFullYear()%100,t,2)}function Vfe(e,t){return e=qU(e),Pr(e.getFullYear()%100,t,2)}function Gfe(e,t){return Pr(e.getFullYear()%1e4,t,4)}function Yfe(e,t){var r=e.getDay();return e=r>=4||r===0?Gc(e):Gc.ceil(e),Pr(e.getFullYear()%1e4,t,4)}function Xfe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Pr(t/60|0,"0",2)+Pr(t%60,"0",2)}function BU(e,t){return Pr(e.getUTCDate(),t,2)}function Zfe(e,t){return Pr(e.getUTCHours(),t,2)}function Jfe(e,t){return Pr(e.getUTCHours()%12||12,t,2)}function Qfe(e,t){return Pr(1+Pp.count(Di(e),e),t,3)}function KU(e,t){return Pr(e.getUTCMilliseconds(),t,3)}function Rfe(e,t){return KU(e,t)+"000"}function eme(e,t){return Pr(e.getUTCMonth()+1,t,2)}function tme(e,t){return Pr(e.getUTCMinutes(),t,2)}function rme(e,t){return Pr(e.getUTCSeconds(),t,2)}function nme(e){var t=e.getUTCDay();return t===0?7:t}function ome(e,t){return Pr(_u.count(Di(e)-1,e),t,2)}function VU(e){var t=e.getUTCDay();return t>=4||t===0?Yc(e):Yc.ceil(e)}function ame(e,t){return e=VU(e),Pr(Yc.count(Di(e),e)+(Di(e).getUTCDay()===4),t,2)}function ime(e){return e.getUTCDay()}function sme(e,t){return Pr(jg.count(Di(e)-1,e),t,2)}function lme(e,t){return Pr(e.getUTCFullYear()%100,t,2)}function ume(e,t){return e=VU(e),Pr(e.getUTCFullYear()%100,t,2)}function cme(e,t){return Pr(e.getUTCFullYear()%1e4,t,4)}function dme(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Yc(e):Yc.ceil(e),Pr(e.getUTCFullYear()%1e4,t,4)}function pme(){return"+0000"}function FU(){return"%"}function WU(e){return+e}function UU(e){return Math.floor(+e/1e3)}var zg,f_,GU,m_,YU;xM({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 xM(e){return zg=vM(e),f_=zg.format,GU=zg.parse,m_=zg.utcFormat,YU=zg.utcParse,zg}function fme(e){return new Date(e)}function mme(e){return e instanceof Date?+e:+new Date(+e)}function g_(e,t,r,n,o,a,i,s,l,u){var c=Ep(),d=c.invert,p=c.domain,f=u(".%L"),m=u(":%S"),g=u("%I:%M"),b=u("%I %p"),h=u("%a %d"),y=u("%b %d"),x=u("%B"),v=u("%Y");function k(S){return(l(S)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>Kk(e,a/n))},r.copy=function(){return x_(t).domain(e)},us.apply(r,arguments)}function b_(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=Mo,c,d=!1,p;function f(g){return isNaN(g=+g)?p:(g=.5+((g=+c(g))-a)*(n*g{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 yme(n)?n:"point"}};function vme(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function __(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=vme(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 QU(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):__(e,void 0)}function RU(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 C_(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],_l=(e,t)=>{var r=EM(e,t);return r??co},po={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:AM,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:lp},NM=(e,t)=>e.cartesianAxis.yAxis[t],Cl=(e,t)=>{var r=NM(e,t);return r??po},Ame={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:""},TM=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??Ame},jn=(e,t,r)=>{switch(t){case"xAxis":return _l(e,r);case"yAxis":return Cl(e,r);case"zAxis":return TM(e,r);case"angleAxis":return jk(e,r);case"radiusAxis":return $k(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Eme=(e,t,r)=>{switch(t){case"xAxis":return _l(e,r);case"yAxis":return Cl(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Dp=(e,t,r)=>{switch(t){case"xAxis":return _l(e,r);case"yAxis":return Cl(e,r);case"angleAxis":return jk(e,r);case"radiusAxis":return $k(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},OM=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function _x(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 Xc=e=>e.graphicalItems.cartesianItems,Nme=oe([_n,vp],_x),Cx=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),Fg=oe([Xc,jn,Nme],Cx,{memoizeOptions:{resultEqualityCheck:kg}}),nH=oe([Fg],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(xp)),PM=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),Tme=oe([Fg],PM),Ax=e=>e.map(t=>t.data).filter(Boolean).flat(1),Ome=oe([Fg],e=>e.some(t=>!t.data)),oH=oe([Fg],Ax,{memoizeOptions:{resultEqualityCheck:kg}}),Ex=(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)},MM=oe([oH,gp],Ex),IM=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:Zt(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:Zt(o,n)}))):e.map(n=>({value:n})),DM=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=IM(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),p=d.map(f=>({value:Zt(f,t.dataKey)})).filter(f=>f.value!=null);return[...p,...c]}return c},Nx=oe([MM,jn,Fg,gp,Ome,oH],DM);function Bg(e){if(Da(e)||e instanceof Date){var t=Number(e);if(Pt(t))return t}}function tH(e){if(Array.isArray(e)){var t=[Bg(e[0]),Bg(e[1])];return Pi(t)?t:void 0}var r=Bg(e);if(r!=null)return[r,r]}function Ws(e){return e.map(Bg).filter(Po)}function Pme(e,t){var r=Bg(e),n=Bg(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var Mme=oe([Nx],e=>e?.map(t=>t.value).sort(Pme));function aH(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function Ime(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!Go(t))n=t;else if(Array.isArray(t)){var o=Ws(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:Ws(r.flatMap(a=>{var i=Zt(e,a.dataKey),s,l;if(Array.isArray(i)){var u=rH(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!Pt(s)||!Pt(l)))return[n-s,n+l]}))}var fo=e=>{var t=uo(e),r=Hc(e);return Dp(e,t,r)},Au=oe([fo],e=>e?.dataKey),Dme=oe([nH,gp,fo],Bk),jM=(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=rH(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Uc);return[l,{stackedData:v9(e,d,r),graphicalItems:c}]}))},Wg=oe([Dme,nH,Fc,Pk],jM),$M=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return b9(e,o,a)},jme=oe([jn],e=>e.allowDataOverflow),A_=e=>{var t;if(e==null||!("domain"in e))return AM;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=Ws(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:AM},E_=oe([jn],A_),N_=oe([E_,jme],Ak),$me=oe([Wg,ni,_n,N_],$M,{memoizeOptions:{resultEqualityCheck:bp}}),Ug=e=>e.errorBars,Lme=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>aH(r,n)),kx=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=>aH(a,f));d.forEach(f=>{var m,g=Zt(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),b=Ime(f,g,p);if(b.length>=2){var h=Math.min(...b),y=Math.max(...b);(s==null||hl)&&(l=y)}var x=tH(g);x!=null&&(s=s==null?x[0]:Math.min(s,x[0]),l=l==null?x[1]:Math.max(l,x[1]))})}),r?.dataKey!=null&&n.length===0&&t.forEach(u=>{var c=tH(Zt(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]},zme=oe([MM,jn,Tme,Ug,_n,uW],Tx,{memoizeOptions:{resultEqualityCheck:bp}});function Bme(e){var t=e.value;if(Da(t)||t instanceof Date)return t}var Fme=(e,t,r)=>{var n=e.map(Bme).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&iO(n))?_k(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},LM=e=>e.referenceElements.dots,jp=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),Wme=oe([LM,_n,vp],jp),zM=e=>e.referenceElements.areas,Ume=oe([zM,_n,vp],jp),BM=e=>e.referenceElements.lines,Hme=oe([BM,_n,vp],jp),FM=(e,t)=>{if(e!=null){var r=Ws(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},qme=oe(Wme,_n,FM),WM=(e,t)=>{if(e!=null){var r=Ws(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)]}},Kme=oe([Ume,_n],WM);function Vme(e){var t;if(e.x!=null)return Ws([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:Ws(r)}function Gme(e){var t;if(e.y!=null)return Ws([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:Ws(r)}var UM=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?Vme(n):Gme(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Yme=oe([Hme,_n],UM),Xme=oe(qme,Yme,Kme,(e,t,r)=>kx(e,r,t)),Ox=(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?kx(n,a,o):kx(a,o),d=mW(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},Zme=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=Ws(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},Jme=oe([jn],Zme,{memoizeOptions:{resultEqualityCheck:bp}}),Qme=oe([jn,E_,N_,$me,zme,Xme,Wt,_n,Jme],Ox,{memoizeOptions:{resultEqualityCheck:bp}}),Rme=[0,1],Px=(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=ha(t,a);if(u&&s==null){var c;return _k(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?Fme(n,e,u):o==="expand"&&!u?Rme:i}},HM=oe([jn,Wt,MM,Nx,Fc,_n,Qme],Px),Eu=oe([jn,OM,Sg],k_),Mx=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=A_(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&Pi(e)){if(a)return Nk(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return Tk(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&Pi(e))return Nk(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&Pi(e))return Tk(e,t.tickCount,t.allowDecimals,"adaptive")}}},qM=oe([HM,Dp,Eu],Mx),Ix=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&Pi(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},ege=oe([jn,HM,qM,_n],Ix),tge=oe(Nx,jn,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(Ws(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(!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=Wn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),rge=(e,t,r)=>{var n=_l(e,t);return n==null||typeof n.padding!="string"?0:iH(e,"xAxis",t,r,n.padding)},nge=(e,t,r)=>{var n=Cl(e,t);return n==null||typeof n.padding!="string"?0:iH(e,"yAxis",t,r,n.padding)},oge=oe(_l,rge,(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}}),age=oe(Cl,nge,(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}}),KM=oe([Vr,oge,up,fg,(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]}),VM=oe([Vr,Wt,age,up,fg,(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]}),Hg=(e,t,r,n)=>{var o;switch(t){case"xAxis":return KM(e,r,n);case"yAxis":return VM(e,r,n);case"zAxis":return(o=TM(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return qP(e);case"radiusAxis":return KP(e,r);default:return}},sH=oe([jn,Hg],hp),ige=oe([Eu,ege],Fk),GM=oe([jn,Eu,ige,sH],Sx),YM=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=ha(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},XM=oe([Wt,Nx,Dp,_n],YM),T_=oe([GM],ex),Z6e=oe([GM],QU),J6e=oe([GM,Mme],__),Q6e=oe([Fg,Ug,_n],Lme);function lH(e,t){return e.idt.id?1:0}var O_=(e,t)=>t,P_=(e,t,r)=>r,sge=oe(cg,O_,P_,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(lH)),lge=oe(dg,O_,P_,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(lH)),uH=(e,t)=>{var r=typeof t.height=="number"?t.height:Hv;return{width:e.width,height:r}},uge=(e,t)=>{var r=typeof t.width=="number"?t.width:lp;return{width:r,height:e.height}},ZM=oe(Vr,_l,uH),cge=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},dge=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},pge=oe(Zo,Vr,sge,O_,P_,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=uH(t,s);i==null&&(i=cge(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}),fge=oe(Xo,Vr,lge,O_,P_,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=uge(t,s);i==null&&(i=dge(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}),mge=(e,t)=>{var r=_l(e,t);if(r!=null)return pge(e,r.orientation,r.mirror)},cH=oe([Vr,_l,mge,(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}}}),gge=(e,t)=>{var r=Cl(e,t);if(r!=null)return fge(e,r.orientation,r.mirror)},dH=oe([Vr,Cl,gge,(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}}}),JM=oe(Vr,Cl,(e,t)=>{var r=typeof t.width=="number"?t.width:lp;return{width:r,height:e.height}}),QM=(e,t,r)=>{switch(t){case"xAxis":return ZM(e,r).width;case"yAxis":return JM(e,r).height;default:return}},RM=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=ha(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&iO(u))return l}},e5=oe([Wt,Nx,jn,_n],RM),t5=oe([Wt,Eme,Eu,T_,e5,XM,Hg,qM,_n],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=ha(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}}}),hge=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=ha(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?rn(a[0]-a[1])*2*m:m;var g=d||o;return g?g.map((b,h)=>{var y=i?i.indexOf(b):b,x=n.map(y);return Pt(x)?{index:h,coordinate:x+m,value:b,offset:m}:null}).filter(Po):u&&s?s.map((b,h)=>{var y=n.map(b);return Pt(y)?{coordinate:y+m,value:b,index:h,offset:m}:null}).filter(Po):n.ticks?n.ticks(p).map((b,h)=>{var y=n.map(b);return Pt(y)?{coordinate:y+m,value:b,index:h,offset:m}:null}).filter(Po):n.domain().map((b,h)=>{var y=n.map(b);return Pt(y)?{coordinate:y+m,value:i?i[b]:b,index:h,offset:m}:null}).filter(Po)}},M_=oe([Wt,Dp,Eu,T_,qM,Hg,e5,XM,_n],hge),yge=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=ha(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?rn(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var p=r.map(c);return Pt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(Po):r.ticks?r.ticks(l).map((c,d)=>{var p=r.map(c);return Pt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(Po):r.domain().map((c,d)=>{var p=r.map(c);return Pt(p)?{coordinate:p+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(Po)}},ji=oe([Wt,Dp,T_,Hg,e5,XM,_n],yge),$i=oe(jn,T_,(e,t)=>{if(!(e==null||t==null))return C_(C_({},e),{},{scale:t})}),vge=oe([jn,Eu,HM,sH],Sx),xge=oe([vge],ex),R6e=oe((e,t,r)=>TM(e,r),xge,(e,t)=>{if(!(e==null||t==null))return C_(C_({},e),{},{scale:t})}),pH=oe([Wt,cg,dg],(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}}),bge=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},eBe=oe([bge],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,n5=e=>e.options.validateTooltipEventTypes;function o5(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Zc(e,t){var r=r5(e),n=n5(e);return o5(t,r,n)}function fH(e){return Fe(t=>Zc(t,e))}var I_=(e,t)=>{var r,n=Number(t);if(!(Go(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var mH=e=>e.tooltip.settings;var Nu={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},wge={itemInteraction:{click:Nu,hover:Nu},axisInteraction:{click:Nu,hover:Nu},keyboardInteraction:Nu,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}},gH=Tr({name:"tooltip",initialState:wge,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(rr(t.payload))},prepare:zr()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ia(e).tooltipItemPayloads.indexOf(rr(n));a>-1&&(e.tooltipItemPayloads[a]=rr(o))},prepare:zr()},removeTooltipEntrySettings:{reducer(e,t){var r=ia(e).tooltipItemPayloads.indexOf(rr(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:zr()},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}}}),ds=gH.actions,hH=ds.addTooltipEntrySettings,yH=ds.replaceTooltipEntrySettings,vH=ds.removeTooltipEntrySettings,xH=ds.setTooltipSettingsState,D_=ds.setActiveMouseOverItemIndex,bH=ds.mouseLeaveItem,j_=ds.mouseLeaveChart,wH=ds.setActiveClickItemIndex,$_=ds.setMouseOverAxisIndex,SH=ds.setMouseClickAxisIndex,qg=ds.setSyncInteraction,Dx=ds.setKeyboardInteraction;var kH=gH.reducer;function _H(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 L_(e){for(var t=1;t{if(t==null)return Nu;var o=Cge(e,t,r);if(o==null)return Nu;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(Age(o)){if(a)return L_(L_({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return L_(L_({},Nu),{},{coordinate:o.coordinate})};function Ege(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 Nge(e,t){var r=Ege(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 Tge(e,t,r){if(r==null||t==null)return!0;var n=Zt(e,t);return n==null||!Pi(r)?!0:Nge(n,r)}var Jc=(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||Tge(u,r,n)?String(l):null};var B_=(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 F_=(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 W_=e=>e.options.tooltipPayloadSearcher;var Tu=e=>e.tooltip;function CH(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 AH(e){for(var t=1;te(t)}function EH(e){if(typeof e=="string")return e}function $ge(e){if(!(e==null||typeof e!="object")){var t="name"in e?Ige(e.name):void 0,r="unit"in e?Dge(e.unit):void 0,n="dataKey"in e?jge(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?EH(e.color):void 0,i="fill"in e?EH(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function Lge(e,t){return e??t}var U_=(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,g=f.dataDefinedOnItem,b=f.settings,h=Lge(g,s),y=Array.isArray(h)?XS(h,u,c):h,x=(m=b?.dataKey)!==null&&m!==void 0?m:n,v=b?.nameKey,k;if(n&&Array.isArray(y)&&!Array.isArray(y[0])&&i==="axis"?(k=jw(y,n,o),k==null&&(k=a(y,t,l,v))):k=a(y,t,l,v),Array.isArray(k))k.forEach(w=>{var _,A,C=$ge(w),O=C?.name,D=C?.dataKey,H=C?.payload,$=AH(AH({},b),{},{name:O,unit:C?.unit,color:(_=C?.color)!==null&&_!==void 0?_:b?.color,fill:(A=C?.fill)!==null&&A!==void 0?A:b?.fill});p.push(xP({tooltipEntrySettings:$,dataKey:D,payload:H,value:Zt(H,D),name:O==null?void 0:String(O)}))});else{var S;p.push(xP({tooltipEntrySettings:b,dataKey:x,payload:k,value:Zt(k,x),name:(S=Zt(k,v))!==null&&S!==void 0?S:b?.name}))}return p},d)}};var a5=oe([fo,OM,Sg],k_),zge=oe([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Bge=oe([uo,Hc],_x),Qc=oe([zge,fo,Bge],Cx,{memoizeOptions:{resultEqualityCheck:kg}}),Fge=oe([Qc],e=>e.filter(xp)),NH=oe([Qc],Ax,{memoizeOptions:{resultEqualityCheck:kg}}),Wge=oe([Qc],e=>e.some(t=>!t.data)),Ou=oe([NH,ni],Ex),Uge=oe([Fge,ni,fo],Bk),i5=oe([Ou,fo,Qc,ni,Wge,NH],DM),TH=oe([fo],A_),Hge=oe([fo],e=>e.allowDataOverflow),OH=oe([TH,Hge],Ak),qge=oe([Qc],e=>e.filter(xp)),Kge=oe([Uge,qge,Fc,Pk],jM),Vge=oe([Kge,ni,uo,OH],$M),Gge=oe([Qc],PM),Yge=oe([Ou,fo,Gge,Ug,uo,dW],Tx,{memoizeOptions:{resultEqualityCheck:bp}}),Xge=oe([LM,uo,Hc],jp),Zge=oe([Xge,uo],FM),Jge=oe([zM,uo,Hc],jp),Qge=oe([Jge,uo],WM),Rge=oe([BM,uo,Hc],jp),ehe=oe([Rge,uo],UM),the=oe([Zge,ehe,Qge],kx),rhe=oe([fo,TH,OH,Vge,Yge,the,Wt,uo],Ox),Rc=oe([fo,Wt,Ou,i5,Fc,uo,rhe],Px),nhe=oe([Rc,fo,a5],Mx),ohe=oe([fo,Rc,nhe,uo],Ix),PH=e=>{var t=uo(e),r=Hc(e),n=!1;return Hg(e,t,r,n)},s5=oe([fo,PH],hp),ahe=oe([fo,a5,ohe,s5],Sx),l5=oe([ahe],ex),ihe=oe([Wt,i5,fo,uo],RM),she=oe([Wt,i5,fo,uo],YM),lhe=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=ha(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?rn(o[0]-o[1])*2*d:d,u&&i?i.map((p,f)=>{var m=n.map(p);return Pt(m)?{coordinate:m+d,value:p,index:f,offset:d}:null}).filter(Po):n.domain().map((p,f)=>{var m=n.map(p);return Pt(m)?{coordinate:m+d,value:a?a[p]:p,index:f,offset:d}:null}).filter(Po)}}},ai=oe([Wt,fo,a5,l5,PH,ihe,she,uo],lhe),u5=oe([r5,n5,mH],(e,t,r)=>o5(r.shared,e,t)),MH=e=>e.tooltip.settings.trigger,c5=e=>e.tooltip.settings.defaultIndex,jx=oe([Tu,u5,MH,c5],z_),ps=oe([jx,Ou,Au,Rc],Jc),H_=oe([ai,ps],I_),Kg=oe([jx],e=>{if(e)return e.dataKey}),q_=oe([jx],e=>{if(e)return e.graphicalItemId}),IH=oe([Tu,u5,MH,c5],F_),uhe=oe([Xo,Zo,Wt,Vr,ai,c5,IH],B_),d5=oe([jx,uhe],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),p5=oe([jx],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),che=oe([IH,ps,ni,Au,H_,W_,u5],U_),DH=oe([che],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function jH(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 $H(e){for(var t=1;tFe(fo),LH=()=>{var e=mhe(),t=Fe(ai),r=Fe(l5);return!e||!r?is(void 0,t):is($H($H({},e),{},{scale:r}),t)};function zH(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 Vg(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}},FH=(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 Vg(Vg(Vg({},n),dn(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return Vg(Vg(Vg({},n),dn(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 WH(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 f5=(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,P)=>[e,e+s,e-s].some(M=>(P?M>=Z:M>Z)&&M<=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,y=void 0;if(!(g==null||b==null||h==null))if(rn(b-g)!==rn(h-b)){var x=[];if(rn(h-b)===rn(o[1]-o[0])){y=h;var v=b+o[1]-o[0];x[0]=Math.min(v,(v+g)/2),x[1]=Math.max(v,(v+g)/2)}else{y=g;var k=h+o[1]-o[0];x[0]=Math.min(b,(k+b)/2),x[1]=Math.max(b,(k+b)/2)}var S=[Math.min(b,(y+b)/2),Math.max(b,(y+b)/2)];if(l(S[0],S[1],!1)||l(x[0],x[1],!0)){var w;return(w=r[u])===null||w===void 0?void 0:w.index}}else{var _=Math.min(g,h),A=Math.max(g,h);if(l((_+b)/2,(A+b)/2,!1)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}}else if(t)for(var O=0;O(D.coordinate+$.coordinate)/2||O>0&&O(D.coordinate+$.coordinate)/2&&e<=(D.coordinate+H.coordinate)/2)return D.index}}return-1};var K_=()=>Fe(Sg),m5=(e,t)=>t,UH=(e,t,r)=>r,g5=(e,t,r,n)=>n,HH=oe(ai,e=>vu(e,t=>t.coordinate)),h5=oe([Tu,m5,UH,g5],z_),y5=oe([h5,Ou,Au,Rc],Jc),qH=(e,t,r)=>{if(t!=null){var n=Tu(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},KH=oe([Tu,m5,UH,g5],F_),$x=oe([Xo,Zo,Wt,Vr,ai,g5,KH],B_),VH=oe([h5,$x],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),v5=oe([ai,y5],I_),GH=oe([KH,y5,ni,Au,v5,W_,m5],U_),YH=oe([h5,y5],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),vhe=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&WH(e,i)){var s=w9(e,t),l=f5(s,a,o,r,n),u=BH(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},xhe=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=JF(e,r);if(s){var l=S9(s,t),u=f5(l,i,a,n,o),c=FH(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},XH=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?vhe(e,t,n,o,a,i,s):xhe(e,t,r,n,o,a,i)};var Gg=X(J()),aq=X(vy());var ZH=oe(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}}),JH=oe(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(pr)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:NW}});function QH(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 RH(e){for(var t=1;tRH(RH({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),khe)},Che=new Set(Object.values(pr));function Ahe(e){return Che.has(e)}var eq=Tr({name:"zIndex",initialState:_he,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:zr()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!Ahe(r)&&delete e.zIndexMap[r])},prepare:zr()},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=rr(o):e.zIndexMap[n].element=rr(o):e.zIndexMap[n]={consumers:0,element:a?void 0:rr(o),panoramaElement:a?rr(o):void 0}},prepare:zr()},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:zr()}}}),V_=eq.actions,tq=V_.registerZIndexPortal,G_=V_.unregisterZIndexPortal,rq=V_.registerZIndexPortalElement,nq=V_.unregisterZIndexPortalElement;var oq=eq.reducer;function pn(e){var t=e.zIndex,r=e.children,n=L9(),o=n&&t!==void 0&&t!==0,a=Or(),i=(0,Gg.useRef)(void 0),s=(0,Gg.useRef)(new Set),l=Lt(),u=Fe(d=>ZH(d,t,a));if((0,Gg.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(f=>{l(G_({zIndex:f}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(tq({zIndex:t})),s.current.add(t)),u){i.current=u;var p=s.current;p.forEach(f=>{f!==t&&(l(G_({zIndex:f})),p.delete(f))})}},[l,t,o,u]),(0,Gg.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(p=>{l(G_({zIndex:p}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,aq.createPortal)(r,c):null}function x5(){return x5=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,Z_.useContext)(b5);var zx=X(J());var dq=X(cq(),1);var pq=dq.default;var Xg=new pq;var Q_="recharts.syncEvent.tooltip",S5="recharts.syncEvent.brush";var ed=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!Go(r))return e[r]}},Dhe={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},fq=Tr({name:"options",initialState:Dhe,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),mq=fq.reducer,gq=fq.actions.createEventEmitter;function hq(e){return e.tooltip.syncInteraction}var jhe={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},yq=Tr({name:"chartData",initialState:jhe,reducers:{setChartData(e,t){if(e.chartData=rr(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)}}}),k5=yq.actions,_5=k5.setChartData,vq=k5.setDataStartEndIndexes,$he=k5.setComputedData;var xq=yq.reducer;var Lhe=["x","y"];function bq(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 Zg(e){for(var t=1;tl.rootProps.className);(0,zx.useEffect)(()=>{if(e==null)return ja;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(qg({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,g=f.y,b=Whe(f,Lhe),h=c.payload.sourceViewBox,y=h.x,x=h.y,v=h.width,k=h.height,S=Zg(Zg({},b),{},{x:i.x+(v?(m-y)/v:0)*i.width,y:i.y+(k?(g-x)/k:0)*i.height});r(Zg(Zg({},c),{},{payload:Zg(Zg({},c.payload),{},{coordinate:S})}))}else r(c);return}if(o!=null){var w;if(typeof n=="function"){var _={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},A=n(o,_);w=o[A]}else n==="value"&&(w=o.find(P=>String(P.value)===c.payload.label));var C=c.payload.coordinate;if(C==null||i==null){r(qg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(w==null){r(qg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var O=C.x,D=C.y,H=Math.min(O,i.x+i.width),$=Math.min(D,i.y+i.height),Z={x:a==="horizontal"?w.coordinate:H,y:a==="horizontal"?$:w.coordinate},N=qg({active:c.payload.active,coordinate:Z,dataKey:c.payload.dataKey,index:String(w.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return Xg.on(Q_,l),()=>{Xg.off(Q_,l)}},[s,r,t,e,n,o,a,i])}function qhe(){var e=Fe(Mk),t=Fe(Ik),r=Lt();(0,zx.useEffect)(()=>{if(e==null)return ja;var n=(o,a,i)=>{t!==i&&e===o&&r(vq(a))};return Xg.on(S5,n),()=>{Xg.off(S5,n)}},[r,t,e])}function wq(){var e=Lt();(0,zx.useEffect)(()=>{e(gq())},[e]),Hhe(),qhe()}function Sq(e,t,r,n,o,a){var i=Fe(m=>qH(m,e,t)),s=Fe(q_),l=Fe(Ik),u=Fe(Mk),c=Fe(UP),d=Fe(hq),p=d?.sourceViewBox!=null,f=dp();(0,zx.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=qg({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});Xg.emit(Q_,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function kq(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 _q(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{w(xH({shared:y,trigger:x,axisId:S,active:o,defaultIndex:_}))},[w,y,x,S,o,_]);var A=dp(),C=uk(),O=fH(y),D=(t=Fe(ue=>YH(ue,O,x,_)))!==null&&t!==void 0?t:{},H=D.activeIndex,$=D.isActive,Z=Fe(ue=>GH(ue,O,x,_)),N=Fe(ue=>v5(ue,O,x,_)),P=Fe(ue=>VH(ue,O,x,_)),M=Z,I=lq(),j=(r=o??$)!==null&&r!==void 0?r:!1,T=SS([M,j]),q=Yhe(T,2),G=q[0],L=q[1],Y=O==="axis"?N:void 0;Sq(O,x,P,Y,H,j);var K=k??I;if(K==null||A==null||O==null)return null;var pe=M??Aq;j||(pe=Aq),u&&pe.length&&(pe=hS(pe.filter(ue=>ue.value!=null&&(ue.hide!==!0||n.includeHidden)),p,Rhe));var De=pe.length>0,se=_q(_q({},n),{},{payload:pe,label:Y,active:j,activeIndex:H,coordinate:P,accessibilityLayer:C}),xe=fs.createElement(lF,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:j,coordinate:P,hasPayload:De,offset:d,position:f,reverseDirection:m,useTranslate3d:g,viewBox:A,wrapperStyle:b,lastBoundingBox:G,innerRef:L,hasPortalFromProps:!!k},eye(l,se));return fs.createElement(fs.Fragment,null,(0,Nq.createPortal)(xe,K),j&&fs.createElement(sq,{cursor:h,tooltipEventType:O,coordinate:P,payload:pe,index:H}))}var Pu=e=>null;Pu.displayName="Cell";var A5=X(J()),rC=X(J());function rye(e,t,r){return(t=nye(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function nye(e){var t=oye(e,"string");return typeof t=="symbol"?t:t+""}function oye(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 R_=class{constructor(t){rye(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 Tq(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 aye(e){for(var t=1;t{try{var r=document.getElementById(Pq);r||(r=document.createElement("span"),r.setAttribute("id",Pq),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,cye,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},$p=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||ss.isSsr)return{width:0,height:0};if(!Iq.enableCache)return Mq(t,r);var n=dye(t,r),o=Oq.get(n);if(o)return o;var a=Mq(t,r);return Oq.set(n,a),a};var zq;function eC(e,t){return gye(e)||mye(e,t)||fye(e,t)||pye()}function pye(){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 Dq(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)?Dq(e,t):void 0}}function Dq(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=[];dr(t)||(r?o=t.toString().split(""):o=t.toString().split(Kq));var a=o.map(s=>({word:s,width:$p(s,n).width})),i=r?0:$p("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function nC(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function Gq(e){return dr(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var Yq=(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),jye="\u2026",Hq=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=Vq({breakAll:r,style:n,children:l+jye});if(!u)return[!1,[]];var c=Yq(u.wordsWithComputedWidth,a,i,s),d=c.length>o||Xq(c).width>Number(a);return[d,c]},$ye=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=Be(a),c=String(i),d=Yq(t,n,r,o);if(!u||o)return d;var p=d.length>a||Xq(d).width>Number(n);if(!p)return d;for(var f=0,m=c.length-1,g=0,b;f<=m&&g<=c.length-1;){var h=Math.floor((f+m)/2),y=h-1,x=Hq(c,y,l,s,a,n,r,o),v=Wq(x,2),k=v[0],S=v[1],w=Hq(c,h,l,s,a,n,r,o),_=Wq(w,1),A=_[0];if(!k&&!A&&(f=h+1),k&&A&&(m=h-1),!k&&A){b=S;break}g++}return b||d},qq=e=>{var t=dr(e)?[]:e.toString().split(Kq);return[{words:t,width:void 0}]},Lye=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!ss.isSsr){var s,l,u=Vq({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return qq(n);return $ye({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return qq(n)},Zq="#808080",zye={angle:0,breakAll:!1,capHeight:"0.71em",fill:Zq,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},Lp=(0,rC.forwardRef)((e,t)=>{var r=ur(e,zye),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=Fq(r,Nye),p=(0,rC.useMemo)(()=>Lye({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,g=d.angle,b=d.className,h=d.breakAll,y=Fq(d,Tye);if(!Da(n)||!Da(o)||p.length===0)return null;var x=Number(n)+(Be(f)?f:0),v=Number(o)+(Be(m)?m:0);if(!Pt(x)||!Pt(v))return null;var k;switch(c){case"start":k=tC("calc(".concat(i,")"));break;case"middle":k=tC("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:k=tC("calc(".concat(p.length-1," * -").concat(a,")"));break}var S=[],w=p[0];if(l&&w!=null){var _=w.width,A=d.width;S.push("scale(".concat(Be(A)&&Be(_)?A/_:1,")"))}return g&&S.push("rotate(".concat(g,", ").concat(x,", ").concat(v,")")),S.length&&(y.transform=S.join(" ")),A5.createElement("text",C5({},kn(y),{ref:t,x,y:v,className:bt("recharts-text",b),textAnchor:u,fill:s.includes("url")?Zq:s}),p.map((C,O)=>{var D=C.words.join(h?"":" ");return A5.createElement("tspan",{x,dy:O===0?k:a,key:"".concat(D,"-").concat(O)},D)}))});Lp.displayName="Text";var ii=X(J()),Io=X(J());var Bye=["labelRef"],Fye=["content"];function Jq(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 t=e.x,r=e.y,n=e.upperWidth,o=e.lowerWidth,a=e.width,i=e.height,s=e.children,l=(0,Io.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return ii.createElement(Rq.Provider,{value:l},s)},tK=()=>{var e=(0,Io.useContext)(Rq),t=dp();return e||(t?Ev(t):void 0)},rK=(0,Io.createContext)(null),nK=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,Io.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return ii.createElement(rK.Provider,{value:u},l)},Kye=()=>{var e=(0,Io.useContext)(rK),t=Fe(zk);return e||t},Vye=e=>{var t=e.value,r=e.formatter,n=dr(e.children)?t:e.children;return typeof r=="function"?r(n):n},Bp=e=>e!=null&&typeof e=="function",Gye=(e,t)=>{var r=rn(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Yye=(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,g=Gye(d,p),b=g>=0?1:-1,h,y;switch(t){case"insideStart":h=d+b*a,y=f;break;case"insideEnd":h=p-b*a,y=!f;break;case"end":h=p+b*a,y=f;break;default:throw new Error("Unsupported position ".concat(t))}y=g<=0?y:!y;var x=dn(s,l,m,h),v=dn(s,l,m,h+(y?1:-1)*359),k="M".concat(x.x,",").concat(x.y,` + A`,",",",0,0,",",",",","Z"])),O.x,O.y,a,a,+(c<0),C.x,C.y,n,n,+(H>180),+(c>0),S.x,S.y,a,a,+(c<0),w.x,w.y)}else v+=Po(dW||(dW=mp(["L",",","Z"])),t,r);return v},epe={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Nk=e=>{var t=ur(e,epe),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?g=Rde({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):g=fW({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),pW.createElement("path",WP({},kn(t),{className:p,d:g}))};function mW(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(Zw(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=dn(n,o,a,s),u=dn(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return Ak(t)}}function gW(e){return AS(e)?NaN:Number(e)}function Tk(e){return e?(e=gW(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function Ok(e,t,r){r&&typeof r!="number"&&Bv(e,t,r)&&(t=r=void 0),e=Tk(e),t===void 0?(t=e,e=0):t=Tk(t),r=r===void 0?ee.chartData,gp=oe([oi],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),hp=(e,t,r,n)=>n?gp(e):oi(e),Pk=(e,t,r)=>r?gp(e):oi(e),hW=oe([hp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),yW=oe([gp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),vW=oe([oi],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function UP(e,t){return ope(e)||npe(e,t)||rpe(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 rpe(e,t){if(e){if(typeof e=="string")return xW(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)?xW(e,t):void 0}}function xW(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=rx(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},GP=(e,t,r)=>{if(e.lte(0))return new Cr.default(0);var n=KP(e.toNumber()),o=new Cr.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new Cr.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new Cr.default(l.toNumber()):new Cr.default(Math.ceil(l.toNumber()))},CW=(e,t,r)=>{var n;if(e.lte(0))return new Cr.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new Cr.default(a).abs().log(10).toNumber()),s=new Cr.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 Cr.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,p=new Cr.default(d).mul(s);return t?p:new Cr.default(Math.ceil(p.toNumber()))},upe=(e,t,r)=>{var n=new Cr.default(1),o=new Cr.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new Cr.default(10).pow(KP(e)-1),o=new Cr.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new Cr.default(Math.floor(e)))}else e===0?o=new Cr.default(Math.floor((t-1)/2)):r||(o=new Cr.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]:GP;if(!Number.isFinite((r-t)/(n-1)))return{step:new Cr.default(0),tickMin:new Cr.default(0),tickMax:new Cr.default(0)};var s=i(new Cr.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new Cr.default(0):(l=new Cr.default(t).add(r).div(2),l=l.sub(new Cr.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new Cr.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?AW(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 Cr.default(u).mul(s)),tickMax:l.add(new Cr.default(c).mul(s))})};var Dk=function(t){var r=rx(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=_W([n,o]),c=rx(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 upe(d,a,i);var m=s==="snap125"?CW:GP,g=AW(d,p,l,i,0,m),b=g.step,h=g.tickMin,y=g.tickMax,x=VP(h,y.add(new Cr.default(.1).mul(b)),b);return n>o?x.reverse():x},$k=function(t,r){var n=rx(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=_W([o,a]),u=rx(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"?CW:GP,f=Math.max(r,2),m=p(new Cr.default(d).sub(c).div(f-1),i,0),g=[...VP(new Cr.default(c),new Cr.default(d),m),d];if(i===!1){g=g.map(h=>Math.round(h));var b=g.length-1;b>0&&g[b]===g[b-1]&&(g=g.slice(0,b))}return o>a?g.reverse():g};var YP=e=>e.rootProps.maxBarSize,EW=e=>e.rootProps.barGap,jk=e=>e.rootProps.barCategoryGap,NW=e=>e.rootProps.barSize,Wc=e=>e.rootProps.stackOffset,Lk=e=>e.rootProps.reverseStackOrder,kg=e=>e.options.chartName,zk=e=>e.rootProps.syncId,XP=e=>e.rootProps.syncMethod,Bk=e=>e.options.eventEmitter,TW=e=>e.rootProps.baseValue;var pr={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 Uc={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:pr.axis};var Bs={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:pr.axis};var yp=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function vp(e,t,r){if(r!=="auto")return r;if(e!=null)return ya(e,t)?"category":"number"}function OW(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 Fk(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},Wk=oe([fpe,ck],(e,t)=>{var r;if(e!=null)return e;var n=(r=vp(t,"angleAxis",PW.type))!==null&&r!==void 0?r:"category";return Fk(Fk({},PW),{},{type:n})}),mpe=(e,t)=>e.polarAxis.radiusAxis[t],Uk=oe([mpe,ck],(e,t)=>{var r;if(e!=null)return e;var n=(r=vp(t,"radiusAxis",MW.type))!==null&&r!==void 0?r:"category";return Fk(Fk({},MW),{},{type:n})}),Hk=e=>e.polarOptions,ZP=oe([Zo,Jo,Vr],Ck),IW=oe([Hk,ZP],(e,t)=>{if(e!=null)return Un(e.innerRadius,t,0)}),DW=oe([Hk,ZP],(e,t)=>{if(e!=null)return Un(e.outerRadius,t,t*.8)}),gpe=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},JP=oe([Hk],gpe),rje=oe([Wk,JP],yp),QP=oe([ZP,IW,DW],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),nje=oe([Uk,QP],yp),qk=oe([Wt,Hk,IW,DW,Zo,Jo],(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:Un(i,o,o/2),cy:Un(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var _n=(e,t)=>t;var xp=(e,t,r)=>r;function Hc(e){return e?.id}function Kk(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=Hc(l);c.forEach((p,f)=>{var m=i==null||a?f:String(Zt(p,i,null)),g=Zt(p,l.dataKey,0),b;s.has(m)?b=s.get(m):b={},Object.assign(b,{[d]:g}),s.set(m,b)})}}),Array.from(s.values())}function bp(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var wp=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function _g(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function $W(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 qc=e=>e.tooltip.settings.axisId;function nx(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 Vk=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!Mi(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 _x={};Zre(_x,{scaleBand:()=>sx,scaleDiverging:()=>E_,scaleDivergingLog:()=>PM,scaleDivergingPow:()=>N_,scaleDivergingSqrt:()=>nH,scaleDivergingSymlog:()=>MM,scaleIdentity:()=>d_,scaleImplicit:()=>Rk,scaleLinear:()=>c_,scaleLog:()=>p_,scaleOrdinal:()=>Eg,scalePoint:()=>UW,scalePow:()=>vx,scaleQuantile:()=>g_,scaleQuantize:()=>h_,scaleRadial:()=>m_,scaleSequential:()=>k_,scaleSequentialLog:()=>TM,scaleSequentialPow:()=>__,scaleSequentialQuantile:()=>C_,scaleSequentialSqrt:()=>rH,scaleSequentialSymlog:()=>OM,scaleSqrt:()=>_U,scaleSymlog:()=>f_,scaleThreshold:()=>y_,scaleTime:()=>EM,scaleUtc:()=>NM,tickFormat:()=>fx});function Ba(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function RP(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Sp(e){let t,r,n;e.length!==2?(t=Ba,r=(s,l)=>Ba(e(s),l),n=(s,l)=>e(s)-l):(t=e===Ba||e===RP?e:hpe,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 hpe(){return 0}function ox(e){return e===null?NaN:+e}function*jW(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 LW=Sp(Ba),zW=LW.right,ype=LW.left,vpe=Sp(ox).center,Fs=zW;var Cg=class extends Map{constructor(t,r=wpe){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(BW(this,t))}has(t){return super.has(BW(this,t))}set(t,r){return super.set(xpe(this,t),r)}delete(t){return super.delete(bpe(this,t))}};function BW({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function xpe({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function bpe({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function wpe(e){return e!==null&&typeof e=="object"?e.valueOf():e}function FW(e=Ba){if(e===Ba)return eM;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 eM(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Spe=Math.sqrt(50),kpe=Math.sqrt(10),_pe=Math.sqrt(2);function Gk(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>=Spe?10:a>=kpe?5:a>=_pe?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 Xk(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 Zk(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?eM:FW(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));Zk(e,t,f,m,o)}let a=e[t],i=r,s=n;for(ix(e,r,t),o(e[n],a)>0&&ix(e,r,n);i0;)--s}o(e[r],a)===0?ix(e,r,s):(++s,ix(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function ix(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function Jk(e,t,r){if(e=Float64Array.from(jW(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Xk(e);if(t>=1)return Yk(e);var n,o=(n-1)*t,a=Math.floor(o),i=Yk(Zk(e,a).subarray(0,a+1)),s=Xk(e.subarray(a+1));return i+(s-i)*(o-a)}}function tM(e,t,r=ox){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 Qk(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?t_(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?t_(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=Ape.exec(e))?new ai(t[1],t[2],t[3],1):(t=Epe.exec(e))?new ai(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Npe.exec(e))?t_(t[1],t[2],t[3],t[4]):(t=Tpe.exec(e))?t_(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Ope.exec(e))?XW(t[1],t[2]/100,t[3]/100,1):(t=Ppe.exec(e))?XW(t[1],t[2]/100,t[3]/100,t[4]):HW.hasOwnProperty(e)?VW(HW[e]):e==="transparent"?new ai(NaN,NaN,NaN,0):null}function VW(e){return new ai(e>>16&255,e>>8&255,e&255,1)}function t_(e,t,r,n){return n<=0&&(e=t=r=NaN),new ai(e,t,r,n)}function Dpe(e){return e instanceof cx||(e=Kc(e)),e?(e=e.rgb(),new ai(e.r,e.g,e.b,e.opacity)):new ai}function Tg(e,t,r,n){return arguments.length===1?Dpe(e):new ai(e,t,r,n??1)}function ai(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}e_(ai,Tg,rM(cx,{brighter(e){return e=e==null?n_:Math.pow(n_,e),new ai(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?lx:Math.pow(lx,e),new ai(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ai(Cp(this.r),Cp(this.g),Cp(this.b),o_(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:GW,formatHex:GW,formatHex8:$pe,formatRgb:YW,toString:YW}));function GW(){return`#${_p(this.r)}${_p(this.g)}${_p(this.b)}`}function $pe(){return`#${_p(this.r)}${_p(this.g)}${_p(this.b)}${_p((isNaN(this.opacity)?1:this.opacity)*255)}`}function YW(){let e=o_(this.opacity);return`${e===1?"rgb(":"rgba("}${Cp(this.r)}, ${Cp(this.g)}, ${Cp(this.b)}${e===1?")":`, ${e})`}`}function o_(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Cp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function _p(e){return e=Cp(e),(e<16?"0":"")+e.toString(16)}function XW(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ws(e,t,r,n)}function JW(e){if(e instanceof Ws)return new Ws(e.h,e.s,e.l,e.opacity);if(e instanceof cx||(e=Kc(e)),!e)return new Ws;if(e instanceof Ws)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 Ws(i,s,l,e.opacity)}function QW(e,t,r,n){return arguments.length===1?JW(e):new Ws(e,t,r,n??1)}function Ws(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}e_(Ws,QW,rM(cx,{brighter(e){return e=e==null?n_:Math.pow(n_,e),new Ws(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?lx:Math.pow(lx,e),new Ws(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 ai(nM(e>=240?e-240:e+120,o,n),nM(e,o,n),nM(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new Ws(ZW(this.h),r_(this.s),r_(this.l),o_(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=o_(this.opacity);return`${e===1?"hsl(":"hsla("}${ZW(this.h)}, ${r_(this.s)*100}%, ${r_(this.l)*100}%${e===1?")":`, ${e})`}`}}));function ZW(e){return e=(e||0)%360,e<0?e+360:e}function r_(e){return Math.max(0,Math.min(1,e||0))}function nM(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 oM(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 RW(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 jpe(e,t){return function(r){return e+r*t}}function Lpe(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 tU(e){return(e=+e)==1?a_:function(t,r){return r-t?Lpe(t,r,e):dx(isNaN(t)?r:t)}}function a_(e,t){var r=t-e;return r?jpe(e,r):dx(isNaN(e)?t:e)}var aM=(function e(t){var r=tU(t);function n(o,a){var i=r((o=Tg(o)).r,(a=Tg(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=a_(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 rU(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:Vc(n,o)})),r=iM.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Wpe(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?Upe:Wpe,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),Vc)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Gc),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=Ap,c()},d.clamp=function(p){return arguments.length?(i=p?!0:Io,c()):i!==Io},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 Np(){return Ep()(Io,Io)}function cU(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Tp(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 Sl(e){return e=Tp(Math.abs(e)),e?e[1]:NaN}function dU(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 pU(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var Hpe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function kl(e){if(!(t=Hpe.exec(e)))throw new Error("invalid format: "+e);var t;return new s_({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]})}kl.prototype=s_.prototype;function s_(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+""}s_.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 fU(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 px;function mU(e,t){var r=Tp(e,t);if(!r)return px=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(px=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")+Tp(e,Math.max(0,t+a-1))[0]}function cM(e,t){var r=Tp(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 dM={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:cU,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)=>cM(e*100,t),r:cM,s:mU,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function pM(e){return e}var gU=Array.prototype.map,hU=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function yU(e){var t=e.grouping===void 0||e.thousands===void 0?pM:dU(gU.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?pM:pU(gU.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=kl(d);var f=d.fill,m=d.align,g=d.sign,b=d.symbol,h=d.zero,y=d.width,x=d.comma,v=d.precision,k=d.trim,S=d.type;S==="n"?(x=!0,S="g"):dM[S]||(v===void 0&&(v=12),k=!0,S="g"),(h||f==="0"&&m==="=")&&(h=!0,f="0",m="=");var w=(p&&p.prefix!==void 0?p.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():""),_=(b==="$"?n:/[%p]/.test(S)?i:"")+(p&&p.suffix!==void 0?p.suffix:""),A=dM[S],C=/[defgprs%]/.test(S);v=v===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function O(D){var H=w,j=_,Z,N,P;if(S==="c")j=A(D)+j,D="";else{D=+D;var M=D<0||1/D<0;if(D=isNaN(D)?l:A(Math.abs(D),v),k&&(D=fU(D)),M&&+D==0&&g!=="+"&&(M=!1),H=(M?g==="("?g:s:g==="-"||g==="("?"":g)+H,j=(S==="s"&&!isNaN(D)&&px!==void 0?hU[8+px/3]:"")+j+(M&&g==="("?")":""),C){for(Z=-1,N=D.length;++ZP||P>57){j=(P===46?o+D.slice(Z+1):D.slice(Z))+j,D=D.slice(0,Z);break}}}x&&!h&&(D=t(D,1/0));var I=H.length+D.length+j.length,$=I>1)+H+D+j+$.slice(I);break;default:D=$+H+D+j;break}return a(D)}return O.toString=function(){return d+""},O}function c(d,p){var f=Math.max(-8,Math.min(8,Math.floor(Sl(p)/3)))*3,m=Math.pow(10,-f),g=u((d=kl(d),d.type="f",d),{suffix:hU[8+f/3]});return function(b){return g(m*b)}}return{format:u,formatPrefix:c}}var l_,Og,u_;fM({thousands:",",grouping:[3],currency:["$",""]});function fM(e){return l_=yU(e),Og=l_.format,u_=l_.formatPrefix,l_}function mM(e){return Math.max(0,-Sl(Math.abs(e)))}function gM(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Sl(t)/3)))*3-Sl(Math.abs(e)))}function hM(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Sl(t)-Sl(e))+1}function fx(e,t,r,n){var o=Ag(e,t,r),a;switch(n=kl(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=gM(o,i))&&(n.precision=a),u_(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=hM(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=mM(o))&&(n.precision=a-(n.type==="%")*2);break}}return Og(n)}function Fa(e){var t=e.domain;return e.ticks=function(r){var n=t();return kp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return fx(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=ax(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 c_(){var e=Np();return e.copy=function(){return wl(e,c_())},$n.apply(e,arguments),Fa(e)}function d_(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,Gc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return d_(e).unknown(t)},e=arguments.length?Array.from(e,Gc):[0,1],Fa(r)}function mx(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 Ype(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 bU(e){return(t,r)=>-e(-t,r)}function gx(e){let t=e(vU,xU),r=t.domain,n=10,o,a;function i(){return o=Ype(n),a=Gpe(n),r()[0]<0?(o=bU(o),a=bU(a),e(qpe,Kpe)):e(vU,xU),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(g)}}else for(;p<=f;++p)for(m=n-1;m>=1;--m)if(g=p>0?m/a(-p):m*a(p),!(gc)break;h.push(g)}h.length*2{if(s==null&&(s=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=kl(l)).precision==null&&(l.trim=!0),l=Og(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(mx(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function p_(){let e=gx(Ep()).domain([1,10]);return e.copy=()=>wl(e,p_()).base(e.base()),$n.apply(e,arguments),e}function wU(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function SU(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function hx(e){var t=1,r=e(wU(t),SU(t));return r.constant=function(n){return arguments.length?e(wU(t=+n),SU(t)):t},Fa(r)}function f_(){var e=hx(Ep());return e.copy=function(){return wl(e,f_()).constant(e.constant())},$n.apply(e,arguments)}function kU(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Xpe(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Zpe(e){return e<0?-e*e:e*e}function yx(e){var t=e(Io,Io),r=1;function n(){return r===1?e(Io,Io):r===.5?e(Xpe,Zpe):e(kU(r),kU(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Fa(t)}function vx(){var e=yx(Ep());return e.copy=function(){return wl(e,vx()).exponent(e.exponent())},$n.apply(e,arguments),e}function _U(){return vx.apply(null,arguments).exponent(.5)}function CU(e){return Math.sign(e)*e*e}function Jpe(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function m_(){var e=Np(),t=[0,1],r=!1,n;function o(a){var i=Jpe(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(CU(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,Gc)).map(CU)),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 m_(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},$n.apply(o,arguments),Fa(o)}function g_(){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 h_().domain([e,t]).range(o).unknown(a)},$n.apply(Fa(i),arguments)}function y_(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Fs(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 y_().domain(e).range(t).unknown(r)},$n.apply(o,arguments)}var yM=new Date,vM=new Date;function nn(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(unn(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)=>(yM.setTime(+a),vM.setTime(+i),e(yM),e(vM),Math.floor(r(yM,vM))),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 xx=nn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);xx.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?nn(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):xx);var $8e=xx.range;var ds=nn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),AU=ds.range;var Pg=nn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),Qpe=Pg.range,Mg=nn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),Rpe=Mg.range;var Ig=nn(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()),efe=Ig.range,Dg=nn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),tfe=Dg.range;var ku=nn(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),rfe=ku.range,Mp=nn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),nfe=Mp.range,v_=nn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),ofe=v_.range;function Ip(e){return nn(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 _u=Ip(0),$g=Ip(1),NU=Ip(2),TU=Ip(3),Yc=Ip(4),OU=Ip(5),PU=Ip(6),MU=_u.range,afe=$g.range,ife=NU.range,sfe=TU.range,lfe=Yc.range,ufe=OU.range,cfe=PU.range;function Dp(e){return nn(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 Cu=Dp(0),jg=Dp(1),IU=Dp(2),DU=Dp(3),Xc=Dp(4),$U=Dp(5),jU=Dp(6),LU=Cu.range,dfe=jg.range,pfe=IU.range,ffe=DU.range,mfe=Xc.range,gfe=$U.range,hfe=jU.range;var Lg=nn(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()),yfe=Lg.range,zg=nn(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()),vfe=zg.range;var Di=nn(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());Di.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:nn(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 xfe=Di.range,$i=nn(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());$i.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:nn(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 bfe=$i.range;function BU(e,t,r,n,o,a){let i=[[ds,1,1e3],[ds,5,5*1e3],[ds,15,15*1e3],[ds,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(Ag(u/31536e6,c/31536e6,d));if(f===0)return xx.every(Math.max(Ag(u,c,d),1));let[m,g]=i[p/i[f-1][2]53)return null;"w"in R||(R.w=1),"Z"in R?(Ce=_M(wx(R.y,0,1)),z=Ce.getUTCDay(),Ce=z>4||z===0?jg.ceil(Ce):jg(Ce),Ce=Mp.offset(Ce,(R.V-1)*7),R.y=Ce.getUTCFullYear(),R.m=Ce.getUTCMonth(),R.d=Ce.getUTCDate()+(R.w+6)%7):(Ce=kM(wx(R.y,0,1)),z=Ce.getDay(),Ce=z>4||z===0?$g.ceil(Ce):$g(Ce),Ce=ku.offset(Ce,(R.V-1)*7),R.y=Ce.getFullYear(),R.m=Ce.getMonth(),R.d=Ce.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),z="Z"in R?_M(wx(R.y,0,1)).getUTCDay():kM(wx(R.y,0,1)).getDay(),R.m=0,R.d="W"in R?(R.w+6)%7+R.W*7-(z+5)%7:R.w+R.U*7-(z+6)%7);return"Z"in R?(R.H+=R.Z/100|0,R.M+=R.Z%100,_M(R)):kM(R)}}function _(se,be,ue,R){for(var we=0,Ce=be.length,z=ue.length,ee,ae;we=z)return-1;if(ee=be.charCodeAt(we++),ee===37){if(ee=be.charAt(we++),ae=k[ee in FU?be.charAt(we++):ee],!ae||(R=ae(se,ue,R))<0)return-1}else if(ee!=ue.charCodeAt(R++))return-1}return R}function A(se,be,ue){var R=u.exec(be.slice(ue));return R?(se.p=c.get(R[0].toLowerCase()),ue+R[0].length):-1}function C(se,be,ue){var R=f.exec(be.slice(ue));return R?(se.w=m.get(R[0].toLowerCase()),ue+R[0].length):-1}function O(se,be,ue){var R=d.exec(be.slice(ue));return R?(se.w=p.get(R[0].toLowerCase()),ue+R[0].length):-1}function D(se,be,ue){var R=h.exec(be.slice(ue));return R?(se.m=y.get(R[0].toLowerCase()),ue+R[0].length):-1}function H(se,be,ue){var R=g.exec(be.slice(ue));return R?(se.m=b.get(R[0].toLowerCase()),ue+R[0].length):-1}function j(se,be,ue){return _(se,t,be,ue)}function Z(se,be,ue){return _(se,r,be,ue)}function N(se,be,ue){return _(se,n,be,ue)}function P(se){return i[se.getDay()]}function M(se){return a[se.getDay()]}function I(se){return l[se.getMonth()]}function $(se){return s[se.getMonth()]}function T(se){return o[+(se.getHours()>=12)]}function q(se){return 1+~~(se.getMonth()/3)}function G(se){return i[se.getUTCDay()]}function L(se){return a[se.getUTCDay()]}function Y(se){return l[se.getUTCMonth()]}function K(se){return s[se.getUTCMonth()]}function pe(se){return o[+(se.getUTCHours()>=12)]}function De(se){return 1+~~(se.getUTCMonth()/3)}return{format:function(se){var be=S(se+="",x);return be.toString=function(){return se},be},parse:function(se){var be=w(se+="",!1);return be.toString=function(){return se},be},utcFormat:function(se){var be=S(se+="",v);return be.toString=function(){return se},be},utcParse:function(se){var be=w(se+="",!0);return be.toString=function(){return se},be}}}var FU={"-":"",_:" ",0:"0"},Qo=/^\s*\d+/,Sfe=/^%/,kfe=/[\\^$*+?|[\]().{}]/g;function Pr(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function Cfe(e,t,r){var n=Qo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Afe(e,t,r){var n=Qo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Efe(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Nfe(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Tfe(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function WU(e,t,r){var n=Qo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function UU(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Ofe(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 Pfe(e,t,r){var n=Qo.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Mfe(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function HU(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Ife(e,t,r){var n=Qo.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function qU(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Dfe(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function $fe(e,t,r){var n=Qo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function jfe(e,t,r){var n=Qo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Lfe(e,t,r){var n=Qo.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function zfe(e,t,r){var n=Sfe.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Bfe(e,t,r){var n=Qo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Ffe(e,t,r){var n=Qo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function KU(e,t){return Pr(e.getDate(),t,2)}function Wfe(e,t){return Pr(e.getHours(),t,2)}function Ufe(e,t){return Pr(e.getHours()%12||12,t,2)}function Hfe(e,t){return Pr(1+ku.count(Di(e),e),t,3)}function ZU(e,t){return Pr(e.getMilliseconds(),t,3)}function qfe(e,t){return ZU(e,t)+"000"}function Kfe(e,t){return Pr(e.getMonth()+1,t,2)}function Vfe(e,t){return Pr(e.getMinutes(),t,2)}function Gfe(e,t){return Pr(e.getSeconds(),t,2)}function Yfe(e){var t=e.getDay();return t===0?7:t}function Xfe(e,t){return Pr(_u.count(Di(e)-1,e),t,2)}function JU(e){var t=e.getDay();return t>=4||t===0?Yc(e):Yc.ceil(e)}function Zfe(e,t){return e=JU(e),Pr(Yc.count(Di(e),e)+(Di(e).getDay()===4),t,2)}function Jfe(e){return e.getDay()}function Qfe(e,t){return Pr($g.count(Di(e)-1,e),t,2)}function Rfe(e,t){return Pr(e.getFullYear()%100,t,2)}function eme(e,t){return e=JU(e),Pr(e.getFullYear()%100,t,2)}function tme(e,t){return Pr(e.getFullYear()%1e4,t,4)}function rme(e,t){var r=e.getDay();return e=r>=4||r===0?Yc(e):Yc.ceil(e),Pr(e.getFullYear()%1e4,t,4)}function nme(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Pr(t/60|0,"0",2)+Pr(t%60,"0",2)}function VU(e,t){return Pr(e.getUTCDate(),t,2)}function ome(e,t){return Pr(e.getUTCHours(),t,2)}function ame(e,t){return Pr(e.getUTCHours()%12||12,t,2)}function ime(e,t){return Pr(1+Mp.count($i(e),e),t,3)}function QU(e,t){return Pr(e.getUTCMilliseconds(),t,3)}function sme(e,t){return QU(e,t)+"000"}function lme(e,t){return Pr(e.getUTCMonth()+1,t,2)}function ume(e,t){return Pr(e.getUTCMinutes(),t,2)}function cme(e,t){return Pr(e.getUTCSeconds(),t,2)}function dme(e){var t=e.getUTCDay();return t===0?7:t}function pme(e,t){return Pr(Cu.count($i(e)-1,e),t,2)}function RU(e){var t=e.getUTCDay();return t>=4||t===0?Xc(e):Xc.ceil(e)}function fme(e,t){return e=RU(e),Pr(Xc.count($i(e),e)+($i(e).getUTCDay()===4),t,2)}function mme(e){return e.getUTCDay()}function gme(e,t){return Pr(jg.count($i(e)-1,e),t,2)}function hme(e,t){return Pr(e.getUTCFullYear()%100,t,2)}function yme(e,t){return e=RU(e),Pr(e.getUTCFullYear()%100,t,2)}function vme(e,t){return Pr(e.getUTCFullYear()%1e4,t,4)}function xme(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Xc(e):Xc.ceil(e),Pr(e.getUTCFullYear()%1e4,t,4)}function bme(){return"+0000"}function GU(){return"%"}function YU(e){return+e}function XU(e){return Math.floor(+e/1e3)}var Bg,x_,eH,b_,tH;AM({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 AM(e){return Bg=CM(e),x_=Bg.format,eH=Bg.parse,b_=Bg.utcFormat,tH=Bg.utcParse,Bg}function wme(e){return new Date(e)}function Sme(e){return e instanceof Date?+e:+new Date(+e)}function w_(e,t,r,n,o,a,i,s,l,u){var c=Np(),d=c.invert,p=c.domain,f=u(".%L"),m=u(":%S"),g=u("%I:%M"),b=u("%I %p"),h=u("%a %d"),y=u("%b %d"),x=u("%B"),v=u("%Y");function k(S){return(l(S)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>Jk(e,a/n))},r.copy=function(){return C_(t).domain(e)},cs.apply(r,arguments)}function A_(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=Io,c,d=!1,p;function f(g){return isNaN(g=+g)?p:(g=.5+((g=+c(g))-a)*(n*g{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 Cme(n)?n:"point"}};function Ame(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function O_(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=Ame(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 aH(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):O_(e,void 0)}function iH(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 P_(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],Cl=(e,t)=>{var r=DM(e,t);return r??po},fo={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:IM,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:up},$M=(e,t)=>e.cartesianAxis.yAxis[t],Al=(e,t)=>{var r=$M(e,t);return r??fo},Dme={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:""},jM=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??Dme},jn=(e,t,r)=>{switch(t){case"xAxis":return Cl(e,r);case"yAxis":return Al(e,r);case"zAxis":return jM(e,r);case"angleAxis":return Wk(e,r);case"radiusAxis":return Uk(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},$me=(e,t,r)=>{switch(t){case"xAxis":return Cl(e,r);case"yAxis":return Al(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},$p=(e,t,r)=>{switch(t){case"xAxis":return Cl(e,r);case"yAxis":return Al(e,r);case"angleAxis":return Wk(e,r);case"radiusAxis":return Uk(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},LM=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function Ex(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 Zc=e=>e.graphicalItems.cartesianItems,jme=oe([_n,xp],Ex),Nx=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),Wg=oe([Zc,jn,jme],Nx,{memoizeOptions:{resultEqualityCheck:_g}}),cH=oe([Wg],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(bp)),zM=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),Lme=oe([Wg],zM),Tx=e=>e.map(t=>t.data).filter(Boolean).flat(1),zme=oe([Wg],e=>e.some(t=>!t.data)),dH=oe([Wg],Tx,{memoizeOptions:{resultEqualityCheck:_g}}),Ox=(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)},BM=oe([dH,hp],Ox),FM=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:Zt(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:Zt(o,n)}))):e.map(n=>({value:n})),WM=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=FM(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),p=d.map(f=>({value:Zt(f,t.dataKey)})).filter(f=>f.value!=null);return[...p,...c]}return c},Px=oe([BM,jn,Wg,hp,zme,dH],WM);function Fg(e){if(ja(e)||e instanceof Date){var t=Number(e);if(Pt(t))return t}}function lH(e){if(Array.isArray(e)){var t=[Fg(e[0]),Fg(e[1])];return Mi(t)?t:void 0}var r=Fg(e);if(r!=null)return[r,r]}function Us(e){return e.map(Fg).filter(Mo)}function Bme(e,t){var r=Fg(e),n=Fg(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var Fme=oe([Px],e=>e?.map(t=>t.value).sort(Bme));function pH(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function Wme(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=Us(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:Us(r.flatMap(a=>{var i=Zt(e,a.dataKey),s,l;if(Array.isArray(i)){var u=uH(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!Pt(s)||!Pt(l)))return[n-s,n+l]}))}var mo=e=>{var t=co(e),r=qc(e);return $p(e,t,r)},Eu=oe([mo],e=>e?.dataKey),Ume=oe([cH,hp,mo],Kk),UM=(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=uH(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Hc);return[l,{stackedData:C9(e,d,r),graphicalItems:c}]}))},Ug=oe([Ume,cH,Wc,Lk],UM),HM=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return E9(e,o,a)},Hme=oe([jn],e=>e.allowDataOverflow),M_=e=>{var t;if(e==null||!("domain"in e))return IM;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=Us(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:IM},I_=oe([jn],M_),D_=oe([I_,Hme],Mk),qme=oe([Ug,oi,_n,D_],HM,{memoizeOptions:{resultEqualityCheck:wp}}),Hg=e=>e.errorBars,Kme=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>pH(r,n)),Ax=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=>pH(a,f));d.forEach(f=>{var m,g=Zt(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),b=Wme(f,g,p);if(b.length>=2){var h=Math.min(...b),y=Math.max(...b);(s==null||hl)&&(l=y)}var x=lH(g);x!=null&&(s=s==null?x[0]:Math.min(s,x[0]),l=l==null?x[1]:Math.max(l,x[1]))})}),r?.dataKey!=null&&n.length===0&&t.forEach(u=>{var c=lH(Zt(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]},Vme=oe([BM,jn,Lme,Hg,_n,hW],Mx,{memoizeOptions:{resultEqualityCheck:wp}});function Gme(e){var t=e.value;if(ja(t)||t instanceof Date)return t}var Yme=(e,t,r)=>{var n=e.map(Gme).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&fO(n))?Ok(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},qM=e=>e.referenceElements.dots,jp=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),Xme=oe([qM,_n,xp],jp),KM=e=>e.referenceElements.areas,Zme=oe([KM,_n,xp],jp),VM=e=>e.referenceElements.lines,Jme=oe([VM,_n,xp],jp),GM=(e,t)=>{if(e!=null){var r=Us(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Qme=oe(Xme,_n,GM),YM=(e,t)=>{if(e!=null){var r=Us(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)]}},Rme=oe([Zme,_n],YM);function ege(e){var t;if(e.x!=null)return Us([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:Us(r)}function tge(e){var t;if(e.y!=null)return Us([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:Us(r)}var XM=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?ege(n):tge(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},rge=oe([Jme,_n],XM),nge=oe(Qme,rge,Rme,(e,t,r)=>Ax(e,r,t)),Ix=(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?Ax(n,a,o):Ax(a,o),d=wW(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},oge=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=Us(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},age=oe([jn],oge,{memoizeOptions:{resultEqualityCheck:wp}}),ige=oe([jn,I_,D_,qme,Vme,nge,Wt,_n,age],Ix,{memoizeOptions:{resultEqualityCheck:wp}}),sge=[0,1],Dx=(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=ya(t,a);if(u&&s==null){var c;return Ok(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?Yme(n,e,u):o==="expand"&&!u?sge:i}},ZM=oe([jn,Wt,BM,Px,Wc,_n,ige],Dx),Nu=oe([jn,LM,kg],T_),$x=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=M_(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&Mi(e)){if(a)return Dk(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return $k(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&Mi(e))return Dk(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&Mi(e))return $k(e,t.tickCount,t.allowDecimals,"adaptive")}}},JM=oe([ZM,$p,Nu],$x),jx=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&Mi(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},lge=oe([jn,ZM,JM,_n],jx),uge=oe(Px,jn,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(Us(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(!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=Un(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),cge=(e,t,r)=>{var n=Cl(e,t);return n==null||typeof n.padding!="string"?0:fH(e,"xAxis",t,r,n.padding)},dge=(e,t,r)=>{var n=Al(e,t);return n==null||typeof n.padding!="string"?0:fH(e,"yAxis",t,r,n.padding)},pge=oe(Cl,cge,(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}}),fge=oe(Al,dge,(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}}),QM=oe([Vr,pge,cp,mg,(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]}),RM=oe([Vr,Wt,fge,cp,mg,(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]}),qg=(e,t,r,n)=>{var o;switch(t){case"xAxis":return QM(e,r,n);case"yAxis":return RM(e,r,n);case"zAxis":return(o=jM(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return JP(e);case"radiusAxis":return QP(e,r);default:return}},mH=oe([jn,qg],yp),mge=oe([Nu,lge],Vk),e5=oe([jn,Nu,mge,mH],Cx),t5=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=ya(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},r5=oe([Wt,Px,$p,_n],t5),$_=oe([e5],nx),oBe=oe([e5],aH),aBe=oe([e5,Fme],O_),iBe=oe([Wg,Hg,_n],Kme);function gH(e,t){return e.idt.id?1:0}var j_=(e,t)=>t,L_=(e,t,r)=>r,gge=oe(dg,j_,L_,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(gH)),hge=oe(pg,j_,L_,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(gH)),hH=(e,t)=>{var r=typeof t.height=="number"?t.height:Vv;return{width:e.width,height:r}},yge=(e,t)=>{var r=typeof t.width=="number"?t.width:up;return{width:r,height:e.height}},n5=oe(Vr,Cl,hH),vge=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},xge=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},bge=oe(Jo,Vr,gge,j_,L_,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=hH(t,s);i==null&&(i=vge(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}),wge=oe(Zo,Vr,hge,j_,L_,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=yge(t,s);i==null&&(i=xge(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}),Sge=(e,t)=>{var r=Cl(e,t);if(r!=null)return bge(e,r.orientation,r.mirror)},yH=oe([Vr,Cl,Sge,(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}}}),kge=(e,t)=>{var r=Al(e,t);if(r!=null)return wge(e,r.orientation,r.mirror)},vH=oe([Vr,Al,kge,(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}}}),o5=oe(Vr,Al,(e,t)=>{var r=typeof t.width=="number"?t.width:up;return{width:r,height:e.height}}),a5=(e,t,r)=>{switch(t){case"xAxis":return n5(e,r).width;case"yAxis":return o5(e,r).height;default:return}},i5=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=ya(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&fO(u))return l}},s5=oe([Wt,Px,jn,_n],i5),l5=oe([Wt,$me,Nu,$_,s5,r5,qg,JM,_n],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=ya(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}}}),_ge=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=ya(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?rn(a[0]-a[1])*2*m:m;var g=d||o;return g?g.map((b,h)=>{var y=i?i.indexOf(b):b,x=n.map(y);return Pt(x)?{index:h,coordinate:x+m,value:b,offset:m}:null}).filter(Mo):u&&s?s.map((b,h)=>{var y=n.map(b);return Pt(y)?{coordinate:y+m,value:b,index:h,offset:m}:null}).filter(Mo):n.ticks?n.ticks(p).map((b,h)=>{var y=n.map(b);return Pt(y)?{coordinate:y+m,value:b,index:h,offset:m}:null}).filter(Mo):n.domain().map((b,h)=>{var y=n.map(b);return Pt(y)?{coordinate:y+m,value:i?i[b]:b,index:h,offset:m}:null}).filter(Mo)}},z_=oe([Wt,$p,Nu,$_,JM,qg,s5,r5,_n],_ge),Cge=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=ya(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?rn(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var p=r.map(c);return Pt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(Mo):r.ticks?r.ticks(l).map((c,d)=>{var p=r.map(c);return Pt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(Mo):r.domain().map((c,d)=>{var p=r.map(c);return Pt(p)?{coordinate:p+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(Mo)}},ji=oe([Wt,$p,$_,qg,s5,r5,_n],Cge),Li=oe(jn,$_,(e,t)=>{if(!(e==null||t==null))return P_(P_({},e),{},{scale:t})}),Age=oe([jn,Nu,ZM,mH],Cx),Ege=oe([Age],nx),sBe=oe((e,t,r)=>jM(e,r),Ege,(e,t)=>{if(!(e==null||t==null))return P_(P_({},e),{},{scale:t})}),xH=oe([Wt,dg,pg],(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}}),Nge=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},lBe=oe([Nge],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,c5=e=>e.options.validateTooltipEventTypes;function d5(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Jc(e,t){var r=u5(e),n=c5(e);return d5(t,r,n)}function bH(e){return Fe(t=>Jc(t,e))}var B_=(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 wH=e=>e.tooltip.settings;var Tu={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},Tge={itemInteraction:{click:Tu,hover:Tu},axisInteraction:{click:Tu,hover:Tu},keyboardInteraction:Tu,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}},SH=Tr({name:"tooltip",initialState:Tge,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(rr(t.payload))},prepare:zr()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=sa(e).tooltipItemPayloads.indexOf(rr(n));a>-1&&(e.tooltipItemPayloads[a]=rr(o))},prepare:zr()},removeTooltipEntrySettings:{reducer(e,t){var r=sa(e).tooltipItemPayloads.indexOf(rr(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:zr()},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}}}),ps=SH.actions,kH=ps.addTooltipEntrySettings,_H=ps.replaceTooltipEntrySettings,CH=ps.removeTooltipEntrySettings,AH=ps.setTooltipSettingsState,F_=ps.setActiveMouseOverItemIndex,EH=ps.mouseLeaveItem,W_=ps.mouseLeaveChart,NH=ps.setActiveClickItemIndex,U_=ps.setMouseOverAxisIndex,TH=ps.setMouseClickAxisIndex,Kg=ps.setSyncInteraction,Lx=ps.setKeyboardInteraction;var OH=SH.reducer;function PH(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 H_(e){for(var t=1;t{if(t==null)return Tu;var o=Ige(e,t,r);if(o==null)return Tu;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(Dge(o)){if(a)return H_(H_({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return H_(H_({},Tu),{},{coordinate:o.coordinate})};function $ge(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 jge(e,t){var r=$ge(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 Lge(e,t,r){if(r==null||t==null)return!0;var n=Zt(e,t);return n==null||!Mi(r)?!0:jge(n,r)}var Qc=(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||Lge(u,r,n)?String(l):null};var K_=(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 V_=(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 G_=e=>e.options.tooltipPayloadSearcher;var Ou=e=>e.tooltip;function MH(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 IH(e){for(var t=1;te(t)}function DH(e){if(typeof e=="string")return e}function qge(e){if(!(e==null||typeof e!="object")){var t="name"in e?Wge(e.name):void 0,r="unit"in e?Uge(e.unit):void 0,n="dataKey"in e?Hge(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?DH(e.color):void 0,i="fill"in e?DH(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function Kge(e,t){return e??t}var Y_=(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,g=f.dataDefinedOnItem,b=f.settings,h=Kge(g,s),y=Array.isArray(h)?tk(h,u,c):h,x=(m=b?.dataKey)!==null&&m!==void 0?m:n,v=b?.nameKey,k;if(n&&Array.isArray(y)&&!Array.isArray(y[0])&&i==="axis"?(k=Ww(y,n,o),k==null&&(k=a(y,t,l,v))):k=a(y,t,l,v),Array.isArray(k))k.forEach(w=>{var _,A,C=qge(w),O=C?.name,D=C?.dataKey,H=C?.payload,j=IH(IH({},b),{},{name:O,unit:C?.unit,color:(_=C?.color)!==null&&_!==void 0?_:b?.color,fill:(A=C?.fill)!==null&&A!==void 0?A:b?.fill});p.push(AP({tooltipEntrySettings:j,dataKey:D,payload:H,value:Zt(H,D),name:O==null?void 0:String(O)}))});else{var S;p.push(AP({tooltipEntrySettings:b,dataKey:x,payload:k,value:Zt(k,x),name:(S=Zt(k,v))!==null&&S!==void 0?S:b?.name}))}return p},d)}};var p5=oe([mo,LM,kg],T_),Vge=oe([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Gge=oe([co,qc],Ex),Rc=oe([Vge,mo,Gge],Nx,{memoizeOptions:{resultEqualityCheck:_g}}),Yge=oe([Rc],e=>e.filter(bp)),$H=oe([Rc],Tx,{memoizeOptions:{resultEqualityCheck:_g}}),Xge=oe([Rc],e=>e.some(t=>!t.data)),Pu=oe([$H,oi],Ox),Zge=oe([Yge,oi,mo],Kk),f5=oe([Pu,mo,Rc,oi,Xge,$H],WM),jH=oe([mo],M_),Jge=oe([mo],e=>e.allowDataOverflow),LH=oe([jH,Jge],Mk),Qge=oe([Rc],e=>e.filter(bp)),Rge=oe([Zge,Qge,Wc,Lk],UM),ehe=oe([Rge,oi,co,LH],HM),the=oe([Rc],zM),rhe=oe([Pu,mo,the,Hg,co,vW],Mx,{memoizeOptions:{resultEqualityCheck:wp}}),nhe=oe([qM,co,qc],jp),ohe=oe([nhe,co],GM),ahe=oe([KM,co,qc],jp),ihe=oe([ahe,co],YM),she=oe([VM,co,qc],jp),lhe=oe([she,co],XM),uhe=oe([ohe,lhe,ihe],Ax),che=oe([mo,jH,LH,ehe,rhe,uhe,Wt,co],Ix),ed=oe([mo,Wt,Pu,f5,Wc,co,che],Dx),dhe=oe([ed,mo,p5],$x),phe=oe([mo,ed,dhe,co],jx),zH=e=>{var t=co(e),r=qc(e),n=!1;return qg(e,t,r,n)},m5=oe([mo,zH],yp),fhe=oe([mo,p5,phe,m5],Cx),g5=oe([fhe],nx),mhe=oe([Wt,f5,mo,co],i5),ghe=oe([Wt,f5,mo,co],t5),hhe=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=ya(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?rn(o[0]-o[1])*2*d:d,u&&i?i.map((p,f)=>{var m=n.map(p);return Pt(m)?{coordinate:m+d,value:p,index:f,offset:d}:null}).filter(Mo):n.domain().map((p,f)=>{var m=n.map(p);return Pt(m)?{coordinate:m+d,value:a?a[p]:p,index:f,offset:d}:null}).filter(Mo)}}},ii=oe([Wt,mo,p5,g5,zH,mhe,ghe,co],hhe),h5=oe([u5,c5,wH],(e,t,r)=>d5(r.shared,e,t)),BH=e=>e.tooltip.settings.trigger,y5=e=>e.tooltip.settings.defaultIndex,zx=oe([Ou,h5,BH,y5],q_),fs=oe([zx,Pu,Eu,ed],Qc),X_=oe([ii,fs],B_),Vg=oe([zx],e=>{if(e)return e.dataKey}),Z_=oe([zx],e=>{if(e)return e.graphicalItemId}),FH=oe([Ou,h5,BH,y5],V_),yhe=oe([Zo,Jo,Wt,Vr,ii,y5,FH],K_),v5=oe([zx,yhe],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),x5=oe([zx],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),vhe=oe([FH,fs,oi,Eu,X_,G_,h5],Y_),WH=oe([vhe],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function UH(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 HH(e){for(var t=1;tFe(mo),qH=()=>{var e=She(),t=Fe(ii),r=Fe(g5);return!e||!r?ss(void 0,t):ss(HH(HH({},e),{},{scale:r}),t)};function KH(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 Gg(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}},GH=(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 Gg(Gg(Gg({},n),dn(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return Gg(Gg(Gg({},n),dn(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 YH(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 b5=(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,P)=>[e,e+s,e-s].some(M=>(P?M>=Z:M>Z)&&M<=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,y=void 0;if(!(g==null||b==null||h==null))if(rn(b-g)!==rn(h-b)){var x=[];if(rn(h-b)===rn(o[1]-o[0])){y=h;var v=b+o[1]-o[0];x[0]=Math.min(v,(v+g)/2),x[1]=Math.max(v,(v+g)/2)}else{y=g;var k=h+o[1]-o[0];x[0]=Math.min(b,(k+b)/2),x[1]=Math.max(b,(k+b)/2)}var S=[Math.min(b,(y+b)/2),Math.max(b,(y+b)/2)];if(l(S[0],S[1],!1)||l(x[0],x[1],!0)){var w;return(w=r[u])===null||w===void 0?void 0:w.index}}else{var _=Math.min(g,h),A=Math.max(g,h);if(l((_+b)/2,(A+b)/2,!1)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}}else if(t)for(var O=0;O(D.coordinate+j.coordinate)/2||O>0&&O(D.coordinate+j.coordinate)/2&&e<=(D.coordinate+H.coordinate)/2)return D.index}}return-1};var J_=()=>Fe(kg),w5=(e,t)=>t,XH=(e,t,r)=>r,S5=(e,t,r,n)=>n,ZH=oe(ii,e=>xu(e,t=>t.coordinate)),k5=oe([Ou,w5,XH,S5],q_),_5=oe([k5,Pu,Eu,ed],Qc),JH=(e,t,r)=>{if(t!=null){var n=Ou(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},QH=oe([Ou,w5,XH,S5],V_),Bx=oe([Zo,Jo,Wt,Vr,ii,S5,QH],K_),RH=oe([k5,Bx],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),C5=oe([ii,_5],B_),eq=oe([QH,_5,oi,Eu,C5,G_,w5],Y_),tq=oe([k5,_5],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),Ahe=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&YH(e,i)){var s=N9(e,t),l=b5(s,a,o,r,n),u=VH(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},Ehe=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=oW(e,r);if(s){var l=T9(s,t),u=b5(l,i,a,n,o),c=GH(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},rq=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?Ahe(e,t,n,o,a,i,s):Ehe(e,t,r,n,o,a,i)};var Yg=X(J()),pq=X(wy());var nq=oe(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}}),oq=oe(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(pr)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:$W}});function aq(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 iq(e){for(var t=1;tiq(iq({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),Phe)},Ihe=new Set(Object.values(pr));function Dhe(e){return Ihe.has(e)}var sq=Tr({name:"zIndex",initialState:Mhe,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:zr()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!Dhe(r)&&delete e.zIndexMap[r])},prepare:zr()},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=rr(o):e.zIndexMap[n].element=rr(o):e.zIndexMap[n]={consumers:0,element:a?void 0:rr(o),panoramaElement:a?rr(o):void 0}},prepare:zr()},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:zr()}}}),Q_=sq.actions,lq=Q_.registerZIndexPortal,R_=Q_.unregisterZIndexPortal,uq=Q_.registerZIndexPortalElement,cq=Q_.unregisterZIndexPortalElement;var dq=sq.reducer;function pn(e){var t=e.zIndex,r=e.children,n=q9(),o=n&&t!==void 0&&t!==0,a=Or(),i=(0,Yg.useRef)(void 0),s=(0,Yg.useRef)(new Set),l=Lt(),u=Fe(d=>nq(d,t,a));if((0,Yg.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(f=>{l(R_({zIndex:f}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(lq({zIndex:t})),s.current.add(t)),u){i.current=u;var p=s.current;p.forEach(f=>{f!==t&&(l(R_({zIndex:f})),p.delete(f))})}},[l,t,o,u]),(0,Yg.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(p=>{l(R_({zIndex:p}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,pq.createPortal)(r,c):null}function A5(){return A5=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,rC.useContext)(E5);var Wx=X(J());var vq=X(yq(),1);var xq=vq.default;var Zg=new xq;var oC="recharts.syncEvent.tooltip",T5="recharts.syncEvent.brush";var td=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!Yo(r))return e[r]}},Uhe={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},bq=Tr({name:"options",initialState:Uhe,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),wq=bq.reducer,Sq=bq.actions.createEventEmitter;function kq(e){return e.tooltip.syncInteraction}var Hhe={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},_q=Tr({name:"chartData",initialState:Hhe,reducers:{setChartData(e,t){if(e.chartData=rr(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)}}}),O5=_q.actions,P5=O5.setChartData,Cq=O5.setDataStartEndIndexes,qhe=O5.setComputedData;var Aq=_q.reducer;var Khe=["x","y"];function Eq(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 Jg(e){for(var t=1;tl.rootProps.className);(0,Wx.useEffect)(()=>{if(e==null)return La;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(Kg({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,g=f.y,b=Xhe(f,Khe),h=c.payload.sourceViewBox,y=h.x,x=h.y,v=h.width,k=h.height,S=Jg(Jg({},b),{},{x:i.x+(v?(m-y)/v:0)*i.width,y:i.y+(k?(g-x)/k:0)*i.height});r(Jg(Jg({},c),{},{payload:Jg(Jg({},c.payload),{},{coordinate:S})}))}else r(c);return}if(o!=null){var w;if(typeof n=="function"){var _={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},A=n(o,_);w=o[A]}else n==="value"&&(w=o.find(P=>String(P.value)===c.payload.label));var C=c.payload.coordinate;if(C==null||i==null){r(Kg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(w==null){r(Kg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var O=C.x,D=C.y,H=Math.min(O,i.x+i.width),j=Math.min(D,i.y+i.height),Z={x:a==="horizontal"?w.coordinate:H,y:a==="horizontal"?j:w.coordinate},N=Kg({active:c.payload.active,coordinate:Z,dataKey:c.payload.dataKey,index:String(w.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return Zg.on(oC,l),()=>{Zg.off(oC,l)}},[s,r,t,e,n,o,a,i])}function Qhe(){var e=Fe(zk),t=Fe(Bk),r=Lt();(0,Wx.useEffect)(()=>{if(e==null)return La;var n=(o,a,i)=>{t!==i&&e===o&&r(Cq(a))};return Zg.on(T5,n),()=>{Zg.off(T5,n)}},[r,t,e])}function Nq(){var e=Lt();(0,Wx.useEffect)(()=>{e(Sq())},[e]),Jhe(),Qhe()}function Tq(e,t,r,n,o,a){var i=Fe(m=>JH(m,e,t)),s=Fe(Z_),l=Fe(Bk),u=Fe(zk),c=Fe(XP),d=Fe(kq),p=d?.sourceViewBox!=null,f=pp();(0,Wx.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=Kg({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});Zg.emit(oC,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function Oq(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 Pq(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{w(AH({shared:y,trigger:x,axisId:S,active:o,defaultIndex:_}))},[w,y,x,S,o,_]);var A=pp(),C=gk(),O=bH(y),D=(t=Fe(ue=>tq(ue,O,x,_)))!==null&&t!==void 0?t:{},H=D.activeIndex,j=D.isActive,Z=Fe(ue=>eq(ue,O,x,_)),N=Fe(ue=>C5(ue,O,x,_)),P=Fe(ue=>RH(ue,O,x,_)),M=Z,I=gq(),$=(r=o??j)!==null&&r!==void 0?r:!1,T=NS([M,$]),q=rye(T,2),G=q[0],L=q[1],Y=O==="axis"?N:void 0;Tq(O,x,P,Y,H,$);var K=k??I;if(K==null||A==null||O==null)return null;var pe=M??Iq;$||(pe=Iq),u&&pe.length&&(pe=SS(pe.filter(ue=>ue.value!=null&&(ue.hide!==!0||n.includeHidden)),p,sye));var De=pe.length>0,se=Pq(Pq({},n),{},{payload:pe,label:Y,active:$,activeIndex:H,coordinate:P,accessibilityLayer:C}),be=ms.createElement(gF,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:$,coordinate:P,hasPayload:De,offset:d,position:f,reverseDirection:m,useTranslate3d:g,viewBox:A,wrapperStyle:b,lastBoundingBox:G,innerRef:L,hasPortalFromProps:!!k},lye(l,se));return ms.createElement(ms.Fragment,null,(0,$q.createPortal)(be,K),$&&ms.createElement(mq,{cursor:h,tooltipEventType:O,coordinate:P,payload:pe,index:H}))}var Mu=e=>null;Mu.displayName="Cell";var I5=X(J()),lC=X(J());function cye(e,t,r){return(t=dye(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dye(e){var t=pye(e,"string");return typeof t=="symbol"?t:t+""}function pye(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 aC=class{constructor(t){cye(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 jq(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 fye(e){for(var t=1;t{try{var r=document.getElementById(zq);r||(r=document.createElement("span"),r.setAttribute("id",zq),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,vye,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},Lp=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||ls.isSsr)return{width:0,height:0};if(!Fq.enableCache)return Bq(t,r);var n=xye(t,r),o=Lq.get(n);if(o)return o;var a=Bq(t,r);return Lq.set(n,a),a};var Kq;function iC(e,t){return kye(e)||Sye(e,t)||wye(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 wye(e,t){if(e){if(typeof e=="string")return Wq(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)?Wq(e,t):void 0}}function Wq(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=[];dr(t)||(r?o=t.toString().split(""):o=t.toString().split(Qq));var a=o.map(s=>({word:s,width:Lp(s,n).width})),i=r?0:Lp("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function uC(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function eK(e){return dr(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var tK=(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),Hye="\u2026",Zq=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=Rq({breakAll:r,style:n,children:l+Hye});if(!u)return[!1,[]];var c=tK(u.wordsWithComputedWidth,a,i,s),d=c.length>o||rK(c).width>Number(a);return[d,c]},qye=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=Be(a),c=String(i),d=tK(t,n,r,o);if(!u||o)return d;var p=d.length>a||rK(d).width>Number(n);if(!p)return d;for(var f=0,m=c.length-1,g=0,b;f<=m&&g<=c.length-1;){var h=Math.floor((f+m)/2),y=h-1,x=Zq(c,y,l,s,a,n,r,o),v=Yq(x,2),k=v[0],S=v[1],w=Zq(c,h,l,s,a,n,r,o),_=Yq(w,1),A=_[0];if(!k&&!A&&(f=h+1),k&&A&&(m=h-1),!k&&A){b=S;break}g++}return b||d},Jq=e=>{var t=dr(e)?[]:e.toString().split(Qq);return[{words:t,width:void 0}]},Kye=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!ls.isSsr){var s,l,u=Rq({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return Jq(n);return qye({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return Jq(n)},nK="#808080",Vye={angle:0,breakAll:!1,capHeight:"0.71em",fill:nK,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},zp=(0,lC.forwardRef)((e,t)=>{var r=ur(e,Vye),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=Gq(r,jye),p=(0,lC.useMemo)(()=>Kye({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,g=d.angle,b=d.className,h=d.breakAll,y=Gq(d,Lye);if(!ja(n)||!ja(o)||p.length===0)return null;var x=Number(n)+(Be(f)?f:0),v=Number(o)+(Be(m)?m:0);if(!Pt(x)||!Pt(v))return null;var k;switch(c){case"start":k=sC("calc(".concat(i,")"));break;case"middle":k=sC("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:k=sC("calc(".concat(p.length-1," * -").concat(a,")"));break}var S=[],w=p[0];if(l&&w!=null){var _=w.width,A=d.width;S.push("scale(".concat(Be(A)&&Be(_)?A/_:1,")"))}return g&&S.push("rotate(".concat(g,", ").concat(x,", ").concat(v,")")),S.length&&(y.transform=S.join(" ")),I5.createElement("text",M5({},kn(y),{ref:t,x,y:v,className:bt("recharts-text",b),textAnchor:u,fill:s.includes("url")?nK:s}),p.map((C,O)=>{var D=C.words.join(h?"":" ");return I5.createElement("tspan",{x,dy:O===0?k:a,key:"".concat(D,"-").concat(O)},D)}))});zp.displayName="Text";var si=X(J()),Do=X(J());var Gye=["labelRef"],Yye=["content"];function oK(e,t){if(e==null)return{};var r,n,o=Xye(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,Do.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return si.createElement(iK.Provider,{value:l},s)},lK=()=>{var e=(0,Do.useContext)(iK),t=pp();return e||(t?Ov(t):void 0)},uK=(0,Do.createContext)(null),cK=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,Do.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return si.createElement(uK.Provider,{value:u},l)},Rye=()=>{var e=(0,Do.useContext)(uK),t=Fe(qk);return e||t},eve=e=>{var t=e.value,r=e.formatter,n=dr(e.children)?t:e.children;return typeof r=="function"?r(n):n},Fp=e=>e!=null&&typeof e=="function",tve=(e,t)=>{var r=rn(t-e),n=Math.min(Math.abs(t-e),360);return r*n},rve=(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,g=tve(d,p),b=g>=0?1:-1,h,y;switch(t){case"insideStart":h=d+b*a,y=f;break;case"insideEnd":h=p-b*a,y=!f;break;case"end":h=p+b*a,y=f;break;default:throw new Error("Unsupported position ".concat(t))}y=g<=0?y:!y;var x=dn(s,l,m,h),v=dn(s,l,m,h+(y?1:-1)*359),k="M".concat(x.x,",").concat(x.y,` A`).concat(m,",").concat(m,",0,1,").concat(y?0:1,`, - `).concat(v.x,",").concat(v.y),S=dr(e.id)?mu("recharts-radial-line-"):e.id;return ii.createElement("text",Iu({},n,{dominantBaseline:"central",className:bt("recharts-radial-bar-label",i)}),ii.createElement("defs",null,ii.createElement("path",{id:S,d:k})),ii.createElement("textPath",{xlinkHref:"#".concat(S)},r))},Xye=(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=dn(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=dn(n,o,f,u),g=m.x,b=m.y;return{x:g,y:b,textAnchor:"middle",verticalAnchor:"middle"}},Qg=e=>e!=null&&"cx"in e&&Be(e.cx),Zye={angle:0,offset:5,zIndex:pr.label,position:"middle",textBreakAll:!1};function Jye(e){if(!Qg(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 Mu(e){var t,r,n=ur(e,Zye),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=Kye(),g=tK(),b=i==="center"?g:m??g,h,y,x;o==null?h=b:Qg(o)?h=o:h=Ev(o);var v=Jye(h);if(!h||dr(s)&&dr(l)&&!(0,Io.isValidElement)(u)&&typeof u!="function")return null;var k=Qg(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(Qg(h))k||(x=Xye(h,n.offset,n.position));else if(v){var S=$w({viewBox:v,position:i,offset:n.offset,parentViewBox:Qg(a)?void 0:a,clamp:!0});x=zp(zp({x:S.x,y:S.y,textAnchor:S.horizontalAnchor,verticalAnchor:S.verticalAnchor},S.width!==void 0?{width:S.width}:{}),S.height!==void 0?{height:S.height}:{})}var w=zp(zp(zp(zp({},((t=x)===null||t===void 0?void 0:t.x)!==void 0?{x:x.x}:{}),((r=x)===null||r===void 0?void 0:r.y)!==void 0?{y:x.y}:{}),n),{},{viewBox:h});if((0,Io.isValidElement)(u)){var _=w.labelRef,A=Jq(w,Bye);return(0,Io.cloneElement)(u,A)}if(typeof u=="function"){var C=w.content,O=Jq(w,Fye);if(y=(0,Io.createElement)(u,O),(0,Io.isValidElement)(y))return y}else y=Vye(n);var D=kn(n);return k&&Qg(h)?Yye(n,i,y,D,h):x==null?null:ii.createElement(pn,{zIndex:n.zIndex},ii.createElement(Lp,Iu({ref:f,className:bt("recharts-label",d)},D,x,{textAnchor:nC(D.textAnchor)?D.textAnchor:x.textAnchor,breakAll:p}),y))}Mu.displayName="Label";var Qye=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?ii.createElement(Mu,Iu({key:"label-implicit"},n)):Da(e)?ii.createElement(Mu,Iu({key:"label-implicit",value:e},n)):(0,Io.isValidElement)(e)?e.type===Mu?(0,Io.cloneElement)(e,zp({key:"label-implicit"},n)):ii.createElement(Mu,Iu({key:"label-implicit",content:e},n)):Bp(e)?ii.createElement(Mu,Iu({key:"label-implicit",content:e},n)):e&&typeof e=="object"?ii.createElement(Mu,Iu({},e,{key:"label-implicit"},n)):null};function oK(e){var t=e.label,r=e.labelRef,n=tK();return Qye(t,n,r)||null}var Du=X(J()),Rg=X(J());var Rye=["valueAccessor"],eve=["dataKey","clockWise","id","textBreakAll","zIndex"];function aC(){return aC=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(Gq(t))return t},iK=(0,Rg.createContext)(void 0),eh=iK.Provider,sK=(0,Rg.createContext)(void 0),lK=sK.Provider;function nve(){return(0,Rg.useContext)(iK)}function ove(){return(0,Rg.useContext)(sK)}function oC(e){var t=e.valueAccessor,r=t===void 0?rve:t,n=aK(e,Rye),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=aK(n,eve),c=nve(),d=ove(),p=c||d;return!p||!p.length?null:Du.createElement(pn,{zIndex:l??pr.label},Du.createElement(_r,{className:"recharts-label-list"},p.map((f,m)=>{var g,b=dr(o)?r(f,m):Zt(f.payload,o),h=dr(i)?{}:{id:"".concat(i,"-").concat(m)};return Du.createElement(Mu,aC({key:"label-".concat(m)},kn(f),u,h,{fill:(g=n.fill)!==null&&g!==void 0?g:f.fill,parentViewBox:f.parentViewBox,value:b,textBreakAll:s,viewBox:f.viewBox,index:m,zIndex:0}))})))}oC.displayName="LabelList";function nd(e){var t=e.label;return t?t===!0?Du.createElement(oC,{key:"labelList-implicit"}):Du.isValidElement(t)||Bp(t)?Du.createElement(oC,{key:"labelList-implicit",content:t}):typeof t=="object"?Du.createElement(oC,aC({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var uK=X(J());function E5(){return E5=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=bt("recharts-dot",o);return Be(t)&&Be(r)&&Be(n)?uK.createElement("circle",E5({},Sn(e),Rm(e),{className:a,cx:t,cy:r,r:n})):null};var N5=e=>e.graphicalItems.polarItems,ave=oe([_n,vp],_x),sC=oe([N5,jn,ave],Cx),ive=oe([sC],Ax),lC=oe([ive,mp],Ex),sve=oe([lC,jn,sC],IM),VFe=oe([lC,jn,sC],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=Zt(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:Zt(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),cK=()=>{},lve=oe([lC,jn,sC,Ug,_n,cW],Tx),uve=oe([jn,E_,N_,cK,lve,cK,Wt,_n],Ox),dK=oe([jn,Wt,lC,sve,Fc,_n,uve],Px),cve=oe([dK,Dp,Eu],Mx),dve=oe([jn,dK,cve,_n],Ix),GFe=oe([Eu,dve],Fk);var pve={radiusAxis:{},angleAxis:{}},pK=Tr({name:"polarAxis",initialState:pve,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=rr(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=rr(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),uC=pK.actions,JFe=uC.addRadiusAxis,QFe=uC.removeRadiusAxis,RFe=uC.addAngleAxis,eWe=uC.removeAngleAxis;var fK=pK.reducer;function cC(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Rt=X(J()),sh=X(J());function mK(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 gK(e){for(var t=1;tt,T5=oe([N5,hve],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),yve=[],O5=(e,t,r)=>r?.length===0?yve:r,hK=oe([mp,T5,O5],(e,t,r)=>{var n=e.chartData;if(t!=null){var o;if(t?.data!=null&&t.data.length>0?o=t.data:o=n,(!o||!o.length)&&r!=null&&(o=r.map(a=>gK(gK({},t.presentationProps),a.props))),o!=null)return o}}),yK=oe([hK,T5,O5],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=Zt(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:Ti(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),vK=oe([hK,T5,O5,Vr],(e,t,r,n)=>{if(!(t==null||e==null))return xK({offset:n,pieSettings:t,displayedData:e,cells:r})});var CK=X(J()),AK=X(SK());var kK=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",_K=null,I5=null,EK=e=>{if(e===_K&&Array.isArray(I5))return I5;var t=[];return CK.Children.forEach(e,r=>{dr(r)||((0,AK.isFragment)(r)?t=t.concat(EK(r.props.children)):t.push(r))}),I5=t,_K=e,t};function Bx(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>kK(o)):n=[kK(t)],EK(e).forEach(o=>{var a=Vo(o,"type.displayName")||Vo(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var th=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var rh=X(J()),Fx=X(J());function NK(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function TK(e){for(var t=1;t{var n=Lt();return(o,a)=>i=>{e?.(o,a,i),n(D_({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},Ux=e=>{var t=Lt();return(r,n)=>o=>{e?.(r,n,o),t(bH())}},Hx=(e,t,r)=>{var n=Lt();return(o,a)=>i=>{e?.(o,a,i),n(wH({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var qx=X(J());function ad(e){var t=e.tooltipEntrySettings,r=Lt(),n=Or(),o=(0,qx.useRef)(null);return(0,qx.useLayoutEffect)(()=>{n||(o.current===null?r(hH(t)):o.current!==t&&r(yH({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,qx.useLayoutEffect)(()=>()=>{o.current&&(r(vH(o.current)),o.current=null)},[r]),null}var id=X(J());function nh(e){var t=e.legendPayload,r=Lt(),n=Or(),o=(0,id.useRef)(null);return(0,id.useLayoutEffect)(()=>{n||(o.current===null?r(kP(t)):o.current!==t&&r(_P({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,id.useLayoutEffect)(()=>()=>{o.current&&(r(CP(o.current)),o.current=null)},[r]),null}function PK(e){var t=e.legendPayload,r=Lt(),n=Fe(Wt),o=(0,id.useRef)(null);return(0,id.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(kP(t)):o.current!==t&&r(_P({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,id.useLayoutEffect)(()=>()=>{o.current&&(r(CP(o.current)),o.current=null)},[r]),null}var DK=X(J()),Gx=X(J());function Eve(e,t){return Pve(e)||Ove(e,t)||Tve(e,t)||Nve()}function Nve(){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 Tve(e,t){if(e){if(typeof e=="string")return MK(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)?MK(e,t):void 0}}function MK(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 D5(n,t)}function Ive(e,t){var r=t.map((n,o)=>e[o]);return D5(r,t)}function Dve(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=Eve(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return D5(a,t,i)}function Vx(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Fp?Mve(e,t):r===Kx?Ive(e,t):jve(e,t,r)}var oh=X(J());function wC(e,t){var r=(0,oh.useRef)(e),n=(0,oh.useRef)(t.current),o=(0,oh.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,oh.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 $ve(e,t){return Fve(e)||Bve(e,t)||zve(e,t)||Lve()}function Lve(){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 zve(e,t){if(e){if(typeof e=="string")return IK(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)?IK(e,t):void 0}}function IK(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,Gx.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function ld(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,g=e.children,b=e.layout,h=gk(r,n),y=wC(h,a),x=(t=y.startValue)!==null&&t!==void 0?t:null,v=Vx(x,o,f??Fp);return DK.createElement(mk,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},k=>{var S=x==null,w=o==null?o:p(v,k,b),_=m?m(k):k>0;return y.syncStepValue(w,k,_),w==null?null:g(w,k,S)})}var LK=X(J()),$5=X(J());var SC=X(J());var j5;function Wve(e,t){return Kve(e)||qve(e,t)||Hve(e,t)||Uve()}function Uve(){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 Hve(e,t){if(e){if(typeof e=="string")return jK(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)?jK(e,t):void 0}}function jK(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=SC.useState(()=>mu("uid-")),t=Wve(e,1),r=t[0];return r},kC=(j5=SC.useId)!==null&&j5!==void 0?j5:Vve;function $K(e,t){var r=kC();return t||(e?"".concat(e,"-").concat(r):r)}var Gve=(0,$5.createContext)(void 0),ud=e=>{var t=e.id,r=e.type,n=e.children,o=$K("recharts-".concat(r),t);return LK.createElement(Gve.Provider,{value:o},n(o))};var Us=X(J());var Yve={cartesianItems:[],polarItems:[]},zK=Tr({name:"graphicalItems",initialState:Yve,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(rr(t.payload))},prepare:zr()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ia(e).cartesianItems.indexOf(rr(n));a>-1&&(e.cartesianItems[a]=rr(o))},prepare:zr()},removeCartesianGraphicalItem:{reducer(e,t){var r=ia(e).cartesianItems.indexOf(rr(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:zr()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(rr(t.payload))},prepare:zr()},removePolarGraphicalItem:{reducer(e,t){var r=ia(e).polarItems.indexOf(rr(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:zr()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ia(e).polarItems.indexOf(rr(n));a>-1&&(e.polarItems[a]=rr(o))},prepare:zr()}}}),ah=zK.actions,BK=ah.addCartesianGraphicalItem,FK=ah.replaceCartesianGraphicalItem,WK=ah.removeCartesianGraphicalItem,UK=ah.addPolarGraphicalItem,HK=ah.removePolarGraphicalItem,qK=ah.replacePolarGraphicalItem;var KK=zK.reducer;var Xve=e=>{var t=Lt(),r=(0,Us.useRef)(null);return(0,Us.useLayoutEffect)(()=>{r.current===null?t(BK(e)):r.current!==e&&t(FK({prev:r.current,next:e})),r.current=e},[t,e]),(0,Us.useLayoutEffect)(()=>()=>{r.current&&(t(WK(r.current)),r.current=null)},[t]),null},ih=(0,Us.memo)(Xve),Zve=e=>{var t=Lt(),r=(0,Us.useRef)(null);return(0,Us.useLayoutEffect)(()=>{r.current===null?t(UK(e)):r.current!==e&&t(qK({prev:r.current,next:e})),r.current=e},[t,e]),(0,Us.useLayoutEffect)(()=>()=>{r.current&&(t(HK(r.current)),r.current=null)},[t]),null},VK=(0,Us.memo)(Zve);var Jve=["key"],Qve=["onMouseEnter","onClick","onMouseLeave"],Rve=["id"],exe=["id"];function Wp(){return Wp=Object.assign?Object.assign.bind():function(e){for(var t=1;tBx(e.children,Pu),[e.children]),r=Fe(n=>yK(n,e.id,t));return r==null?null:Rt.createElement(PK,{legendPayload:r})}function ixe(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Rt.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 sxe=Rt.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=ixe(p),m=n.map(b=>{var h=b.tooltipPayload;return f==null||h==null?h:h.map(y=>$n($n({},y),{},{color:f,fill:f}))}),g={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:Ti(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Rt.createElement(ad,{tooltipEntrySettings:g})}),lxe=(e,t)=>e>t?"start":etypeof t=="function"?Wn(t(e),r,r*.8):Wn(t,r,r*.8),cxe=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=xk(a,i),l=o+Wn(e.cx,a,a/2),u=n+Wn(e.cy,i,i/2),c=Wn(e.innerRadius,s,0),d=uxe(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}},dxe=(e,t)=>{var r=rn(t-e),n=Math.min(Math.abs(t-e),360);return r*n},pxe=(e,t)=>{if(Rt.isValidElement(e))return Rt.cloneElement(e,t);if(typeof e=="function")return e(t);var r=bt("recharts-pie-label-line",typeof e!="boolean"?e.className:""),n=t.key,o=_C(t,Jve);return Rt.createElement(yl,Wp({},o,{type:"linear",className:r}))},fxe=(e,t,r)=>{if(Rt.isValidElement(e))return Rt.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Rt.isValidElement(n)))return n;var o=bt("recharts-pie-label-text",cC(e));return Rt.createElement(Lp,Wp({},t,{alignmentBaseline:"middle",className:o}),n)};function mxe(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=Sn(r),l=_i(o),u=_i(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,g=dn(p.cx,p.cy,p.outerRadius+c,m),b=$n($n($n($n({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:lxe(g.x,p.cx)},g),h=$n($n($n($n({},s),p),{},{fill:"none",stroke:p.fill},u),{},{index:f,points:[dn(p.cx,p.cy,p.outerRadius,m),g],key:"line"});return Rt.createElement(pn,{zIndex:pr.label,key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(f)},Rt.createElement(_r,null,a&&pxe(a,h),fxe(o,b,Zt(p,i))))});return Rt.createElement(_r,{className:"recharts-pie-labels"},d)}function gxe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Rt.createElement(nd,{label:o}):Rt.createElement(mxe,{sectors:t,props:r,showLabels:n})}function hxe(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=Fe(ps),d=Fe(Kg),p=Fe(q_),f=o.onMouseEnter,m=o.onClick,g=o.onMouseLeave,b=_C(o,Qve),h=Wx(f,o.dataKey,i),y=Ux(g),x=Hx(m,o.dataKey,i);return t==null||t.length===0?null:Rt.createElement(Rt.Fragment,null,t.map((v,k)=>{if(v?.startAngle===0&&v?.endAngle===0&&t.length!==1)return null;var S=p==null||p===i,w=String(k)===c&&(d==null||o.dataKey===d)&&S,_=c?n:null,A=r&&w?r:_,C=$n($n({},v),{},{stroke:v.stroke,tabIndex:-1,index:k,isActive:w,animationElapsedTime:s,isAnimating:l,isEntrance:u,[JS]:k,[QS]:i});return Rt.createElement(_r,Wp({key:"sector-".concat(v?.startAngle,"-").concat(v?.endAngle,"-").concat(v.midAngle,"-").concat(k),tabIndex:-1,className:"recharts-pie-sector"},hu(b,v,k),{onMouseEnter:h(v,k),onMouseLeave:y(v,k),onClick:x(v,k)}),Rt.createElement(od,{option:A??a,DefaultShape:YK,shapeProps:C}))}))}function xK(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=dxe(s,l),m=Math.abs(f),g=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,b=n.filter(_=>Zt(_,u,0)!==0).length,h=(m>=360?b:b-1)*g,y=n.reduce((_,A)=>{var C=Zt(A,u,0);return _+(Be(C)?C:0)},0),x=p>0&&y>0&&n.some(_=>{var A=Zt(_,u,0),C=(Be(A)?A:0)/y;return A!==0&&C*m0){var w;S=n.map((_,A)=>{var C=Zt(_,u,0),O=Zt(_,c,A),D=cxe(r,a,_),H=(Be(C)?C:0)/y,$,Z=$n($n({},_),o&&o[A]&&o[A].props),N=Z!=null&&"fill"in Z&&typeof Z.fill=="string"?Z.fill:r.fill;A?$=w.endAngle+rn(f)*g*(C!==0?1:0):$=s;var P=$+rn(f)*((C!==0?v:0)+H*k),M=($+P)/2,I=(D.innerRadius+D.outerRadius)/2,j=[{name:O,value:C,payload:Z,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],T=dn(D.cx,D.cy,I,M);return w=$n($n($n($n({},r.presentationProps),{},{percent:H,cornerRadius:typeof i=="string"?parseFloat(i):i,name:O,tooltipPayload:j,midAngle:M,middleRadius:I,tooltipPosition:T},Z),D),{},{value:C,dataKey:u,startAngle:$,endAngle:P,payload:Z,paddingAngle:C!==0?rn(f)*g:0}),w})}return S}function yxe(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,sh.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 Rt.createElement(lK,{value:t?o:void 0},n)}var vxe=(e,t)=>{if(e==null)return[];var r=[],n=e.find(a=>a.status!=="removed"),o=n?n.next.startAngle:0;return e.forEach((a,i)=>{if(a.status!=="removed"){var s=i>0?Vo(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=Nr(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=$n($n({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=Nr(0,a.next.endAngle-a.next.startAngle,t),d=$n($n({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function xxe(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=sd(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,g=p.handleAnimationEnd,b=$9();if(b==null)return null;var h=l[0];return Rt.createElement(yxe,{showLabels:!f,sectors:l},Rt.createElement(ld,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:g,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:b},(y,x,v)=>Rt.createElement(_r,null,Rt.createElement(hxe,{sectors:y,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:x,isAnimating:f||x<1,isEntrance:v}))),Rt.createElement(gxe,{showLabels:!f,sectors:l,props:a}),Rt.createElement(nK,{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 bxe={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:vxe,animationMatchBy:Kx,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:YK,startAngle:0,stroke:"#fff",zIndex:pr.area};function wxe(e){var t=e.id,r=_C(e,Rve),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,sh.useMemo)(()=>Bx(e.children,Pu),[e.children]),s=Fe(c=>vK(c,t,i)),l=(0,sh.useRef)(null),u=bt("recharts-pie",o);return n||s==null?(l.current=null,Rt.createElement(_r,{tabIndex:a,className:u})):Rt.createElement(pn,{zIndex:e.zIndex},Rt.createElement(sxe,{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}),Rt.createElement(_r,{tabIndex:a,className:u},Rt.createElement(xxe,{props:$n($n({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function Sxe(e){var t=ur(e,bxe),r=t.id,n=_C(t,exe),o=Sn(n);return Rt.createElement(ud,{id:r,type:"pie"},a=>Rt.createElement(Rt.Fragment,null,Rt.createElement(VK,{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}),Rt.createElement(axe,Wp({},n,{id:a})),Rt.createElement(wxe,Wp({},n,{id:a}))))}var CC=Sxe;CC.displayName="Pie";var Yx=X(J()),EC=X(J());var kxe=["points"];function XK(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,y,x=L5(L5(L5({r:3},i),p),{},{index:b,cx:(h=g.x)!==null&&h!==void 0?h:void 0,cy:(y=g.y)!==null&&y!==void 0?y:void 0,dataKey:a,value:g.value,payload:g.payload,points:t});return Yx.createElement(Txe,{key:"dot-".concat(b),option:r,dotProps:x,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),Yx.createElement(pn,{zIndex:c},Yx.createElement(_r,AC({className:n},m),f))}var Xx=X(J()),OC=X(J());function ZK(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 TC(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var lV=oe([sV,Xo,Zo],(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 cd=()=>Fe(lV),uV=()=>Fe(DH);function cV(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 B5(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=B5(B5(B5({},s),_i(o)),Rm(o)),u;return(0,OC.isValidElement)(o)?u=(0,OC.cloneElement)(o,l):typeof o=="function"?u=o(l):u=Xx.createElement(iC,l),Xx.createElement(_r,{className:"recharts-active-dot",clipPath:i},u)};function Zx(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?pr.activeDot:i,l=Fe(ps),u=uV();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return dr(c)?null:Xx.createElement(pn,{zIndex:s},Xx.createElement(zxe,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function Bxe(e,t){return Hxe(e)||Uxe(e,t)||Wxe(e,t)||Fxe()}function Fxe(){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 Wxe(e,t){if(e){if(typeof e=="string")return dV(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)?dV(e,t):void 0}}function dV(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!dr(n))return Wn(n,t,0)},fV=(e,t,r)=>{var n={},o=e.filter(xp),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=Bxe(u,2),p=d[0],f=d[1],m=f.map(b=>b.dataKey),g=pV(t,r,(c=f[0])===null||c===void 0?void 0:c.barSize);return{stackId:p,dataKeys:m,barSize:g}}),l=a.map(u=>{var c=[u.dataKey].filter(p=>p!=null),d=pV(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function mV(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 PC(e){for(var t=1;ty+(x.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((y,x)=>{var v,k={stackId:x.stackId,dataKeys:x.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(v=x.barSize)!==null&&v!==void 0?v:0}},S=[...y,k];return m=k.position,S},u)}else{var g=Wn(t,r,0,!0);r-2*g-(i-1)*s<=0&&(s=0);var b=(r-2*g-(i-1)*s)/i;b>1&&(b=Math.round(b));var h=Pt(o)?Math.min(b,o):b;l=n.reduce((y,x,v)=>[...y,{stackId:x.stackId,dataKeys:x.dataKeys,position:{offset:g+i*(b-h)/2+(h+s)*v,size:h}}],u)}return l}}var gV=(e,t,r,n,o,a,i)=>{var s=dr(i)?t:i,l=Gxe(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>PC(PC({},u),{},{position:PC(PC({},u.position),{},{offset:u.position.offset-o/2})}))),l};var hV=(e,t)=>{var r=Uc(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 yV=(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 vV(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&Pt(e.zIndex)?e.zIndex:t}var xV=X(J());var MC=e=>{var t=e.chartData,r=Lt(),n=Or();return(0,xV.useEffect)(()=>n?()=>{}:(r(_5(t)),()=>{r(_5(void 0))}),[t,r,n]),null};var bV={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},wV=Tr({name:"brush",initialState:bV,reducers:{setBrushSettings(e,t){return t.payload==null?bV:t.payload}}}),CHe=wV.actions.setBrushSettings;var SV=wV.reducer;function Yxe(e){return(e%180+180)%180}var kV=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=Yxe(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=ia(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=ia(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(rr(t.payload))},removeLine:(e,t)=>{var r=ia(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),lh=_V.actions,OHe=lh.addDot,PHe=lh.removeDot,MHe=lh.addArea,IHe=lh.removeArea,DHe=lh.addLine,jHe=lh.removeLine;var CV=_V.reducer;var Jx=X(J()),Qx=X(J());function Zxe(e,t){return e0e(e)||Rxe(e,t)||Qxe(e,t)||Jxe()}function Jxe(){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 Qxe(e,t){if(e){if(typeof e=="string")return AV(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)?AV(e,t):void 0}}function AV(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,Qx.useState)("".concat(mu("recharts"),"-clip")),n=Zxe(r,1),o=n[0],a=cd();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return Jx.createElement(t0e.Provider,{value:o},Jx.createElement("defs",null,Jx.createElement("clipPath",{id:o},Jx.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var Cn=X(J()),xa=X(J());function NV(){}function F5(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 TV(e,t,r){return Rx(e,t,void 0,void 0,void 0,void 0,r)}function Rx(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 e0(e,t,a,i)}return e0(e,t,a,i)}function e0(e,t,r,n){if(Object.is(e,t))return!0;let o=yu(e),a=yu(t);if(o==="[object Arguments]"&&(o=ng),a==="[object Arguments]"&&(a=ng),o!==a)return!1;switch(o){case eg:return e.toString()===t.toString();case tg:return Lc(e.valueOf(),t.valueOf());case rg:case Zw:case Xw:return Object.is(e.valueOf(),t.valueOf());case Gw:return e.source===t.source&&e.flags===t.flags;case PB: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 Jw:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!Rx(u,t.get(l),l,e,t,r,n))return!1;return!0;case Qw:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cRx(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case Rw:case rS:case nS:case oS:case aS:case IB:case iS:case sS:case lS:case DB:case uS:case cS:if(Iv(e)!==Iv(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 MV(e,t){return IC(e,t+1)}function IV(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:IC(n,u)};var g=l,b,h=()=>(b===void 0&&(b=r(m,g)),b),y=m.coordinate,x=l===0||Up(e,y,h,c,s);x||(l=0,c=i,u+=1),x&&(c=y+e*(h()/2+o),l+=u)},p;u<=a.length;)if(p=d(),p)return p.v;return[]}function DV(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 v=n[g];if(v==null)return 0;var k=g,S,w=()=>(S===void 0&&(S=r(v,k)),S),_=v.coordinate,A=g===c||Up(e,_,w,d,l);if(!A)return p=!1,1;A&&(d=_+e*(w()/2+o))},m,g=c;g(g===void 0&&(g=r(f,p)),g);if(p===i-1){var h=e*(m.coordinate+e*b()/2-l);a[p]=m=va(va({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[p]=m=va(va({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var y=Up(e,m.tickCoord,b,s,l);y&&(l=m.tickCoord-e*(b()/2+o),a[p]=va(va({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function i0e(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=va(va({},c),{},{tickCoord:p>0?c.coordinate-p*e:c.coordinate}),c.tickCoord!=null){var f=Up(e,c.tickCoord,()=>d,l,u);f&&(u=c.tickCoord-e*(d/2+o),i[s-1]=va(va({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,g=function(y){var x=i[y];if(x==null)return 1;var v=x,k,S=()=>(k===void 0&&(k=r(x,y)),k);if(y===0){var w=e*(v.coordinate-e*S()/2-l);i[y]=v=va(va({},v),{},{tickCoord:w<0?v.coordinate-w*e:v.coordinate})}else i[y]=v=va(va({},v),{},{tickCoord:v.coordinate});if(v.tickCoord!=null){var _=Up(e,v.tickCoord,S,l,u);_&&(l=v.tickCoord+e*(S()/2+o),i[y]=va(va({},v),{},{isShow:!0}))}},b=0;b{var w=typeof u=="function"?u(k.value,S):k.value;return m==="width"?OV($p(w,{fontSize:t,letterSpacing:r}),g,d):$p(w,{fontSize:t,letterSpacing:r})[m]},h=o[0],y=o[1],x=o.length>=2&&h!=null&&y!=null?rn(y.coordinate-h.coordinate):1,v=PV(a,x,m);return l==="equidistantPreserveStart"?IV(x,v,b,o,i):l==="equidistantPreserveEnd"?DV(x,v,b,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=i0e(x,v,b,o,i,l==="preserveStartEnd"):f=a0e(x,v,b,o,i),f.filter(k=>k.isShow))}var $V=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 LV=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 s0e={xAxis:{},yAxis:{}},zV=Tr({name:"renderedTicks",initialState:s0e,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=rr(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),BV=zV.actions,FV=BV.setRenderedTicks,WV=BV.removeRenderedTicks;var UV=zV.reducer;var l0e=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function HV(e,t){return p0e(e)||d0e(e,t)||c0e(e,t)||u0e()}function u0e(){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 c0e(e,t){if(e){if(typeof e=="string")return qV(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)?qV(e,t):void 0}}function qV(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&&W5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(FV({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,xa.useEffect)(()=>n==null||r==null?ja:()=>{o(WV({axisId:n,axisType:r}))},[o,n,r]),null}var _0e=(0,xa.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,g=e.width,b=e.height,h=e.tickSize,y=e.tickMargin,x=e.fontSize,v=e.letterSpacing,k=e.getTicksConfig,S=e.events,w=e.axisType,_=e.axisId,A=t0(Rn(Rn({},k),{},{ticks:n}),x,v),C=Sn(k),O=_i(o),D=nC(C.textAnchor)?C.textAnchor:b0e(d,p),H=w0e(d,p),$={};typeof a=="object"&&($=a);var Z=Rn(Rn({},C),{},{fill:"none"},$),N=A.map(I=>Rn({entry:I},x0e(I,f,m,g,b,d,h,p,y))),P=N.map(I=>{var j=I.entry,T=I.line;return Cn.createElement(_r,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(j.value,"-").concat(j.coordinate,"-").concat(j.tickCoord)},a&&Cn.createElement("line",Hp({},Z,T,{className:bt("recharts-cartesian-axis-tick-line",Vo(a,"className"))})))}),M=N.map((I,j)=>{var T,q,G=I.entry,L=I.tick,Y=Rn(Rn(Rn(Rn({verticalAnchor:H},C),{},{textAnchor:D,stroke:"none",fill:i},L),{},{index:j,payload:G,visibleTicksCount:A.length,tickFormatter:s,padding:u},c),{},{angle:(T=(q=c?.angle)!==null&&q!==void 0?q:C.angle)!==null&&T!==void 0?T:0}),K=Rn(Rn({},Y),O);return Cn.createElement(_r,Hp({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(G.value,"-").concat(G.coordinate,"-").concat(G.tickCoord)},hu(S,G,j)),o&&Cn.createElement(S0e,{option:o,tickProps:K,value:"".concat(typeof s=="function"?s(G.value,j):G.value).concat(l||"")}))});return Cn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(w,"-ticks")},Cn.createElement(k0e,{ticks:A,axisId:_,axisType:w}),M.length>0&&Cn.createElement(pn,{zIndex:pr.label},Cn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(w,"-tick-labels"),ref:t},M)),P.length>0&&Cn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(w,"-tick-lines")},P))}),C0e=(0,xa.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=f0e(e,l0e),d=(0,xa.useState)(""),p=HV(d,2),f=p[0],m=p[1],g=(0,xa.useState)(""),b=HV(g,2),h=b[0],y=b[1],x=(0,xa.useRef)(null);(0,xa.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var k;return $V({ticks:x.current,label:(k=e.labelRef)===null||k===void 0?void 0:k.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})},getCalculatedHeight:()=>{var k;return LV({ticks:x.current,label:(k=e.labelRef)===null||k===void 0?void 0:k.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var v=(0,xa.useCallback)(k=>{if(k){var S=k.getElementsByClassName("recharts-cartesian-axis-tick-value");x.current=S;var w=S[0];if(w){var _=window.getComputedStyle(w),A=_.fontSize,C=_.letterSpacing;(A!==f||C!==h)&&(m(A),y(C))}}},[f,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:Cn.createElement(pn,{zIndex:e.zIndex},Cn.createElement(_r,{className:bt("recharts-cartesian-axis",a)},Cn.createElement(v0e,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:Sn(e)}),Cn.createElement(_0e,{ref:v,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}),Cn.createElement(eK,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},Cn.createElement(oK,{label:e.label,labelRef:e.labelRef}),e.children)))}),r0=Cn.forwardRef((e,t)=>{var r=ur(e,gs);return Cn.createElement(C0e,Hp({},r,{ref:t}))});r0.displayName="CartesianAxis";var eo=X(J());var DC=X(J());var VV={grid:{stroke:"#ccc",fill:"none"}};var GV=(0,DC.createContext)(VV),Bqe=GV.Provider,YV=()=>(0,DC.useContext)(GV);var A0e=["x1","y1","x2","y2","key"],E0e=["offset"],N0e=["xAxisId","yAxisId"],T0e=["xAxisId","yAxisId"];function XV(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 ba(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 eo.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function ZV(e){var t=e.option,r=e.lineItemProps,n;if(eo.isValidElement(t))n=eo.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=jC(r,A0e),d=(o=Sn(c))!==null&&o!==void 0?o:{},p=d.offset,f=jC(d,E0e),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=eo.createElement("line",qp({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function j0e(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=jC(e,N0e),u=a.map((c,d)=>{var p=ba(ba({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return eo.createElement(ZV,{key:"line-".concat(d),option:o,lineItemProps:p})});return eo.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function $0e(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=jC(e,T0e),u=a.map((c,d)=>{var p=ba(ba({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return eo.createElement(ZV,{option:o,lineItemProps:p,key:"line-".concat(d)})});return eo.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function L0e(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],g=m==null,b=g?o+i-p:m-p;if(b<=0)return null;var h=f%t.length;return eo.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 eo.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function z0e(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],g=m==null,b=g?a+s-p:m-p;if(b<=0)return null;var h=f%n.length;return eo.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 eo.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var B0e=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return mP(t0(ba(ba(ba({},gs),r),{},{ticks:gP(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},F0e=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return mP(t0(ba(ba(ba({},gs),r),{},{ticks:gP(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},W0e={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:pr.grid};function ju(e){var t,r,n,o,a,i,s=gg(),l=hg(),u=nk(),c=ba(ba({},ur(e,W0e)),{},{x:Be(e.x)?e.x:u.left,y:Be(e.y)?e.y:u.top,width:Be(e.width)?e.width:u.width,height:Be(e.height)?e.height:u.height}),d=c.xAxisId,p=c.yAxisId,f=c.x,m=c.y,g=c.width,b=c.height,h=c.syncWithTicks,y=c.horizontalValues,x=c.verticalValues,v=Or(),k=Fe(P=>t5(P,"xAxis",d,v)),S=Fe(P=>t5(P,"yAxis",p,v)),w=YV(),_={stroke:(t=c.stroke)!==null&&t!==void 0?t:w.grid.stroke,strokeWidth:(r=c.strokeWidth)!==null&&r!==void 0?r:w.grid.strokeWidth,strokeOpacity:(n=c.strokeOpacity)!==null&&n!==void 0?n:w.grid.strokeOpacity,strokeDasharray:(o=c.strokeDasharray)!==null&&o!==void 0?o:w.grid.strokeDasharray};if(!Ra(g)||!Ra(b)||!Be(f)||!Be(m))return null;var A=c.verticalCoordinatesGenerator||B0e,C=c.horizontalCoordinatesGenerator||F0e,O=c.horizontalPoints,D=c.verticalPoints;if((!O||!O.length)&&typeof C=="function"){var H=y&&y.length,$=C({yAxis:S?ba(ba({},S),{},{ticks:H?y:S.ticks}):void 0,width:s??g,height:l??b,offset:u},H?!0:h);mg(Array.isArray($),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof $,"]")),Array.isArray($)&&(O=$)}if((!D||!D.length)&&typeof A=="function"){var Z=x&&x.length,N=A({xAxis:k?ba(ba({},k),{},{ticks:Z?x:k.ticks}):void 0,width:s??g,height:l??b,offset:u},Z?!0:h);mg(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(D=N)}return eo.createElement(pn,{zIndex:c.zIndex},eo.createElement("g",{className:"recharts-cartesian-grid"},eo.createElement(D0e,{fill:(a=c.fill)!==null&&a!==void 0?a:w.grid.fill,fillOpacity:(i=c.fillOpacity)!==null&&i!==void 0?i:w.grid.fillOpacity,x:c.x,y:c.y,width:c.width,height:c.height,ry:c.ry}),eo.createElement(L0e,qp({},c,{horizontalPoints:O})),eo.createElement(z0e,qp({},c,{verticalPoints:D})),eo.createElement(j0e,qp({},c,_,{offset:u,horizontalPoints:O,xAxis:k,yAxis:S})),eo.createElement($0e,qp({},c,_,{offset:u,verticalPoints:D,xAxis:k,yAxis:S}))))}ju.displayName="CartesianGrid";var Ar=X(J()),$u=X(J());var JV=X(J());var U0e=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function U5(){return U5=Object.assign?Object.assign.bind():function(e){for(var t=1;tf+m,0);if(!o)return QV(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[...G0e(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function X0e(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return Y0e(r,t,n)}return QV(t,r)}function RV(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=H0e(e,U0e),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=K0e((c=d?.current)!==null&&c!==void 0?c:null);u=X0e(a,p,o)}else a!=null&&(u=String(a));return JV.createElement(yl,U5({},s,{connectNulls:l,strokeDasharray:u}))}var Kp=X(J());function eG(e){var t=(0,Kp.useRef)(0),r=(0,Kp.useRef)(0),n=(0,Kp.useRef)(!1),o=(0,Kp.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,Kp.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(ts(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 nG=X(J()),n0=X(J());var Z0e={},tG=Tr({name:"errorBars",initialState:Z0e,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))}}}),H5=tG.actions,lKe=H5.addErrorBar,uKe=H5.replaceErrorBar,cKe=H5.removeErrorBar;var rG=tG.reducer;var J0e=["children"];function Q0e(e,t){if(e==null)return{};var r,n,o=R0e(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},tbe=(0,n0.createContext)(ebe);function $C(e){var t=e.children,r=Q0e(e,J0e);return nG.createElement(tbe.Provider,{value:r},t)}var q5=X(J());function Vp(e,t){var r,n,o=Fe(u=>_l(u,e)),a=Fe(u=>Cl(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:co.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:po.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function uh(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=cd(),a=Vp(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=Fe(x=>KM(x,t,!1)),c=Fe(x=>VM(x,r,!1));if(!l||!o)return null;var d=o.x,p=o.y,f=o.width,m=o.height,g=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,y=s&&c?Math.abs(c[1]-c[0]):m*2;return q5.createElement("clipPath",{id:"clipPath-".concat(n)},q5.createElement("rect",{x:g,y:b,width:h,height:y}))}var oG=(e,t,r,n)=>$i(e,"xAxis",t,n),aG=(e,t,r,n)=>ji(e,"xAxis",t,n),iG=(e,t,r,n)=>$i(e,"yAxis",r,n),sG=(e,t,r,n)=>ji(e,"yAxis",r,n),rbe=oe([Wt,oG,iG,aG,sG],(e,t,r,n,o)=>ha(e,"xAxis")?is(t,n,!1):is(r,o,!1)),nbe=(e,t,r,n,o)=>o;function obe(e){return e.type==="line"}var abe=oe([Xc,nbe],(e,t)=>e.filter(obe).find(r=>r.id===t)),lG=oe([Wt,oG,iG,aG,sG,abe,rbe,gp],(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 uG({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function LC(e){var t=_i(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 ibe=["id"],sbe=["type","layout","connectNulls","needClip","shape","strokeDasharray"],lbe=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function zC(){return zC=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var gbe=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=mbe(e),n=[];for(var o of e)if(o.status==="matched")n.push(Al(Al({},o.next),{},{x:Nr(o.prev.x,o.next.x,t),y:Nr(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(Al(Al({},o.next),{},{x:Nr(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(Al(Al({},o.prev),{},{x:Nr(o.prev.x,i,t),y:o.prev.y}))}return n},G5={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:gbe,animationMatchBy:Fp,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:RV,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:pr.line,type:"linear"},hbe=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:Ti(r,t),payload:e}]},ybe=Ar.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:ja,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Ti(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return Ar.createElement(ad,{tooltipEntrySettings:p})});function vbe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=V5(n,ibe),u=Sn(l);return Ar.createElement(NC,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function xbe(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,$u.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 Al(Al({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return Ar.createElement(eh,{value:t?o:void 0},r)}function bbe(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,g=V5(o,sbe),b=Al(Al({},kn(g)),{},{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 Ar.createElement(Ar.Fragment,null,n?.length>1&&Ar.createElement(od,{option:f,DefaultShape:G5.shape,shapeProps:b}),Ar.createElement(vbe,{points:n,clipPathId:t,props:o}))}function wbe(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=fbe(n.current),m=sd(r.onAnimationStart,r.onAnimationEnd),g=m.isAnimating,b=m.handleAnimationStart,h=m.handleAnimationEnd,y=!g,x=eG(a),v=(0,$u.useCallback)(k=>k>0&&f>0,[f]);return Ar.createElement(xbe,{points:a,showLabels:y},r.children,Ar.createElement(ld,{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:v,layout:p},(k,S,w)=>{var _=g||S<1,A=_?x(S,f):null;return Ar.createElement(bbe,{props:r,points:k,clipPathId:t,pathRef:n,animationElapsedTime:S,isAnimating:_,isEntrance:w,visibleLength:A})}),Ar.createElement(nd,{label:r.label}))}function Sbe(e){var t=e.clipPathId,r=e.props,n=(0,$u.useRef)(null),o=(0,$u.useRef)(null);return Ar.createElement(wbe,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var kbe=(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:Zt(e.payload,t)}},K5=class extends $u.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 g=bt("recharts-line",a),b=p,h=LC(n),y=h.r,x=h.strokeWidth,v=th(n),k=y*2+x,S=f?"url(#clipPath-".concat(v?"":"dots-").concat(b,")"):void 0;return Ar.createElement(pn,{zIndex:m},Ar.createElement(_r,{className:g},f&&Ar.createElement("defs",null,Ar.createElement(uh,{clipPathId:b,xAxisId:i,yAxisId:s}),!v&&Ar.createElement("clipPath",{id:"clipPath-dots-".concat(b)},Ar.createElement("rect",{x:u-k/2,y:l-k/2,width:c+k,height:d+k}))),Ar.createElement($C,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:kbe,errorBarOffset:0},Ar.createElement(Sbe,{props:this.props,clipPathId:b}))),Ar.createElement(Zx,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:S}))}};function _be(e){var t=ur(e,G5),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,g=t.id,b=V5(t,lbe),h=Vp(f,m),y=h.needClip,x=cd(),v=ti(),k=Or(),S=Fe(O=>lG(O,f,m,k,g));if(v!=="horizontal"&&v!=="vertical"||S==null||x==null)return null;var w=x.height,_=x.width,A=x.x,C=x.y;return Ar.createElement(K5,zC({},b,{id:g,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:S,layout:v,height:w,width:_,left:A,top:C,needClip:y}))}function uG(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=Zt(u,i);if(t==="horizontal"){var p=lg({axis:r,ticks:o,bandSize:s,entry:u,index:c}),f=dr(d)?null:n.scale.map(d);return{x:p,y:f??null,value:d,payload:u}}var m=dr(d)?null:r.scale.map(d),g=lg({axis:n,ticks:a,bandSize:s,entry:u,index:c});return m==null||g==null?null:{x:m,y:g,value:d,payload:u}}).filter(Boolean)}function Cbe(e){var t=ur(e,G5),r=Or();return Ar.createElement(ud,{id:t.id,type:"line"},n=>Ar.createElement(Ar.Fragment,null,Ar.createElement(nh,{legendPayload:hbe(t)}),Ar.createElement(ybe,{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}),Ar.createElement(ih,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),Ar.createElement(_be,zC({},t,{id:n}))))}var BC=Ar.memo(Cbe,ri);BC.displayName="Line";var wr=X(J()),Gp=X(J());function hs(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:z5}function ys(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:z5}var dG=(e,t,r)=>$i(e,"xAxis",hs(e,t),r),pG=(e,t,r)=>ji(e,"xAxis",hs(e,t),r),fG=(e,t,r)=>$i(e,"yAxis",ys(e,t),r),mG=(e,t,r)=>ji(e,"yAxis",ys(e,t),r),Abe=oe([Wt,dG,fG,pG,mG],(e,t,r,n,o)=>ha(e,"xAxis")?is(t,n,!1):is(r,o,!1)),Ebe=(e,t)=>t,Y5=oe([Xc,Ebe],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),gG=e=>{var t=Wt(e),r=ha(t,"xAxis");return r?"yAxis":"xAxis"},Nbe=(e,t)=>{var r=gG(e);return r==="yAxis"?ys(e,t):hs(e,t)},hG=(e,t,r)=>Wg(e,gG(e),Nbe(e,t),r),Tbe=oe([Y5,hG],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Uc(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]])}}}),Obe=oe([Y5,hG],(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(Po)}}),yG=oe([Wt,dG,fG,pG,mG,Tbe,Ck,Abe,Y5,SW,Obe],(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,g;if(m&&m.length>0?g=m:g=d?.slice(p,f+1),g!=null)return vG({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:p,areaSettings:l,stackedData:a,displayedData:g,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var wa=X(J());var Pbe=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],Mbe=["id","baseLine"];function o0(){return o0=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return Be(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),Be(c)?wa.createElement("rect",{x:sd.x||0));return Be(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),Be(c)?wa.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[ch(ch({},r.next),{},{x:Nr(r.prev.x,r.next.x,t),y:Nr(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),kG={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Fp,animationInterpolateFn:Hbe,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:bG,xAxisId:0,yAxisId:0,zIndex:pr.area};function WC(e,t){return e&&e!=="none"?e:t}var qbe=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:WC(n,o),value:Ti(r,t),payload:e}]},Kbe=wr.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:ja,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Ti(i,t),hide:s,type:c,color:WC(n,a),unit:l,formatter:u,graphicalItemId:d}};return wr.createElement(ad,{tooltipEntrySettings:p})});function Vbe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=Sn(n);return wr.createElement(NC,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function Gbe(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 ch(ch({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return wr.createElement(eh,{value:t?o:void 0},r)}function Ybe(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,g=a.id,b=SG(a,Lbe),h=kn(b),y=ch(ch({},h),{},{id:g,points:t,connectNulls:p,type:c,baseLine:r,layout:u,stroke:d,isRange:f,animationElapsedTime:i,isAnimating:s,isEntrance:l});return wr.createElement(wr.Fragment,null,t?.length>1&&wr.createElement(_r,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},wr.createElement(od,{option:m,DefaultShape:kG.shape,shapeProps:y})),wr.createElement(Vbe,{points:t,props:b,clipPathId:o}))}function Xbe(e,t,r){if(Be(e)){var n=Be(t)?t:void 0;return Nr(n,e,r)}if(dr(e)||Go(e)){var o=Be(t)?t:void 0;return Nr(o,0,r)}return e}function Zbe(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,Gp.useMemo)(()=>({points:i,baseLine:s}),[i,s]),g=wC(m,a),b=yg(),h=sd(n.onAnimationStart,n.onAnimationEnd),y=h.isAnimating,x=h.handleAnimationStart,v=h.handleAnimationEnd,k=g.startValue;if(b==null)return null;var S;return Array.isArray(s)&&Array.isArray(k)?S=Vx(k,s,p):Array.isArray(s)?S=Vx(null,s,p):S=null,wr.createElement(ld,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:x,onAnimationEnd:v,animationInterpolateFn:f,animationMatchBy:p,layout:b},(w,_,A)=>{var C;return _===1?C=s:Array.isArray(s)?C=f(S,_,b):C=A?s:Xbe(s,k,_),g.syncStepValue(C,_),wr.createElement(Gbe,{showLabels:!y,points:i},n.children,wr.createElement(Ybe,{points:w,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:_,isAnimating:y||_<1,isEntrance:A}),wr.createElement(nd,{label:n.label}))})}function Jbe(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Gp.useRef)(null),a=(0,Gp.useRef)();return wr.createElement(Zbe,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var X5=class extends Gp.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,g=t.zIndex;if(r)return null;var b=bt("recharts-area",a),h=f,y=LC(n),x=y.r,v=y.strokeWidth,k=th(n),S=x*2+v,w=l?"url(#clipPath-".concat(k?"":"dots-").concat(h,")"):void 0;return wr.createElement(pn,{zIndex:g},wr.createElement(_r,{className:b},l&&wr.createElement("defs",null,wr.createElement(uh,{clipPathId:h,xAxisId:u,yAxisId:c}),!k&&wr.createElement("clipPath",{id:"clipPath-dots-".concat(h)},wr.createElement("rect",{x:s-S/2,y:i-S/2,width:d+S,height:p+S}))),wr.createElement(Jbe,{needClip:l,clipPathId:h,props:this.props})),wr.createElement(Zx,{points:o,mainColor:WC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}),this.props.isRange&&Array.isArray(m)&&wr.createElement(Zx,{points:m,mainColor:WC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}))}};function Qbe(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,g=e.yAxisId,b=SG(e,zbe),h=ti(),y=K_(),x=Vp(m,g),v=x.needClip,k=Or(),S=(t=Fe(Z=>yG(Z,e.id,k)))!==null&&t!==void 0?t:{},w=S.points,_=S.isRange,A=S.baseLine,C=cd();if(h!=="horizontal"&&h!=="vertical"||C==null||y!=="AreaChart"&&y!=="ComposedChart")return null;var O=C.height,D=C.width,H=C.x,$=C.y;return!w||!w.length?null:wr.createElement(X5,FC({},b,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:A,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:O,hide:c,layout:h,isAnimationActive:d,isRange:_,legendType:p,needClip:v,points:w,stroke:f,width:D,left:H,top:$,xAxisId:m,yAxisId:g}))}var Rbe=(e,t,r,n,o)=>{var a=r??t;if(Be(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 vG(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,g=e.stackDataKeys,b=a&&a.length,h=Rbe(i,s,n,l,u),y=i==="horizontal",x=!1,v=c.map((S,w)=>{var _,A,C,O;if(b)O=a[d+w];else{var D=Zt(S,o);Array.isArray(D)?(O=D,x=!0):O=[h,D]}var H=(_=(A=O)===null||A===void 0?void 0:A[1])!==null&&_!==void 0?_:null,$=Zt(S,o),Z=b&&$==null&&g!=null&&g.length>0&&g.every(M=>Zt(S,M)==null),N=H==null||b&&!r&&$==null||Z;if(y){var P;return{x:lg({axis:l,ticks:p,bandSize:m,entry:S,index:w}),y:N?null:(P=u.scale.map(H))!==null&&P!==void 0?P:null,value:O,payload:S}}return{x:N?null:(C=l.scale.map(H))!==null&&C!==void 0?C:null,y:lg({axis:u,ticks:f,bandSize:m,entry:S,index:w}),value:O,payload:S}}),k;return b||x?k=v.map(S=>{var w,_=Array.isArray(S.value)?S.value[0]:null;if(y){var A;return{x:S.x,y:_!=null&&S.y!=null&&(A=u.scale.map(_))!==null&&A!==void 0?A:null,payload:S.payload}}return{x:_!=null&&(w=l.scale.map(_))!==null&&w!==void 0?w:null,y:S.y,payload:S.payload}}):k=y?u.scale.map(h):l.scale.map(h),{points:v,baseLine:k??0,isRange:x}}function e1e(e){var t=ur(e,kG),r=Or();return wr.createElement(ud,{id:t.id,type:"area"},n=>wr.createElement(wr.Fragment,null,wr.createElement(nh,{legendPayload:qbe(t)}),wr.createElement(Kbe,{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}),wr.createElement(ih,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:ZS(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),wr.createElement(Qbe,FC({},t,{id:n}))))}var Lu=wr.memo(e1e,ri);Lu.displayName="Area";var ar=X(J()),qs=X(J());var CG=X(J());var t1e=!0,Z5="Invariant failed";function _G(e,t){if(!e){if(t1e)throw new Error(Z5);var r=typeof t=="function"?t():t,n=r?"".concat(Z5,": ").concat(r):Z5;throw new Error(n)}}var r1e=["option"];function n1e(e,t){if(e==null)return{};var r,n,o=o1e(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(Be(t))return t;var a=Be(n)||dr(n);return a?t(n,o):(a||_G(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var a1e=(e,t,r)=>r,i1e=(e,t)=>t,a0=oe([Xc,i1e],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),s1e=oe([a0],e=>e?.maxBarSize),l1e=(e,t,r,n)=>n,u1e=oe([Wt,Xc,hs,ys,a1e],(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")),c1e=(e,t,r)=>{var n=Wt(e),o=hs(e,t),a=ys(e,t);if(!(o==null||a==null))return n==="horizontal"?Wg(e,"yAxis",a,r):Wg(e,"xAxis",o,r)},d1e=(e,t)=>{var r=Wt(e),n=hs(e,t),o=ys(e,t);if(!(n==null||o==null))return r==="horizontal"?QM(e,"xAxis",n):QM(e,"yAxis",o)},p1e=oe([u1e,wW,d1e],fV),f1e=(e,t,r)=>{var n,o,a=a0(e,t);if(a==null)return 0;var i=hs(e,t),s=ys(e,t);if(i==null||s==null)return 0;var l=Wt(e),u=WP(e),c=a.maxBarSize,d=dr(c)?u:c,p,f;return l==="horizontal"?(p=$i(e,"xAxis",i,r),f=ji(e,"xAxis",i,r)):(p=$i(e,"yAxis",s,r),f=ji(e,"yAxis",s,r)),(n=(o=is(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},EG=(e,t,r)=>{var n=Wt(e),o=hs(e,t),a=ys(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=$i(e,"xAxis",o,r),s=ji(e,"xAxis",o,r)):(i=$i(e,"yAxis",a,r),s=ji(e,"yAxis",a,r)),is(i,s)}},m1e=oe([p1e,WP,bW,Ok,f1e,EG,s1e],gV),g1e=(e,t,r)=>{var n=hs(e,t);if(n!=null)return $i(e,"xAxis",n,r)},h1e=(e,t,r)=>{var n=ys(e,t);if(n!=null)return $i(e,"yAxis",n,r)},y1e=(e,t,r)=>{var n=hs(e,t);if(n!=null)return ji(e,"xAxis",n,r)},v1e=(e,t,r)=>{var n=ys(e,t);if(n!=null)return ji(e,"yAxis",n,r)},x1e=oe([m1e,a0],yV),b1e=oe([c1e,a0],hV),NG=oe([Vr,pg,g1e,h1e,y1e,v1e,x1e,Wt,Ck,EG,b1e,a0,l1e],(e,t,r,n,o,a,i,s,l,u,c,d,p)=>{var f=l.chartData,m=l.dataStartIndex,g=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,g+1),h!=null)return TG({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 Q5=X(J()),dh=X(J());var w1e=["index"];function J5(){return J5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,dh.useContext)(OG);if(t!=null)return t.stackId;if(e!=null)return ZS(e)};var _1e=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),C1e=e=>{var t=(0,dh.useContext)(OG);if(t!=null){var r=t.stackId;return"url(#".concat(_1e(r,e),")")}},R5=e=>{var t=e.index,r=S1e(e,w1e),n=C1e(t);return Q5.createElement(_r,J5({className:"recharts-bar-stack-layer",clipPath:n},r))};var A1e=["onMouseEnter","onMouseLeave","onClick"],E1e=["value","background","tooltipPosition"],N1e=["id"],T1e=["onMouseEnter","onClick","onMouseLeave"];function MG(e,t){return I1e(e)||M1e(e,t)||P1e(e,t)||O1e()}function O1e(){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 P1e(e,t){if(e){if(typeof e=="string")return IG(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)?IG(e,t):void 0}}function IG(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:Ti(r,t),payload:e}]},B1e=ar.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:ja,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:Ti(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return ar.createElement(ad,{tooltipEntrySettings:d})});function F1e(e){var t=Fe(ps),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=qC(a,A1e),c=Wx(i,n,a.id),d=Ux(s),p=Hx(l,n,a.id);if(!o||r==null)return null;var f=_i(o);return ar.createElement(pn,{zIndex:vV(o,pr.barBackground)},r.map((m,g)=>{var b=m.value,h=m.background,y=m.tooltipPosition,x=qC(m,E1e);if(!h)return null;var v=c(m,m.originalDataIndex),k=d(m,m.originalDataIndex),S=p(m,m.originalDataIndex),w=Do(Do(Do(Do(Do({option:o,isActive:String(m.originalDataIndex)===t},x),{},{fill:"#eee"},h),f),hu(u,m,g)),{},{onMouseEnter:v,onMouseLeave:k,onClick:S,dataKey:n,index:g,className:"recharts-bar-background-rectangle"});return ar.createElement(HC,dd({key:"background-bar-".concat(g)},w))}))}function W1e(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 Do(Do({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return ar.createElement(eh,{value:t?o:void 0},r)}function U1e(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=Fe(ps),l=Fe(Kg),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,qs.useState)(!1),p=MG(d,2),f=p[0],m=p[1],g=(0,qs.useState)(!1),b=MG(g,2),h=b[0],y=b[1];(0,qs.useEffect)(()=>{var _;return u?(m(!0),_=requestAnimationFrame(()=>{y(!0)})):(y(!1),c&&m(!1)),()=>{cancelAnimationFrame(_)}},[u,c]);var x=(0,qs.useCallback)(()=>{u||m(!1)},[u]),v=u&&h,k=u||f,S;u?r===!0?S=t:S=r:S=t;var w=ar.createElement(HC,dd({},n,{name:String(n.name)},o,{isActive:v,option:S,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:x}));return k?ar.createElement(pn,{zIndex:pr.activeBar},ar.createElement(R5,{index:o.originalDataIndex},w)):w}function H1e(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return ar.createElement(HC,dd({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function q1e(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=Sn(n))!==null&&t!==void 0?t:{},l=s.id,u=qC(s,N1e),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,g=n.onMouseLeave,b=qC(n,T1e),h=Wx(f,d,l),y=Ux(g),x=Hx(m,d,l);return r?ar.createElement(ar.Fragment,null,r.map((v,k)=>ar.createElement(R5,dd({index:v.originalDataIndex,key:"rectangle-".concat(v?.x,"-").concat(v?.y,"-").concat(v?.value,"-").concat(k),className:"recharts-bar-rectangle"},hu(b,v,k),{onMouseEnter:h(v,v.originalDataIndex),onMouseLeave:y(v,v.originalDataIndex),onClick:x(v,v.originalDataIndex)}),p?ar.createElement(U1e,{shape:c,activeBar:p,baseProps:u,entry:v,index:k,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):ar.createElement(H1e,{shape:c,baseProps:u,entry:v,index:k,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var K1e=(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"?[Do(Do({},n.prev),{},{height:Nr(n.prev.height,0,t),y:Nr(n.prev.y,n.prev.y+n.prev.height,t)})]:[Do(Do({},n.prev),{},{width:Nr(n.prev.width,0,t)})];if(n.status==="matched")return[Do(Do({},n.next),{},{x:Nr(n.prev.x,n.next.x,t),y:Nr(n.prev.y,n.next.y,t),width:Nr(n.prev.width,n.next.width,t),height:Nr(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[Do(Do({},o),{},{height:Nr(0,o.height,t),y:Nr(o.stackedBarStart,o.y,t)})]:[Do(Do({},o),{},{width:Nr(0,o.width,t),x:Nr(o.stackedBarStart,o.x,t)})]});function V1e(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=sd(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return ar.createElement(W1e,{showLabels:!d,rects:n},ar.createElement(ld,{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,g,b)=>ar.createElement(_r,null,ar.createElement(q1e,{props:t,data:m,animationElapsedTime:g,isAnimating:d||g<1,isEntrance:b}))),ar.createElement(nd,{label:t.label}),t.children)}function G1e(e){var t=(0,qs.useRef)(null);return ar.createElement(V1e,{previousRectanglesRef:t,props:e})}var jG=0,Y1e=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:Zt(e,t)}},eI=class extends qs.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=bt("recharts-bar",a),p=c;return ar.createElement(_r,{className:d,id:c},l&&ar.createElement("defs",null,ar.createElement(uh,{clipPathId:p,xAxisId:i,yAxisId:s})),ar.createElement(_r,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},ar.createElement(F1e,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),ar.createElement(G1e,this.props)))}},X1e={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:K1e,animationMatchBy:Kx,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:jG,shape:UC,xAxisId:0,yAxisId:0,zIndex:pr.bar};function Z1e(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=Vp(t,r),p=d.needClip,f=ti(),m=Or(),g=Bx(e.children,Pu),b=Fe(x=>NG(x,e.id,m,g));if(f!=="vertical"&&f!=="horizontal")return null;var h,y=b?.[0];return y==null||y.height==null||y.width==null?h=0:h=f==="vertical"?y.height/2:y.width/2,ar.createElement($C,{xAxisId:t,yAxisId:r,data:b,dataPointFormatter:Y1e,errorBarOffset:h},ar.createElement(eI,dd({},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 TG(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,g=e.cells,b=e.parentViewBox,h=e.dataStartIndex,y=t==="horizontal"?u:l,x=p?y.scale.domain():null,v=x9({numericAxis:y}),k=y.scale.map(v);return f.map((S,w)=>{var _,A,C,O,D,H;if(p){var $=p[w+h];if($==null)return null;_=y9($,x)}else _=Zt(S,n),Array.isArray(_)||(_=[v,_]);var Z=AG(o,jG)(_[1],w);if(t==="horizontal"){var N,P=u.scale.map(_[0]),M=u.scale.map(_[1]);if(P==null||M==null)return null;A=hP({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:S,index:w}),C=(N=M??P)!==null&&N!==void 0?N:void 0,O=i.size;var I=P-M;if(D=Go(I)?0:I,H={x:A,y:m.top,width:O,height:m.height},Math.abs(Z)>0&&Math.abs(D)0&&Math.abs(O)ar.createElement(ar.Fragment,null,ar.createElement(nh,{legendPayload:z1e(t)}),ar.createElement(B1e,{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}),ar.createElement(ih,{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!==UC}),ar.createElement(pn,{zIndex:t.zIndex},ar.createElement(Z1e,dd({},t,{id:o})))))}var KC=ar.memo(J1e,ri);KC.displayName="Bar";var zu=X(J()),vs=X(J());var Q1e=["domain","range"],R1e=["domain","range"];function $G(e,t){if(e==null)return{};var r,n,o=ewe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return BG(BG({},a),{},{type:i})},[a,i]);return(0,vs.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(QK(s)):r.current!==s&&t(RK({prev:r.current,next:s})),r.current=s)},[s,t]),(0,vs.useLayoutEffect)(()=>()=>{r.current&&(t(eV(r.current)),r.current=null)},[t]),null}var uwe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,vs.useRef)(null),i=(0,vs.useRef)(null),s=Fe(pg),l=Or(),u=Lt(),c="xAxis",d=Fe(S=>M_(S,c,t,l)),p=Fe(S=>ZM(S,t)),f=Fe(S=>cH(S,t)),m=Fe(S=>EM(S,t));if((0,vs.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||Bp(o)||(0,vs.isValidElement)(o)||m==null)){var S=a.current;if(S){var w=S.getCalculatedHeight();Math.round(p.height)!==Math.round(w)&&u(aV({id:t,height:w}))}}},[d,p,u,o,t,n,m]),p==null||f==null||m==null)return null;var g=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,y=rI(e,rwe),x=m.id,v=m.scale,k=rI(m,nwe);return zu.createElement(r0,tI({},y,k,{ref:a,labelRef:i,x:f.x,y:f.y,width:p.width,height:p.height,className:bt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},cwe={allowDataOverflow:co.allowDataOverflow,allowDecimals:co.allowDecimals,allowDuplicatedCategory:co.allowDuplicatedCategory,angle:co.angle,axisLine:gs.axisLine,height:co.height,hide:!1,includeHidden:co.includeHidden,interval:co.interval,label:!1,minTickGap:co.minTickGap,mirror:co.mirror,orientation:co.orientation,padding:co.padding,reversed:co.reversed,scale:co.scale,tick:co.tick,tickCount:co.tickCount,tickLine:gs.tickLine,tickSize:gs.tickSize,type:co.type,niceTicks:co.niceTicks,xAxisId:0},dwe=e=>{var t=ur(e,cwe);return zu.createElement(zu.Fragment,null,zu.createElement(lwe,{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}),zu.createElement(uwe,t))},Bu=zu.memo(dwe,VC);Bu.displayName="XAxis";var Fu=X(J()),xs=X(J());var pwe=["type"],fwe=["dangerouslySetInnerHTML","ticks","scale"],mwe=["id","scale"];function nI(){return nI=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return WG(WG({},a),{},{type:i})},[i,a]);return(0,xs.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(tV(s)):r.current!==s&&t(rV({prev:r.current,next:s})),r.current=s)},[s,t]),(0,xs.useLayoutEffect)(()=>()=>{r.current&&(t(nV(r.current)),r.current=null)},[t]),null}function bwe(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,xs.useRef)(null),i=(0,xs.useRef)(null),s=Fe(pg),l=Or(),u=Lt(),c="yAxis",d=Fe(S=>JM(S,t)),p=Fe(S=>dH(S,t)),f=Fe(S=>M_(S,c,t,l)),m=Fe(S=>NM(S,t));if((0,xs.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Bp(o)||(0,xs.isValidElement)(o)||m==null)){var S=a.current;if(S){var w=S.getCalculatedWidth();Math.round(d.width)!==Math.round(w)&&u(oV({id:t,width:w}))}}},[f,d,u,o,t,n,m]),d==null||p==null||m==null)return null;var g=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,y=oI(e,fwe),x=m.id,v=m.scale,k=oI(m,mwe);return Fu.createElement(r0,nI({},y,k,{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:bt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:f,axisType:c,axisId:t}))}var wwe={allowDataOverflow:po.allowDataOverflow,allowDecimals:po.allowDecimals,allowDuplicatedCategory:po.allowDuplicatedCategory,angle:po.angle,axisLine:gs.axisLine,hide:!1,includeHidden:po.includeHidden,interval:po.interval,label:!1,minTickGap:po.minTickGap,mirror:po.mirror,orientation:po.orientation,padding:po.padding,reversed:po.reversed,scale:po.scale,tick:po.tick,tickCount:po.tickCount,tickLine:gs.tickLine,tickSize:gs.tickSize,type:po.type,niceTicks:po.niceTicks,width:po.width,yAxisId:0},Swe=e=>{var t=ur(e,wwe);return Fu.createElement(Fu.Fragment,null,Fu.createElement(xwe,{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}),Fu.createElement(bwe,t))},Wu=Fu.memo(Swe,VC);Wu.displayName="YAxis";var mY=X(J()),gY=X(J());var Rp=X(J()),fY=X(J());var rY=X(J()),nY=X(J());var kwe=(e,t)=>t,i0=oe([kwe,Wt,zk,uo,s5,ai,HH,Vr],XH);function _we(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function s0(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(_we(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 iI=So("mouseClick"),sI=wu();sI.startListening({actionCreator:iI,effect:(e,t)=>{var r=e.payload,n=i0(t.getState(),s0(r));n?.activeIndex!=null&&t.dispatch(SH({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var GC=So("mouseMove"),lI=wu(),ph=null,Yp=null,aI=null;lI.startListening({actionCreator:GC,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");ph!==null&&(cancelAnimationFrame(ph),ph=null),Yp!==null&&(typeof a!="number"||!s)&&(clearTimeout(Yp),Yp=null),aI=s0(r);var l=()=>{var u=t.getState(),c=Zc(u,u.tooltip.settings.shared);if(!aI){ph=null,Yp=null;return}if(c==="axis"){var d=i0(u,aI);d?.activeIndex!=null?t.dispatch($_({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(j_())}ph=null,Yp=null};if(!s){l();return}a==="raf"?ph=requestAnimationFrame(l):typeof a=="number"&&Yp===null&&(Yp=setTimeout(l,a))}});function UG(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 HG={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},qG=Tr({name:"rootProps",initialState:HG,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:HG.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}}}),KG=qG.reducer,VG=qG.actions.updateOptions;var Cwe=null,Awe={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)},GG=Tr({name:"polarOptions",initialState:Cwe,reducers:Awe}),YG=GG.actions.updatePolarOptions;var XG=GG.reducer;var uI=So("keyDown"),cI=So("focus"),dI=So("blur"),l0=wu(),fh=null,Xp=null,YC=null;l0.startListening({actionCreator:uI,effect:(e,t)=>{YC=e.payload,fh!==null&&(cancelAnimationFrame(fh),fh=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Xp!==null&&(typeof o!="number"||!i)&&(clearTimeout(Xp),Xp=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=YC;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=Jc(c,Ou(l),Au(l),Rc(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,g=ai(l),b=Ou(l),h=Zc(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var y=$x(l,h,"hover",String(c.index));t.dispatch(Dx({active:!c.active,activeIndex:c.index,activeCoordinate:y}));return}var x=pH(l),v=x==="left-to-right"?1:-1,k=d==="ArrowRight"?1:-1,S;if(m){var w=Au(l),_=Rc(l),A=k*v,C=Z=>({active:!1,index:String(Z),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(S=-1,A>0){for(var O=0;O=0;D--)if(Jc(C(D),b,w,_)!=null){S=D;break}if(S<0)return}else{S=f+k*v;var H=g?.length||b.length;if(H===0||S>=H||S<0)return}var $=$x(l,h,"hover",String(S));t.dispatch(Dx({active:!0,activeIndex:S.toString(),activeCoordinate:$}))}finally{fh=null,Xp=null}};if(!i){s();return}o==="raf"?fh=requestAnimationFrame(s):typeof o=="number"&&Xp===null&&(s(),YC=null,Xp=setTimeout(()=>{YC?s():(Xp=null,fh=null)},o))}});l0.startListening({actionCreator:cI,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=Zc(r,r.tooltip.settings.shared),s=$x(r,i,"hover",String(a));t.dispatch(Dx({active:!0,activeIndex:a,activeCoordinate:s}))}}}});l0.startListening({actionCreator:dI,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(Dx({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function XC(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 Li=So("externalEvent"),fI=wu(),ZC=new Map,u0=new Map,pI=new Map;fI.startListening({actionCreator:Li,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=XC(o);pI.set(a,{handler:n,reactEvent:i});var s=ZC.get(a);s!==void 0&&(cancelAnimationFrame(s),ZC.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=u0.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),u0.delete(a));var g=()=>{var y=pI.get(a);try{if(!y)return;var x=y.handler,v=y.reactEvent,k=t.getState(),S={activeCoordinate:d5(k),activeDataKey:Kg(k),activeIndex:ps(k),activeLabel:H_(k),activeTooltipIndex:ps(k),isTooltipActive:p5(k)};x&&x(S,v)}finally{ZC.delete(a),u0.delete(a),pI.delete(a)}};if(!f){g();return}if(c==="raf"){var b=requestAnimationFrame(g);ZC.set(a,b)}else if(typeof c=="number"){if(!u0.has(a)){g();var h=setTimeout(g,c);u0.set(a,h)}}else g()}}});var Ewe=oe([Tu],e=>e.tooltipItemPayloads),ZG=oe([Ewe,(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 mI=So("touchMove"),gI=wu(),Zp=null,pd=null,JG=null,c0=null;gI.startListening({actionCreator:mI,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){c0=XC(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Zp!==null&&(cancelAnimationFrame(Zp),Zp=null),pd!==null&&(typeof a!="number"||!s)&&(clearTimeout(pd),pd=null),JG=Array.from(r.touches).map(u=>s0({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(c0!=null){var u=t.getState(),c=Zc(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=JG)===null||d===void 0?void 0:d[0];if(p==null){Zp=null,pd=null;return}var f=i0(u,p);f?.activeIndex!=null&&t.dispatch($_({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,g=c0.touches[0];if(document.elementFromPoint==null||g==null)return;var b=document.elementFromPoint(g.clientX,g.clientY);if(!b||!b.getAttribute)return;var h=b.getAttribute(JS),y=(m=b.getAttribute(QS))!==null&&m!==void 0?m:void 0,x=Qc(u).find(S=>S.id===y);if(h==null||x==null||y==null)return;var v=x.dataKey,k=ZG(u,h,y);t.dispatch(D_({activeDataKey:v,activeIndex:h,activeCoordinate:k,activeGraphicalItemId:y}))}Zp=null,pd=null}};if(!s){l();return}a==="raf"?Zp=requestAnimationFrame(l):typeof a=="number"&&pd===null&&(l(),c0=null,pd=setTimeout(()=>{c0?l():(pd=null,Zp=null)},a))}}});var d0={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},QG=Tr({name:"eventSettings",initialState:d0,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=rr(t.payload.throttledEvents))}}}),RG=QG.actions.setEventSettings;var eY=QG.reducer;var Nwe=CS({brush:SV,cartesianAxis:iV,chartData:xq,errorBars:rG,eventSettings:eY,graphicalItems:KK,layout:m9,legend:F9,options:mq,polarAxis:fK,polarOptions:XG,referenceElements:CV,renderedTicks:UV,rootProps:KG,tooltip:kH,zIndex:oq}),tY=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return Z7({reducer:Nwe,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([sI.middleware,lI.middleware,l0.middleware,fI.middleware,gI.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(cP({type:"raf"}))},devTools:ss.devToolsEnabled&&{serialize:{replacer:UG},name:"recharts-".concat(r)}})};function JC(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=Or(),a=(0,nY.useRef)(null);if(o)return r;a.current==null&&(a.current=tY(t,n));var i=Dv;return rY.createElement(Y9,{context:i,store:a.current},r)}var QC=X(J());function Twe(e){var t=e.layout,r=e.margin,n=Lt(),o=Or();return(0,QC.useEffect)(()=>{o||(n(d9(t)),n(fP(r)))},[n,o,t,r]),null}var RC=(0,QC.memo)(Twe,ri);var oY=X(J());function e2(e){var t=Lt();return(0,oY.useEffect)(()=>{t(VG(e))},[t,e]),null}var t2=X(J());var Owe=e=>{var t=Lt();return(0,t2.useEffect)(()=>{t(RG(e))},[t,e]),null},r2=(0,t2.memo)(Owe,ri);var Uu=X(J()),dY=X(J());var Qp=X(J()),yI=X(J());var Jp=X(J()),n2=X(J());function aY(e){var t=e.zIndex,r=e.isPanorama,n=(0,n2.useRef)(null),o=Lt();return(0,n2.useLayoutEffect)(()=>(n.current&&o(rq({zIndex:t,element:n.current,isPanorama:r})),()=>{o(nq({zIndex:t,isPanorama:r}))}),[o,t,r]),Jp.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function hI(e){var t=e.children,r=e.isPanorama,n=Fe(JH);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Jp.createElement(Jp.Fragment,null,o.map(i=>Jp.createElement(aY,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Jp.createElement(aY,{key:i,zIndex:i,isPanorama:r})))}var Pwe=["children"];function Mwe(e,t){if(e==null)return{};var r,n,o=Iwe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=gg(),n=hg(),o=uk();if(!Ra(r)||!Ra(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),Qp.createElement(Av,o2({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:Dwe,ref:t}),a)}),$we=e=>{var t=e.children,r=Fe(up);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Qp.createElement(Av,{width:n,height:o,x:i,y:a},t)},vI=(0,yI.forwardRef)((e,t)=>{var r=e.children,n=Mwe(e,Pwe),o=Or();return o?Qp.createElement($we,null,Qp.createElement(hI,{isPanorama:!0},r)):Qp.createElement(jwe,o2({ref:t},n),Qp.createElement(hI,{isPanorama:!1},r))});var Ln=X(J()),vr=X(J());var a2=X(J());function Lwe(e,t){return Wwe(e)||Fwe(e,t)||Bwe(e,t)||zwe()}function zwe(){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 Bwe(e,t){if(e){if(typeof e=="string")return iY(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)?iY(e,t):void 0}}function iY(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(f9(s))}},[n,e,a]),o}function lY(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 Uwe(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(wq(),null);function s2(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var Jwe=(0,vr.forwardRef)((e,t)=>{var r,n,o=(0,vr.useRef)(null),a=(0,vr.useState)({containerWidth:s2((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:s2((n=e.style)===null||n===void 0?void 0:n.height)}),i=i2(a,2),s=i[0],l=i[1],u=(0,vr.useCallback)((d,p)=>{l(f=>{var m=Math.round(d),g=Math.round(p);return f.containerWidth===m&&f.containerHeight===g?f:{containerWidth:m,containerHeight:g}})},[]),c=(0,vr.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 g=h=>{var y=h[0];if(y!=null){var x=y.contentRect,v=x.width,k=x.height;u(v,k)}},b=new ResizeObserver(g);b.observe(d),o.current=b}},[t,u]);return(0,vr.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),Ln.createElement(Ln.Fragment,null,Ln.createElement(pp,{width:s.containerWidth,height:s.containerHeight}),Ln.createElement("div",fd({ref:c},e)))}),Qwe=(0,vr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,vr.useState)({containerWidth:s2(r),containerHeight:s2(n)}),a=i2(o,2),i=a[0],s=a[1],l=(0,vr.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,vr.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 Ln.createElement(Ln.Fragment,null,Ln.createElement(pp,{width:i.containerWidth,height:i.containerHeight}),Ln.createElement("div",fd({ref:u},e)))}),Rwe=(0,vr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return Ln.createElement(Ln.Fragment,null,Ln.createElement(pp,{width:r,height:n}),Ln.createElement("div",fd({ref:t},e)))}),eSe=(0,vr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?Ln.createElement(Qwe,fd({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?Ln.createElement(Rwe,fd({},e,{width:r,height:n,ref:t})):Ln.createElement(Ln.Fragment,null,Ln.createElement(pp,{width:r,height:n}),Ln.createElement("div",fd({ref:t},e)))});function tSe(e){return e?Jwe:eSe}var cY=(0,vr.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,g=e.onTouchStart,b=e.style,h=e.width,y=e.responsive,x=e.dispatchTouchEvents,v=x===void 0?!0:x,k=(0,vr.useRef)(null),S=Lt(),w=(0,vr.useState)(null),_=i2(w,2),A=_[0],C=_[1],O=(0,vr.useState)(null),D=i2(O,2),H=D[0],$=D[1],Z=sY(),N=qv(),P=N?.width>0?N.width:h,M=N?.height>0?N.height:o,I=(0,vr.useCallback)(z=>{Z(z),typeof t=="function"&&t(z),C(z),$(z),z!=null&&(k.current=z)},[Z,t,C,$]),j=(0,vr.useCallback)(z=>{S(iI(z)),S(Li({handler:a,reactEvent:z}))},[S,a]),T=(0,vr.useCallback)(z=>{S(GC(z)),S(Li({handler:u,reactEvent:z}))},[S,u]),q=(0,vr.useCallback)(z=>{S(j_()),S(Li({handler:c,reactEvent:z}))},[S,c]),G=(0,vr.useCallback)(z=>{S(GC(z)),S(Li({handler:d,reactEvent:z}))},[S,d]),L=(0,vr.useCallback)(()=>{S(cI())},[S]),Y=(0,vr.useCallback)(()=>{S(dI())},[S]),K=(0,vr.useCallback)(z=>{S(uI(z.key))},[S]),pe=(0,vr.useCallback)(z=>{S(Li({handler:i,reactEvent:z}))},[S,i]),De=(0,vr.useCallback)(z=>{S(Li({handler:s,reactEvent:z}))},[S,s]),se=(0,vr.useCallback)(z=>{S(Li({handler:l,reactEvent:z}))},[S,l]),xe=(0,vr.useCallback)(z=>{S(Li({handler:p,reactEvent:z}))},[S,p]),ue=(0,vr.useCallback)(z=>{S(Li({handler:g,reactEvent:z}))},[S,g]),R=(0,vr.useCallback)(z=>{v&&S(mI(z)),S(Li({handler:m,reactEvent:z}))},[S,v,m]),we=(0,vr.useCallback)(z=>{S(Li({handler:f,reactEvent:z}))},[S,f]),Ce=tSe(y);return Ln.createElement(b5.Provider,{value:A},Ln.createElement(sO.Provider,{value:H},Ln.createElement(Ce,{width:P??b?.width,height:M??b?.height,className:bt("recharts-wrapper",n),style:Uwe({position:"relative",cursor:"default",width:P,height:M},b),onClick:j,onContextMenu:pe,onDoubleClick:De,onFocus:L,onBlur:Y,onKeyDown:K,onMouseDown:se,onMouseEnter:T,onMouseLeave:q,onMouseMove:G,onMouseUp:xe,onTouchEnd:we,onTouchMove:R,onTouchStart:ue,ref:I},Ln.createElement(Zwe,null),r)))});var rSe=["width","height","responsive","children","className","style","compact","title","desc"];function nSe(e,t){if(e==null)return{};var r,n,o=oSe(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=nSe(e,rSe),p=Sn(d);return l?Uu.createElement(Uu.Fragment,null,Uu.createElement(pp,{width:r,height:n}),Uu.createElement(vI,{otherAttributes:p,title:u,desc:c},a)):Uu.createElement(cY,{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},Uu.createElement(vI,{otherAttributes:p,title:u,desc:c,ref:t},Uu.createElement(EV,null,a)))});function xI(){return xI=Object.assign?Object.assign.bind():function(e){for(var t=1;tmY.createElement(mh,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:dSe,tooltipPayloadSearcher:ed,categoricalChartProps:e,ref:t}));var hY=X(J()),yY=X(J());var pSe=["axis","item"],wI=(0,yY.forwardRef)((e,t)=>hY.createElement(mh,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:pSe,tooltipPayloadSearcher:ed,categoricalChartProps:e,ref:t}));var CY=X(J()),AY=X(J());var wY=X(J()),md=X(J());var vY=X(J());function xY(e){var t=Lt();return(0,vY.useEffect)(()=>{t(YG(e))},[t,e]),null}var fSe=["layout"];function SI(){return SI=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=ur(e,CSe);return CY.createElement(SY,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:_Se,tooltipPayloadSearcher:ed,categoricalChartProps:r,ref:t})});var EY=X(J()),NY=X(J());var ASe=["axis"],gd=(0,NY.forwardRef)((e,t)=>EY.createElement(mh,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:ASe,tooltipPayloadSearcher:ed,categoricalChartProps:e,ref:t}));var bs=X(J()),gh=[{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}],TY="30m",OY="activeagents.timeWindow",PY=(0,bs.createContext)(null),CI=e=>gh.find(t=>t.id===e);function MY({children:e}){let[t,r]=(0,bs.useState)(()=>{try{let a=localStorage.getItem(OY);if(a&&CI(a))return a}catch{}return TY}),n=(0,bs.useCallback)(a=>{if(CI(a)){r(a);try{localStorage.setItem(OY,a)}catch{}}},[]),o=(0,bs.useMemo)(()=>{let a=gh.findIndex(s=>s.id===t),i=gh[a]||CI(TY);return{timeWindow:i,windowIndex:a,windows:gh,setWindow:n,zoomTo:s=>{let l=gh[Math.min(Math.max(s,0),gh.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return bs.default.createElement(PY.Provider,{value:o},e)}function El(){let e=(0,bs.useContext)(PY);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var hh=X(J());function Ks({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=El(),{darkMode:i}=ut(),s=es(i),l={color:s.textSecondary};return hh.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},hh.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"),hh.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=>hh.default.createElement("option",{key:u.id,value:u.id},u.label))),hh.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 Hn=X(J());var an=X(J());var p0=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},hd=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},u2=e=>{let t=e?.spans||[],r=null;for(let m of t){let g=m.tokens||{},b=(g.input||0)+(g.output||0);b>0&&(!r||b>r.total)&&(r={input:g.input||0,output:g.output||0,thinking:g.thinking||0,cached:g.cached||0,total:b})}if(!r)return null;let n=m=>{for(let g of t){let b=(g.attributes||{})[m];if(b)return b}return null},o=(m,...g)=>{let b=Number(n(m));if(Number.isFinite(b)&&b>0)return b;for(let h of g){let y=n(h);if(y)return hd(y)}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 g=m.attributes||{},b=g["tool.output.result"]||g["tool.result"],h=g["tool.input.args"]||g["tool.arguments"];b&&(u+=hd(b)),h&&(u+=hd(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,g)=>m+d[g],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 g=r.input-c.reduce((b,h)=>b+f[h],0);if(g!==0){let b=c.reduce((h,y)=>f[y]>f[h]?y:h);f[b]=Math.max(f[b]+g,0)}}else f={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:p0(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 ESe={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},yh=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 yd({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,an.useState)(i),p=r.filter(w=>w.tokens>0),f=e??p.reduce((w,_)=>w+_.tokens,0),m=t>0?f/t:0,g=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",y=u?"rgba(255,255,255,0.75)":"#4b5563",x=u?"rgba(255,255,255,0.1)":"#f3f4f6",v=`${yh(f)} / ${yh(t)} (${Math.round(m*100)}%)`,k=w=>w.key==="messages"&&g?g:w.color||ESe[w.key]||"#2563eb",S=w=>an.default.createElement("div",{style:{display:"flex",height:w,borderRadius:"999px",overflow:"hidden",background:x,flex:1}},p.map(_=>an.default.createElement("div",{key:_.key,title:`${_.label} \xB7 ${yh(_.tokens)}`,style:{width:`${Math.min(_.tokens/t*100,100)}%`,background:k(_)}})));return a?an.default.createElement("span",{title:`${s}: ${v}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},S("6px"),an.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:g||b,whiteSpace:"nowrap"}},Math.round(m*100),"%")):an.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${g?g+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},an.default.createElement("div",{onClick:w=>{w.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&an.default.createElement("span",{style:{color:b,fontWeight:400}}," \xB7 estimated")),an.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:g||y}},v),an.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"}},">"))),an.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},S("9px")),m>=.9&&an.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&&an.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,0)}].map(w=>an.default.createElement("div",{key:w.key,style:{display:"flex",alignItems:"center",gap:"8px"}},an.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:w.key==="__free"?x:k(w),border:w.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),an.default.createElement("span",{style:{fontSize:"13px",color:y,flex:1}},w.label),an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},yh(w.tokens)),an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:b,width:"46px",textAlign:"right"}},t>0?`${(w.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&an.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&&an.default.createElement("span",null,an.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",yh(n)),o>0&&an.default.createElement("span",null,an.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",yh(o)))))}var wt=X(J());var We=X(J());var to=X(J());var ke=X(J());var IY=["ui","json-ui","genui"],ef="render_ui",Vs=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),AI=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function tf(e){let t=typeof e=="string"?AI(e):e;if(Array.isArray(t))return t.every(Vs)?t:null;if(Vs(t)){if(Array.isArray(t.blocks))return t.blocks.every(Vs)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(Vs)?t.ui:null}return null}function EI(e,t){let r=String(e||"").trim().toLowerCase();if(IY.includes(r))return tf(t);if(r==="json"){let n=AI(t);return Vs(n)&&Array.isArray(n.ui)?tf(n):null}return null}function NI(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=AI(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>Vs(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=tf(o);return a?{blocks:a}:{object:o}}var NSe=e=>Vs(e)?e.function?.name||e.name:void 0,TSe=e=>Vs(e)?e.function?.arguments??e.arguments??e.input:void 0;function vh(e,{callId:t}={}){if(!Vs(e))return null;if(e.tool_name===ef&&e.tool_arguments!=null){let o=tf(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>Vs(a)&&a.id!=null);r.forEach(a=>{if(NSe(a)!==ef||t!=null&&o&&a.id!==t)return;let i=tf(TSe(a));i&&n.push(...i)})}else if(Vs(r)&&e.tool_name===ef){let o=tf(r);o&&n.push(...o)}return n.length>0?n:null}function c2(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function d2(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 DY(e){try{return new URL(String(e).trim()).host}catch{return""}}var FY=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],OSe=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],f0=FY.length,jY=220,xh=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),ir=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),WY=e=>{if(typeof e!="number"||!Number.isFinite(e))return ir(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()},MI=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,$Y={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"]}},PSe={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},TI=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),II=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"}),bh=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Hu({block:e,reason:t,colors:r,darkMode:n}){return ke.default.createElement("div",{className:"text-xs",style:{color:r.textMuted}},ke.default.createElement("div",{className:"mb-1"},"Unsupported block",e&&e.type?` \u201C${ir(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),ke.default.createElement("pre",{style:{...II(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function MSe({block:e,colors:t,darkMode:r,onAction:n}){let o=c2(e.image_url)&&d2(e.image_url)?e.image_url.trim():null;return ke.default.createElement("div",{className:"overflow-hidden",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg}},o&&ke.default.createElement("img",{src:o,alt:ir(e.title),style:{width:"100%",maxHeight:"220px",objectFit:"cover",display:"block"}}),ke.default.createElement("div",{className:"p-3 space-y-1.5"},e.title!=null&&ke.default.createElement("div",{style:bh(t)},ir(e.title)),e.body!=null&&ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Gs,{text:ir(e.body),darkMode:r,onUiAction:n})),e.footer!=null&&ke.default.createElement("div",{className:"text-xs pt-1",style:{color:t.textMuted,borderTop:`1px solid ${t.cardBorder}`}},ir(e.footer))))}function UY({block:e,colors:t,darkMode:r}){let n=e.delta!=null?ir(e.delta):null,o=e.tone||(n&&n.trim().startsWith("-")?"negative":n?"positive":"neutral"),a=MI(PSe,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?WY(e.value):ir(e.value);return ke.default.createElement("div",{style:{background:t.innerBg,border:`1px solid ${t.cardBorder}`,borderRadius:"10px",padding:"10px 12px"}},ke.default.createElement("div",{className:"text-xs",style:{color:t.textMuted}},ir(e.label)),ke.default.createElement("div",{className:"text-lg font-semibold leading-tight mt-0.5",style:{color:t.textPrimary}},s),n&&ke.default.createElement("div",{className:"text-xs mt-0.5 font-medium",style:{color:i}},n))}function ISe({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(xh):[];return n.length===0?ke.default.createElement(Hu,{block:e,reason:"stats needs an items array",colors:t,darkMode:r}):ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:"8px"}},n.map((o,a)=>ke.default.createElement(UY,{key:a,block:o,colors:t,darkMode:r})))}var PI=(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"}),DSe=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:It.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function HY({columns:e,rows:t,colors:r,renderCell:n}){return ke.default.createElement("div",{style:{overflowX:"auto"}},ke.default.createElement("table",{className:"text-sm",style:{width:"100%",borderCollapse:"collapse"}},ke.default.createElement("thead",null,ke.default.createElement("tr",null,e.map((o,a)=>ke.default.createElement("th",{key:a,style:DSe(r)},ir(o))))),ke.default.createElement("tbody",null,t.map((o,a)=>ke.default.createElement("tr",{key:a},e.map((i,s)=>{let l=o[s];return ke.default.createElement("td",{key:s,style:PI(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():ir(l))}))))))}function jSe({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 ke.default.createElement(Hu,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:xh(i)?n.map(s=>i[s]):[i]);return ke.default.createElement("div",null,e.title!=null&&ke.default.createElement("div",{className:"mb-1.5",style:bh(t)},ir(e.title)),ke.default.createElement(HY,{columns:n,rows:a,colors:t}))}var $Se=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},LSe=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function zSe({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(xh):[];if(o.length===0)return ke.default.createElement(Hu,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:$Se(o),i=Array.isArray(e.series)?e.series.filter(b=>typeof b=="string"):[],s=(i.length>0?i:LSe(o,a)).slice(0,f0);if(!a||s.length===0)return ke.default.createElement(Hu,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?OSe:FY,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=ke.default.createElement(td,{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():ir(b)}),p=s.length>1||n==="pie"?ke.default.createElement(ik,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=ke.default.createElement(ke.default.Fragment,null,ke.default.createElement(ju,{stroke:t.cardBorder,vertical:!1}),ke.default.createElement(Bu,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),ke.default.createElement(Wu,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:WY,width:44})),m={top:8,right:12,bottom:0,left:0},g;if(n==="line")g=ke.default.createElement(bI,{data:o,margin:m},f,d,p,s.map((b,h)=>ke.default.createElement(BC,{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")g=ke.default.createElement(gd,{data:o,margin:m},f,d,p,s.map((b,h)=>ke.default.createElement(Lu,{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((v,k)=>(Number(k[b])||0)-(Number(v[b])||0)),y=h.slice(0,f0),x=h.slice(f0);x.length>0&&(y[f0-1]={[a]:"Other",[b]:x.reduce((v,k)=>v+(Number(k[b])||0),Number(y[f0-1][b])||0)}),g=ke.default.createElement(_I,{margin:m},d,p,ke.default.createElement(CC,{data:y,dataKey:b,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},y.map((v,k)=>ke.default.createElement(Pu,{key:k,fill:l[k]}))))}else g=ke.default.createElement(wI,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((b,h)=>ke.default.createElement(KC,{key:b,dataKey:b,fill:l[h],radius:[4,4,0,0],maxBarSize:24,isAnimationActive:!1})));return ke.default.createElement("div",null,e.title!=null&&ke.default.createElement("div",{className:"mb-1",style:bh(t)},ir(e.title)),ke.default.createElement("div",{style:{width:"100%",height:jY,minWidth:0}},ke.default.createElement(zc,{width:"100%",height:jY},g)))}function BSe({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return ke.default.createElement(Hu,{block:e,reason:"list needs an items array",colors:t,darkMode:r});let a=e.ordered?"ol":"ul";return ke.default.createElement("div",null,e.title!=null&&ke.default.createElement("div",{className:"mb-1",style:bh(t)},ir(e.title)),ke.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)=>ke.default.createElement("li",{key:s},typeof i=="string"?ke.default.createElement(Gs,{text:i,darkMode:r,onUiAction:n}):ir(i)))))}function FSe({block:e,colors:t}){let r=Number(e.value),n=Number.isFinite(r)?Math.max(0,Math.min(100,r)):0;return ke.default.createElement("div",null,ke.default.createElement("div",{className:"flex items-center justify-between text-xs mb-1"},ke.default.createElement("span",{style:{color:t.textCell}},ir(e.label)),ke.default.createElement("span",{className:"font-mono",style:{color:t.textMuted}},Math.round(n),"%")),ke.default.createElement("div",{style:{height:"8px",borderRadius:"999px",background:t.trackBg,overflow:"hidden"}},ke.default.createElement("div",{style:{width:`${n}%`,height:"100%",background:oa,borderRadius:"999px",transition:"width 0.3s ease"}})))}var WSe=["text","textarea","number","select","checkbox"],OI=e=>ir(e.name||e.label),LY=e=>ir(e.label||e.name),zY=e=>WSe.includes(e.type)?e.type:"text";function USe({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>xh(p)&&(p.name||p.label)),[a,i]=(0,ke.useState)(()=>Object.fromEntries(o.map(p=>[OI(p),zY(p)==="checkbox"?!1:""]))),[s,l]=(0,ke.useState)(!1);if(o.length===0)return ke.default.createElement(Hu,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?ir(e.submit):"Submit",c=(p,f)=>i(m=>({...m,[p]:f}));return ke.default.createElement("form",{onSubmit:p=>{p.preventDefault();let f=o.map(m=>{let g=a[OI(m)];return`${LY(m)}: ${typeof g=="boolean"?g?"yes":"no":ir(g)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?ir(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&&ke.default.createElement("div",{style:bh(t)},ir(e.title)),o.map(p=>{let f=OI(p),m=zY(p),g=LY(p),b=`genui-field-${f.replace(/\W+/g,"-")}`;return m==="checkbox"?ke.default.createElement("label",{key:f,className:"flex items-center gap-2 text-sm",style:{color:t.textCell}},ke.default.createElement("input",{type:"checkbox",checked:!!a[f],onChange:h=>c(f,h.target.checked),style:{accentColor:oa}}),g):ke.default.createElement("div",{key:f},ke.default.createElement("label",{htmlFor:b,className:"block text-xs mb-1",style:{color:t.textSecondary}},g,p.required?" *":""),m==="textarea"?ke.default.createElement("textarea",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),placeholder:p.placeholder!=null?ir(p.placeholder):void 0,required:!!p.required,rows:3,className:"aa-field",style:{...TI(t),resize:"vertical"}}):m==="select"?ke.default.createElement("select",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),required:!!p.required,className:"aa-field",style:TI(t)},ke.default.createElement("option",{value:""},p.placeholder!=null?ir(p.placeholder):"Select\u2026"),(Array.isArray(p.options)?p.options:[]).map((h,y)=>ke.default.createElement("option",{key:y,value:ir(h)},ir(h)))):ke.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?ir(p.placeholder):void 0,required:!!p.required,className:"aa-field",style:TI(t)}))}),ke.default.createElement("div",{className:"flex items-center gap-3 pt-1"},ke.default.createElement("button",{type:"submit","data-testid":"genui-form-submit",style:{padding:"6px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,background:oa,color:"#ffffff",border:"1px solid transparent",cursor:"pointer"}},u),s&&ke.default.createElement("span",{className:"text-xs",style:{color:t.textMuted}},"Sent to the agent")))}function HSe({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.options)?e.options:null,[a,i]=(0,ke.useState)(null);return!o||o.length===0?ke.default.createElement(Hu,{block:e,reason:"choices needs options",colors:t,darkMode:r}):ke.default.createElement("div",null,e.prompt!=null&&ke.default.createElement("div",{className:"text-sm mb-1.5",style:{color:t.textCell}},ir(e.prompt)),ke.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=ir(s),c=a===l;return ke.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?oa:t.inputBorder}`,background:c?oa:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function qSe({url:e,alt:t,colors:r,darkMode:n}){let[o,a]=(0,ke.useState)(!1);if(o)return ke.default.createElement("img",{src:e,alt:t,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}});let i=DY(e);return ke.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 KSe({block:e,colors:t,darkMode:r}){if(!c2(e.url))return ke.default.createElement(Hu,{block:e,reason:"image URL must be http(s) or data:",colors:t,darkMode:r});let n=e.url.trim(),o=e.alt!=null?ir(e.alt):"";return ke.default.createElement("figure",{style:{margin:0}},d2(n)?ke.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):ke.default.createElement(qSe,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&ke.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},ir(e.caption)))}function VSe({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(MI($Y,e.tone)||$Y.info)[r?"dark":"light"];return ke.default.createElement("div",{style:{background:o,borderLeft:`3px solid ${a}`,borderRadius:"8px",padding:"10px 12px"}},e.title!=null&&ke.default.createElement("div",{className:"text-sm font-semibold mb-0.5",style:{color:a}},ir(e.title)),ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Gs,{text:ir(e.body),darkMode:r,onUiAction:n})))}function GSe({block:e,colors:t,darkMode:r}){return ke.default.createElement("div",null,e.language!=null&&ke.default.createElement("div",{className:"text-xs font-mono mb-1",style:{color:t.textMuted}},ir(e.language)),ke.default.createElement("pre",{style:II(r)},ir(e.code)))}function BY({block:e,colors:t,darkMode:r,onAction:n}){let o=e.text??e.body??e.content??e.markdown;return ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Gs,{text:ir(o),darkMode:r,onUiAction:n}))}var YSe=3;function p2({value:e,colors:t,darkMode:r,depth:n}){if(e==null||typeof e!="object")return typeof e=="boolean"?ke.default.createElement("span",{className:"font-mono"},String(e)):typeof e=="number"?ke.default.createElement("span",{style:{fontVariantNumeric:"tabular-nums"}},e.toLocaleString()):ke.default.createElement("span",null,ir(e));if(n>=YSe)return ke.default.createElement("pre",{style:{...II(r),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2));if(Array.isArray(e)){if(e.length===0)return ke.default.createElement("span",{style:{color:t.textMuted}},"\u2014");if(e.every(xh)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return ke.default.createElement(HY,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>ke.default.createElement(p2,{value:i,colors:t,darkMode:r,depth:n+1})})}return e.every(a=>a==null||typeof a!="object")?ke.default.createElement("span",null,e.map(ir).join(", ")):ke.default.createElement("ul",{className:"list-disc pl-5 space-y-0.5"},e.map((a,i)=>ke.default.createElement("li",{key:i},ke.default.createElement(p2,{value:a,colors:t,darkMode:r,depth:n+1}))))}let o=Object.entries(e);return o.length===0?ke.default.createElement("span",{style:{color:t.textMuted}},"{}"):ke.default.createElement("table",{className:"text-sm",style:{borderCollapse:"collapse",width:n===0?"100%":"auto"}},ke.default.createElement("tbody",null,o.map(([a,i])=>ke.default.createElement("tr",{key:a},ke.default.createElement("th",{scope:"row",className:"font-mono text-xs",style:{...PI(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),ke.default.createElement("td",{style:PI(t,!1)},ke.default.createElement(p2,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function XSe({block:e,colors:t,darkMode:r}){let n="value"in e?e.value:e.data;return ke.default.createElement("div",{style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",overflow:"hidden"}},e.title!=null&&ke.default.createElement("div",{className:"px-3 pt-2",style:bh(t)},ir(e.title)),ke.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},ke.default.createElement(p2,{value:n,colors:t,darkMode:r,depth:0})))}var ZSe={card:MSe,stat:UY,stats:ISe,table:jSe,chart:zSe,list:BSe,progress:FSe,form:USe,choices:HSe,image:KSe,callout:VSe,code:GSe,object:XSe,text:BY,markdown:BY};function Nl({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(xh):[];if(n.length===0)return null;let o=es(r);return ke.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=MI(ZSe,s);return ke.default.createElement("div",{key:i,"data-testid":"genui-block","data-block-type":s},l?ke.default.createElement(l,{block:a,colors:o,darkMode:r,onAction:t}):ke.default.createElement(Hu,{block:a,colors:o,darkMode:r}))}))}var JSe=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,m0=(e,t)=>e.split(JSe).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return to.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return to.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return to.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?to.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),qY=e=>/^\s*\|.*\|\s*$/.test(e),QSe=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),KY=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function Gs({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` -`),a=0,i=0;for(;ato.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},m0(p,`th${d}-${f}`))))),to.default.createElement("tbody",null,c.map((p,f)=>to.default.createElement("tr",{key:f},u.map((m,g)=>to.default.createElement("td",{key:g,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},m0(p[g]??"",`td${d}-${f}-${g}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;ato.default.createElement("li",{key:d},m0(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(to.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(to.default.createElement("div",{key:i++},m0(s,`p${i}`))),a+=1}return to.default.createElement("div",{className:"break-words"},n)}var si=X(J()),RSe=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"},eke=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function DI({tool:e,darkMode:t}){let r=eke(e);return si.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&si.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),si.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"}},si.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),si.default.createElement("span",null,"source: ",RSe(e))))}function jI({tools:e,darkMode:t}){let[r,n]=(0,si.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 si.default.createElement("div",{style:{marginTop:"8px"}},si.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},si.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>si.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&&si.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"}`}},si.default.createElement(DI,{tool:a,darkMode:t})))}var tke=["application/json","application/xml","application/x-yaml","application/csv"],rke=/\.(csv|md|txt|json|ya?ml)$/i;function VY(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/")||tke.includes(t)||rke.test(r)?"text":"file"}function GY(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 YY(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 XY=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,g0=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}},nke=["text","output","body","content"],ZY=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},oke=e=>{let t=ZY(e.tool_result)??ZY(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=nke.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}},ake=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||g0(e.content)),RY=280,ike=["tool","system","developer"],h0=(e,t=RY)=>e.replace(/\s+/g," ").trim().slice(0,t),$I=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)}},eX=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:$I(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:$I(t)}]:[]},tX=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),ske=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||tX(o.content))return;let i=eX(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))},JY=e=>ike.includes(e.role)&&typeof e.content=="string"&&h0(e.content).length>=RY,lke=({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 We.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`,className:"hidden sm:inline-block",style:{position:"relative",width:"96px",height:"5px",borderRadius:"999px",background:t?"rgba(255,255,255,0.08)":"#f3f4f6",flexShrink:0,marginTop:"8px"}},We.default.createElement("span",{style:{position:"absolute",top:0,bottom:0,left:`${n}%`,width:`${Math.min(o,100-n)}%`,borderRadius:"999px",background:a}}))},f2=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}),Un=(e,t)=>{let{tone:r,label:n}=g6(e),o=Fn[r]||Fn.muted;return{background:o.soft,color:o.text,label:n,tone:r}},QY={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function m2({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=es(t);return We.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/"))&&YY(s.url),d=GY(s.byte_size);return We.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?We.default.createElement("img",{src:s.url,alt:s.filename||"",style:{width:"36px",height:"36px",objectFit:"cover",borderRadius:"4px",flexShrink:0}}):We.default.createElement("span",{className:"font-mono",style:{color:i.textMuted,flexShrink:0}},QY[s.kind]||QY.file),We.default.createElement("span",{className:"min-w-0"},We.default.createElement("span",{className:"block truncate"},s.filename||"attachment"),d&&We.default.createElement("span",{className:"block font-mono",style:{color:i.textMuted}},d)),n&&We.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 rX=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},uke=(e,t)=>{let r=vh(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?rX(o).has(e.tool_call_id):vh(o)));return n?vh(n,{callId:e.tool_call_id}):null},cke=(e,t)=>{let r=rX(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===ef&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function ws({messages:e,darkMode:t,tools:r,onUiAction:n,onEditMessage:o,onDeleteMessage:a,testIdPrefix:i}){let[s,l]=(0,We.useState)({}),[u,c]=(0,We.useState)(null),[d,p]=(0,We.useState)(""),[f,m]=(0,We.useState)(!1),[g,b]=(0,We.useState)(null),h=A=>l(C=>({...C,[A]:!C[A]})),y={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},x=A=>i?`${i}-${A}`:void 0,v=A=>A.stopPropagation(),k=A=>{c(A.id),p(A.content||""),b(null)},S=()=>{c(null),b(null)},w=async A=>{if(!f){m(!0),b(null);try{await o(A,d),c(null)}catch(C){b(C.message||"Could not save the message")}finally{m(!1)}}},_=ske(e);return We.default.createElement("div",{className:"space-y-3"},_.map(A=>{let C=Un(A.role,t),O=!!s[A.id],D=u===A.id,H=!!((o||a)&&["user","assistant"].includes(A.role)),$=A.role==="tool"&&A.tool_name===ef?uke(A,_):null,Z=A.role==="assistant"&&!D?NI(A.content):null,N=A.role==="assistant"&&!cke(A,_)?vh(A):null,P=JY(A)&&!O,M=ake(A)||JY(A),I=g0(A.tool_arguments),j=g0(A.tool_result)||g0(A.content),T=A.tool_calls&&(!Array.isArray(A.tool_calls)||A.tool_calls.length>0)?g0(A.tool_calls):null,q=A.role==="tool"?oke(A):null,G=A.tool_name?(r||[]).find(ue=>ue&&ue.name===A.tool_name):null,L=A.role==="tool"?$I(A.tool_arguments):null,Y=A.role==="tool"&&!!L,K=Un("assistant",t),pe=Un("tool",t),De=A.role==="tool"&&!A.tool_arguments&&_.some(ue=>ue&&ue.role==="assistant"&&(A.tool_call_id&&ue.tool_call_id===A.tool_call_id||Array.isArray(ue.tool_calls)&&ue.tool_calls.some(R=>R.id&&R.id===A.tool_call_id))),se=A.role==="assistant"&&!tX(A.content)?eX(A):[],xe=f2(t);return We.default.createElement("div",{key:A.id,className:"group","data-testid":i,"data-message-id":i?A.id:void 0,"data-role":i?A.role:void 0},We.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${M?"cursor-pointer":""}`,onClick:M?()=>h(A.id):void 0,style:O?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},We.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},(Y?[K,pe]:[C]).map(ue=>We.default.createElement(be,{key:ue.label,tone:ue.tone,style:{justifyContent:"center"}},ue.label))),We.default.createElement("div",{className:"min-w-0 flex-1"},We.default.createElement("div",{className:"text-sm break-words",style:{color:y.textPrimary}},D?We.default.createElement("div",{className:"space-y-2",onClick:v},We.default.createElement("textarea",{"data-testid":x("editor"),value:d,onChange:ue=>p(ue.target.value),onKeyDown:ue=>{ue.key==="Escape"&&S(),ue.key==="Enter"&&(ue.metaKey||ue.ctrlKey)&&w(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:y.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"}}),We.default.createElement("div",{className:"flex items-center gap-2 text-xs"},We.default.createElement("button",{type:"button","data-testid":x("save"),onClick:()=>w(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"),We.default.createElement("button",{type:"button","data-testid":x("cancel"),onClick:S,disabled:f,style:{padding:"4px 10px",borderRadius:"6px",background:"transparent",color:y.textSecondary,border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,cursor:"pointer"}},"Cancel"),g&&We.default.createElement("span",{style:{color:"#dc2626"}},g))):$?We.default.createElement("div",null,We.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:pe.color}},"\u2699 ",A.tool_name," \xB7 ",$.length," block",$.length===1?"":"s"),We.default.createElement(Nl,{blocks:$,onAction:n,darkMode:t})):A.role==="tool"?We.default.createElement("span",{style:{display:"grid",gap:"2px"}},L&&!De&&We.default.createElement("span",{className:"font-mono text-xs break-words"},A.tool_name&&We.default.createElement("span",{style:{color:pe.color}},"\u2699 ",A.tool_name," "),We.default.createElement("span",{style:{color:Y?K.color:y.textMuted}},"in:")," ",h0(L,180),L.length>180?"\u2026":""),q?We.default.createElement("span",null,A.tool_name&&!(L&&!De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:pe.color}},"\u2699 ",A.tool_name),(L||De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:Y?pe.color:y.textMuted}},"out:"),q.meta&&We.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:y.textMuted}},q.meta),"\u201C",q.body.replace(/\s+/g," ").trim().slice(0,180),q.body.length>180?"\u2026":"","\u201D"):A.content?We.default.createElement("span",null,A.tool_name&&!(L&&!De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:pe.color}},"\u2699 ",A.tool_name),(L||De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:Y?pe.color:y.textMuted}},"out:"),"\u201C",h0(A.content,180),A.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):We.default.createElement("span",{className:"whitespace-pre-wrap"},A.tool_name?`\u2192 ${A.tool_name}(...)`:"\u2014")):P?We.default.createElement("span",{style:{color:y.textSecondary}},h0(A.content),"\u2026"):se.length>0?We.default.createElement("span",{style:{display:"grid",gap:"2px"}},se.map((ue,R)=>We.default.createElement("span",{key:R,className:"font-mono text-xs break-words"},ue.name&&We.default.createElement("span",{style:{color:y.textMuted}},ue.name," "),We.default.createElement("span",{style:{color:y.textMuted}},"in:")," ",ue.args?We.default.createElement(We.default.Fragment,null,h0(ue.args,180),ue.args.length>180?"\u2026":""):"\u2014"))):Z&&Z.blocks?We.default.createElement(Nl,{blocks:Z.blocks,onAction:n,darkMode:t}):Z&&Z.object?We.default.createElement(Nl,{blocks:[{type:"object",value:Z.object}],darkMode:t}):We.default.createElement(Gs,{text:A.content||"\u2014",darkMode:t,onUiAction:n}),N&&!D&&We.default.createElement("div",{className:"mt-2"},We.default.createElement(Nl,{blocks:N,onAction:n,darkMode:t})),A.role==="user"&&We.default.createElement(m2,{attachments:A.attachments,darkMode:t,testId:x("attachment")})),We.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:y.textMuted}},H&&!D&&We.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:v},o&&We.default.createElement("button",{type:"button","data-testid":x("edit"),onClick:()=>k(A),className:"hover:underline",style:{color:y.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&We.default.createElement("button",{type:"button","data-testid":x("delete"),onClick:()=>a(A),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),A.created_at&&We.default.createElement("span",null,new Date(A.created_at).toLocaleTimeString()),A.tool_name&&A.role!=="tool"&&We.default.createElement("span",{className:"px-1.5 py-0.5 rounded",style:{background:C.background,color:C.color}},"\u2699 ",A.tool_name),A.duration_ms!=null&&We.default.createElement("span",null,XY(A.duration_ms)),(A.tool_calls||[]).length>0&&We.default.createElement("span",null,A.tool_calls.length," tool call",A.tool_calls.length>1?"s":""),A.content_checksum&&We.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",A.content_checksum.slice(0,8)))),We.default.createElement(lke,{message:A,darkMode:t}),M&&We.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:y.textMuted}},We.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),O&&We.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:C.color+"55"}},We.default.createElement("div",{className:"flex flex-wrap gap-x-5 gap-y-1 text-xs font-mono",style:{color:y.textSecondary}},A.created_at&&We.default.createElement("span",null,new Date(A.created_at).toLocaleString()),A.tool_call_id&&We.default.createElement("span",null,"call: ",A.tool_call_id),A.duration_ms!=null&&We.default.createElement("span",null,"took ",XY(A.duration_ms)),A.content_checksum&&We.default.createElement("span",null,"\u{1F512} ",A.content_checksum)),I&&We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?K.color:y.textMuted}},"Arguments",Y?" \xB7 from the agent":""),We.default.createElement("pre",{style:xe},I)),q?We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?pe.color:y.textMuted}},"Result",Y?" \xB7 from the tool":""),Object.keys(q.rest).length>0&&We.default.createElement("pre",{style:xe},JSON.stringify(q.rest,null,2)),We.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:y.textMuted}},q.field," \xB7 ",q.body.length.toLocaleString()," chars"),We.default.createElement("pre",{style:{...xe,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},q.body.slice(0,8e3),q.body.length>8e3?` -\u2026`:"")):j?We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:y.textMuted}},A.role==="tool"?"Result":"Content (parsed)"),We.default.createElement("pre",{style:xe},j)):A.role==="tool"&&A.content?We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?pe.color:y.textMuted}},"Result",Y?" \xB7 from the tool":""," \xB7 ",A.content.length.toLocaleString()," chars"),We.default.createElement("pre",{style:{...xe,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},A.content.slice(0,8e3),A.content.length>8e3?` -\u2026`:"")):null,T&&We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:y.textMuted}},"Requested tool calls"),We.default.createElement("pre",{style:xe},T)),G&&We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:y.textMuted}},"Tool definition"),We.default.createElement(DI,{tool:G,darkMode:t}))))}))}var cr=X(J());var jr=X(J());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"}),nX=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function rf({open:e,darkMode:t,size:r=14,style:n}){return jr.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"},jr.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function g2({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=An(e);return jr.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var Fa={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function LI({cells:e,darkMode:t,gap:r=16,className:n="grid",style:o}){let a=An(t),i=(e||[]).filter(Boolean);return i.length===0?null:jr.default.createElement("div",{className:`flex-shrink-0 text-sm ${n}`,style:{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 jr.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:jr.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}function wh({cells:e,darkMode:t,className:r="",...n}){let o=An(t),a=(e||[]).filter(i=>i&&i.content!=null&&i.content!==!1&&i.content!=="");return jr.default.createElement(jr.default.Fragment,null,jr.default.createElement(LI,{cells:e,darkMode:t,className:`hidden lg:grid ${r}`,...n}),a.length>0&&jr.default.createElement("div",{className:"lg:hidden flex flex-1 flex-wrap items-center gap-x-3 gap-y-1 min-w-0 text-xs",style:{color:o.textSecondary},"data-testid":"meta-cells"},a.map(i=>jr.default.createElement("span",{key:i.key,title:i.title||void 0,className:"min-w-0 max-w-full truncate"},i.content))))}var oX=(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"}),dke=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 Sh({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=kh(),c=An(t),d=(e||[]).filter(p=>p&&(p.text||s));return d.some(p=>p.text)?jr.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:It.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((p,f)=>{let m=`${p.label}-${f}`,g=l(m),b=p.max||i,h=!p.text,y=String(p.text??"").replace(/\s+/g," ").trim(),x=dke(p.text),v=!h&&(x.json||y.length>60||y!==String(p.text).trim());return jr.default.createElement("div",{key:m},jr.default.createElement("div",{onClick:v?k=>{k.stopPropagation(),u(m)}:void 0,title:v?g?"Collapse":"Expand":void 0,style:{cursor:v?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},jr.default.createElement("span",{style:{color:p.color||c.textMuted}},v?g?"\u25BE":"\u25B8":"\xA0"," ",p.label,":")," ",!g&&(h?jr.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):nX(y,b))),g&&jr.default.createElement("pre",{onClick:k=>k.stopPropagation(),style:oX(t,{wrap:!x.json})},x.text))})):null}function y0({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=An(n);return jr.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&jr.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>jr.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 aX({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=An(o);return jr.default.createElement("div",null,jr.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},jr.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&jr.default.createElement("span",{style:{color:s.textMuted}},nX(t,i))),r&&jr.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:oX(o,{wrap:a})},t))}function kh(e={}){let[t,r]=(0,jr.useState)(e),n=(0,jr.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,jr.useCallback)(a=>!!t[a],[t]),n,r]}var qu="max-md:text-lg",mo="max-md:font-mono max-md:text-[11px] max-md:font-semibold max-md:uppercase max-md:tracking-[0.05em]";var zI={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},sX=[{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"}],ro=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,BI=e=>{switch(e){case"root":return Ko.spans.root;case"prompt":return Ko.spans.prompt;case"generate":return Ko.spans.generate;case"llm":return Ko.spans.llm;case"thinking":return Ko.spans.thinking;case"tool":return Ko.spans.tool;case"response":return Ko.spans.response;default:return"-"}},pke=(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))},fke=(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))}},mke=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},gke=(e,t)=>{if(!t.duration_ms)return ro(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${ro(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},hke=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},iX=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,FI=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}},yke=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}},vke=(e,t)=>{let r=yke(e),n=FI(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},xke=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}},WI=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 bke({span:e,darkMode:t,tools:r=[]}){let[n,o]=kh(),a=An(t),{messages:i,rest:s}=xke(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)=>iX(f[0])-iX(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 cr.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:It.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},cr.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},cr.default.createElement("span",null,"duration: ",ro(e.duration)),cr.default.createElement("span",null,"status: ",e.status||"OK"),mke(e)>0&&cr.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),cr.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&cr.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},cr.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},cr.default.createElement("span",{style:{color:Un("tool",t).color}},"\u2699 ",d.tool_name),p&&cr.default.createElement(cr.default.Fragment,null," ",cr.default.createElement("span",{style:{color:Un("assistant",t).color}},"in:")," ",cr.default.createElement("span",{style:{color:a.textBody}},p))),d.content&&cr.default.createElement("div",{style:{fontSize:"12px"}},cr.default.createElement("span",{style:{color:Un("tool",t).color}},"out:")," ",cr.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&&cr.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},cr.default.createElement(ws,{messages:i,darkMode:t,tools:l||r})),l&&cr.default.createElement(jI,{tools:l,darkMode:t}),c.length>0&&cr.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([f,m])=>{let g=f.match(/args|result|input|output/)?hke(m):null,b=!g&&(f.endsWith(".instructions")||f.match(/input|output|result/))&&typeof m=="string"?m:null,h=g||b;if(!h)return cr.default.createElement("div",{key:f,style:{wordBreak:"break-all"}},cr.default.createElement("span",{style:{color:a.textMuted}},f,":")," ",typeof m=="string"?m:JSON.stringify(m));let y=`${e.span_id}:${f}`;return cr.default.createElement(aX,{key:f,label:f,body:h,prose:!g,darkMode:t,open:n(y),onToggle:()=>o(y)})})))}function wke({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:vke(e,t);return cr.default.createElement(cr.default.Fragment,null,cr.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},cr.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},cr.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},BI(e.type)),cr.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),cr.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:It.mono,color:l.textMuted}},gke(e,t)),u&&cr.default.createElement(rf,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),cr.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},cr.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":zI[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}%`:`${pke(e.duration,o)}%`}})),c&&cr.default.createElement(Sh,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:Un(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:Un(c.outputTone,r).color,max:160}]})),a&&cr.default.createElement(bke,{span:e,darkMode:r,tools:s}))}function UI({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=kh(),s=An(t),l=fke(e?.spans,r),u=n||WI(e);if(l.length===0)return cr.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 cr.default.createElement("div",{className:"space-y-2"},l.map((d,p)=>{let f=`${o}${d.span_id||p}`;return cr.default.createElement(wke,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var Ske=[{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"}],kke=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 _ke({trace:e,darkMode:t}){let r=An(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=kke(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)=>wt.default.createElement("div",{style:{width:`${Math.max(c/i*100,.4)}%`,background:d,height:"100%"}});return wt.default.createElement("div",{style:{marginTop:"14px",paddingTop:"12px",borderTop:`1px solid ${r.cardBorder}`}},wt.default.createElement("div",{style:{fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em",color:r.textSecondary,marginBottom:"6px"}},"Time breakdown \u2014 generation vs tools"),wt.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")),wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"8px",fontSize:"12px",fontFamily:It.mono,color:r.textBody}},wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",ro(n)," (",l(n),")"),wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",ro(a)," (",l(a),")"),s>0&&wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",ro(s)," (",l(s),")")),o.length>0&&wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:It.mono,color:r.textSecondary}},o.map((c,d)=>wt.default.createElement("span",{key:d},c.name," ",ro(c.duration)," (",l(c.duration||0),")"))))}function Cke({trace:e,darkMode:t}){let[r,n]=(0,wt.useState)(null),[o,a]=(0,wt.useState)(!1),i=An(t);if((0,wt.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 wt.default.createElement("div",{className:"text-sm py-4",style:{color:i.bad}},"Couldn't load the conversation for this trace.");if(!r)return wt.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?wt.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"This trace predates content capture \u2014 no conversation to show."):wt.default.createElement(ws,{messages:s,darkMode:t,tools:WI(e)})}function v0({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,wt.useState)("spans"),[i,s]=(0,wt.useState)("time"),l=An(t),u=(e?.spans||[]).length,c=u2(e),d=e?.tokens||{},p=(0,wt.useCallback)(f=>a(n?f:"spans"),[n]);return e?wt.default.createElement("div",null,wt.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2 mb-2"},wt.default.createElement("div",{className:"flex items-center gap-1"},n&&wt.default.createElement(y0,{options:Ske,value:o,onChange:p,darkMode:t}),wt.default.createElement("span",{className:"text-xs ml-2",style:{color:l.textSecondary}},u," ",u===1?"span":"spans")),o==="spans"&&u>0&&wt.default.createElement(y0,{options:sX,value:i,onChange:s,darkMode:t,label:"Sort"})),o==="conversation"?wt.default.createElement("div",{className:"rounded-lg border p-4",style:{background:l.cardBg,borderColor:l.cardBorder}},wt.default.createElement(Cke,{trace:e,darkMode:t})):wt.default.createElement(wt.default.Fragment,null,i==="time"?wt.default.createElement("div",{className:"flex justify-between text-xs mb-2",style:{color:l.textMuted}},wt.default.createElement("span",null,"0ms"),wt.default.createElement("span",null,Math.round((e.duration_ms||0)*.33),"ms"),wt.default.createElement("span",null,Math.round((e.duration_ms||0)*.66),"ms"),wt.default.createElement("span",null,ro(e.duration_ms))):wt.default.createElement("div",{className:"text-xs mb-2",style:{color:l.textMuted}},"Bar length compares duration on a log scale"),wt.default.createElement(UI,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&wt.default.createElement("div",{className:"mt-3"},wt.default.createElement(yd,{...c,label:"Context pressure",darkMode:t})),wt.default.createElement(_ke,{trace:e,darkMode:t}),!r&&wt.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}},wt.default.createElement("span",null,"Tokens:"),d.thinking>0&&wt.default.createElement("span",{className:"text-amber-500",style:{fontFamily:It.mono}},"T:",d.thinking.toLocaleString()),wt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:It.mono}},"in:",(d.input||0).toLocaleString()),wt.default.createElement("span",{className:"text-green-500",style:{fontFamily:It.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&wt.default.createElement("span",{style:{fontFamily:It.mono}},e.provider,e.model?` \xB7 ${e.model}`:"")),e.error&&wt.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"}},wt.default.createElement("span",{className:"text-sm",style:{color:t?"#fca5a5":"#b91c1c"}},e.error))):null}var Ake=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},Eke=e=>e==null?null:`$${e.toFixed(4)}`;function h2({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=An(t),a=FI(e),i=u2(e),s=e.status!=="ERROR",l=Ake(e.tokens);return Hn.default.createElement(g2,{darkMode:t,id:`trace-row-${e.id}`},Hn.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},Hn.default.createElement("div",{className:"flex items-center gap-3 min-w-0 max-lg:flex-wrap max-lg:gap-y-1"},Hn.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:It.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),Hn.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:It.mono,color:o.textMuted}},e.short_id),Hn.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),Hn.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0 max-lg:w-full max-lg:min-w-0"},Hn.default.createElement(wh,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&Hn.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:It.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:Fa.context,empty:"Context: no generation in this trace reported its token counts",content:i&&Hn.default.createElement(yd,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:Fa.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&Hn.default.createElement(Hn.default.Fragment,null,Hn.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),ro(e.duration_ms))},{key:"tokens",width:Fa.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:Fa.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&Hn.default.createElement(Hn.default.Fragment,null,Hn.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),Eke(e.estimated_cost))},{key:"status",width:Fa.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:Hn.default.createElement("span",{style:{color:s?o.good:o.bad}},Hn.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),Hn.default.createElement(rf,{open:r,darkMode:t}))),!r&&Hn.default.createElement(Sh,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:Un("user",t).color},{label:"output",text:a.output,color:Un("assistant",t).color}]}),r&&Hn.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},Hn.default.createElement(v0,{trace:e,darkMode:t})))}var lX=({minutes:e,agentId:t=null,bucketSeconds:r=null})=>{let n=new URLSearchParams({minutes:String(e)});return r!=null&&n.set("bucket_seconds",String(r)),t!=null&&t!==""&&n.set("agent_id",String(t)),`/api/traces?${n.toString()}`};var Nke=(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(m=>m.timestamp_ms>=u&&m.timestamp_msm.duration_ms).filter(m=>typeof m=="number"&&Number.isFinite(m)),f={};t.forEach(m=>{f[m]=d.filter(g=>g.agent===m).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(m=>m.status==="ERROR").length,avgLatency:p.length>0?Math.round(p.reduce((m,g)=>m+g,0)/p.length):0,traces:d,...f})}return a},uX=(e,t,r,n)=>{let o=Array.isArray(e?.buckets)?e.buckets.map(s=>({time:n.minutes>1440?new Date(s.end_ms).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(s.end_ms).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),timestamp:s.end_ms,requests:s.requests,errors:s.errors,avgLatency:s.avg_latency_ms,traces:t.filter(l=>l.timestamp_ms>=s.start_ms&&l.timestamp_ms[l,s.agents?.[l]||0]))})):Nke(t,r,n.minutes,n.bucketSeconds),a=t.map(s=>s.duration_ms).filter(s=>typeof s=="number"&&Number.isFinite(s)),i=e?.summary?{requests:e.summary.requests,errors:e.summary.errors,avgLatency:e.summary.avg_latency_ms,throughput:Number(e.summary.throughput_per_minute).toFixed(1)}:{requests:t.length,errors:t.filter(s=>s.status==="ERROR").length,avgLatency:a.length?Math.round(a.reduce((s,l)=>s+l,0)/a.length):0,throughput:(t.length/n.minutes).toFixed(1)};return{buckets:o,summary:i,truncated:e?.truncated===!0,total:e?.total_count??t.length}};var cX=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],Tke=3e4,Oke=e=>{let t={};return e.forEach((r,n)=>{t[r]=cX[n%cX.length]}),t},Pke=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)};function nf({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,V.useState)([]),[a,i]=(0,V.useState)(null),[s,l]=(0,V.useState)([]),[u,c]=(0,V.useState)({}),[d,p]=(0,V.useState)(!0),[f,m]=(0,V.useState)(null),[g,b]=(0,V.useState)(null),h=(0,V.useRef)(new URLSearchParams(window.location.search).get("trace")),[y,x]=(0,V.useState)(null),[v,k]=(0,V.useState)({status:"all",agent:"all",action:"all"}),[S,w]=(0,V.useState)("time"),[_,A]=(0,V.useState)(null),[C,O]=(0,V.useState)("timeline"),[D,H]=(0,V.useState)("popular"),{timeWindow:$}=El(),Z=(0,V.useCallback)(async()=>{try{let E=await fetch(lX({minutes:$.minutes,bucketSeconds:$.bucketSeconds,agentId:e}));if(!E.ok)throw new Error(`Request failed (${E.status})`);let W=await E.json();o(W.traces||[]),i(W),l(W.agents||[]),c(W.agent_ids||{}),m(null)}catch(E){m(E.message)}finally{p(!1)}},[$.minutes,$.bucketSeconds,e]);(0,V.useEffect)(()=>{Z();let E=setInterval(Z,Tke);return()=>clearInterval(E)},[Z]);let N=(0,V.useMemo)(()=>Oke(s),[s]);(0,V.useEffect)(()=>{A(null)},[$.id]);let P=(0,V.useMemo)(()=>uX(a,n,s,$),[a,n,s,$]),M=P.buckets,I=Math.max(0,Math.ceil(M.length/6)-1),j=(0,V.useMemo)(()=>{let E=n;if(_!==null){let W=M[_];W&&(E=W.traces||[])}if(v.status!=="all"&&(E=E.filter(W=>v.status==="success"?W.status!=="ERROR":W.status==="ERROR")),v.agent!=="all"&&(E=E.filter(W=>W.agent===v.agent)),v.action!=="all")if(v.action.includes("#")){let[W,F]=v.action.split("#");E=E.filter(B=>B.agent===W&&B.action===F)}else E=E.filter(W=>W.action===v.action);return S==="latency"&&(E=[...E].sort((W,F)=>(F.duration_ms||0)-(W.duration_ms||0))),y&&!E.some(W=>W.id===y.id)&&(E=[y,...E]),E},[n,_,M,v,S,y]);(0,V.useEffect)(()=>{let E=h.current;if(!E)return;let W=B=>{h.current=null,b(B.id),setTimeout(()=>{document.getElementById(`trace-row-${B.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},F=n.find(B=>B.id===E||B.trace_id===E||B.short_id&&String(E).startsWith(B.short_id));if(F){W(F);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent(E)}`).then(B=>B.ok?B.json():Promise.reject(new Error("not found"))).then(({trace:B})=>{x(B),W(B)}).catch(()=>{h.current=null})},[n]);let T=(0,V.useMemo)(()=>{let E=_!==null?M[_]?.traces||[]:n,W={};E.forEach(B=>{B.agent&&(W[B.agent]||(W[B.agent]={agent:B.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),W[B.agent].count++,W[B.agent].totalDuration+=B.duration_ms||0,W[B.agent].cost+=B.estimated_cost||0,B.status==="ERROR"&&W[B.agent].errors++,B.tokens&&(W[B.agent].tokens.thinking+=B.tokens.thinking||0,W[B.agent].tokens.input+=B.tokens.input||0,W[B.agent].tokens.output+=B.tokens.output||0),B.action&&(W[B.agent].actions[B.action]=(W[B.agent].actions[B.action]||0)+1))});let F={popular:B=>B.count,longest:B=>B.totalDuration/(B.count||1),cost:B=>B.cost,tokens:B=>(B.tokens.input||0)+(B.tokens.output||0)+(B.tokens.thinking||0),errors:B=>B.errors}[D]||(B=>B.count);return Object.values(W).sort((B,Ee)=>F(Ee)-F(B)||Ee.count-B.count)},[n,M,_,D]),q=(0,V.useMemo)(()=>{let E=_!==null?M[_]?.traces||[]:n,W={};return E.forEach(F=>{if(!F.agent)return;let B=`${F.agent}#${F.action||"unknown"}`;W[B]||(W[B]={key:B,agent:F.agent,action:F.action||"unknown",count:0,totalDuration:0,errors:0,minDuration:1/0,maxDuration:0,tokens:{thinking:0,input:0,output:0}}),W[B].count++,W[B].totalDuration+=F.duration_ms||0,W[B].minDuration=Math.min(W[B].minDuration,F.duration_ms||0),W[B].maxDuration=Math.max(W[B].maxDuration,F.duration_ms||0),F.status==="ERROR"&&W[B].errors++,F.tokens&&(W[B].tokens.thinking+=F.tokens.thinking||0,W[B].tokens.input+=F.tokens.input||0,W[B].tokens.output+=F.tokens.output||0)}),Object.values(W).forEach(F=>{F.minDuration===1/0&&(F.minDuration=0)}),Object.values(W).sort((F,B)=>B.count-F.count)},[n,M,_]),G=(0,V.useMemo)(()=>{let E=_!==null?M[_]?.traces||[]:n,W={};return E.forEach(F=>{(F.spans||[]).forEach(B=>{if(B.type!=="tool")return;let Ee=B.attributes?.["tool.name"]||B.name?.replace(/^tool\./,"")||"unknown";W[Ee]||(W[Ee]={name:Ee,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),W[Ee].count++,W[Ee].totalDuration+=B.duration||0,W[Ee].maxDuration=Math.max(W[Ee].maxDuration,B.duration||0),B.error&&W[Ee].errors++,F.agent&&W[Ee].agents.add(`${F.agent}#${F.action||"unknown"}`)})}),Object.values(W).map(F=>({...F,agents:[...F.agents],avgDuration:F.count?F.totalDuration/F.count:0})).sort((F,B)=>B.totalDuration-F.totalDuration)},[n,M,_]),L=(0,V.useMemo)(()=>v.agent==="all"?q.map(E=>E.key):q.filter(E=>E.agent===v.agent).map(E=>E.key),[v.agent,q]),Y=(0,V.useMemo)(()=>Pke(j),[j]),K=E=>{if(E&&E.activeTooltipIndex!==void 0){let W=E.activeTooltipIndex;A(_===W?null:W),b(null)}},pe=E=>(E?.input||0)+(E?.output||0)+(E?.thinking||0),De=E=>{let W=E.count?E.errors/E.count:0;return[{label:`Calls ${$.label||""}`.trim(),value:E.count.toLocaleString()},{label:"Errors",value:`${(W*100).toFixed(1)}%`,tone:E.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round(E.totalDuration/(E.count||1))}ms`},{label:"Tokens",value:pe(E.tokens).toLocaleString()},{label:"Cost",value:se(E.cost),title:"Estimated from token counts at this model's published rates",tone:E.cost?void 0:"muted"},{label:"Actions",value:(E.agents?.length||0).toLocaleString()}]},se=E=>E?E<.01?"<$0.01":`$${E.toFixed(2)}`:"\u2014",xe=V.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},V.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),V.default.createElement("select",{value:D,onChange:E=>H(E.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"}},V.default.createElement("option",{value:"popular"},"Most calls"),V.default.createElement("option",{value:"longest"},"Longest average"),V.default.createElement("option",{value:"cost"},"Highest cost"),V.default.createElement("option",{value:"tokens"},"Most tokens"),V.default.createElement("option",{value:"errors"},"Most errors"))),ue=E=>k(W=>({...W,agent:W.agent===E?"all":E})),R=E=>{let W=u[E];if(!W)return ue(E);let F=rt(`/agents/${W}`);window.history.pushState(window.history.state,"",F),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:F}}))},we=E=>{let W=Y[0]?.total||1,F=E?"rgba(0,0,0,0.3)":"white",B=E?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",Ee=E?"white":"#111827",Ve=E?"rgba(255,255,255,0.5)":"#6b7280",fe={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return V.default.createElement("div",{className:E?"px-6 pb-6 max-md:px-4":void 0},V.default.createElement("div",{style:{background:F,border:B,borderRadius:"12px",padding:"16px"}},V.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:Ee,marginBottom:"4px"}},"Slowest operations"),V.default.createElement("div",{style:{fontSize:"12px",color:Ve,marginBottom:"14px"}},"Span durations aggregated across ",j.length," trace",j.length===1?"":"s"," \u2014 ranked by total time"),Y.length===0?V.default.createElement("div",{style:{fontSize:"13px",color:Ve,padding:"12px 0"}},"No spans in the current selection"):V.default.createElement("div",{style:{display:"grid",gap:"10px"}},Y.map(ze=>V.default.createElement("div",{key:ze.name,className:"flex flex-wrap items-center gap-3"},V.default.createElement("div",{className:"w-[220px] max-md:w-full",style:{flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},V.default.createElement("span",{style:{color:Ve}},BI(ze.type)),V.default.createElement("span",{style:{fontSize:"13px",color:ze.errors>0?"#ef4444":Ee,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ze.name)),V.default.createElement("div",{className:"flex-1 min-w-[120px] max-md:basis-full",style:{height:"18px",background:E?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},V.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ze.total/W*100,.5)}%`,background:fe[ze.type]||"#6366f1"}})),V.default.createElement("div",{className:"w-[260px] text-right max-md:w-full max-md:text-left",style:{flexShrink:0,fontSize:"12px",color:Ve,fontFamily:It.mono}},ze.count,"\xD7 \xB7 avg ",ro(ze.avg)," \xB7 max ",ro(ze.max)," \xB7 \u03A3 ",ro(ze.total)))))))};if(d)return V.default.createElement("div",{className:"flex items-center justify-center h-64"},V.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let Ce=E=>{let W=An(E);return V.default.createElement("div",{className:E?"px-6 pb-6 max-md:px-4":void 0},G.length===0?V.default.createElement("div",{className:"text-center py-8 text-sm",style:{color:W.textSecondary}},"No tool calls in this window"):V.default.createElement("div",{className:"rounded-xl border overflow-x-auto",style:{background:W.cardBg,borderColor:W.cardBorder}},V.default.createElement("div",{style:{minWidth:560}},V.default.createElement("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium border-b",style:{color:W.textSecondary,borderColor:W.cardBorder}},V.default.createElement("div",{className:"flex-1"},"Tool"),V.default.createElement("div",{className:"w-20 text-right"},"Calls"),V.default.createElement("div",{className:"w-24 text-right"},"Total time"),V.default.createElement("div",{className:"w-20 text-right"},"Avg"),V.default.createElement("div",{className:"w-20 text-right"},"Slowest")),G.map(F=>{let B=G[0].totalDuration?F.totalDuration/G[0].totalDuration*100:0;return V.default.createElement("div",{key:F.name,className:"px-4 py-2 border-b last:border-0",style:{borderColor:W.cardBorder}},V.default.createElement("div",{className:"flex items-center gap-4 text-sm"},V.default.createElement("div",{className:"flex-1 min-w-0"},V.default.createElement("div",{className:"font-medium truncate",style:{color:W.textPrimary},title:F.name},F.name),F.agents.length>0&&V.default.createElement("div",{className:"text-xs truncate",style:{color:W.textMuted},title:F.agents.join(", ")},F.agents.join(", "))),V.default.createElement("div",{className:"w-20 text-right",style:{fontFamily:It.mono,color:W.textBody}},F.count.toLocaleString(),F.errors>0&&V.default.createElement("span",{className:"ml-1",style:{color:W.bad},title:`${F.errors} failed`},"(",F.errors,")")),V.default.createElement("div",{className:"w-24 text-right font-medium",style:{fontFamily:It.mono,color:W.textPrimary}},ro(F.totalDuration)),V.default.createElement("div",{className:"w-20 text-right",style:{fontFamily:It.mono,color:W.textSecondary}},ro(F.avgDuration)),V.default.createElement("div",{className:"w-20 text-right",style:{fontFamily:It.mono,color:W.textSecondary}},ro(F.maxDuration))),V.default.createElement("div",{className:"h-1 rounded mt-1.5",style:{background:W.trackBg}},V.default.createElement("div",{className:"h-1 rounded",style:{width:`${Math.max(B,1)}%`,background:W.good}})))}))))},z=P.summary,ee=P.truncated&&V.default.createElement("div",{role:"status","data-testid":"trace-window-notice",style:{padding:"12px 24px",fontSize:13,color:r?"#fbbf24":"#92400e"}},"Showing newest ",n.length," of ",P.total," traces. Chart and totals cover the full window; lists and breakdowns use these loaded traces."),ae=z.requests===0;return r?V.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},ee,V.default.createElement("div",{className:"px-6 pt-6 pb-4 max-md:px-4 max-md:pt-4",style:{borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px"}},V.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"12px"}},V.default.createElement("div",null,!t&&V.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),V.default.createElement("p",{style:{fontSize:"14px",color:"rgba(255,255,255,0.6)",marginTop:"4px"}},_!==null?`Viewing ${M[_]?.time} \u2022 ${j.length} requests`:`Last ${$.label} \u2022 Click timeline to drill down`)),V.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap",minWidth:0}},V.default.createElement(Ks,null),V.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px",maxWidth:"100%",overflowX:"auto"}},["timeline","agents","actions","tools","spans"].map(E=>V.default.createElement("button",{key:E,onClick:()=>O(E),style:{padding:"6px 12px",background:C===E?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},E))),!e&&V.default.createElement("select",{value:v.agent,onChange:E=>k({...v,agent:E.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"}},V.default.createElement("option",{value:"all"},"All Agents"),s.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.action,onChange:E=>k({...v,action:E.target.value}),style:{padding:"8px 12px",background:v.action!=="all"?"rgba(239, 68, 68, 0.3)":"rgba(255,255,255,0.1)",border:v.action!=="all"?"1px solid #ef4444":"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"220px",textOverflow:"ellipsis"}},V.default.createElement("option",{value:"all"},"All Actions"),L.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.status,onChange:E=>k({...v,status:E.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"}},V.default.createElement("option",{value:"all"},"All Status"),V.default.createElement("option",{value:"success"},"Success"),V.default.createElement("option",{value:"error"},"Error")),V.default.createElement("select",{value:S,onChange:E=>w(E.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"}},V.default.createElement("option",{value:"time"},"Newest first"),V.default.createElement("option",{value:"latency"},"Slowest first")),_!==null&&V.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")))),f&&V.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: ",f),V.default.createElement("div",{className:"px-6 max-md:px-4",style:{marginBottom:"24px"}},V.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},V.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px",flexWrap:"wrap",gap:"8px"}},V.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),V.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries(N).map(([E,W])=>V.default.createElement("div",{key:E,style:{display:"flex",alignItems:"center",gap:"6px"}},V.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:W}}),V.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},E.replace("Agent","")))))),V.default.createElement("div",{style:{height:"150px"}},V.default.createElement(zc,{width:"100%",height:"100%"},V.default.createElement(gd,{data:M,onClick:K,style:{cursor:"pointer"}},V.default.createElement("defs",null,Object.entries(N).map(([E,W])=>V.default.createElement("linearGradient",{key:E,id:`gradient-${E}`,x1:"0",y1:"0",x2:"0",y2:"1"},V.default.createElement("stop",{offset:"5%",stopColor:W,stopOpacity:.8}),V.default.createElement("stop",{offset:"95%",stopColor:W,stopOpacity:.1})))),V.default.createElement(ju,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),V.default.createElement(Bu,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:I}),V.default.createElement(Wu,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),V.default.createElement(td,{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:(E,W)=>[E,W.replace("Agent","")]}),Object.keys(N).map(E=>V.default.createElement(Lu,{key:E,type:"monotone",dataKey:E,stackId:"1",stroke:N[E],fill:`url(#gradient-${E})`}))))),V.default.createElement("div",{style:{display:"flex",gap:"24px",rowGap:"8px",flexWrap:"wrap",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"white"}},z.requests),V.default.createElement("div",{className:mo,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},z.errors),V.default.createElement("div",{className:mo,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},z.avgLatency,"ms"),V.default.createElement("div",{className:mo,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},z.throughput,"/min"),V.default.createElement("div",{className:mo,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),C==="agents"&&V.default.createElement("div",{className:"px-6 max-md:px-4",style:{marginBottom:"24px"}},xe,V.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(280px, 100%), 1fr))",gap:"16px"}},T.map(E=>V.default.createElement(Lm,{key:E.agent,name:E.agent,accentColor:N[E.agent],subtitle:E.agents?.length?E.agents.join(", "):void 0,badge:V.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:N[E.agent]+"30",color:N[E.agent],borderRadius:"4px",whiteSpace:"nowrap"}},E.count," calls"),onClick:()=>R(E.agent),stats:De(E),footer:V.default.createElement(V.default.Fragment,null,V.default.createElement("span",null,u[E.agent]?"Open agent \u2192":"Not linked to an agent record"),V.default.createElement("button",{onClick:W=>{W.stopPropagation(),ue(E.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:v.agent===E.agent?"#ef4444":"inherit",font:"inherit"}},v.agent===E.agent?"Clear filter":"Filter traces"))})))),C==="actions"&&V.default.createElement("div",{className:"px-6 max-md:px-4",style:{marginBottom:"24px"}},V.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(320px, 100%), 1fr))",gap:"12px"}},q.map(E=>{let W=v.action===E.key;return V.default.createElement("div",{key:E.key,onClick:()=>{k({...v,action:W?"all":E.key}),O("timeline")},style:{background:W?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:W?"1px solid #ef4444":`1px solid ${N[E.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},V.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},V.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},V.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:N[E.agent]}}),V.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},E.agent),V.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",E.action)),V.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:N[E.agent]+"30",color:N[E.agent],borderRadius:"4px"}},E.count," calls")),V.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),V.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(E.totalDuration/E.count),"ms")),V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),V.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(E.minDuration),"ms / ",Math.round(E.maxDuration),"ms")),V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),V.default.createElement("div",{style:{fontSize:"13px",color:E.errors>0?"#ef4444":"#10b981"}},E.errors," (",(E.errors/E.count*100).toFixed(0),"%)")),V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),V.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},pe(E.tokens).toLocaleString()))))}))),C==="tools"&&Ce(!0),C==="spans"&&we(!0),C==="timeline"&&!ae&&V.default.createElement("div",{className:"space-y-4"},j.length===0?V.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):j.map(E=>V.default.createElement(h2,{key:E.id,trace:E,darkMode:!0,expanded:g===E.id,onToggle:()=>b(g===E.id?null:E.id)}))),ae&&C==="timeline"&&V.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},V.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),V.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"))):V.default.createElement("div",{className:"space-y-6"},ee,V.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},V.default.createElement("div",null,V.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),V.default.createElement("p",{className:"text-sm text-gray-500"},_!==null?`Viewing ${M[_]?.time} \u2022 ${j.length} requests`:`Last ${$.label} \u2022 Click timeline to drill down`)),V.default.createElement("div",{className:"flex items-center flex-wrap gap-x-3 gap-y-2 min-w-0"},V.default.createElement(Ks,null),V.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 max-w-full overflow-x-auto"},["timeline","agents","actions","tools","spans"].map(E=>V.default.createElement("button",{key:E,onClick:()=>O(E),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${C===E?"bg-white shadow text-gray-900":"text-gray-600"}`},E))),V.default.createElement("select",{value:v.agent,onChange:E=>k({...v,agent:E.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"}},V.default.createElement("option",{value:"all"},"All Agents"),s.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.action,onChange:E=>k({...v,action:E.target.value}),className:`px-3 py-2 border rounded-lg text-sm focus:ring-2 focus:ring-red-500 ${v.action!=="all"?"border-red-500 bg-red-50":"border-gray-300"}`,style:{maxWidth:"220px",textOverflow:"ellipsis"}},V.default.createElement("option",{value:"all"},"All Actions"),L.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.status,onChange:E=>k({...v,status:E.target.value}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},V.default.createElement("option",{value:"all"},"All Status"),V.default.createElement("option",{value:"success"},"Success"),V.default.createElement("option",{value:"error"},"Error")),V.default.createElement("select",{value:S,onChange:E=>w(E.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},V.default.createElement("option",{value:"time"},"Newest first"),V.default.createElement("option",{value:"latency"},"Slowest first")),_!==null&&V.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"))),f&&V.default.createElement("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700"},"Failed to load traces: ",f),V.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},V.default.createElement("div",{className:"flex flex-wrap justify-between items-center gap-2 mb-3"},V.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),V.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries(N).map(([E,W])=>V.default.createElement("div",{key:E,className:"flex items-center gap-1.5"},V.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:W}}),V.default.createElement("span",{className:"text-xs text-gray-500"},E.replace("Agent","")))))),V.default.createElement("div",{className:"h-36"},V.default.createElement(zc,{width:"100%",height:"100%"},V.default.createElement(gd,{data:M,onClick:K,style:{cursor:"pointer"}},V.default.createElement("defs",null,Object.entries(N).map(([E,W])=>V.default.createElement("linearGradient",{key:E,id:`gradient-light-${E}`,x1:"0",y1:"0",x2:"0",y2:"1"},V.default.createElement("stop",{offset:"5%",stopColor:W,stopOpacity:.6}),V.default.createElement("stop",{offset:"95%",stopColor:W,stopOpacity:.05})))),V.default.createElement(ju,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),V.default.createElement(Bu,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:I}),V.default.createElement(Wu,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),V.default.createElement(td,{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:(E,W)=>[E,W.replace("Agent","")]}),Object.keys(N).map(E=>V.default.createElement(Lu,{key:E,type:"monotone",dataKey:E,stackId:"1",stroke:N[E],fill:`url(#gradient-light-${E})`}))))),V.default.createElement("div",{className:"flex flex-wrap gap-x-6 gap-y-2 mt-3 pt-3 border-t border-gray-100"},V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-gray-900"},z.requests),V.default.createElement("div",{className:`text-xs text-gray-500 ${mo}`},"Total Requests")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-red-500"},z.errors),V.default.createElement("div",{className:`text-xs text-gray-500 ${mo}`},"Errors")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-green-600"},z.avgLatency,"ms"),V.default.createElement("div",{className:`text-xs text-gray-500 ${mo}`},"Avg Latency")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-amber-500"},z.throughput,"/min"),V.default.createElement("div",{className:`text-xs text-gray-500 ${mo}`},"Throughput")))),C==="agents"&&V.default.createElement("div",null,xe,V.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},T.map(E=>V.default.createElement(Lm,{key:E.agent,name:E.agent,accentColor:N[E.agent],subtitle:E.agents?.length?E.agents.join(", "):void 0,badge:V.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:N[E.agent]+"20",color:N[E.agent]}},E.count," calls"),onClick:()=>R(E.agent),stats:De(E),footer:V.default.createElement(V.default.Fragment,null,V.default.createElement("span",null,u[E.agent]?"Open agent \u2192":"Not linked to an agent record"),V.default.createElement("button",{onClick:W=>{W.stopPropagation(),ue(E.agent)},className:v.agent===E.agent?"text-red-600":"hover:text-gray-700"},v.agent===E.agent?"Clear filter":"Filter traces"))})))),C==="actions"&&V.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},q.map(E=>{let W=v.action===E.key;return V.default.createElement("div",{key:E.key,onClick:()=>{k({...v,action:W?"all":E.key}),O("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${W?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:N[E.agent],borderLeftWidth:W?"2px":"4px"}},V.default.createElement("div",{className:"flex items-center justify-between mb-3"},V.default.createElement("div",{className:"flex items-center gap-2"},V.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:N[E.agent]}}),V.default.createElement("span",{className:"font-semibold text-gray-900"},E.agent),V.default.createElement("span",{className:"text-gray-500"},"#",E.action)),V.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:N[E.agent]+"20",color:N[E.agent]}},E.count," calls")),V.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),V.default.createElement("div",{className:"font-medium"},Math.round(E.totalDuration/E.count),"ms")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),V.default.createElement("div",{className:"text-gray-600"},Math.round(E.minDuration),"ms / ",Math.round(E.maxDuration),"ms")),V.default.createElement("div",null,V.default.createElement("div",{className:`text-xs text-gray-500 ${mo}`},"Errors"),V.default.createElement("div",{className:E.errors>0?"text-red-600":"text-green-600"},E.errors," (",(E.errors/E.count*100).toFixed(0),"%)")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),V.default.createElement("div",{className:"text-gray-600"},pe(E.tokens).toLocaleString()))))})),C==="tools"&&Ce(!1),C==="spans"&&we(!1),C==="timeline"&&!ae&&V.default.createElement("div",{className:"space-y-4"},j.length===0?V.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):j.map(E=>V.default.createElement(h2,{key:E.id,trace:E,darkMode:!1,expanded:g===E.id,onToggle:()=>b(g===E.id?null:E.id)}))),ae&&C==="timeline"&&V.default.createElement("div",{className:"text-center py-12"},V.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),V.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 ve=X(J());var y2=X(J());function HI({trace:e,darkMode:t,height:r=8}){let n=An(t);if(!e)return y2.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 y2.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>y2.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${ro(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":zI[s.type]||"#9ca3af"}})))}var Ys=X(J());var Sr=X(J());var Ku=X(J());var Mke=/\/agents\/(\d+)/;function li(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function Ike(e){return t=>t===e?{}:null}function x0(e){return t=>e.test(t)?{agentId:t.match(Mke)?.[1]}:null}function v2(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var Dke=e=>e.assistantEnabled!==!1,jke=x0(/\/agents\/\d+\/(interactions|history)/),$ke=["recording","context","run","scenario_result"],Lke=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function zke(e){let t=e.match(Lke);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var qI=[{view:"assistant",match:Ike("/assistant"),path:"/assistant",enabled:Dke},{view:"traces",match:li("/traces"),path:"/traces"},{view:"metrics",match:li("/metrics"),path:"/metrics"},{view:"scenarios",match:li("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:li("/interactions"),path:"/interactions"},{view:"tools",match:li("/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:li("/evaluations"),path:"/evaluations"},{view:"analytics",match:li("/analytics"),path:"/analytics"},{view:"projects",match:li("/projects"),path:"/projects"},{view:"exploration",match:li("/explorations"),path:"/explorations"},{view:"builder",match:li("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=jke(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:v2("/interactions")},{view:"agent-analytics",match:x0(/\/agents\/\d+\/analytics/),path:v2("/analytics")},{view:"editor",match:x0(/\/agents\/\d+\/edit/),path:v2("/edit")},{view:"runner",match:x0(/\/agents\/\d+\/run/),path:v2("/run")},{view:"history",match:x0(/\/agents\/\d+\/?$/)},{view:"replay",match:zke},{view:"sessions",match:li("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:li("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:li("/organization"),path:"/organization"},{view:"settings",match:li("/settings"),path:"/settings"}],Bke="list",dX=[{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:"evaluations",label:"Evaluations",icon:"evaluations"},{view:"scenarios",label:"Scenarios",icon:"evaluations"}]},{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:"sessions",label:"Sessions",icon:"replay",also:["replay"]},{view:"metrics",label:"Metrics",icon:"metrics"}]},{id:"build",label:"Build",items:[{view:"projects",label:"Projects",glyph:""},{view:"tools",label:"Tools",icon:"tools"},{view:"mcp",label:"MCP Services",icon:"mcp"}]},{id:"workspace",label:"Workspace",items:[{view:"organization",label:"Organization",glyph:"\u{1F3E2}"},{view:"settings",label:"Settings",glyph:"\u2699\uFE0F"}]}];function pX(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function b0(e,t={}){return qI.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function fX(e,t={}){for(let r of qI){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:Bke}}function x2(e,{agent:t=null,features:r={}}={}){if(!b0(e,r))return null;let n=qI.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function mX(e){for(let t of dX){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function _h(e,t){return!$ke.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function gX(e={}){return dX.map(t=>({...t,items:t.items.filter(r=>b0(r.view,e))}))}var KI="/api/input_requests",b2="action-agent:input-requests-changed",yX=3e4,hX=100,Fke=["text","choice","confirm","secret"];function vX({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?`${KI}?${n}`:KI}function Ch(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function xX(e){let t=Ch(e).length;if(t!==0)return t>=hX?`${hX-1}+`:t}function VI(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?Ch(e.input_requests).length>0?"awaiting":"poll":"finished"}function GI(e){return Fke.includes(e?.kind)?e.kind:null}function bX(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 wX(e){return e?.id==null?"answer":`answer-${e.id}`}function SX(e){switch(GI(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:wX(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:bX(e).map(t=>t.label)}];default:return[]}}function kX(e,t){if(t?.kind==="form"){let r=t.values?.[wX(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return bX(e).find(r=>r.label===t.text)?.value}var Wke={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function Uke(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:Wke[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 YI(e){return["answered","declined","closed"].includes(e?.state)}async function _X(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${KI}/${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 Uke(a.status,i)}function CX(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 AX(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function EX(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 NX(e,t=Date.now()){return e?`asked ${wv(e,t)}`:null}function TX(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 OX(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=x2("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function PX(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function w2(){window.dispatchEvent(new CustomEvent(b2))}function S2({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=yX}={}){let[o,a]=(0,Ku.useState)(null),[i,s]=(0,Ku.useState)(null),l=(0,Ku.useRef)(0),u=(0,Ku.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(vX({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,Ku.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(b2,u),()=>{clearInterval(c),window.removeEventListener(b2,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var Hke={text:"question",choice:"choice",confirm:"approval",secret:"secret"},qke={answered:"success",declined:"muted",closed:"warning"},XI={fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},Kke={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:U,fontSize:13};function Vke({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:Kke}),Sr.default.createElement(ie,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function Gke({request:e,busy:t,onApprove:r,onDecline:n}){let o=TX(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:U,fontSize:12}},o),Sr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Sr.default.createElement(ie,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),Sr.default.createElement(ie,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function of({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=ut(),[a,i]=(0,Sr.useState)(!1),[s,l]=(0,Sr.useState)(r),u=GI(e),c=YI(s),d=async y=>{if(a||c)return;i(!0);let x=await _X(e,y);i(!1),l(x),YI(x)&&(w2(),t&&t(e,x))},p=y=>{y!==void 0&&d({answer:y})},f=()=>d({decline:!0}),m=n?OX(e):null,g=AX(e.actor),b=EX(e.expires_at),h=NX(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(be,{tone:e.kind==="confirm"?"warning":"info",size:10},Hke[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(Jr,{href:rt(m),onClick:()=>st(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:{...XI,marginLeft:"auto",color:b==="expired"?"var(--color-error-text)":XI.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:{...XI,display:"flex",gap:10,flexWrap:"wrap"}},g&&Sr.default.createElement("span",{"data-testid":"input-request-actor"},"for ",g),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(be,{tone:qke[s.state]||"muted"},CX(e,s))):Sr.default.createElement(Sr.default.Fragment,null,(u==="text"||u==="choice")&&Sr.default.createElement(Nl,{blocks:SX(e),darkMode:o,onAction:y=>p(kX(e,y))}),u==="confirm"&&Sr.default.createElement(Gke,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&Sr.default.createElement(Vke,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&Sr.default.createElement("div",null,Sr.default.createElement(ie,{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 Yke({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:Ys.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}},Ys.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},Ys.default.createElement(je,{color:"var(--color-warning-text)"},"Needs input"),Ys.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:U,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),Ys.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=>Ys.default.createElement(of,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>Ys.default.createElement(of,{key:n.id,request:n,initialOutcome:o})))}function ZI({agentId:e=null}){let{requests:t}=S2({agentId:e}),[r,n]=(0,Ys.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=Ch(t).filter(s=>!o.has(s.id));return Ys.default.createElement(Yke,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var xr=X(J());function MX(e=[],t=""){let r=t.trim().toLowerCase();return e.filter(n=>n.status!=="archived"&&n.status!=="observed").filter(n=>!r||`${n.name||""} ${n.description||""}`.toLowerCase().includes(r)).sort((n,o)=>{let a=i=>i.status==="active"?0:1;return a(n)-a(o)||String(n.name||"").localeCompare(String(o.name||""))})}var IX=e=>`/agents/${e.id}/run?new=1`;function w0({inline:e=!1,label:t="New interaction"}){let[r,n]=(0,xr.useState)(e),[o,a]=(0,xr.useState)(null),[i,s]=(0,xr.useState)(null),[l,u]=(0,xr.useState)(""),c=(0,xr.useRef)(null);(0,xr.useEffect)(()=>{!r||o||fetch("/api/agents").then(f=>{if(!f.ok)throw new Error(`HTTP ${f.status}`);return f.json()}).then(f=>a(f.agents||[])).catch(f=>s(f.message))},[r,o]),(0,xr.useEffect)(()=>{if(e||!r)return;let f=m=>{c.current&&!c.current.contains(m.target)&&n(!1)};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[e,r]);let d=(0,xr.useMemo)(()=>MX(o||[],l),[o,l]),p=xr.default.createElement("div",{"data-testid":"new-interaction-agents"},(o?.length||0)>6&&xr.default.createElement("input",{type:"search",value:l,onChange:f=>u(f.target.value),placeholder:"Find an agent","aria-label":"Find an agent",autoFocus:!e,className:"w-full mb-2 px-3 py-1.5 text-sm rounded-lg",style:{background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"}}),i&&xr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-error)"}},"Could not load agents: ",i),!o&&!i&&xr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-text-muted)"}},"Loading agents\u2026"),o&&d.length===0&&xr.default.createElement(tn,null,o.length===0?"No agents in this workspace yet.":"No agent matches."," ",xr.default.createElement("a",{href:"#",onClick:f=>{f.preventDefault(),st("/agents/new")},style:{color:"var(--color-info)"}},"Create an agent")),xr.default.createElement("ul",{className:"space-y-1 max-h-80 overflow-y-auto"},d.map(f=>xr.default.createElement("li",{key:f.id},xr.default.createElement("button",{type:"button","data-testid":`new-interaction-agent-${f.id}`,onClick:()=>st(IX(f)),className:"w-full text-left px-3 py-2 rounded-lg block",style:{border:"1px solid var(--color-border)",background:"var(--color-card)",cursor:"pointer"}},xr.default.createElement("span",{className:"flex items-center justify-between gap-2"},xr.default.createElement("span",{className:"text-sm font-medium truncate min-w-0",style:{color:"var(--color-text-primary)"}},f.name),f.status&&f.status!=="active"&&xr.default.createElement(be,{tone:"muted"},f.status)),xr.default.createElement("span",{className:"block truncate",style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},f.provider,"/",f.model),f.description&&xr.default.createElement("span",{className:"block text-xs truncate",style:{color:"var(--color-text-secondary)"}},f.description))))));return e?xr.default.createElement(Le,{testId:"new-interaction-card"},xr.default.createElement("div",{className:"flex items-baseline justify-between mb-3 gap-3"},xr.default.createElement("div",null,xr.default.createElement(je,null,"Your agents"),xr.default.createElement("p",{className:"text-sm mt-1",style:{color:"var(--color-text-secondary)"}},"Start a new interaction. It runs with the instructions, tools and MCP servers saved on the agent."))),p):xr.default.createElement("div",{ref:c,className:"relative"},xr.default.createElement(ie,{variant:"primary",size:"sm",testId:"new-interaction",onClick:()=>n(f=>!f)},t),r&&xr.default.createElement("div",{className:"z-50 p-3 rounded-xl max-md:fixed max-md:inset-x-0 max-md:bottom-0 max-md:rounded-b-none max-md:max-h-[80vh] max-md:overflow-y-auto md:absolute md:right-0 md:mt-2 md:z-20 md:w-[360px]","data-testid":"new-interaction-popover",style:{background:"var(--color-card)",border:"1px solid var(--color-border)",boxShadow:"0 8px 24px rgba(0,0,0,0.12)"}},xr.default.createElement(je,{style:{display:"block",marginBottom:8}},"Start a conversation with"),p))}var Ze=X(J());var _2=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var Xs=(e,t)=>`${e} ${t}${e===1?"":"s"}`,S0=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},C2=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),DX=e=>String(e??"").replace(/\s+/g," ").trim(),af=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ah=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},A2=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)}`},JI=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`},LX=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:Xs(Number(t),"turn"),A2(r),JI(n)].filter(Boolean).join(" \xB7 "),zX=(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`:""}`},ot=(e,t)=>{let r=i=>Array.isArray(i)?i.filter(Boolean).join(", "):typeof i=="string"?i:"",n=af(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},Xke={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"}},BX=e=>Xke[e]||{label:C2(e)||"Unknown",tone:"neutral"},E2=e=>["pending","provisioning"].includes(e?.status),FX=e=>e?.status==="ready",Zke={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"}},Ss=e=>Zke[e]||{label:C2(e)||"Unknown",tone:"neutral"},Zs=e=>["queued","running"].includes(e?.status),A0=e=>["succeeded","failed","cancelled"].includes(e?.status),QI=e=>A0(e)&&e?.diff_pending===!0,RI=e=>A0(e)&&!QI(e),WX=e=>e?.status==="cancelled"&&RI(e)&&e?.diff==null&&!(Number(e?.event_count)>0),eD=e=>{if(!A0(e)){let t=Number(e?.event_count)||0;return t>0?Xs(t,"event"):""}return LX(null,e)},UX=e=>[Ss(e?.status).label,eD(e)].filter(Boolean).join(" \xB7 "),HX=(e,t=80)=>{let r=String(e||"").split(` -`).map(n=>n.trim()).find(Boolean)||"";return S0(r,t)||"(empty prompt)"},vd=(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},qX=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?vd(e,t,r):e,KX=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},VX=(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}},GX=(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]},Tl=(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},Jke={Bash:e=>e.command,Read:(e,t)=>Tl(e.file_path,t),Write:(e,t)=>Tl(e.file_path,t),Edit:(e,t)=>Tl(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${Xs(e.edits.length,"edit")})`:"";return`${Tl(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>Tl(e.notebook_path,t),NotebookRead:(e,t)=>Tl(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${Tl(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${Tl(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>Tl(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)?Xs(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},Qke=["command","file_path","path","url","query","pattern","description","name","prompt"],Rke=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!af(t))return S0(DX(typeof t=="string"?t:Ah(t)),120);let n=Jke[e],o=n?n(t,r):null;if(o==null||o===""){let a=Qke.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?Tl(t[a],r):t[a]:o=Object.keys(t).length?Ah(t):""}return S0(DX(o),120)},e_e=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]":Ah(t)).join(` -`):Ah(e),t_e=(e,{chars:t=600,lines:r=12}={})=>{let n=String(e??"").replace(/\s+$/,""),o=n.split(` + `).concat(v.x,",").concat(v.y),S=dr(e.id)?gu("recharts-radial-line-"):e.id;return si.createElement("text",Du({},n,{dominantBaseline:"central",className:bt("recharts-radial-bar-label",i)}),si.createElement("defs",null,si.createElement("path",{id:S,d:k})),si.createElement("textPath",{xlinkHref:"#".concat(S)},r))},nve=(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=dn(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=dn(n,o,f,u),g=m.x,b=m.y;return{x:g,y:b,textAnchor:"middle",verticalAnchor:"middle"}},Rg=e=>e!=null&&"cx"in e&&Be(e.cx),ove={angle:0,offset:5,zIndex:pr.label,position:"middle",textBreakAll:!1};function ave(e){if(!Rg(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 Iu(e){var t,r,n=ur(e,ove),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=Rye(),g=lK(),b=i==="center"?g:m??g,h,y,x;o==null?h=b:Rg(o)?h=o:h=Ov(o);var v=ave(h);if(!h||dr(s)&&dr(l)&&!(0,Do.isValidElement)(u)&&typeof u!="function")return null;var k=Rg(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(Rg(h))k||(x=nve(h,n.offset,n.position));else if(v){var S=Uw({viewBox:v,position:i,offset:n.offset,parentViewBox:Rg(a)?void 0:a,clamp:!0});x=Bp(Bp({x:S.x,y:S.y,textAnchor:S.horizontalAnchor,verticalAnchor:S.verticalAnchor},S.width!==void 0?{width:S.width}:{}),S.height!==void 0?{height:S.height}:{})}var w=Bp(Bp(Bp(Bp({},((t=x)===null||t===void 0?void 0:t.x)!==void 0?{x:x.x}:{}),((r=x)===null||r===void 0?void 0:r.y)!==void 0?{y:x.y}:{}),n),{},{viewBox:h});if((0,Do.isValidElement)(u)){var _=w.labelRef,A=oK(w,Gye);return(0,Do.cloneElement)(u,A)}if(typeof u=="function"){var C=w.content,O=oK(w,Yye);if(y=(0,Do.createElement)(u,O),(0,Do.isValidElement)(y))return y}else y=eve(n);var D=kn(n);return k&&Rg(h)?rve(n,i,y,D,h):x==null?null:si.createElement(pn,{zIndex:n.zIndex},si.createElement(zp,Du({ref:f,className:bt("recharts-label",d)},D,x,{textAnchor:uC(D.textAnchor)?D.textAnchor:x.textAnchor,breakAll:p}),y))}Iu.displayName="Label";var ive=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?si.createElement(Iu,Du({key:"label-implicit"},n)):ja(e)?si.createElement(Iu,Du({key:"label-implicit",value:e},n)):(0,Do.isValidElement)(e)?e.type===Iu?(0,Do.cloneElement)(e,Bp({key:"label-implicit"},n)):si.createElement(Iu,Du({key:"label-implicit",content:e},n)):Fp(e)?si.createElement(Iu,Du({key:"label-implicit",content:e},n)):e&&typeof e=="object"?si.createElement(Iu,Du({},e,{key:"label-implicit"},n)):null};function dK(e){var t=e.label,r=e.labelRef,n=lK();return ive(t,n,r)||null}var $u=X(J()),eh=X(J());var sve=["valueAccessor"],lve=["dataKey","clockWise","id","textBreakAll","zIndex"];function dC(){return dC=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(eK(t))return t},fK=(0,eh.createContext)(void 0),th=fK.Provider,mK=(0,eh.createContext)(void 0),gK=mK.Provider;function dve(){return(0,eh.useContext)(fK)}function pve(){return(0,eh.useContext)(mK)}function cC(e){var t=e.valueAccessor,r=t===void 0?cve:t,n=pK(e,sve),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=pK(n,lve),c=dve(),d=pve(),p=c||d;return!p||!p.length?null:$u.createElement(pn,{zIndex:l??pr.label},$u.createElement(_r,{className:"recharts-label-list"},p.map((f,m)=>{var g,b=dr(o)?r(f,m):Zt(f.payload,o),h=dr(i)?{}:{id:"".concat(i,"-").concat(m)};return $u.createElement(Iu,dC({key:"label-".concat(m)},kn(f),u,h,{fill:(g=n.fill)!==null&&g!==void 0?g:f.fill,parentViewBox:f.parentViewBox,value:b,textBreakAll:s,viewBox:f.viewBox,index:m,zIndex:0}))})))}cC.displayName="LabelList";function od(e){var t=e.label;return t?t===!0?$u.createElement(cC,{key:"labelList-implicit"}):$u.isValidElement(t)||Fp(t)?$u.createElement(cC,{key:"labelList-implicit",content:t}):typeof t=="object"?$u.createElement(cC,dC({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var hK=X(J());function D5(){return D5=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=bt("recharts-dot",o);return Be(t)&&Be(r)&&Be(n)?hK.createElement("circle",D5({},Sn(e),eg(e),{className:a,cx:t,cy:r,r:n})):null};var $5=e=>e.graphicalItems.polarItems,fve=oe([_n,xp],Ex),fC=oe([$5,jn,fve],Nx),mve=oe([fC],Tx),mC=oe([mve,gp],Ox),gve=oe([mC,jn,fC],FM),eWe=oe([mC,jn,fC],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=Zt(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:Zt(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),yK=()=>{},hve=oe([mC,jn,fC,Hg,_n,yW],Mx),yve=oe([jn,I_,D_,yK,hve,yK,Wt,_n],Ix),vK=oe([jn,Wt,mC,gve,Wc,_n,yve],Dx),vve=oe([vK,$p,Nu],$x),xve=oe([jn,vK,vve,_n],jx),tWe=oe([Nu,xve],Vk);var bve={radiusAxis:{},angleAxis:{}},xK=Tr({name:"polarAxis",initialState:bve,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=rr(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=rr(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),gC=xK.actions,aWe=gC.addRadiusAxis,iWe=gC.removeRadiusAxis,sWe=gC.addAngleAxis,lWe=gC.removeAngleAxis;var bK=xK.reducer;function hC(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Rt=X(J()),lh=X(J());function wK(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 SK(e){for(var t=1;tt,j5=oe([$5,_ve],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),Cve=[],L5=(e,t,r)=>r?.length===0?Cve:r,kK=oe([gp,j5,L5],(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=>SK(SK({},t.presentationProps),a.props))),o!=null)return o}}),_K=oe([kK,j5,L5],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=Zt(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:Oi(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),CK=oe([kK,j5,L5,Vr],(e,t,r,n)=>{if(!(t==null||e==null))return AK({offset:n,pieSettings:t,displayedData:e,cells:r})});var MK=X(J()),IK=X(TK());var OK=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",PK=null,F5=null,DK=e=>{if(e===PK&&Array.isArray(F5))return F5;var t=[];return MK.Children.forEach(e,r=>{dr(r)||((0,IK.isFragment)(r)?t=t.concat(DK(r.props.children)):t.push(r))}),F5=t,PK=e,t};function Ux(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>OK(o)):n=[OK(t)],DK(e).forEach(o=>{var a=Go(o,"type.displayName")||Go(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var rh=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var nh=X(J()),Hx=X(J());function $K(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 jK(e){for(var t=1;t{var n=Lt();return(o,a)=>i=>{e?.(o,a,i),n(F_({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},Kx=e=>{var t=Lt();return(r,n)=>o=>{e?.(r,n,o),t(EH())}},Vx=(e,t,r)=>{var n=Lt();return(o,a)=>i=>{e?.(o,a,i),n(NH({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var Gx=X(J());function id(e){var t=e.tooltipEntrySettings,r=Lt(),n=Or(),o=(0,Gx.useRef)(null);return(0,Gx.useLayoutEffect)(()=>{n||(o.current===null?r(kH(t)):o.current!==t&&r(_H({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,Gx.useLayoutEffect)(()=>()=>{o.current&&(r(CH(o.current)),o.current=null)},[r]),null}var sd=X(J());function oh(e){var t=e.legendPayload,r=Lt(),n=Or(),o=(0,sd.useRef)(null);return(0,sd.useLayoutEffect)(()=>{n||(o.current===null?r(OP(t)):o.current!==t&&r(PP({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,sd.useLayoutEffect)(()=>()=>{o.current&&(r(MP(o.current)),o.current=null)},[r]),null}function zK(e){var t=e.legendPayload,r=Lt(),n=Fe(Wt),o=(0,sd.useRef)(null);return(0,sd.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(OP(t)):o.current!==t&&r(PP({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,sd.useLayoutEffect)(()=>()=>{o.current&&(r(MP(o.current)),o.current=null)},[r]),null}var WK=X(J()),Zx=X(J());function $ve(e,t){return Bve(e)||zve(e,t)||Lve(e,t)||jve()}function jve(){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 Lve(e,t){if(e){if(typeof e=="string")return BK(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)?BK(e,t):void 0}}function BK(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 W5(n,t)}function Wve(e,t){var r=t.map((n,o)=>e[o]);return W5(r,t)}function Uve(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=$ve(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return W5(a,t,i)}function Xx(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Wp?Fve(e,t):r===Yx?Wve(e,t):Hve(e,t,r)}var ah=X(J());function EC(e,t){var r=(0,ah.useRef)(e),n=(0,ah.useRef)(t.current),o=(0,ah.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,ah.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 qve(e,t){return Yve(e)||Gve(e,t)||Vve(e,t)||Kve()}function Kve(){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 Vve(e,t){if(e){if(typeof e=="string")return FK(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)?FK(e,t):void 0}}function FK(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,Zx.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function ud(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,g=e.children,b=e.layout,h=wk(r,n),y=EC(h,a),x=(t=y.startValue)!==null&&t!==void 0?t:null,v=Xx(x,o,f??Wp);return WK.createElement(bk,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},k=>{var S=x==null,w=o==null?o:p(v,k,b),_=m?m(k):k>0;return y.syncStepValue(w,k,_),w==null?null:g(w,k,S)})}var qK=X(J()),H5=X(J());var NC=X(J());var U5;function Xve(e,t){return Rve(e)||Qve(e,t)||Jve(e,t)||Zve()}function Zve(){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 Jve(e,t){if(e){if(typeof e=="string")return UK(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)?UK(e,t):void 0}}function UK(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=NC.useState(()=>gu("uid-")),t=Xve(e,1),r=t[0];return r},TC=(U5=NC.useId)!==null&&U5!==void 0?U5:exe;function HK(e,t){var r=TC();return t||(e?"".concat(e,"-").concat(r):r)}var txe=(0,H5.createContext)(void 0),cd=e=>{var t=e.id,r=e.type,n=e.children,o=HK("recharts-".concat(r),t);return qK.createElement(txe.Provider,{value:o},n(o))};var Hs=X(J());var rxe={cartesianItems:[],polarItems:[]},KK=Tr({name:"graphicalItems",initialState:rxe,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(rr(t.payload))},prepare:zr()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=sa(e).cartesianItems.indexOf(rr(n));a>-1&&(e.cartesianItems[a]=rr(o))},prepare:zr()},removeCartesianGraphicalItem:{reducer(e,t){var r=sa(e).cartesianItems.indexOf(rr(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:zr()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(rr(t.payload))},prepare:zr()},removePolarGraphicalItem:{reducer(e,t){var r=sa(e).polarItems.indexOf(rr(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:zr()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=sa(e).polarItems.indexOf(rr(n));a>-1&&(e.polarItems[a]=rr(o))},prepare:zr()}}}),ih=KK.actions,VK=ih.addCartesianGraphicalItem,GK=ih.replaceCartesianGraphicalItem,YK=ih.removeCartesianGraphicalItem,XK=ih.addPolarGraphicalItem,ZK=ih.removePolarGraphicalItem,JK=ih.replacePolarGraphicalItem;var QK=KK.reducer;var nxe=e=>{var t=Lt(),r=(0,Hs.useRef)(null);return(0,Hs.useLayoutEffect)(()=>{r.current===null?t(VK(e)):r.current!==e&&t(GK({prev:r.current,next:e})),r.current=e},[t,e]),(0,Hs.useLayoutEffect)(()=>()=>{r.current&&(t(YK(r.current)),r.current=null)},[t]),null},sh=(0,Hs.memo)(nxe),oxe=e=>{var t=Lt(),r=(0,Hs.useRef)(null);return(0,Hs.useLayoutEffect)(()=>{r.current===null?t(XK(e)):r.current!==e&&t(JK({prev:r.current,next:e})),r.current=e},[t,e]),(0,Hs.useLayoutEffect)(()=>()=>{r.current&&(t(ZK(r.current)),r.current=null)},[t]),null},RK=(0,Hs.memo)(oxe);var axe=["key"],ixe=["onMouseEnter","onClick","onMouseLeave"],sxe=["id"],lxe=["id"];function Up(){return Up=Object.assign?Object.assign.bind():function(e){for(var t=1;tUx(e.children,Mu),[e.children]),r=Fe(n=>_K(n,e.id,t));return r==null?null:Rt.createElement(zK,{legendPayload:r})}function mxe(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Rt.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 gxe=Rt.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=mxe(p),m=n.map(b=>{var h=b.tooltipPayload;return f==null||h==null?h:h.map(y=>Ln(Ln({},y),{},{color:f,fill:f}))}),g={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:Oi(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Rt.createElement(id,{tooltipEntrySettings:g})}),hxe=(e,t)=>e>t?"start":etypeof t=="function"?Un(t(e),r,r*.8):Un(t,r,r*.8),vxe=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=Ck(a,i),l=o+Un(e.cx,a,a/2),u=n+Un(e.cy,i,i/2),c=Un(e.innerRadius,s,0),d=yxe(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}},xxe=(e,t)=>{var r=rn(t-e),n=Math.min(Math.abs(t-e),360);return r*n},bxe=(e,t)=>{if(Rt.isValidElement(e))return Rt.cloneElement(e,t);if(typeof e=="function")return e(t);var r=bt("recharts-pie-label-line",typeof e!="boolean"?e.className:""),n=t.key,o=OC(t,axe);return Rt.createElement(vl,Up({},o,{type:"linear",className:r}))},wxe=(e,t,r)=>{if(Rt.isValidElement(e))return Rt.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Rt.isValidElement(n)))return n;var o=bt("recharts-pie-label-text",hC(e));return Rt.createElement(zp,Up({},t,{alignmentBaseline:"middle",className:o}),n)};function Sxe(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=Sn(r),l=Ci(o),u=Ci(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,g=dn(p.cx,p.cy,p.outerRadius+c,m),b=Ln(Ln(Ln(Ln({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:hxe(g.x,p.cx)},g),h=Ln(Ln(Ln(Ln({},s),p),{},{fill:"none",stroke:p.fill},u),{},{index:f,points:[dn(p.cx,p.cy,p.outerRadius,m),g],key:"line"});return Rt.createElement(pn,{zIndex:pr.label,key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(f)},Rt.createElement(_r,null,a&&bxe(a,h),wxe(o,b,Zt(p,i))))});return Rt.createElement(_r,{className:"recharts-pie-labels"},d)}function kxe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Rt.createElement(od,{label:o}):Rt.createElement(Sxe,{sectors:t,props:r,showLabels:n})}function _xe(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=Fe(fs),d=Fe(Vg),p=Fe(Z_),f=o.onMouseEnter,m=o.onClick,g=o.onMouseLeave,b=OC(o,ixe),h=qx(f,o.dataKey,i),y=Kx(g),x=Vx(m,o.dataKey,i);return t==null||t.length===0?null:Rt.createElement(Rt.Fragment,null,t.map((v,k)=>{if(v?.startAngle===0&&v?.endAngle===0&&t.length!==1)return null;var S=p==null||p===i,w=String(k)===c&&(d==null||o.dataKey===d)&&S,_=c?n:null,A=r&&w?r:_,C=Ln(Ln({},v),{},{stroke:v.stroke,tabIndex:-1,index:k,isActive:w,animationElapsedTime:s,isAnimating:l,isEntrance:u,[nk]:k,[ok]:i});return Rt.createElement(_r,Up({key:"sector-".concat(v?.startAngle,"-").concat(v?.endAngle,"-").concat(v.midAngle,"-").concat(k),tabIndex:-1,className:"recharts-pie-sector"},yu(b,v,k),{onMouseEnter:h(v,k),onMouseLeave:y(v,k),onClick:x(v,k)}),Rt.createElement(ad,{option:A??a,DefaultShape:tV,shapeProps:C}))}))}function AK(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=xxe(s,l),m=Math.abs(f),g=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,b=n.filter(_=>Zt(_,u,0)!==0).length,h=(m>=360?b:b-1)*g,y=n.reduce((_,A)=>{var C=Zt(A,u,0);return _+(Be(C)?C:0)},0),x=p>0&&y>0&&n.some(_=>{var A=Zt(_,u,0),C=(Be(A)?A:0)/y;return A!==0&&C*m0){var w;S=n.map((_,A)=>{var C=Zt(_,u,0),O=Zt(_,c,A),D=vxe(r,a,_),H=(Be(C)?C:0)/y,j,Z=Ln(Ln({},_),o&&o[A]&&o[A].props),N=Z!=null&&"fill"in Z&&typeof Z.fill=="string"?Z.fill:r.fill;A?j=w.endAngle+rn(f)*g*(C!==0?1:0):j=s;var P=j+rn(f)*((C!==0?v:0)+H*k),M=(j+P)/2,I=(D.innerRadius+D.outerRadius)/2,$=[{name:O,value:C,payload:Z,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],T=dn(D.cx,D.cy,I,M);return w=Ln(Ln(Ln(Ln({},r.presentationProps),{},{percent:H,cornerRadius:typeof i=="string"?parseFloat(i):i,name:O,tooltipPayload:$,midAngle:M,middleRadius:I,tooltipPosition:T},Z),D),{},{value:C,dataKey:u,startAngle:j,endAngle:P,payload:Z,paddingAngle:C!==0?rn(f)*g:0}),w})}return S}function Cxe(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,lh.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 Rt.createElement(gK,{value:t?o:void 0},n)}var Axe=(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?Go(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=Nr(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=Ln(Ln({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=Nr(0,a.next.endAngle-a.next.startAngle,t),d=Ln(Ln({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function Exe(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=ld(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,g=p.handleAnimationEnd,b=H9();if(b==null)return null;var h=l[0];return Rt.createElement(Cxe,{showLabels:!f,sectors:l},Rt.createElement(ud,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:g,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:b},(y,x,v)=>Rt.createElement(_r,null,Rt.createElement(_xe,{sectors:y,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:x,isAnimating:f||x<1,isEntrance:v}))),Rt.createElement(kxe,{showLabels:!f,sectors:l,props:a}),Rt.createElement(cK,{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 Nxe={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Axe,animationMatchBy:Yx,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:tV,startAngle:0,stroke:"#fff",zIndex:pr.area};function Txe(e){var t=e.id,r=OC(e,sxe),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,lh.useMemo)(()=>Ux(e.children,Mu),[e.children]),s=Fe(c=>CK(c,t,i)),l=(0,lh.useRef)(null),u=bt("recharts-pie",o);return n||s==null?(l.current=null,Rt.createElement(_r,{tabIndex:a,className:u})):Rt.createElement(pn,{zIndex:e.zIndex},Rt.createElement(gxe,{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}),Rt.createElement(_r,{tabIndex:a,className:u},Rt.createElement(Exe,{props:Ln(Ln({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function Oxe(e){var t=ur(e,Nxe),r=t.id,n=OC(t,lxe),o=Sn(n);return Rt.createElement(cd,{id:r,type:"pie"},a=>Rt.createElement(Rt.Fragment,null,Rt.createElement(RK,{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}),Rt.createElement(fxe,Up({},n,{id:a})),Rt.createElement(Txe,Up({},n,{id:a}))))}var PC=Oxe;PC.displayName="Pie";var Jx=X(J()),IC=X(J());var Pxe=["points"];function rV(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 q5(e){for(var t=1;t{var h,y,x=q5(q5(q5({r:3},i),p),{},{index:b,cx:(h=g.x)!==null&&h!==void 0?h:void 0,cy:(y=g.y)!==null&&y!==void 0?y:void 0,dataKey:a,value:g.value,payload:g.payload,points:t});return Jx.createElement(Lxe,{key:"dot-".concat(b),option:r,dotProps:x,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),Jx.createElement(pn,{zIndex:c},Jx.createElement(_r,MC({className:n},m),f))}var Qx=X(J()),jC=X(J());function nV(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 $C(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var gV=oe([mV,Zo,Jo],(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 dd=()=>Fe(gV),hV=()=>Fe(WH);function yV(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 V5(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=V5(V5(V5({},s),Ci(o)),eg(o)),u;return(0,jC.isValidElement)(o)?u=(0,jC.cloneElement)(o,l):typeof o=="function"?u=o(l):u=Qx.createElement(pC,l),Qx.createElement(_r,{className:"recharts-active-dot",clipPath:i},u)};function Rx(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?pr.activeDot:i,l=Fe(fs),u=hV();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return dr(c)?null:Qx.createElement(pn,{zIndex:s},Qx.createElement(Vxe,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function Gxe(e,t){return Jxe(e)||Zxe(e,t)||Xxe(e,t)||Yxe()}function Yxe(){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 Xxe(e,t){if(e){if(typeof e=="string")return vV(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)?vV(e,t):void 0}}function vV(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!dr(n))return Un(n,t,0)},bV=(e,t,r)=>{var n={},o=e.filter(bp),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=Gxe(u,2),p=d[0],f=d[1],m=f.map(b=>b.dataKey),g=xV(t,r,(c=f[0])===null||c===void 0?void 0:c.barSize);return{stackId:p,dataKeys:m,barSize:g}}),l=a.map(u=>{var c=[u.dataKey].filter(p=>p!=null),d=xV(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function wV(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 LC(e){for(var t=1;ty+(x.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((y,x)=>{var v,k={stackId:x.stackId,dataKeys:x.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(v=x.barSize)!==null&&v!==void 0?v:0}},S=[...y,k];return m=k.position,S},u)}else{var g=Un(t,r,0,!0);r-2*g-(i-1)*s<=0&&(s=0);var b=(r-2*g-(i-1)*s)/i;b>1&&(b=Math.round(b));var h=Pt(o)?Math.min(b,o):b;l=n.reduce((y,x,v)=>[...y,{stackId:x.stackId,dataKeys:x.dataKeys,position:{offset:g+i*(b-h)/2+(h+s)*v,size:h}}],u)}return l}}var SV=(e,t,r,n,o,a,i)=>{var s=dr(i)?t:i,l=t0e(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>LC(LC({},u),{},{position:LC(LC({},u.position),{},{offset:u.position.offset-o/2})}))),l};var kV=(e,t)=>{var r=Hc(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 _V=(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 CV(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&Pt(e.zIndex)?e.zIndex:t}var AV=X(J());var zC=e=>{var t=e.chartData,r=Lt(),n=Or();return(0,AV.useEffect)(()=>n?()=>{}:(r(P5(t)),()=>{r(P5(void 0))}),[t,r,n]),null};var EV={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},NV=Tr({name:"brush",initialState:EV,reducers:{setBrushSettings(e,t){return t.payload==null?EV:t.payload}}}),IHe=NV.actions.setBrushSettings;var TV=NV.reducer;function r0e(e){return(e%180+180)%180}var OV=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=r0e(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=sa(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=sa(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(rr(t.payload))},removeLine:(e,t)=>{var r=sa(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),uh=PV.actions,zHe=uh.addDot,BHe=uh.removeDot,FHe=uh.addArea,WHe=uh.removeArea,UHe=uh.addLine,HHe=uh.removeLine;var MV=PV.reducer;var e0=X(J()),t0=X(J());function o0e(e,t){return l0e(e)||s0e(e,t)||i0e(e,t)||a0e()}function a0e(){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 i0e(e,t){if(e){if(typeof e=="string")return IV(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)?IV(e,t):void 0}}function IV(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,t0.useState)("".concat(gu("recharts"),"-clip")),n=o0e(r,1),o=n[0],a=dd();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return e0.createElement(u0e.Provider,{value:o},e0.createElement("defs",null,e0.createElement("clipPath",{id:o},e0.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var Cn=X(J()),ba=X(J());function $V(){}function G5(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 jV(e,t,r){return r0(e,t,void 0,void 0,void 0,void 0,r)}function r0(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 n0(e,t,a,i)}return n0(e,t,a,i)}function n0(e,t,r,n){if(Object.is(e,t))return!0;let o=vu(e),a=vu(t);if(o==="[object Arguments]"&&(o=og),a==="[object Arguments]"&&(a=og),o!==a)return!1;switch(o){case tg:return e.toString()===t.toString();case rg:return zc(e.valueOf(),t.valueOf());case ng:case rS:case tS:return Object.is(e.valueOf(),t.valueOf());case Rw:return e.source===t.source&&e.flags===t.flags;case zB: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 nS:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!r0(u,t.get(l),l,e,t,r,n))return!1;return!0;case oS:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cr0(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case aS:case lS:case uS:case cS:case dS:case FB:case pS:case fS:case mS:case WB:case gS:case hS:if(jv(e)!==jv(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 BV(e,t){return BC(e,t+1)}function FV(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:BC(n,u)};var g=l,b,h=()=>(b===void 0&&(b=r(m,g)),b),y=m.coordinate,x=l===0||Hp(e,y,h,c,s);x||(l=0,c=i,u+=1),x&&(c=y+e*(h()/2+o),l+=u)},p;u<=a.length;)if(p=d(),p)return p.v;return[]}function WV(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 v=n[g];if(v==null)return 0;var k=g,S,w=()=>(S===void 0&&(S=r(v,k)),S),_=v.coordinate,A=g===c||Hp(e,_,w,d,l);if(!A)return p=!1,1;A&&(d=_+e*(w()/2+o))},m,g=c;g(g===void 0&&(g=r(f,p)),g);if(p===i-1){var h=e*(m.coordinate+e*b()/2-l);a[p]=m=xa(xa({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[p]=m=xa(xa({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var y=Hp(e,m.tickCoord,b,s,l);y&&(l=m.tickCoord-e*(b()/2+o),a[p]=xa(xa({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function m0e(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=xa(xa({},c),{},{tickCoord:p>0?c.coordinate-p*e:c.coordinate}),c.tickCoord!=null){var f=Hp(e,c.tickCoord,()=>d,l,u);f&&(u=c.tickCoord-e*(d/2+o),i[s-1]=xa(xa({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,g=function(y){var x=i[y];if(x==null)return 1;var v=x,k,S=()=>(k===void 0&&(k=r(x,y)),k);if(y===0){var w=e*(v.coordinate-e*S()/2-l);i[y]=v=xa(xa({},v),{},{tickCoord:w<0?v.coordinate-w*e:v.coordinate})}else i[y]=v=xa(xa({},v),{},{tickCoord:v.coordinate});if(v.tickCoord!=null){var _=Hp(e,v.tickCoord,S,l,u);_&&(l=v.tickCoord+e*(S()/2+o),i[y]=xa(xa({},v),{},{isShow:!0}))}},b=0;b{var w=typeof u=="function"?u(k.value,S):k.value;return m==="width"?LV(Lp(w,{fontSize:t,letterSpacing:r}),g,d):Lp(w,{fontSize:t,letterSpacing:r})[m]},h=o[0],y=o[1],x=o.length>=2&&h!=null&&y!=null?rn(y.coordinate-h.coordinate):1,v=zV(a,x,m);return l==="equidistantPreserveStart"?FV(x,v,b,o,i):l==="equidistantPreserveEnd"?WV(x,v,b,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=m0e(x,v,b,o,i,l==="preserveStartEnd"):f=f0e(x,v,b,o,i),f.filter(k=>k.isShow))}var HV=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 qV=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 g0e={xAxis:{},yAxis:{}},KV=Tr({name:"renderedTicks",initialState:g0e,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=rr(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),VV=KV.actions,GV=VV.setRenderedTicks,YV=VV.removeRenderedTicks;var XV=KV.reducer;var h0e=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function ZV(e,t){return b0e(e)||x0e(e,t)||v0e(e,t)||y0e()}function y0e(){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 v0e(e,t){if(e){if(typeof e=="string")return JV(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)?JV(e,t):void 0}}function JV(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&&Y5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(GV({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,ba.useEffect)(()=>n==null||r==null?La:()=>{o(YV({axisId:n,axisType:r}))},[o,n,r]),null}var M0e=(0,ba.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,g=e.width,b=e.height,h=e.tickSize,y=e.tickMargin,x=e.fontSize,v=e.letterSpacing,k=e.getTicksConfig,S=e.events,w=e.axisType,_=e.axisId,A=o0(eo(eo({},k),{},{ticks:n}),x,v),C=Sn(k),O=Ci(o),D=uC(C.textAnchor)?C.textAnchor:N0e(d,p),H=T0e(d,p),j={};typeof a=="object"&&(j=a);var Z=eo(eo({},C),{},{fill:"none"},j),N=A.map(I=>eo({entry:I},E0e(I,f,m,g,b,d,h,p,y))),P=N.map(I=>{var $=I.entry,T=I.line;return Cn.createElement(_r,{className:"recharts-cartesian-axis-tick",key:"tick-".concat($.value,"-").concat($.coordinate,"-").concat($.tickCoord)},a&&Cn.createElement("line",qp({},Z,T,{className:bt("recharts-cartesian-axis-tick-line",Go(a,"className"))})))}),M=N.map((I,$)=>{var T,q,G=I.entry,L=I.tick,Y=eo(eo(eo(eo({verticalAnchor:H},C),{},{textAnchor:D,stroke:"none",fill:i},L),{},{index:$,payload:G,visibleTicksCount:A.length,tickFormatter:s,padding:u},c),{},{angle:(T=(q=c?.angle)!==null&&q!==void 0?q:C.angle)!==null&&T!==void 0?T:0}),K=eo(eo({},Y),O);return Cn.createElement(_r,qp({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(G.value,"-").concat(G.coordinate,"-").concat(G.tickCoord)},yu(S,G,$)),o&&Cn.createElement(O0e,{option:o,tickProps:K,value:"".concat(typeof s=="function"?s(G.value,$):G.value).concat(l||"")}))});return Cn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(w,"-ticks")},Cn.createElement(P0e,{ticks:A,axisId:_,axisType:w}),M.length>0&&Cn.createElement(pn,{zIndex:pr.label},Cn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(w,"-tick-labels"),ref:t},M)),P.length>0&&Cn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(w,"-tick-lines")},P))}),I0e=(0,ba.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=w0e(e,h0e),d=(0,ba.useState)(""),p=ZV(d,2),f=p[0],m=p[1],g=(0,ba.useState)(""),b=ZV(g,2),h=b[0],y=b[1],x=(0,ba.useRef)(null);(0,ba.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var k;return HV({ticks:x.current,label:(k=e.labelRef)===null||k===void 0?void 0:k.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})},getCalculatedHeight:()=>{var k;return qV({ticks:x.current,label:(k=e.labelRef)===null||k===void 0?void 0:k.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var v=(0,ba.useCallback)(k=>{if(k){var S=k.getElementsByClassName("recharts-cartesian-axis-tick-value");x.current=S;var w=S[0];if(w){var _=window.getComputedStyle(w),A=_.fontSize,C=_.letterSpacing;(A!==f||C!==h)&&(m(A),y(C))}}},[f,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:Cn.createElement(pn,{zIndex:e.zIndex},Cn.createElement(_r,{className:bt("recharts-cartesian-axis",a)},Cn.createElement(A0e,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:Sn(e)}),Cn.createElement(M0e,{ref:v,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}),Cn.createElement(sK,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},Cn.createElement(dK,{label:e.label,labelRef:e.labelRef}),e.children)))}),a0=Cn.forwardRef((e,t)=>{var r=ur(e,hs);return Cn.createElement(I0e,qp({},r,{ref:t}))});a0.displayName="CartesianAxis";var to=X(J());var FC=X(J());var RV={grid:{stroke:"#ccc",fill:"none"}};var eG=(0,FC.createContext)(RV),Gqe=eG.Provider,tG=()=>(0,FC.useContext)(eG);var D0e=["x1","y1","x2","y2","key"],$0e=["offset"],j0e=["xAxisId","yAxisId"],L0e=["xAxisId","yAxisId"];function rG(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function wa(e){for(var t=1;t{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 to.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function nG(e){var t=e.option,r=e.lineItemProps,n;if(to.isValidElement(t))n=to.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=WC(r,D0e),d=(o=Sn(c))!==null&&o!==void 0?o:{},p=d.offset,f=WC(d,$0e),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=to.createElement("line",Kp({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function H0e(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=WC(e,j0e),u=a.map((c,d)=>{var p=wa(wa({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return to.createElement(nG,{key:"line-".concat(d),option:o,lineItemProps:p})});return to.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function q0e(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=WC(e,L0e),u=a.map((c,d)=>{var p=wa(wa({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return to.createElement(nG,{option:o,lineItemProps:p,key:"line-".concat(d)})});return to.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function K0e(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],g=m==null,b=g?o+i-p:m-p;if(b<=0)return null;var h=f%t.length;return to.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 to.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function V0e(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],g=m==null,b=g?a+s-p:m-p;if(b<=0)return null;var h=f%n.length;return to.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 to.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var G0e=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return wP(o0(wa(wa(wa({},hs),r),{},{ticks:SP(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},Y0e=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return wP(o0(wa(wa(wa({},hs),r),{},{ticks:SP(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},X0e={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:pr.grid};function ju(e){var t,r,n,o,a,i,s=hg(),l=yg(),u=uk(),c=wa(wa({},ur(e,X0e)),{},{x:Be(e.x)?e.x:u.left,y:Be(e.y)?e.y:u.top,width:Be(e.width)?e.width:u.width,height:Be(e.height)?e.height:u.height}),d=c.xAxisId,p=c.yAxisId,f=c.x,m=c.y,g=c.width,b=c.height,h=c.syncWithTicks,y=c.horizontalValues,x=c.verticalValues,v=Or(),k=Fe(P=>l5(P,"xAxis",d,v)),S=Fe(P=>l5(P,"yAxis",p,v)),w=tG(),_={stroke:(t=c.stroke)!==null&&t!==void 0?t:w.grid.stroke,strokeWidth:(r=c.strokeWidth)!==null&&r!==void 0?r:w.grid.strokeWidth,strokeOpacity:(n=c.strokeOpacity)!==null&&n!==void 0?n:w.grid.strokeOpacity,strokeDasharray:(o=c.strokeDasharray)!==null&&o!==void 0?o:w.grid.strokeDasharray};if(!ei(g)||!ei(b)||!Be(f)||!Be(m))return null;var A=c.verticalCoordinatesGenerator||G0e,C=c.horizontalCoordinatesGenerator||Y0e,O=c.horizontalPoints,D=c.verticalPoints;if((!O||!O.length)&&typeof C=="function"){var H=y&&y.length,j=C({yAxis:S?wa(wa({},S),{},{ticks:H?y:S.ticks}):void 0,width:s??g,height:l??b,offset:u},H?!0:h);gg(Array.isArray(j),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof j,"]")),Array.isArray(j)&&(O=j)}if((!D||!D.length)&&typeof A=="function"){var Z=x&&x.length,N=A({xAxis:k?wa(wa({},k),{},{ticks:Z?x:k.ticks}):void 0,width:s??g,height:l??b,offset:u},Z?!0:h);gg(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(D=N)}return to.createElement(pn,{zIndex:c.zIndex},to.createElement("g",{className:"recharts-cartesian-grid"},to.createElement(U0e,{fill:(a=c.fill)!==null&&a!==void 0?a:w.grid.fill,fillOpacity:(i=c.fillOpacity)!==null&&i!==void 0?i:w.grid.fillOpacity,x:c.x,y:c.y,width:c.width,height:c.height,ry:c.ry}),to.createElement(K0e,Kp({},c,{horizontalPoints:O})),to.createElement(V0e,Kp({},c,{verticalPoints:D})),to.createElement(H0e,Kp({},c,_,{offset:u,horizontalPoints:O,xAxis:k,yAxis:S})),to.createElement(q0e,Kp({},c,_,{offset:u,verticalPoints:D,xAxis:k,yAxis:S}))))}ju.displayName="CartesianGrid";var Ar=X(J()),Lu=X(J());var oG=X(J());var Z0e=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function X5(){return X5=Object.assign?Object.assign.bind():function(e){for(var t=1;tf+m,0);if(!o)return aG(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[...tbe(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function nbe(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return rbe(r,t,n)}return aG(t,r)}function iG(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=J0e(e,Z0e),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=R0e((c=d?.current)!==null&&c!==void 0?c:null);u=nbe(a,p,o)}else a!=null&&(u=String(a));return oG.createElement(vl,X5({},s,{connectNulls:l,strokeDasharray:u}))}var Vp=X(J());function sG(e){var t=(0,Vp.useRef)(0),r=(0,Vp.useRef)(0),n=(0,Vp.useRef)(!1),o=(0,Vp.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,Vp.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(rs(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 cG=X(J()),i0=X(J());var obe={},lG=Tr({name:"errorBars",initialState:obe,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))}}}),Z5=lG.actions,hKe=Z5.addErrorBar,yKe=Z5.replaceErrorBar,vKe=Z5.removeErrorBar;var uG=lG.reducer;var abe=["children"];function ibe(e,t){if(e==null)return{};var r,n,o=sbe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},ube=(0,i0.createContext)(lbe);function UC(e){var t=e.children,r=ibe(e,abe);return cG.createElement(ube.Provider,{value:r},t)}var J5=X(J());function Gp(e,t){var r,n,o=Fe(u=>Cl(u,e)),a=Fe(u=>Al(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:po.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:fo.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function ch(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=dd(),a=Gp(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=Fe(x=>QM(x,t,!1)),c=Fe(x=>RM(x,r,!1));if(!l||!o)return null;var d=o.x,p=o.y,f=o.width,m=o.height,g=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,y=s&&c?Math.abs(c[1]-c[0]):m*2;return J5.createElement("clipPath",{id:"clipPath-".concat(n)},J5.createElement("rect",{x:g,y:b,width:h,height:y}))}var dG=(e,t,r,n)=>Li(e,"xAxis",t,n),pG=(e,t,r,n)=>ji(e,"xAxis",t,n),fG=(e,t,r,n)=>Li(e,"yAxis",r,n),mG=(e,t,r,n)=>ji(e,"yAxis",r,n),cbe=oe([Wt,dG,fG,pG,mG],(e,t,r,n,o)=>ya(e,"xAxis")?ss(t,n,!1):ss(r,o,!1)),dbe=(e,t,r,n,o)=>o;function pbe(e){return e.type==="line"}var fbe=oe([Zc,dbe],(e,t)=>e.filter(pbe).find(r=>r.id===t)),gG=oe([Wt,dG,fG,pG,mG,fbe,cbe,hp],(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 hG({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function HC(e){var t=Ci(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 mbe=["id"],gbe=["type","layout","connectNulls","needClip","shape","strokeDasharray"],hbe=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function qC(){return qC=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var kbe=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=Sbe(e),n=[];for(var o of e)if(o.status==="matched")n.push(El(El({},o.next),{},{x:Nr(o.prev.x,o.next.x,t),y:Nr(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(El(El({},o.next),{},{x:Nr(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(El(El({},o.prev),{},{x:Nr(o.prev.x,i,t),y:o.prev.y}))}return n},eI={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:kbe,animationMatchBy:Wp,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:iG,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:pr.line,type:"linear"},_be=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:Oi(r,t),payload:e}]},Cbe=Ar.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:La,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Oi(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return Ar.createElement(id,{tooltipEntrySettings:p})});function Abe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=R5(n,mbe),u=Sn(l);return Ar.createElement(DC,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function Ebe(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,Lu.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 El(El({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return Ar.createElement(th,{value:t?o:void 0},r)}function Nbe(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,g=R5(o,gbe),b=El(El({},kn(g)),{},{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 Ar.createElement(Ar.Fragment,null,n?.length>1&&Ar.createElement(ad,{option:f,DefaultShape:eI.shape,shapeProps:b}),Ar.createElement(Abe,{points:n,clipPathId:t,props:o}))}function Tbe(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=wbe(n.current),m=ld(r.onAnimationStart,r.onAnimationEnd),g=m.isAnimating,b=m.handleAnimationStart,h=m.handleAnimationEnd,y=!g,x=sG(a),v=(0,Lu.useCallback)(k=>k>0&&f>0,[f]);return Ar.createElement(Ebe,{points:a,showLabels:y},r.children,Ar.createElement(ud,{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:v,layout:p},(k,S,w)=>{var _=g||S<1,A=_?x(S,f):null;return Ar.createElement(Nbe,{props:r,points:k,clipPathId:t,pathRef:n,animationElapsedTime:S,isAnimating:_,isEntrance:w,visibleLength:A})}),Ar.createElement(od,{label:r.label}))}function Obe(e){var t=e.clipPathId,r=e.props,n=(0,Lu.useRef)(null),o=(0,Lu.useRef)(null);return Ar.createElement(Tbe,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var Pbe=(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:Zt(e.payload,t)}},Q5=class extends Lu.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 g=bt("recharts-line",a),b=p,h=HC(n),y=h.r,x=h.strokeWidth,v=rh(n),k=y*2+x,S=f?"url(#clipPath-".concat(v?"":"dots-").concat(b,")"):void 0;return Ar.createElement(pn,{zIndex:m},Ar.createElement(_r,{className:g},f&&Ar.createElement("defs",null,Ar.createElement(ch,{clipPathId:b,xAxisId:i,yAxisId:s}),!v&&Ar.createElement("clipPath",{id:"clipPath-dots-".concat(b)},Ar.createElement("rect",{x:u-k/2,y:l-k/2,width:c+k,height:d+k}))),Ar.createElement(UC,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:Pbe,errorBarOffset:0},Ar.createElement(Obe,{props:this.props,clipPathId:b}))),Ar.createElement(Rx,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:S}))}};function Mbe(e){var t=ur(e,eI),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,g=t.id,b=R5(t,hbe),h=Gp(f,m),y=h.needClip,x=dd(),v=ri(),k=Or(),S=Fe(O=>gG(O,f,m,k,g));if(v!=="horizontal"&&v!=="vertical"||S==null||x==null)return null;var w=x.height,_=x.width,A=x.x,C=x.y;return Ar.createElement(Q5,qC({},b,{id:g,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:S,layout:v,height:w,width:_,left:A,top:C,needClip:y}))}function hG(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=Zt(u,i);if(t==="horizontal"){var p=ug({axis:r,ticks:o,bandSize:s,entry:u,index:c}),f=dr(d)?null:n.scale.map(d);return{x:p,y:f??null,value:d,payload:u}}var m=dr(d)?null:r.scale.map(d),g=ug({axis:n,ticks:a,bandSize:s,entry:u,index:c});return m==null||g==null?null:{x:m,y:g,value:d,payload:u}}).filter(Boolean)}function Ibe(e){var t=ur(e,eI),r=Or();return Ar.createElement(cd,{id:t.id,type:"line"},n=>Ar.createElement(Ar.Fragment,null,Ar.createElement(oh,{legendPayload:_be(t)}),Ar.createElement(Cbe,{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}),Ar.createElement(sh,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),Ar.createElement(Mbe,qC({},t,{id:n}))))}var KC=Ar.memo(Ibe,ni);KC.displayName="Line";var wr=X(J()),Yp=X(J());function ys(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:K5}function vs(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:K5}var vG=(e,t,r)=>Li(e,"xAxis",ys(e,t),r),xG=(e,t,r)=>ji(e,"xAxis",ys(e,t),r),bG=(e,t,r)=>Li(e,"yAxis",vs(e,t),r),wG=(e,t,r)=>ji(e,"yAxis",vs(e,t),r),Dbe=oe([Wt,vG,bG,xG,wG],(e,t,r,n,o)=>ya(e,"xAxis")?ss(t,n,!1):ss(r,o,!1)),$be=(e,t)=>t,tI=oe([Zc,$be],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),SG=e=>{var t=Wt(e),r=ya(t,"xAxis");return r?"yAxis":"xAxis"},jbe=(e,t)=>{var r=SG(e);return r==="yAxis"?vs(e,t):ys(e,t)},kG=(e,t,r)=>Ug(e,SG(e),jbe(e,t),r),Lbe=oe([tI,kG],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Hc(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]])}}}),zbe=oe([tI,kG],(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(Mo)}}),_G=oe([Wt,vG,bG,xG,wG,Lbe,Pk,Dbe,tI,TW,zbe],(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,g;if(m&&m.length>0?g=m:g=d?.slice(p,f+1),g!=null)return CG({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:p,areaSettings:l,stackedData:a,displayedData:g,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var Sa=X(J());var Bbe=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],Fbe=["id","baseLine"];function s0(){return s0=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return Be(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),Be(c)?Sa.createElement("rect",{x:sd.x||0));return Be(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),Be(c)?Sa.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[dh(dh({},r.next),{},{x:Nr(r.prev.x,r.next.x,t),y:Nr(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),OG={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Wp,animationInterpolateFn:Jbe,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:EG,xAxisId:0,yAxisId:0,zIndex:pr.area};function GC(e,t){return e&&e!=="none"?e:t}var Qbe=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:GC(n,o),value:Oi(r,t),payload:e}]},Rbe=wr.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:La,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:Oi(i,t),hide:s,type:c,color:GC(n,a),unit:l,formatter:u,graphicalItemId:d}};return wr.createElement(id,{tooltipEntrySettings:p})});function e1e(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=Sn(n);return wr.createElement(DC,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function t1e(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 dh(dh({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return wr.createElement(th,{value:t?o:void 0},r)}function r1e(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,g=a.id,b=TG(a,Kbe),h=kn(b),y=dh(dh({},h),{},{id:g,points:t,connectNulls:p,type:c,baseLine:r,layout:u,stroke:d,isRange:f,animationElapsedTime:i,isAnimating:s,isEntrance:l});return wr.createElement(wr.Fragment,null,t?.length>1&&wr.createElement(_r,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},wr.createElement(ad,{option:m,DefaultShape:OG.shape,shapeProps:y})),wr.createElement(e1e,{points:t,props:b,clipPathId:o}))}function n1e(e,t,r){if(Be(e)){var n=Be(t)?t:void 0;return Nr(n,e,r)}if(dr(e)||Yo(e)){var o=Be(t)?t:void 0;return Nr(o,0,r)}return e}function o1e(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,Yp.useMemo)(()=>({points:i,baseLine:s}),[i,s]),g=EC(m,a),b=vg(),h=ld(n.onAnimationStart,n.onAnimationEnd),y=h.isAnimating,x=h.handleAnimationStart,v=h.handleAnimationEnd,k=g.startValue;if(b==null)return null;var S;return Array.isArray(s)&&Array.isArray(k)?S=Xx(k,s,p):Array.isArray(s)?S=Xx(null,s,p):S=null,wr.createElement(ud,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:x,onAnimationEnd:v,animationInterpolateFn:f,animationMatchBy:p,layout:b},(w,_,A)=>{var C;return _===1?C=s:Array.isArray(s)?C=f(S,_,b):C=A?s:n1e(s,k,_),g.syncStepValue(C,_),wr.createElement(t1e,{showLabels:!y,points:i},n.children,wr.createElement(r1e,{points:w,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:_,isAnimating:y||_<1,isEntrance:A}),wr.createElement(od,{label:n.label}))})}function a1e(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Yp.useRef)(null),a=(0,Yp.useRef)();return wr.createElement(o1e,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var rI=class extends Yp.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,g=t.zIndex;if(r)return null;var b=bt("recharts-area",a),h=f,y=HC(n),x=y.r,v=y.strokeWidth,k=rh(n),S=x*2+v,w=l?"url(#clipPath-".concat(k?"":"dots-").concat(h,")"):void 0;return wr.createElement(pn,{zIndex:g},wr.createElement(_r,{className:b},l&&wr.createElement("defs",null,wr.createElement(ch,{clipPathId:h,xAxisId:u,yAxisId:c}),!k&&wr.createElement("clipPath",{id:"clipPath-dots-".concat(h)},wr.createElement("rect",{x:s-S/2,y:i-S/2,width:d+S,height:p+S}))),wr.createElement(a1e,{needClip:l,clipPathId:h,props:this.props})),wr.createElement(Rx,{points:o,mainColor:GC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}),this.props.isRange&&Array.isArray(m)&&wr.createElement(Rx,{points:m,mainColor:GC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}))}};function i1e(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,g=e.yAxisId,b=TG(e,Vbe),h=ri(),y=J_(),x=Gp(m,g),v=x.needClip,k=Or(),S=(t=Fe(Z=>_G(Z,e.id,k)))!==null&&t!==void 0?t:{},w=S.points,_=S.isRange,A=S.baseLine,C=dd();if(h!=="horizontal"&&h!=="vertical"||C==null||y!=="AreaChart"&&y!=="ComposedChart")return null;var O=C.height,D=C.width,H=C.x,j=C.y;return!w||!w.length?null:wr.createElement(rI,VC({},b,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:A,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:O,hide:c,layout:h,isAnimationActive:d,isRange:_,legendType:p,needClip:v,points:w,stroke:f,width:D,left:H,top:j,xAxisId:m,yAxisId:g}))}var s1e=(e,t,r,n,o)=>{var a=r??t;if(Be(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 CG(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,g=e.stackDataKeys,b=a&&a.length,h=s1e(i,s,n,l,u),y=i==="horizontal",x=!1,v=c.map((S,w)=>{var _,A,C,O;if(b)O=a[d+w];else{var D=Zt(S,o);Array.isArray(D)?(O=D,x=!0):O=[h,D]}var H=(_=(A=O)===null||A===void 0?void 0:A[1])!==null&&_!==void 0?_:null,j=Zt(S,o),Z=b&&j==null&&g!=null&&g.length>0&&g.every(M=>Zt(S,M)==null),N=H==null||b&&!r&&j==null||Z;if(y){var P;return{x:ug({axis:l,ticks:p,bandSize:m,entry:S,index:w}),y:N?null:(P=u.scale.map(H))!==null&&P!==void 0?P:null,value:O,payload:S}}return{x:N?null:(C=l.scale.map(H))!==null&&C!==void 0?C:null,y:ug({axis:u,ticks:f,bandSize:m,entry:S,index:w}),value:O,payload:S}}),k;return b||x?k=v.map(S=>{var w,_=Array.isArray(S.value)?S.value[0]:null;if(y){var A;return{x:S.x,y:_!=null&&S.y!=null&&(A=u.scale.map(_))!==null&&A!==void 0?A:null,payload:S.payload}}return{x:_!=null&&(w=l.scale.map(_))!==null&&w!==void 0?w:null,y:S.y,payload:S.payload}}):k=y?u.scale.map(h):l.scale.map(h),{points:v,baseLine:k??0,isRange:x}}function l1e(e){var t=ur(e,OG),r=Or();return wr.createElement(cd,{id:t.id,type:"area"},n=>wr.createElement(wr.Fragment,null,wr.createElement(oh,{legendPayload:Qbe(t)}),wr.createElement(Rbe,{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}),wr.createElement(sh,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:rk(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),wr.createElement(i1e,VC({},t,{id:n}))))}var zu=wr.memo(l1e,ni);zu.displayName="Area";var ar=X(J()),Ks=X(J());var MG=X(J());var u1e=!0,nI="Invariant failed";function PG(e,t){if(!e){if(u1e)throw new Error(nI);var r=typeof t=="function"?t():t,n=r?"".concat(nI,": ").concat(r):nI;throw new Error(n)}}var c1e=["option"];function d1e(e,t){if(e==null)return{};var r,n,o=p1e(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(Be(t))return t;var a=Be(n)||dr(n);return a?t(n,o):(a||PG(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var f1e=(e,t,r)=>r,m1e=(e,t)=>t,l0=oe([Zc,m1e],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),g1e=oe([l0],e=>e?.maxBarSize),h1e=(e,t,r,n)=>n,y1e=oe([Wt,Zc,ys,vs,f1e],(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")),v1e=(e,t,r)=>{var n=Wt(e),o=ys(e,t),a=vs(e,t);if(!(o==null||a==null))return n==="horizontal"?Ug(e,"yAxis",a,r):Ug(e,"xAxis",o,r)},x1e=(e,t)=>{var r=Wt(e),n=ys(e,t),o=vs(e,t);if(!(n==null||o==null))return r==="horizontal"?a5(e,"xAxis",n):a5(e,"yAxis",o)},b1e=oe([y1e,NW,x1e],bV),w1e=(e,t,r)=>{var n,o,a=l0(e,t);if(a==null)return 0;var i=ys(e,t),s=vs(e,t);if(i==null||s==null)return 0;var l=Wt(e),u=YP(e),c=a.maxBarSize,d=dr(c)?u:c,p,f;return l==="horizontal"?(p=Li(e,"xAxis",i,r),f=ji(e,"xAxis",i,r)):(p=Li(e,"yAxis",s,r),f=ji(e,"yAxis",s,r)),(n=(o=ss(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},DG=(e,t,r)=>{var n=Wt(e),o=ys(e,t),a=vs(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=Li(e,"xAxis",o,r),s=ji(e,"xAxis",o,r)):(i=Li(e,"yAxis",a,r),s=ji(e,"yAxis",a,r)),ss(i,s)}},S1e=oe([b1e,YP,EW,jk,w1e,DG,g1e],SV),k1e=(e,t,r)=>{var n=ys(e,t);if(n!=null)return Li(e,"xAxis",n,r)},_1e=(e,t,r)=>{var n=vs(e,t);if(n!=null)return Li(e,"yAxis",n,r)},C1e=(e,t,r)=>{var n=ys(e,t);if(n!=null)return ji(e,"xAxis",n,r)},A1e=(e,t,r)=>{var n=vs(e,t);if(n!=null)return ji(e,"yAxis",n,r)},E1e=oe([S1e,l0],_V),N1e=oe([v1e,l0],kV),$G=oe([Vr,fg,k1e,_1e,C1e,A1e,E1e,Wt,Pk,DG,N1e,l0,h1e],(e,t,r,n,o,a,i,s,l,u,c,d,p)=>{var f=l.chartData,m=l.dataStartIndex,g=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,g+1),h!=null)return jG({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 aI=X(J()),ph=X(J());var T1e=["index"];function oI(){return oI=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,ph.useContext)(LG);if(t!=null)return t.stackId;if(e!=null)return rk(e)};var M1e=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),I1e=e=>{var t=(0,ph.useContext)(LG);if(t!=null){var r=t.stackId;return"url(#".concat(M1e(r,e),")")}},iI=e=>{var t=e.index,r=O1e(e,T1e),n=I1e(t);return aI.createElement(_r,oI({className:"recharts-bar-stack-layer",clipPath:n},r))};var D1e=["onMouseEnter","onMouseLeave","onClick"],$1e=["value","background","tooltipPosition"],j1e=["id"],L1e=["onMouseEnter","onClick","onMouseLeave"];function BG(e,t){return W1e(e)||F1e(e,t)||B1e(e,t)||z1e()}function z1e(){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 B1e(e,t){if(e){if(typeof e=="string")return FG(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)?FG(e,t):void 0}}function FG(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:Oi(r,t),payload:e}]},G1e=ar.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:La,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:Oi(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return ar.createElement(id,{tooltipEntrySettings:d})});function Y1e(e){var t=Fe(fs),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=ZC(a,D1e),c=qx(i,n,a.id),d=Kx(s),p=Vx(l,n,a.id);if(!o||r==null)return null;var f=Ci(o);return ar.createElement(pn,{zIndex:CV(o,pr.barBackground)},r.map((m,g)=>{var b=m.value,h=m.background,y=m.tooltipPosition,x=ZC(m,$1e);if(!h)return null;var v=c(m,m.originalDataIndex),k=d(m,m.originalDataIndex),S=p(m,m.originalDataIndex),w=$o($o($o($o($o({option:o,isActive:String(m.originalDataIndex)===t},x),{},{fill:"#eee"},h),f),yu(u,m,g)),{},{onMouseEnter:v,onMouseLeave:k,onClick:S,dataKey:n,index:g,className:"recharts-bar-background-rectangle"});return ar.createElement(XC,pd({key:"background-bar-".concat(g)},w))}))}function X1e(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 $o($o({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return ar.createElement(th,{value:t?o:void 0},r)}function Z1e(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=Fe(fs),l=Fe(Vg),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,Ks.useState)(!1),p=BG(d,2),f=p[0],m=p[1],g=(0,Ks.useState)(!1),b=BG(g,2),h=b[0],y=b[1];(0,Ks.useEffect)(()=>{var _;return u?(m(!0),_=requestAnimationFrame(()=>{y(!0)})):(y(!1),c&&m(!1)),()=>{cancelAnimationFrame(_)}},[u,c]);var x=(0,Ks.useCallback)(()=>{u||m(!1)},[u]),v=u&&h,k=u||f,S;u?r===!0?S=t:S=r:S=t;var w=ar.createElement(XC,pd({},n,{name:String(n.name)},o,{isActive:v,option:S,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:x}));return k?ar.createElement(pn,{zIndex:pr.activeBar},ar.createElement(iI,{index:o.originalDataIndex},w)):w}function J1e(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return ar.createElement(XC,pd({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function Q1e(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=Sn(n))!==null&&t!==void 0?t:{},l=s.id,u=ZC(s,j1e),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,g=n.onMouseLeave,b=ZC(n,L1e),h=qx(f,d,l),y=Kx(g),x=Vx(m,d,l);return r?ar.createElement(ar.Fragment,null,r.map((v,k)=>ar.createElement(iI,pd({index:v.originalDataIndex,key:"rectangle-".concat(v?.x,"-").concat(v?.y,"-").concat(v?.value,"-").concat(k),className:"recharts-bar-rectangle"},yu(b,v,k),{onMouseEnter:h(v,v.originalDataIndex),onMouseLeave:y(v,v.originalDataIndex),onClick:x(v,v.originalDataIndex)}),p?ar.createElement(Z1e,{shape:c,activeBar:p,baseProps:u,entry:v,index:k,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):ar.createElement(J1e,{shape:c,baseProps:u,entry:v,index:k,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var R1e=(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"?[$o($o({},n.prev),{},{height:Nr(n.prev.height,0,t),y:Nr(n.prev.y,n.prev.y+n.prev.height,t)})]:[$o($o({},n.prev),{},{width:Nr(n.prev.width,0,t)})];if(n.status==="matched")return[$o($o({},n.next),{},{x:Nr(n.prev.x,n.next.x,t),y:Nr(n.prev.y,n.next.y,t),width:Nr(n.prev.width,n.next.width,t),height:Nr(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[$o($o({},o),{},{height:Nr(0,o.height,t),y:Nr(o.stackedBarStart,o.y,t)})]:[$o($o({},o),{},{width:Nr(0,o.width,t),x:Nr(o.stackedBarStart,o.x,t)})]});function ewe(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=ld(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return ar.createElement(X1e,{showLabels:!d,rects:n},ar.createElement(ud,{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,g,b)=>ar.createElement(_r,null,ar.createElement(Q1e,{props:t,data:m,animationElapsedTime:g,isAnimating:d||g<1,isEntrance:b}))),ar.createElement(od,{label:t.label}),t.children)}function twe(e){var t=(0,Ks.useRef)(null);return ar.createElement(ewe,{previousRectanglesRef:t,props:e})}var UG=0,rwe=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:Zt(e,t)}},sI=class extends Ks.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=bt("recharts-bar",a),p=c;return ar.createElement(_r,{className:d,id:c},l&&ar.createElement("defs",null,ar.createElement(ch,{clipPathId:p,xAxisId:i,yAxisId:s})),ar.createElement(_r,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},ar.createElement(Y1e,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),ar.createElement(twe,this.props)))}},nwe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:R1e,animationMatchBy:Yx,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:UG,shape:YC,xAxisId:0,yAxisId:0,zIndex:pr.bar};function owe(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=Gp(t,r),p=d.needClip,f=ri(),m=Or(),g=Ux(e.children,Mu),b=Fe(x=>$G(x,e.id,m,g));if(f!=="vertical"&&f!=="horizontal")return null;var h,y=b?.[0];return y==null||y.height==null||y.width==null?h=0:h=f==="vertical"?y.height/2:y.width/2,ar.createElement(UC,{xAxisId:t,yAxisId:r,data:b,dataPointFormatter:rwe,errorBarOffset:h},ar.createElement(sI,pd({},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 jG(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,g=e.cells,b=e.parentViewBox,h=e.dataStartIndex,y=t==="horizontal"?u:l,x=p?y.scale.domain():null,v=A9({numericAxis:y}),k=y.scale.map(v);return f.map((S,w)=>{var _,A,C,O,D,H;if(p){var j=p[w+h];if(j==null)return null;_=_9(j,x)}else _=Zt(S,n),Array.isArray(_)||(_=[v,_]);var Z=IG(o,UG)(_[1],w);if(t==="horizontal"){var N,P=u.scale.map(_[0]),M=u.scale.map(_[1]);if(P==null||M==null)return null;A=kP({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:S,index:w}),C=(N=M??P)!==null&&N!==void 0?N:void 0,O=i.size;var I=P-M;if(D=Yo(I)?0:I,H={x:A,y:m.top,width:O,height:m.height},Math.abs(Z)>0&&Math.abs(D)0&&Math.abs(O)ar.createElement(ar.Fragment,null,ar.createElement(oh,{legendPayload:V1e(t)}),ar.createElement(G1e,{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}),ar.createElement(sh,{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!==YC}),ar.createElement(pn,{zIndex:t.zIndex},ar.createElement(owe,pd({},t,{id:o})))))}var JC=ar.memo(awe,ni);JC.displayName="Bar";var Bu=X(J()),xs=X(J());var iwe=["domain","range"],swe=["domain","range"];function HG(e,t){if(e==null)return{};var r,n,o=lwe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return VG(VG({},a),{},{type:i})},[a,i]);return(0,xs.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(aV(s)):r.current!==s&&t(iV({prev:r.current,next:s})),r.current=s)},[s,t]),(0,xs.useLayoutEffect)(()=>()=>{r.current&&(t(sV(r.current)),r.current=null)},[t]),null}var ywe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,xs.useRef)(null),i=(0,xs.useRef)(null),s=Fe(fg),l=Or(),u=Lt(),c="xAxis",d=Fe(S=>z_(S,c,t,l)),p=Fe(S=>n5(S,t)),f=Fe(S=>yH(S,t)),m=Fe(S=>DM(S,t));if((0,xs.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||Fp(o)||(0,xs.isValidElement)(o)||m==null)){var S=a.current;if(S){var w=S.getCalculatedHeight();Math.round(p.height)!==Math.round(w)&&u(pV({id:t,height:w}))}}},[d,p,u,o,t,n,m]),p==null||f==null||m==null)return null;var g=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,y=uI(e,cwe),x=m.id,v=m.scale,k=uI(m,dwe);return Bu.createElement(a0,lI({},y,k,{ref:a,labelRef:i,x:f.x,y:f.y,width:p.width,height:p.height,className:bt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},vwe={allowDataOverflow:po.allowDataOverflow,allowDecimals:po.allowDecimals,allowDuplicatedCategory:po.allowDuplicatedCategory,angle:po.angle,axisLine:hs.axisLine,height:po.height,hide:!1,includeHidden:po.includeHidden,interval:po.interval,label:!1,minTickGap:po.minTickGap,mirror:po.mirror,orientation:po.orientation,padding:po.padding,reversed:po.reversed,scale:po.scale,tick:po.tick,tickCount:po.tickCount,tickLine:hs.tickLine,tickSize:hs.tickSize,type:po.type,niceTicks:po.niceTicks,xAxisId:0},xwe=e=>{var t=ur(e,vwe);return Bu.createElement(Bu.Fragment,null,Bu.createElement(hwe,{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}),Bu.createElement(ywe,t))},Fu=Bu.memo(xwe,QC);Fu.displayName="XAxis";var Wu=X(J()),bs=X(J());var bwe=["type"],wwe=["dangerouslySetInnerHTML","ticks","scale"],Swe=["id","scale"];function cI(){return cI=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return YG(YG({},a),{},{type:i})},[i,a]);return(0,bs.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(lV(s)):r.current!==s&&t(uV({prev:r.current,next:s})),r.current=s)},[s,t]),(0,bs.useLayoutEffect)(()=>()=>{r.current&&(t(cV(r.current)),r.current=null)},[t]),null}function Nwe(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,bs.useRef)(null),i=(0,bs.useRef)(null),s=Fe(fg),l=Or(),u=Lt(),c="yAxis",d=Fe(S=>o5(S,t)),p=Fe(S=>vH(S,t)),f=Fe(S=>z_(S,c,t,l)),m=Fe(S=>$M(S,t));if((0,bs.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Fp(o)||(0,bs.isValidElement)(o)||m==null)){var S=a.current;if(S){var w=S.getCalculatedWidth();Math.round(d.width)!==Math.round(w)&&u(dV({id:t,width:w}))}}},[f,d,u,o,t,n,m]),d==null||p==null||m==null)return null;var g=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,y=dI(e,wwe),x=m.id,v=m.scale,k=dI(m,Swe);return Wu.createElement(a0,cI({},y,k,{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:bt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:f,axisType:c,axisId:t}))}var Twe={allowDataOverflow:fo.allowDataOverflow,allowDecimals:fo.allowDecimals,allowDuplicatedCategory:fo.allowDuplicatedCategory,angle:fo.angle,axisLine:hs.axisLine,hide:!1,includeHidden:fo.includeHidden,interval:fo.interval,label:!1,minTickGap:fo.minTickGap,mirror:fo.mirror,orientation:fo.orientation,padding:fo.padding,reversed:fo.reversed,scale:fo.scale,tick:fo.tick,tickCount:fo.tickCount,tickLine:hs.tickLine,tickSize:hs.tickSize,type:fo.type,niceTicks:fo.niceTicks,width:fo.width,yAxisId:0},Owe=e=>{var t=ur(e,Twe);return Wu.createElement(Wu.Fragment,null,Wu.createElement(Ewe,{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}),Wu.createElement(Nwe,t))},Uu=Wu.memo(Owe,QC);Uu.displayName="YAxis";var wY=X(J()),SY=X(J());var ef=X(J()),bY=X(J());var uY=X(J()),cY=X(J());var Pwe=(e,t)=>t,u0=oe([Pwe,Wt,qk,co,m5,ii,ZH,Vr],rq);function Mwe(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function c0(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(Mwe(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 fI=ko("mouseClick"),mI=Su();mI.startListening({actionCreator:fI,effect:(e,t)=>{var r=e.payload,n=u0(t.getState(),c0(r));n?.activeIndex!=null&&t.dispatch(TH({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var RC=ko("mouseMove"),gI=Su(),fh=null,Xp=null,pI=null;gI.startListening({actionCreator:RC,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");fh!==null&&(cancelAnimationFrame(fh),fh=null),Xp!==null&&(typeof a!="number"||!s)&&(clearTimeout(Xp),Xp=null),pI=c0(r);var l=()=>{var u=t.getState(),c=Jc(u,u.tooltip.settings.shared);if(!pI){fh=null,Xp=null;return}if(c==="axis"){var d=u0(u,pI);d?.activeIndex!=null?t.dispatch(U_({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(W_())}fh=null,Xp=null};if(!s){l();return}a==="raf"?fh=requestAnimationFrame(l):typeof a=="number"&&Xp===null&&(Xp=setTimeout(l,a))}});function XG(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 ZG={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},JG=Tr({name:"rootProps",initialState:ZG,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:ZG.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}}}),QG=JG.reducer,RG=JG.actions.updateOptions;var Iwe=null,Dwe={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)},eY=Tr({name:"polarOptions",initialState:Iwe,reducers:Dwe}),tY=eY.actions.updatePolarOptions;var rY=eY.reducer;var hI=ko("keyDown"),yI=ko("focus"),vI=ko("blur"),d0=Su(),mh=null,Zp=null,e2=null;d0.startListening({actionCreator:hI,effect:(e,t)=>{e2=e.payload,mh!==null&&(cancelAnimationFrame(mh),mh=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Zp!==null&&(typeof o!="number"||!i)&&(clearTimeout(Zp),Zp=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=e2;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=Qc(c,Pu(l),Eu(l),ed(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,g=ii(l),b=Pu(l),h=Jc(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var y=Bx(l,h,"hover",String(c.index));t.dispatch(Lx({active:!c.active,activeIndex:c.index,activeCoordinate:y}));return}var x=xH(l),v=x==="left-to-right"?1:-1,k=d==="ArrowRight"?1:-1,S;if(m){var w=Eu(l),_=ed(l),A=k*v,C=Z=>({active:!1,index:String(Z),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(S=-1,A>0){for(var O=0;O=0;D--)if(Qc(C(D),b,w,_)!=null){S=D;break}if(S<0)return}else{S=f+k*v;var H=g?.length||b.length;if(H===0||S>=H||S<0)return}var j=Bx(l,h,"hover",String(S));t.dispatch(Lx({active:!0,activeIndex:S.toString(),activeCoordinate:j}))}finally{mh=null,Zp=null}};if(!i){s();return}o==="raf"?mh=requestAnimationFrame(s):typeof o=="number"&&Zp===null&&(s(),e2=null,Zp=setTimeout(()=>{e2?s():(Zp=null,mh=null)},o))}});d0.startListening({actionCreator:yI,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=Jc(r,r.tooltip.settings.shared),s=Bx(r,i,"hover",String(a));t.dispatch(Lx({active:!0,activeIndex:a,activeCoordinate:s}))}}}});d0.startListening({actionCreator:vI,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(Lx({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function t2(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 zi=ko("externalEvent"),bI=Su(),r2=new Map,p0=new Map,xI=new Map;bI.startListening({actionCreator:zi,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=t2(o);xI.set(a,{handler:n,reactEvent:i});var s=r2.get(a);s!==void 0&&(cancelAnimationFrame(s),r2.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=p0.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),p0.delete(a));var g=()=>{var y=xI.get(a);try{if(!y)return;var x=y.handler,v=y.reactEvent,k=t.getState(),S={activeCoordinate:v5(k),activeDataKey:Vg(k),activeIndex:fs(k),activeLabel:X_(k),activeTooltipIndex:fs(k),isTooltipActive:x5(k)};x&&x(S,v)}finally{r2.delete(a),p0.delete(a),xI.delete(a)}};if(!f){g();return}if(c==="raf"){var b=requestAnimationFrame(g);r2.set(a,b)}else if(typeof c=="number"){if(!p0.has(a)){g();var h=setTimeout(g,c);p0.set(a,h)}}else g()}}});var $we=oe([Ou],e=>e.tooltipItemPayloads),nY=oe([$we,(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 wI=ko("touchMove"),SI=Su(),Jp=null,fd=null,oY=null,f0=null;SI.startListening({actionCreator:wI,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){f0=t2(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Jp!==null&&(cancelAnimationFrame(Jp),Jp=null),fd!==null&&(typeof a!="number"||!s)&&(clearTimeout(fd),fd=null),oY=Array.from(r.touches).map(u=>c0({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(f0!=null){var u=t.getState(),c=Jc(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=oY)===null||d===void 0?void 0:d[0];if(p==null){Jp=null,fd=null;return}var f=u0(u,p);f?.activeIndex!=null&&t.dispatch(U_({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,g=f0.touches[0];if(document.elementFromPoint==null||g==null)return;var b=document.elementFromPoint(g.clientX,g.clientY);if(!b||!b.getAttribute)return;var h=b.getAttribute(nk),y=(m=b.getAttribute(ok))!==null&&m!==void 0?m:void 0,x=Rc(u).find(S=>S.id===y);if(h==null||x==null||y==null)return;var v=x.dataKey,k=nY(u,h,y);t.dispatch(F_({activeDataKey:v,activeIndex:h,activeCoordinate:k,activeGraphicalItemId:y}))}Jp=null,fd=null}};if(!s){l();return}a==="raf"?Jp=requestAnimationFrame(l):typeof a=="number"&&fd===null&&(l(),f0=null,fd=setTimeout(()=>{f0?l():(fd=null,Jp=null)},a))}}});var m0={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},aY=Tr({name:"eventSettings",initialState:m0,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=rr(t.payload.throttledEvents))}}}),iY=aY.actions.setEventSettings;var sY=aY.reducer;var jwe=PS({brush:TV,cartesianAxis:fV,chartData:Aq,errorBars:uG,eventSettings:sY,graphicalItems:QK,layout:w9,legend:G9,options:wq,polarAxis:bK,polarOptions:rY,referenceElements:MV,renderedTicks:XV,rootProps:QG,tooltip:OH,zIndex:dq}),lY=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return n9({reducer:jwe,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([mI.middleware,gI.middleware,d0.middleware,bI.middleware,SI.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(yP({type:"raf"}))},devTools:ls.devToolsEnabled&&{serialize:{replacer:XG},name:"recharts-".concat(r)}})};function n2(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=Or(),a=(0,cY.useRef)(null);if(o)return r;a.current==null&&(a.current=lY(t,n));var i=Lv;return uY.createElement(tF,{context:i,store:a.current},r)}var o2=X(J());function Lwe(e){var t=e.layout,r=e.margin,n=Lt(),o=Or();return(0,o2.useEffect)(()=>{o||(n(v9(t)),n(bP(r)))},[n,o,t,r]),null}var a2=(0,o2.memo)(Lwe,ni);var dY=X(J());function i2(e){var t=Lt();return(0,dY.useEffect)(()=>{t(RG(e))},[t,e]),null}var s2=X(J());var zwe=e=>{var t=Lt();return(0,s2.useEffect)(()=>{t(iY(e))},[t,e]),null},l2=(0,s2.memo)(zwe,ni);var Hu=X(J()),vY=X(J());var Rp=X(J()),_I=X(J());var Qp=X(J()),u2=X(J());function pY(e){var t=e.zIndex,r=e.isPanorama,n=(0,u2.useRef)(null),o=Lt();return(0,u2.useLayoutEffect)(()=>(n.current&&o(uq({zIndex:t,element:n.current,isPanorama:r})),()=>{o(cq({zIndex:t,isPanorama:r}))}),[o,t,r]),Qp.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function kI(e){var t=e.children,r=e.isPanorama,n=Fe(oq);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Qp.createElement(Qp.Fragment,null,o.map(i=>Qp.createElement(pY,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Qp.createElement(pY,{key:i,zIndex:i,isPanorama:r})))}var Bwe=["children"];function Fwe(e,t){if(e==null)return{};var r,n,o=Wwe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=hg(),n=yg(),o=gk();if(!ei(r)||!ei(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),Rp.createElement(Tv,c2({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:Uwe,ref:t}),a)}),qwe=e=>{var t=e.children,r=Fe(cp);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Rp.createElement(Tv,{width:n,height:o,x:i,y:a},t)},CI=(0,_I.forwardRef)((e,t)=>{var r=e.children,n=Fwe(e,Bwe),o=Or();return o?Rp.createElement(qwe,null,Rp.createElement(kI,{isPanorama:!0},r)):Rp.createElement(Hwe,c2({ref:t},n),Rp.createElement(kI,{isPanorama:!1},r))});var zn=X(J()),vr=X(J());var d2=X(J());function Kwe(e,t){return Xwe(e)||Ywe(e,t)||Gwe(e,t)||Vwe()}function Vwe(){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 Gwe(e,t){if(e){if(typeof e=="string")return fY(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)?fY(e,t):void 0}}function fY(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(b9(s))}},[n,e,a]),o}function gY(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 Zwe(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(Nq(),null);function f2(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var aSe=(0,vr.forwardRef)((e,t)=>{var r,n,o=(0,vr.useRef)(null),a=(0,vr.useState)({containerWidth:f2((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:f2((n=e.style)===null||n===void 0?void 0:n.height)}),i=p2(a,2),s=i[0],l=i[1],u=(0,vr.useCallback)((d,p)=>{l(f=>{var m=Math.round(d),g=Math.round(p);return f.containerWidth===m&&f.containerHeight===g?f:{containerWidth:m,containerHeight:g}})},[]),c=(0,vr.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 g=h=>{var y=h[0];if(y!=null){var x=y.contentRect,v=x.width,k=x.height;u(v,k)}},b=new ResizeObserver(g);b.observe(d),o.current=b}},[t,u]);return(0,vr.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),zn.createElement(zn.Fragment,null,zn.createElement(fp,{width:s.containerWidth,height:s.containerHeight}),zn.createElement("div",md({ref:c},e)))}),iSe=(0,vr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,vr.useState)({containerWidth:f2(r),containerHeight:f2(n)}),a=p2(o,2),i=a[0],s=a[1],l=(0,vr.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,vr.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 zn.createElement(zn.Fragment,null,zn.createElement(fp,{width:i.containerWidth,height:i.containerHeight}),zn.createElement("div",md({ref:u},e)))}),sSe=(0,vr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return zn.createElement(zn.Fragment,null,zn.createElement(fp,{width:r,height:n}),zn.createElement("div",md({ref:t},e)))}),lSe=(0,vr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?zn.createElement(iSe,md({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?zn.createElement(sSe,md({},e,{width:r,height:n,ref:t})):zn.createElement(zn.Fragment,null,zn.createElement(fp,{width:r,height:n}),zn.createElement("div",md({ref:t},e)))});function uSe(e){return e?aSe:lSe}var yY=(0,vr.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,g=e.onTouchStart,b=e.style,h=e.width,y=e.responsive,x=e.dispatchTouchEvents,v=x===void 0?!0:x,k=(0,vr.useRef)(null),S=Lt(),w=(0,vr.useState)(null),_=p2(w,2),A=_[0],C=_[1],O=(0,vr.useState)(null),D=p2(O,2),H=D[0],j=D[1],Z=mY(),N=Gv(),P=N?.width>0?N.width:h,M=N?.height>0?N.height:o,I=(0,vr.useCallback)(z=>{Z(z),typeof t=="function"&&t(z),C(z),j(z),z!=null&&(k.current=z)},[Z,t,C,j]),$=(0,vr.useCallback)(z=>{S(fI(z)),S(zi({handler:a,reactEvent:z}))},[S,a]),T=(0,vr.useCallback)(z=>{S(RC(z)),S(zi({handler:u,reactEvent:z}))},[S,u]),q=(0,vr.useCallback)(z=>{S(W_()),S(zi({handler:c,reactEvent:z}))},[S,c]),G=(0,vr.useCallback)(z=>{S(RC(z)),S(zi({handler:d,reactEvent:z}))},[S,d]),L=(0,vr.useCallback)(()=>{S(yI())},[S]),Y=(0,vr.useCallback)(()=>{S(vI())},[S]),K=(0,vr.useCallback)(z=>{S(hI(z.key))},[S]),pe=(0,vr.useCallback)(z=>{S(zi({handler:i,reactEvent:z}))},[S,i]),De=(0,vr.useCallback)(z=>{S(zi({handler:s,reactEvent:z}))},[S,s]),se=(0,vr.useCallback)(z=>{S(zi({handler:l,reactEvent:z}))},[S,l]),be=(0,vr.useCallback)(z=>{S(zi({handler:p,reactEvent:z}))},[S,p]),ue=(0,vr.useCallback)(z=>{S(zi({handler:g,reactEvent:z}))},[S,g]),R=(0,vr.useCallback)(z=>{v&&S(wI(z)),S(zi({handler:m,reactEvent:z}))},[S,v,m]),we=(0,vr.useCallback)(z=>{S(zi({handler:f,reactEvent:z}))},[S,f]),Ce=uSe(y);return zn.createElement(E5.Provider,{value:A},zn.createElement(mO.Provider,{value:H},zn.createElement(Ce,{width:P??b?.width,height:M??b?.height,className:bt("recharts-wrapper",n),style:Zwe({position:"relative",cursor:"default",width:P,height:M},b),onClick:$,onContextMenu:pe,onDoubleClick:De,onFocus:L,onBlur:Y,onKeyDown:K,onMouseDown:se,onMouseEnter:T,onMouseLeave:q,onMouseMove:G,onMouseUp:be,onTouchEnd:we,onTouchMove:R,onTouchStart:ue,ref:I},zn.createElement(oSe,null),r)))});var cSe=["width","height","responsive","children","className","style","compact","title","desc"];function dSe(e,t){if(e==null)return{};var r,n,o=pSe(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=dSe(e,cSe),p=Sn(d);return l?Hu.createElement(Hu.Fragment,null,Hu.createElement(fp,{width:r,height:n}),Hu.createElement(CI,{otherAttributes:p,title:u,desc:c},a)):Hu.createElement(yY,{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},Hu.createElement(CI,{otherAttributes:p,title:u,desc:c,ref:t},Hu.createElement(DV,null,a)))});function AI(){return AI=Object.assign?Object.assign.bind():function(e){for(var t=1;twY.createElement(gh,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:xSe,tooltipPayloadSearcher:td,categoricalChartProps:e,ref:t}));var kY=X(J()),_Y=X(J());var bSe=["axis","item"],NI=(0,_Y.forwardRef)((e,t)=>kY.createElement(gh,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:bSe,tooltipPayloadSearcher:td,categoricalChartProps:e,ref:t}));var MY=X(J()),IY=X(J());var NY=X(J()),gd=X(J());var CY=X(J());function AY(e){var t=Lt();return(0,CY.useEffect)(()=>{t(tY(e))},[t,e]),null}var wSe=["layout"];function TI(){return TI=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=ur(e,ISe);return MY.createElement(TY,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:MSe,tooltipPayloadSearcher:td,categoricalChartProps:r,ref:t})});var DY=X(J()),$Y=X(J());var DSe=["axis"],hd=(0,$Y.forwardRef)((e,t)=>DY.createElement(gh,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:DSe,tooltipPayloadSearcher:td,categoricalChartProps:e,ref:t}));var ws=X(J()),hh=[{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}],jY="30m",LY="activeagents.timeWindow",zY=(0,ws.createContext)(null),MI=e=>hh.find(t=>t.id===e);function BY({children:e}){let[t,r]=(0,ws.useState)(()=>{try{let a=localStorage.getItem(LY);if(a&&MI(a))return a}catch{}return jY}),n=(0,ws.useCallback)(a=>{if(MI(a)){r(a);try{localStorage.setItem(LY,a)}catch{}}},[]),o=(0,ws.useMemo)(()=>{let a=hh.findIndex(s=>s.id===t),i=hh[a]||MI(jY);return{timeWindow:i,windowIndex:a,windows:hh,setWindow:n,zoomTo:s=>{let l=hh[Math.min(Math.max(s,0),hh.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return ws.default.createElement(zY.Provider,{value:o},e)}function Nl(){let e=(0,ws.useContext)(zY);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var yh=X(J());function Vs({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=Nl(),{darkMode:i}=ut(),s=ts(i),l={color:s.textSecondary};return yh.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},yh.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"),yh.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=>yh.default.createElement("option",{key:u.id,value:u.id},u.label))),yh.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 qn=X(J());var an=X(J());var g0=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},yd=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},g2=e=>{let t=e?.spans||[],r=null;for(let m of t){let g=m.tokens||{},b=(g.input||0)+(g.output||0);b>0&&(!r||b>r.total)&&(r={input:g.input||0,output:g.output||0,thinking:g.thinking||0,cached:g.cached||0,total:b})}if(!r)return null;let n=m=>{for(let g of t){let b=(g.attributes||{})[m];if(b)return b}return null},o=(m,...g)=>{let b=Number(n(m));if(Number.isFinite(b)&&b>0)return b;for(let h of g){let y=n(h);if(y)return yd(y)}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 g=m.attributes||{},b=g["tool.output.result"]||g["tool.result"],h=g["tool.input.args"]||g["tool.arguments"];b&&(u+=yd(b)),h&&(u+=yd(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,g)=>m+d[g],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 g=r.input-c.reduce((b,h)=>b+f[h],0);if(g!==0){let b=c.reduce((h,y)=>f[y]>f[h]?y:h);f[b]=Math.max(f[b]+g,0)}}else f={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:g0(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 $Se={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},vh=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 vd({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,an.useState)(i),p=r.filter(w=>w.tokens>0),f=e??p.reduce((w,_)=>w+_.tokens,0),m=t>0?f/t:0,g=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",y=u?"rgba(255,255,255,0.75)":"#4b5563",x=u?"rgba(255,255,255,0.1)":"#f3f4f6",v=`${vh(f)} / ${vh(t)} (${Math.round(m*100)}%)`,k=w=>w.key==="messages"&&g?g:w.color||$Se[w.key]||"#2563eb",S=w=>an.default.createElement("div",{style:{display:"flex",height:w,borderRadius:"999px",overflow:"hidden",background:x,flex:1}},p.map(_=>an.default.createElement("div",{key:_.key,title:`${_.label} \xB7 ${vh(_.tokens)}`,style:{width:`${Math.min(_.tokens/t*100,100)}%`,background:k(_)}})));return a?an.default.createElement("span",{title:`${s}: ${v}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},S("6px"),an.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:g||b,whiteSpace:"nowrap"}},Math.round(m*100),"%")):an.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${g?g+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},an.default.createElement("div",{onClick:w=>{w.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&an.default.createElement("span",{style:{color:b,fontWeight:400}}," \xB7 estimated")),an.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:g||y}},v),an.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"}},">"))),an.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},S("9px")),m>=.9&&an.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&&an.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,0)}].map(w=>an.default.createElement("div",{key:w.key,style:{display:"flex",alignItems:"center",gap:"8px"}},an.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:w.key==="__free"?x:k(w),border:w.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),an.default.createElement("span",{style:{fontSize:"13px",color:y,flex:1}},w.label),an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},vh(w.tokens)),an.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:b,width:"46px",textAlign:"right"}},t>0?`${(w.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&an.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&&an.default.createElement("span",null,an.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",vh(n)),o>0&&an.default.createElement("span",null,an.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",vh(o)))))}var wt=X(J());var We=X(J());var ro=X(J());var ke=X(J());var FY=["ui","json-ui","genui"],tf="render_ui",Gs=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),II=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function rf(e){let t=typeof e=="string"?II(e):e;if(Array.isArray(t))return t.every(Gs)?t:null;if(Gs(t)){if(Array.isArray(t.blocks))return t.blocks.every(Gs)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(Gs)?t.ui:null}return null}function DI(e,t){let r=String(e||"").trim().toLowerCase();if(FY.includes(r))return rf(t);if(r==="json"){let n=II(t);return Gs(n)&&Array.isArray(n.ui)?rf(n):null}return null}function $I(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=II(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>Gs(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=rf(o);return a?{blocks:a}:{object:o}}var jSe=e=>Gs(e)?e.function?.name||e.name:void 0,LSe=e=>Gs(e)?e.function?.arguments??e.arguments??e.input:void 0;function xh(e,{callId:t}={}){if(!Gs(e))return null;if(e.tool_name===tf&&e.tool_arguments!=null){let o=rf(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>Gs(a)&&a.id!=null);r.forEach(a=>{if(jSe(a)!==tf||t!=null&&o&&a.id!==t)return;let i=rf(LSe(a));i&&n.push(...i)})}else if(Gs(r)&&e.tool_name===tf){let o=rf(r);o&&n.push(...o)}return n.length>0?n:null}function h2(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function y2(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 WY(e){try{return new URL(String(e).trim()).host}catch{return""}}var GY=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],zSe=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],h0=GY.length,UY=220,bh=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),ir=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),YY=e=>{if(typeof e!="number"||!Number.isFinite(e))return ir(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()},BI=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,HY={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"]}},BSe={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},jI=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),FI=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"}),wh=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function qu({block:e,reason:t,colors:r,darkMode:n}){return ke.default.createElement("div",{className:"text-xs",style:{color:r.textMuted}},ke.default.createElement("div",{className:"mb-1"},"Unsupported block",e&&e.type?` \u201C${ir(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),ke.default.createElement("pre",{style:{...FI(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function FSe({block:e,colors:t,darkMode:r,onAction:n}){let o=h2(e.image_url)&&y2(e.image_url)?e.image_url.trim():null;return ke.default.createElement("div",{className:"overflow-hidden",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg}},o&&ke.default.createElement("img",{src:o,alt:ir(e.title),style:{width:"100%",maxHeight:"220px",objectFit:"cover",display:"block"}}),ke.default.createElement("div",{className:"p-3 space-y-1.5"},e.title!=null&&ke.default.createElement("div",{style:wh(t)},ir(e.title)),e.body!=null&&ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Ys,{text:ir(e.body),darkMode:r,onUiAction:n})),e.footer!=null&&ke.default.createElement("div",{className:"text-xs pt-1",style:{color:t.textMuted,borderTop:`1px solid ${t.cardBorder}`}},ir(e.footer))))}function XY({block:e,colors:t,darkMode:r}){let n=e.delta!=null?ir(e.delta):null,o=e.tone||(n&&n.trim().startsWith("-")?"negative":n?"positive":"neutral"),a=BI(BSe,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?YY(e.value):ir(e.value);return ke.default.createElement("div",{style:{background:t.innerBg,border:`1px solid ${t.cardBorder}`,borderRadius:"10px",padding:"10px 12px"}},ke.default.createElement("div",{className:"text-xs",style:{color:t.textMuted}},ir(e.label)),ke.default.createElement("div",{className:"text-lg font-semibold leading-tight mt-0.5",style:{color:t.textPrimary}},s),n&&ke.default.createElement("div",{className:"text-xs mt-0.5 font-medium",style:{color:i}},n))}function WSe({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(bh):[];return n.length===0?ke.default.createElement(qu,{block:e,reason:"stats needs an items array",colors:t,darkMode:r}):ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:"8px"}},n.map((o,a)=>ke.default.createElement(XY,{key:a,block:o,colors:t,darkMode:r})))}var zI=(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"}),USe=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:It.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function ZY({columns:e,rows:t,colors:r,renderCell:n}){return ke.default.createElement("div",{style:{overflowX:"auto"}},ke.default.createElement("table",{className:"text-sm",style:{width:"100%",borderCollapse:"collapse"}},ke.default.createElement("thead",null,ke.default.createElement("tr",null,e.map((o,a)=>ke.default.createElement("th",{key:a,style:USe(r)},ir(o))))),ke.default.createElement("tbody",null,t.map((o,a)=>ke.default.createElement("tr",{key:a},e.map((i,s)=>{let l=o[s];return ke.default.createElement("td",{key:s,style:zI(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():ir(l))}))))))}function HSe({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 ke.default.createElement(qu,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:bh(i)?n.map(s=>i[s]):[i]);return ke.default.createElement("div",null,e.title!=null&&ke.default.createElement("div",{className:"mb-1.5",style:wh(t)},ir(e.title)),ke.default.createElement(ZY,{columns:n,rows:a,colors:t}))}var qSe=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},KSe=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function VSe({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(bh):[];if(o.length===0)return ke.default.createElement(qu,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:qSe(o),i=Array.isArray(e.series)?e.series.filter(b=>typeof b=="string"):[],s=(i.length>0?i:KSe(o,a)).slice(0,h0);if(!a||s.length===0)return ke.default.createElement(qu,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?zSe:GY,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=ke.default.createElement(rd,{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():ir(b)}),p=s.length>1||n==="pie"?ke.default.createElement(pk,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=ke.default.createElement(ke.default.Fragment,null,ke.default.createElement(ju,{stroke:t.cardBorder,vertical:!1}),ke.default.createElement(Fu,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),ke.default.createElement(Uu,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:YY,width:44})),m={top:8,right:12,bottom:0,left:0},g;if(n==="line")g=ke.default.createElement(EI,{data:o,margin:m},f,d,p,s.map((b,h)=>ke.default.createElement(KC,{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")g=ke.default.createElement(hd,{data:o,margin:m},f,d,p,s.map((b,h)=>ke.default.createElement(zu,{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((v,k)=>(Number(k[b])||0)-(Number(v[b])||0)),y=h.slice(0,h0),x=h.slice(h0);x.length>0&&(y[h0-1]={[a]:"Other",[b]:x.reduce((v,k)=>v+(Number(k[b])||0),Number(y[h0-1][b])||0)}),g=ke.default.createElement(PI,{margin:m},d,p,ke.default.createElement(PC,{data:y,dataKey:b,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},y.map((v,k)=>ke.default.createElement(Mu,{key:k,fill:l[k]}))))}else g=ke.default.createElement(NI,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((b,h)=>ke.default.createElement(JC,{key:b,dataKey:b,fill:l[h],radius:[4,4,0,0],maxBarSize:24,isAnimationActive:!1})));return ke.default.createElement("div",null,e.title!=null&&ke.default.createElement("div",{className:"mb-1",style:wh(t)},ir(e.title)),ke.default.createElement("div",{style:{width:"100%",height:UY,minWidth:0}},ke.default.createElement(Bc,{width:"100%",height:UY},g)))}function GSe({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return ke.default.createElement(qu,{block:e,reason:"list needs an items array",colors:t,darkMode:r});let a=e.ordered?"ol":"ul";return ke.default.createElement("div",null,e.title!=null&&ke.default.createElement("div",{className:"mb-1",style:wh(t)},ir(e.title)),ke.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)=>ke.default.createElement("li",{key:s},typeof i=="string"?ke.default.createElement(Ys,{text:i,darkMode:r,onUiAction:n}):ir(i)))))}function YSe({block:e,colors:t}){let r=Number(e.value),n=Number.isFinite(r)?Math.max(0,Math.min(100,r)):0;return ke.default.createElement("div",null,ke.default.createElement("div",{className:"flex items-center justify-between text-xs mb-1"},ke.default.createElement("span",{style:{color:t.textCell}},ir(e.label)),ke.default.createElement("span",{className:"font-mono",style:{color:t.textMuted}},Math.round(n),"%")),ke.default.createElement("div",{style:{height:"8px",borderRadius:"999px",background:t.trackBg,overflow:"hidden"}},ke.default.createElement("div",{style:{width:`${n}%`,height:"100%",background:aa,borderRadius:"999px",transition:"width 0.3s ease"}})))}var XSe=["text","textarea","number","select","checkbox"],LI=e=>ir(e.name||e.label),qY=e=>ir(e.label||e.name),KY=e=>XSe.includes(e.type)?e.type:"text";function ZSe({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>bh(p)&&(p.name||p.label)),[a,i]=(0,ke.useState)(()=>Object.fromEntries(o.map(p=>[LI(p),KY(p)==="checkbox"?!1:""]))),[s,l]=(0,ke.useState)(!1);if(o.length===0)return ke.default.createElement(qu,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?ir(e.submit):"Submit",c=(p,f)=>i(m=>({...m,[p]:f}));return ke.default.createElement("form",{onSubmit:p=>{p.preventDefault();let f=o.map(m=>{let g=a[LI(m)];return`${qY(m)}: ${typeof g=="boolean"?g?"yes":"no":ir(g)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?ir(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&&ke.default.createElement("div",{style:wh(t)},ir(e.title)),o.map(p=>{let f=LI(p),m=KY(p),g=qY(p),b=`genui-field-${f.replace(/\W+/g,"-")}`;return m==="checkbox"?ke.default.createElement("label",{key:f,className:"flex items-center gap-2 text-sm",style:{color:t.textCell}},ke.default.createElement("input",{type:"checkbox",checked:!!a[f],onChange:h=>c(f,h.target.checked),style:{accentColor:aa}}),g):ke.default.createElement("div",{key:f},ke.default.createElement("label",{htmlFor:b,className:"block text-xs mb-1",style:{color:t.textSecondary}},g,p.required?" *":""),m==="textarea"?ke.default.createElement("textarea",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),placeholder:p.placeholder!=null?ir(p.placeholder):void 0,required:!!p.required,rows:3,className:"aa-field",style:{...jI(t),resize:"vertical"}}):m==="select"?ke.default.createElement("select",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),required:!!p.required,className:"aa-field",style:jI(t)},ke.default.createElement("option",{value:""},p.placeholder!=null?ir(p.placeholder):"Select\u2026"),(Array.isArray(p.options)?p.options:[]).map((h,y)=>ke.default.createElement("option",{key:y,value:ir(h)},ir(h)))):ke.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?ir(p.placeholder):void 0,required:!!p.required,className:"aa-field",style:jI(t)}))}),ke.default.createElement("div",{className:"flex items-center gap-3 pt-1"},ke.default.createElement("button",{type:"submit","data-testid":"genui-form-submit",style:{padding:"6px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,background:aa,color:"#ffffff",border:"1px solid transparent",cursor:"pointer"}},u),s&&ke.default.createElement("span",{className:"text-xs",style:{color:t.textMuted}},"Sent to the agent")))}function JSe({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.options)?e.options:null,[a,i]=(0,ke.useState)(null);return!o||o.length===0?ke.default.createElement(qu,{block:e,reason:"choices needs options",colors:t,darkMode:r}):ke.default.createElement("div",null,e.prompt!=null&&ke.default.createElement("div",{className:"text-sm mb-1.5",style:{color:t.textCell}},ir(e.prompt)),ke.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=ir(s),c=a===l;return ke.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?aa:t.inputBorder}`,background:c?aa:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function QSe({url:e,alt:t,colors:r,darkMode:n}){let[o,a]=(0,ke.useState)(!1);if(o)return ke.default.createElement("img",{src:e,alt:t,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}});let i=WY(e);return ke.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 RSe({block:e,colors:t,darkMode:r}){if(!h2(e.url))return ke.default.createElement(qu,{block:e,reason:"image URL must be http(s) or data:",colors:t,darkMode:r});let n=e.url.trim(),o=e.alt!=null?ir(e.alt):"";return ke.default.createElement("figure",{style:{margin:0}},y2(n)?ke.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):ke.default.createElement(QSe,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&ke.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},ir(e.caption)))}function eke({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(BI(HY,e.tone)||HY.info)[r?"dark":"light"];return ke.default.createElement("div",{style:{background:o,borderLeft:`3px solid ${a}`,borderRadius:"8px",padding:"10px 12px"}},e.title!=null&&ke.default.createElement("div",{className:"text-sm font-semibold mb-0.5",style:{color:a}},ir(e.title)),ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Ys,{text:ir(e.body),darkMode:r,onUiAction:n})))}function tke({block:e,colors:t,darkMode:r}){return ke.default.createElement("div",null,e.language!=null&&ke.default.createElement("div",{className:"text-xs font-mono mb-1",style:{color:t.textMuted}},ir(e.language)),ke.default.createElement("pre",{style:FI(r)},ir(e.code)))}function VY({block:e,colors:t,darkMode:r,onAction:n}){let o=e.text??e.body??e.content??e.markdown;return ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Ys,{text:ir(o),darkMode:r,onUiAction:n}))}var rke=3;function v2({value:e,colors:t,darkMode:r,depth:n}){if(e==null||typeof e!="object")return typeof e=="boolean"?ke.default.createElement("span",{className:"font-mono"},String(e)):typeof e=="number"?ke.default.createElement("span",{style:{fontVariantNumeric:"tabular-nums"}},e.toLocaleString()):ke.default.createElement("span",null,ir(e));if(n>=rke)return ke.default.createElement("pre",{style:{...FI(r),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2));if(Array.isArray(e)){if(e.length===0)return ke.default.createElement("span",{style:{color:t.textMuted}},"\u2014");if(e.every(bh)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return ke.default.createElement(ZY,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>ke.default.createElement(v2,{value:i,colors:t,darkMode:r,depth:n+1})})}return e.every(a=>a==null||typeof a!="object")?ke.default.createElement("span",null,e.map(ir).join(", ")):ke.default.createElement("ul",{className:"list-disc pl-5 space-y-0.5"},e.map((a,i)=>ke.default.createElement("li",{key:i},ke.default.createElement(v2,{value:a,colors:t,darkMode:r,depth:n+1}))))}let o=Object.entries(e);return o.length===0?ke.default.createElement("span",{style:{color:t.textMuted}},"{}"):ke.default.createElement("table",{className:"text-sm",style:{borderCollapse:"collapse",width:n===0?"100%":"auto"}},ke.default.createElement("tbody",null,o.map(([a,i])=>ke.default.createElement("tr",{key:a},ke.default.createElement("th",{scope:"row",className:"font-mono text-xs",style:{...zI(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),ke.default.createElement("td",{style:zI(t,!1)},ke.default.createElement(v2,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function nke({block:e,colors:t,darkMode:r}){let n="value"in e?e.value:e.data;return ke.default.createElement("div",{style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",overflow:"hidden"}},e.title!=null&&ke.default.createElement("div",{className:"px-3 pt-2",style:wh(t)},ir(e.title)),ke.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},ke.default.createElement(v2,{value:n,colors:t,darkMode:r,depth:0})))}var oke={card:FSe,stat:XY,stats:WSe,table:HSe,chart:VSe,list:GSe,progress:YSe,form:ZSe,choices:JSe,image:RSe,callout:eke,code:tke,object:nke,text:VY,markdown:VY};function Tl({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(bh):[];if(n.length===0)return null;let o=ts(r);return ke.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=BI(oke,s);return ke.default.createElement("div",{key:i,"data-testid":"genui-block","data-block-type":s},l?ke.default.createElement(l,{block:a,colors:o,darkMode:r,onAction:t}):ke.default.createElement(qu,{block:a,colors:o,darkMode:r}))}))}var ake=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,y0=(e,t)=>e.split(ake).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return ro.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return ro.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return ro.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?ro.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),JY=e=>/^\s*\|.*\|\s*$/.test(e),ike=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),QY=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function Ys({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` +`),a=0,i=0;for(;aro.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},y0(p,`th${d}-${f}`))))),ro.default.createElement("tbody",null,c.map((p,f)=>ro.default.createElement("tr",{key:f},u.map((m,g)=>ro.default.createElement("td",{key:g,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},y0(p[g]??"",`td${d}-${f}-${g}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aro.default.createElement("li",{key:d},y0(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(ro.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(ro.default.createElement("div",{key:i++},y0(s,`p${i}`))),a+=1}return ro.default.createElement("div",{className:"break-words"},n)}var li=X(J()),ske=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"},lke=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function WI({tool:e,darkMode:t}){let r=lke(e);return li.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&li.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),li.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"}},li.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),li.default.createElement("span",null,"source: ",ske(e))))}function UI({tools:e,darkMode:t}){let[r,n]=(0,li.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 li.default.createElement("div",{style:{marginTop:"8px"}},li.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},li.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>li.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&&li.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"}`}},li.default.createElement(WI,{tool:a,darkMode:t})))}var uke=["application/json","application/xml","application/x-yaml","application/csv"],cke=/\.(csv|md|txt|json|ya?ml)$/i;function RY(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/")||uke.includes(t)||cke.test(r)?"text":"file"}function eX(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 tX(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 rX=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,v0=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}},dke=["text","output","body","content"],nX=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},pke=e=>{let t=nX(e.tool_result)??nX(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=dke.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}},fke=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||v0(e.content)),iX=280,mke=["tool","system","developer"],x0=(e,t=iX)=>e.replace(/\s+/g," ").trim().slice(0,t),HI=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)}},sX=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:HI(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:HI(t)}]:[]},lX=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),gke=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||lX(o.content))return;let i=sX(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))},oX=e=>mke.includes(e.role)&&typeof e.content=="string"&&x0(e.content).length>=iX,hke=({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 We.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`,className:"hidden sm:inline-block",style:{position:"relative",width:"96px",height:"5px",borderRadius:"999px",background:t?"rgba(255,255,255,0.08)":"#f3f4f6",flexShrink:0,marginTop:"8px"}},We.default.createElement("span",{style:{position:"absolute",top:0,bottom:0,left:`${n}%`,width:`${Math.min(o,100-n)}%`,borderRadius:"999px",background:a}}))},x2=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}),Hn=(e,t)=>{let{tone:r,label:n}=S6(e),o=Wn[r]||Wn.muted;return{background:o.soft,color:o.text,label:n,tone:r}},aX={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function b2({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=ts(t);return We.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/"))&&tX(s.url),d=eX(s.byte_size);return We.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?We.default.createElement("img",{src:s.url,alt:s.filename||"",style:{width:"36px",height:"36px",objectFit:"cover",borderRadius:"4px",flexShrink:0}}):We.default.createElement("span",{className:"font-mono",style:{color:i.textMuted,flexShrink:0}},aX[s.kind]||aX.file),We.default.createElement("span",{className:"min-w-0"},We.default.createElement("span",{className:"block truncate"},s.filename||"attachment"),d&&We.default.createElement("span",{className:"block font-mono",style:{color:i.textMuted}},d)),n&&We.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 uX=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},yke=(e,t)=>{let r=xh(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?uX(o).has(e.tool_call_id):xh(o)));return n?xh(n,{callId:e.tool_call_id}):null},vke=(e,t)=>{let r=uX(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===tf&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function Ss({messages:e,darkMode:t,tools:r,onUiAction:n,onEditMessage:o,onDeleteMessage:a,testIdPrefix:i}){let[s,l]=(0,We.useState)({}),[u,c]=(0,We.useState)(null),[d,p]=(0,We.useState)(""),[f,m]=(0,We.useState)(!1),[g,b]=(0,We.useState)(null),h=A=>l(C=>({...C,[A]:!C[A]})),y={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},x=A=>i?`${i}-${A}`:void 0,v=A=>A.stopPropagation(),k=A=>{c(A.id),p(A.content||""),b(null)},S=()=>{c(null),b(null)},w=async A=>{if(!f){m(!0),b(null);try{await o(A,d),c(null)}catch(C){b(C.message||"Could not save the message")}finally{m(!1)}}},_=gke(e);return We.default.createElement("div",{className:"space-y-3"},_.map(A=>{let C=Hn(A.role,t),O=!!s[A.id],D=u===A.id,H=!!((o||a)&&["user","assistant"].includes(A.role)),j=A.role==="tool"&&A.tool_name===tf?yke(A,_):null,Z=A.role==="assistant"&&!D?$I(A.content):null,N=A.role==="assistant"&&!vke(A,_)?xh(A):null,P=oX(A)&&!O,M=fke(A)||oX(A),I=v0(A.tool_arguments),$=v0(A.tool_result)||v0(A.content),T=A.tool_calls&&(!Array.isArray(A.tool_calls)||A.tool_calls.length>0)?v0(A.tool_calls):null,q=A.role==="tool"?pke(A):null,G=A.tool_name?(r||[]).find(ue=>ue&&ue.name===A.tool_name):null,L=A.role==="tool"?HI(A.tool_arguments):null,Y=A.role==="tool"&&!!L,K=Hn("assistant",t),pe=Hn("tool",t),De=A.role==="tool"&&!A.tool_arguments&&_.some(ue=>ue&&ue.role==="assistant"&&(A.tool_call_id&&ue.tool_call_id===A.tool_call_id||Array.isArray(ue.tool_calls)&&ue.tool_calls.some(R=>R.id&&R.id===A.tool_call_id))),se=A.role==="assistant"&&!lX(A.content)?sX(A):[],be=x2(t);return We.default.createElement("div",{key:A.id,className:"group","data-testid":i,"data-message-id":i?A.id:void 0,"data-role":i?A.role:void 0},We.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${M?"cursor-pointer":""}`,onClick:M?()=>h(A.id):void 0,style:O?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},We.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},(Y?[K,pe]:[C]).map(ue=>We.default.createElement(ve,{key:ue.label,tone:ue.tone,style:{justifyContent:"center"}},ue.label))),We.default.createElement("div",{className:"min-w-0 flex-1"},We.default.createElement("div",{className:"text-sm break-words",style:{color:y.textPrimary}},D?We.default.createElement("div",{className:"space-y-2",onClick:v},We.default.createElement("textarea",{"data-testid":x("editor"),value:d,onChange:ue=>p(ue.target.value),onKeyDown:ue=>{ue.key==="Escape"&&S(),ue.key==="Enter"&&(ue.metaKey||ue.ctrlKey)&&w(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:y.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"}}),We.default.createElement("div",{className:"flex items-center gap-2 text-xs"},We.default.createElement("button",{type:"button","data-testid":x("save"),onClick:()=>w(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"),We.default.createElement("button",{type:"button","data-testid":x("cancel"),onClick:S,disabled:f,style:{padding:"4px 10px",borderRadius:"6px",background:"transparent",color:y.textSecondary,border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,cursor:"pointer"}},"Cancel"),g&&We.default.createElement("span",{style:{color:"#dc2626"}},g))):j?We.default.createElement("div",null,We.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:pe.color}},"\u2699 ",A.tool_name," \xB7 ",j.length," block",j.length===1?"":"s"),We.default.createElement(Tl,{blocks:j,onAction:n,darkMode:t})):A.role==="tool"?We.default.createElement("span",{style:{display:"grid",gap:"2px"}},L&&!De&&We.default.createElement("span",{className:"font-mono text-xs break-words"},A.tool_name&&We.default.createElement("span",{style:{color:pe.color}},"\u2699 ",A.tool_name," "),We.default.createElement("span",{style:{color:Y?K.color:y.textMuted}},"in:")," ",x0(L,180),L.length>180?"\u2026":""),q?We.default.createElement("span",null,A.tool_name&&!(L&&!De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:pe.color}},"\u2699 ",A.tool_name),(L||De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:Y?pe.color:y.textMuted}},"out:"),q.meta&&We.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:y.textMuted}},q.meta),"\u201C",q.body.replace(/\s+/g," ").trim().slice(0,180),q.body.length>180?"\u2026":"","\u201D"):A.content?We.default.createElement("span",null,A.tool_name&&!(L&&!De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:pe.color}},"\u2699 ",A.tool_name),(L||De)&&We.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:Y?pe.color:y.textMuted}},"out:"),"\u201C",x0(A.content,180),A.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):We.default.createElement("span",{className:"whitespace-pre-wrap"},A.tool_name?`\u2192 ${A.tool_name}(...)`:"\u2014")):P?We.default.createElement("span",{style:{color:y.textSecondary}},x0(A.content),"\u2026"):se.length>0?We.default.createElement("span",{style:{display:"grid",gap:"2px"}},se.map((ue,R)=>We.default.createElement("span",{key:R,className:"font-mono text-xs break-words"},ue.name&&We.default.createElement("span",{style:{color:y.textMuted}},ue.name," "),We.default.createElement("span",{style:{color:y.textMuted}},"in:")," ",ue.args?We.default.createElement(We.default.Fragment,null,x0(ue.args,180),ue.args.length>180?"\u2026":""):"\u2014"))):Z&&Z.blocks?We.default.createElement(Tl,{blocks:Z.blocks,onAction:n,darkMode:t}):Z&&Z.object?We.default.createElement(Tl,{blocks:[{type:"object",value:Z.object}],darkMode:t}):We.default.createElement(Ys,{text:A.content||"\u2014",darkMode:t,onUiAction:n}),N&&!D&&We.default.createElement("div",{className:"mt-2"},We.default.createElement(Tl,{blocks:N,onAction:n,darkMode:t})),A.role==="user"&&We.default.createElement(b2,{attachments:A.attachments,darkMode:t,testId:x("attachment")})),We.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:y.textMuted}},H&&!D&&We.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:v},o&&We.default.createElement("button",{type:"button","data-testid":x("edit"),onClick:()=>k(A),className:"hover:underline",style:{color:y.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&We.default.createElement("button",{type:"button","data-testid":x("delete"),onClick:()=>a(A),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),A.created_at&&We.default.createElement("span",null,new Date(A.created_at).toLocaleTimeString()),A.tool_name&&A.role!=="tool"&&We.default.createElement("span",{className:"px-1.5 py-0.5 rounded",style:{background:C.background,color:C.color}},"\u2699 ",A.tool_name),A.duration_ms!=null&&We.default.createElement("span",null,rX(A.duration_ms)),(A.tool_calls||[]).length>0&&We.default.createElement("span",null,A.tool_calls.length," tool call",A.tool_calls.length>1?"s":""),A.content_checksum&&We.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",A.content_checksum.slice(0,8)))),We.default.createElement(hke,{message:A,darkMode:t}),M&&We.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:y.textMuted}},We.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),O&&We.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:C.color+"55"}},We.default.createElement("div",{className:"flex flex-wrap gap-x-5 gap-y-1 text-xs font-mono",style:{color:y.textSecondary}},A.created_at&&We.default.createElement("span",null,new Date(A.created_at).toLocaleString()),A.tool_call_id&&We.default.createElement("span",null,"call: ",A.tool_call_id),A.duration_ms!=null&&We.default.createElement("span",null,"took ",rX(A.duration_ms)),A.content_checksum&&We.default.createElement("span",null,"\u{1F512} ",A.content_checksum)),I&&We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?K.color:y.textMuted}},"Arguments",Y?" \xB7 from the agent":""),We.default.createElement("pre",{style:be},I)),q?We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?pe.color:y.textMuted}},"Result",Y?" \xB7 from the tool":""),Object.keys(q.rest).length>0&&We.default.createElement("pre",{style:be},JSON.stringify(q.rest,null,2)),We.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:y.textMuted}},q.field," \xB7 ",q.body.length.toLocaleString()," chars"),We.default.createElement("pre",{style:{...be,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},q.body.slice(0,8e3),q.body.length>8e3?` +\u2026`:"")):$?We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:y.textMuted}},A.role==="tool"?"Result":"Content (parsed)"),We.default.createElement("pre",{style:be},$)):A.role==="tool"&&A.content?We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?pe.color:y.textMuted}},"Result",Y?" \xB7 from the tool":""," \xB7 ",A.content.length.toLocaleString()," chars"),We.default.createElement("pre",{style:{...be,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},A.content.slice(0,8e3),A.content.length>8e3?` +\u2026`:"")):null,T&&We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:y.textMuted}},"Requested tool calls"),We.default.createElement("pre",{style:be},T)),G&&We.default.createElement("div",null,We.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:y.textMuted}},"Tool definition"),We.default.createElement(WI,{tool:G,darkMode:t}))))}))}var cr=X(J());var $r=X(J());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"}),cX=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function nf({open:e,darkMode:t,size:r=14,style:n}){return $r.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"},$r.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function w2({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=An(e);return $r.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var Ua={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function qI({cells:e,darkMode:t,gap:r=16,className:n="grid",style:o}){let a=An(t),i=(e||[]).filter(Boolean);return i.length===0?null:$r.default.createElement("div",{className:`flex-shrink-0 text-sm ${n}`,style:{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 $r.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:$r.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}function Sh({cells:e,darkMode:t,className:r="",...n}){let o=An(t),a=(e||[]).filter(i=>i&&i.content!=null&&i.content!==!1&&i.content!=="");return $r.default.createElement($r.default.Fragment,null,$r.default.createElement(qI,{cells:e,darkMode:t,className:`hidden lg:grid ${r}`,...n}),a.length>0&&$r.default.createElement("div",{className:"lg:hidden flex flex-1 flex-wrap items-center gap-x-3 gap-y-1 min-w-0 text-xs",style:{color:o.textSecondary},"data-testid":"meta-cells"},a.map(i=>$r.default.createElement("span",{key:i.key,title:i.title||void 0,className:"min-w-0 max-w-full truncate"},i.content))))}var dX=(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"}),xke=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 kh({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=_h(),c=An(t),d=(e||[]).filter(p=>p&&(p.text||s));return d.some(p=>p.text)?$r.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:It.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((p,f)=>{let m=`${p.label}-${f}`,g=l(m),b=p.max||i,h=!p.text,y=String(p.text??"").replace(/\s+/g," ").trim(),x=xke(p.text),v=!h&&(x.json||y.length>60||y!==String(p.text).trim());return $r.default.createElement("div",{key:m},$r.default.createElement("div",{onClick:v?k=>{k.stopPropagation(),u(m)}:void 0,title:v?g?"Collapse":"Expand":void 0,style:{cursor:v?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},$r.default.createElement("span",{style:{color:p.color||c.textMuted}},v?g?"\u25BE":"\u25B8":"\xA0"," ",p.label,":")," ",!g&&(h?$r.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):cX(y,b))),g&&$r.default.createElement("pre",{onClick:k=>k.stopPropagation(),style:dX(t,{wrap:!x.json})},x.text))})):null}function b0({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=An(n);return $r.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&$r.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>$r.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 pX({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=An(o);return $r.default.createElement("div",null,$r.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},$r.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&$r.default.createElement("span",{style:{color:s.textMuted}},cX(t,i))),r&&$r.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:dX(o,{wrap:a})},t))}function _h(e={}){let[t,r]=(0,$r.useState)(e),n=(0,$r.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,$r.useCallback)(a=>!!t[a],[t]),n,r]}var Ku="max-md:text-lg",go="max-md:font-mono max-md:text-[11px] max-md:font-semibold max-md:uppercase max-md:tracking-[0.05em]";var KI={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},mX=[{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"}],no=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,VI=e=>{switch(e){case"root":return Vo.spans.root;case"prompt":return Vo.spans.prompt;case"generate":return Vo.spans.generate;case"llm":return Vo.spans.llm;case"thinking":return Vo.spans.thinking;case"tool":return Vo.spans.tool;case"response":return Vo.spans.response;default:return"-"}},bke=(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))},wke=(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))}},Ske=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},kke=(e,t)=>{if(!t.duration_ms)return no(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${no(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},_ke=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},fX=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,GI=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}},Cke=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}},Ake=(e,t)=>{let r=Cke(e),n=GI(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},Eke=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}},YI=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 Nke({span:e,darkMode:t,tools:r=[]}){let[n,o]=_h(),a=An(t),{messages:i,rest:s}=Eke(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)=>fX(f[0])-fX(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 cr.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:It.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},cr.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},cr.default.createElement("span",null,"duration: ",no(e.duration)),cr.default.createElement("span",null,"status: ",e.status||"OK"),Ske(e)>0&&cr.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),cr.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&cr.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},cr.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},cr.default.createElement("span",{style:{color:Hn("tool",t).color}},"\u2699 ",d.tool_name),p&&cr.default.createElement(cr.default.Fragment,null," ",cr.default.createElement("span",{style:{color:Hn("assistant",t).color}},"in:")," ",cr.default.createElement("span",{style:{color:a.textBody}},p))),d.content&&cr.default.createElement("div",{style:{fontSize:"12px"}},cr.default.createElement("span",{style:{color:Hn("tool",t).color}},"out:")," ",cr.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&&cr.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},cr.default.createElement(Ss,{messages:i,darkMode:t,tools:l||r})),l&&cr.default.createElement(UI,{tools:l,darkMode:t}),c.length>0&&cr.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([f,m])=>{let g=f.match(/args|result|input|output/)?_ke(m):null,b=!g&&(f.endsWith(".instructions")||f.match(/input|output|result/))&&typeof m=="string"?m:null,h=g||b;if(!h)return cr.default.createElement("div",{key:f,style:{wordBreak:"break-all"}},cr.default.createElement("span",{style:{color:a.textMuted}},f,":")," ",typeof m=="string"?m:JSON.stringify(m));let y=`${e.span_id}:${f}`;return cr.default.createElement(pX,{key:f,label:f,body:h,prose:!g,darkMode:t,open:n(y),onToggle:()=>o(y)})})))}function Tke({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:Ake(e,t);return cr.default.createElement(cr.default.Fragment,null,cr.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},cr.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},cr.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},VI(e.type)),cr.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),cr.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:It.mono,color:l.textMuted}},kke(e,t)),u&&cr.default.createElement(nf,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),cr.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},cr.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":KI[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}%`:`${bke(e.duration,o)}%`}})),c&&cr.default.createElement(kh,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:Hn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:Hn(c.outputTone,r).color,max:160}]})),a&&cr.default.createElement(Nke,{span:e,darkMode:r,tools:s}))}function XI({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=_h(),s=An(t),l=wke(e?.spans,r),u=n||YI(e);if(l.length===0)return cr.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 cr.default.createElement("div",{className:"space-y-2"},l.map((d,p)=>{let f=`${o}${d.span_id||p}`;return cr.default.createElement(Tke,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var Oke=[{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"}],Pke=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 Mke({trace:e,darkMode:t}){let r=An(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=Pke(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)=>wt.default.createElement("div",{style:{width:`${Math.max(c/i*100,.4)}%`,background:d,height:"100%"}});return wt.default.createElement("div",{style:{marginTop:"14px",paddingTop:"12px",borderTop:`1px solid ${r.cardBorder}`}},wt.default.createElement("div",{style:{fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em",color:r.textSecondary,marginBottom:"6px"}},"Time breakdown \u2014 generation vs tools"),wt.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")),wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"8px",fontSize:"12px",fontFamily:It.mono,color:r.textBody}},wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",no(n)," (",l(n),")"),wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",no(a)," (",l(a),")"),s>0&&wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",no(s)," (",l(s),")")),o.length>0&&wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:It.mono,color:r.textSecondary}},o.map((c,d)=>wt.default.createElement("span",{key:d},c.name," ",no(c.duration)," (",l(c.duration||0),")"))))}function Ike({trace:e,darkMode:t}){let[r,n]=(0,wt.useState)(null),[o,a]=(0,wt.useState)(!1),i=An(t);if((0,wt.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 wt.default.createElement("div",{className:"text-sm py-4",style:{color:i.bad}},"Couldn't load the conversation for this trace.");if(!r)return wt.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?wt.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"This trace predates content capture \u2014 no conversation to show."):wt.default.createElement(Ss,{messages:s,darkMode:t,tools:YI(e)})}function w0({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,wt.useState)("spans"),[i,s]=(0,wt.useState)("time"),l=An(t),u=(e?.spans||[]).length,c=g2(e),d=e?.tokens||{},p=(0,wt.useCallback)(f=>a(n?f:"spans"),[n]);return e?wt.default.createElement("div",null,wt.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2 mb-2"},wt.default.createElement("div",{className:"flex items-center gap-1"},n&&wt.default.createElement(b0,{options:Oke,value:o,onChange:p,darkMode:t}),wt.default.createElement("span",{className:"text-xs ml-2",style:{color:l.textSecondary}},u," ",u===1?"span":"spans")),o==="spans"&&u>0&&wt.default.createElement(b0,{options:mX,value:i,onChange:s,darkMode:t,label:"Sort"})),o==="conversation"?wt.default.createElement("div",{className:"rounded-lg border p-4",style:{background:l.cardBg,borderColor:l.cardBorder}},wt.default.createElement(Ike,{trace:e,darkMode:t})):wt.default.createElement(wt.default.Fragment,null,i==="time"?wt.default.createElement("div",{className:"flex justify-between text-xs mb-2",style:{color:l.textMuted}},wt.default.createElement("span",null,"0ms"),wt.default.createElement("span",null,Math.round((e.duration_ms||0)*.33),"ms"),wt.default.createElement("span",null,Math.round((e.duration_ms||0)*.66),"ms"),wt.default.createElement("span",null,no(e.duration_ms))):wt.default.createElement("div",{className:"text-xs mb-2",style:{color:l.textMuted}},"Bar length compares duration on a log scale"),wt.default.createElement(XI,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&wt.default.createElement("div",{className:"mt-3"},wt.default.createElement(vd,{...c,label:"Context pressure",darkMode:t})),wt.default.createElement(Mke,{trace:e,darkMode:t}),!r&&wt.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}},wt.default.createElement("span",null,"Tokens:"),d.thinking>0&&wt.default.createElement("span",{className:"text-amber-500",style:{fontFamily:It.mono}},"T:",d.thinking.toLocaleString()),wt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:It.mono}},"in:",(d.input||0).toLocaleString()),wt.default.createElement("span",{className:"text-green-500",style:{fontFamily:It.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&wt.default.createElement("span",{style:{fontFamily:It.mono}},e.provider,e.model?` \xB7 ${e.model}`:"")),e.error&&wt.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"}},wt.default.createElement("span",{className:"text-sm",style:{color:t?"#fca5a5":"#b91c1c"}},e.error))):null}var Dke=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},$ke=e=>e==null?null:`$${e.toFixed(4)}`;function S2({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=An(t),a=GI(e),i=g2(e),s=e.status!=="ERROR",l=Dke(e.tokens);return qn.default.createElement(w2,{darkMode:t,id:`trace-row-${e.id}`},qn.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},qn.default.createElement("div",{className:"flex items-center gap-3 min-w-0 max-lg:flex-wrap max-lg:gap-y-1"},qn.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:It.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),qn.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:It.mono,color:o.textMuted}},e.short_id),qn.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),qn.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0 max-lg:w-full max-lg:min-w-0"},qn.default.createElement(Sh,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&qn.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:It.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:Ua.context,empty:"Context: no generation in this trace reported its token counts",content:i&&qn.default.createElement(vd,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:Ua.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&qn.default.createElement(qn.default.Fragment,null,qn.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),no(e.duration_ms))},{key:"tokens",width:Ua.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:Ua.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&qn.default.createElement(qn.default.Fragment,null,qn.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),$ke(e.estimated_cost))},{key:"status",width:Ua.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:qn.default.createElement("span",{style:{color:s?o.good:o.bad}},qn.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),qn.default.createElement(nf,{open:r,darkMode:t}))),!r&&qn.default.createElement(kh,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:Hn("user",t).color},{label:"output",text:a.output,color:Hn("assistant",t).color}]}),r&&qn.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},qn.default.createElement(w0,{trace:e,darkMode:t})))}var gX=({minutes:e,agentId:t=null,bucketSeconds:r=null})=>{let n=new URLSearchParams({minutes:String(e)});return r!=null&&n.set("bucket_seconds",String(r)),t!=null&&t!==""&&n.set("agent_id",String(t)),`/api/traces?${n.toString()}`};var jke=(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(m=>m.timestamp_ms>=u&&m.timestamp_msm.duration_ms).filter(m=>typeof m=="number"&&Number.isFinite(m)),f={};t.forEach(m=>{f[m]=d.filter(g=>g.agent===m).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(m=>m.status==="ERROR").length,avgLatency:p.length>0?Math.round(p.reduce((m,g)=>m+g,0)/p.length):0,traces:d,...f})}return a},hX=(e,t,r,n)=>{let o=Array.isArray(e?.buckets)?e.buckets.map(s=>({time:n.minutes>1440?new Date(s.end_ms).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(s.end_ms).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),timestamp:s.end_ms,requests:s.requests,errors:s.errors,avgLatency:s.avg_latency_ms,traces:t.filter(l=>l.timestamp_ms>=s.start_ms&&l.timestamp_ms[l,s.agents?.[l]||0]))})):jke(t,r,n.minutes,n.bucketSeconds),a=t.map(s=>s.duration_ms).filter(s=>typeof s=="number"&&Number.isFinite(s)),i=e?.summary?{requests:e.summary.requests,errors:e.summary.errors,avgLatency:e.summary.avg_latency_ms,throughput:Number(e.summary.throughput_per_minute).toFixed(1)}:{requests:t.length,errors:t.filter(s=>s.status==="ERROR").length,avgLatency:a.length?Math.round(a.reduce((s,l)=>s+l,0)/a.length):0,throughput:(t.length/n.minutes).toFixed(1)};return{buckets:o,summary:i,truncated:e?.truncated===!0,total:e?.total_count??t.length}};var yX=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],Lke=3e4,zke=e=>{let t={};return e.forEach((r,n)=>{t[r]=yX[n%yX.length]}),t},Bke=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)};function of({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,V.useState)([]),[a,i]=(0,V.useState)(null),[s,l]=(0,V.useState)([]),[u,c]=(0,V.useState)({}),[d,p]=(0,V.useState)(!0),[f,m]=(0,V.useState)(null),[g,b]=(0,V.useState)(null),h=(0,V.useRef)(new URLSearchParams(window.location.search).get("trace")),[y,x]=(0,V.useState)(null),[v,k]=(0,V.useState)({status:"all",agent:"all",action:"all"}),[S,w]=(0,V.useState)("time"),[_,A]=(0,V.useState)(null),[C,O]=(0,V.useState)("timeline"),[D,H]=(0,V.useState)("popular"),{timeWindow:j}=Nl(),Z=(0,V.useCallback)(async()=>{try{let E=await fetch(gX({minutes:j.minutes,bucketSeconds:j.bucketSeconds,agentId:e}));if(!E.ok)throw new Error(`Request failed (${E.status})`);let W=await E.json();o(W.traces||[]),i(W),l(W.agents||[]),c(W.agent_ids||{}),m(null)}catch(E){m(E.message)}finally{p(!1)}},[j.minutes,j.bucketSeconds,e]);(0,V.useEffect)(()=>{Z();let E=setInterval(Z,Lke);return()=>clearInterval(E)},[Z]);let N=(0,V.useMemo)(()=>zke(s),[s]);(0,V.useEffect)(()=>{A(null)},[j.id]);let P=(0,V.useMemo)(()=>hX(a,n,s,j),[a,n,s,j]),M=P.buckets,I=Math.max(0,Math.ceil(M.length/6)-1),$=(0,V.useMemo)(()=>{let E=n;if(_!==null){let W=M[_];W&&(E=W.traces||[])}if(v.status!=="all"&&(E=E.filter(W=>v.status==="success"?W.status!=="ERROR":W.status==="ERROR")),v.agent!=="all"&&(E=E.filter(W=>W.agent===v.agent)),v.action!=="all")if(v.action.includes("#")){let[W,F]=v.action.split("#");E=E.filter(B=>B.agent===W&&B.action===F)}else E=E.filter(W=>W.action===v.action);return S==="latency"&&(E=[...E].sort((W,F)=>(F.duration_ms||0)-(W.duration_ms||0))),y&&!E.some(W=>W.id===y.id)&&(E=[y,...E]),E},[n,_,M,v,S,y]);(0,V.useEffect)(()=>{let E=h.current;if(!E)return;let W=B=>{h.current=null,b(B.id),setTimeout(()=>{document.getElementById(`trace-row-${B.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},F=n.find(B=>B.id===E||B.trace_id===E||B.short_id&&String(E).startsWith(B.short_id));if(F){W(F);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent(E)}`).then(B=>B.ok?B.json():Promise.reject(new Error("not found"))).then(({trace:B})=>{x(B),W(B)}).catch(()=>{h.current=null})},[n]);let T=(0,V.useMemo)(()=>{let E=_!==null?M[_]?.traces||[]:n,W={};E.forEach(B=>{B.agent&&(W[B.agent]||(W[B.agent]={agent:B.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),W[B.agent].count++,W[B.agent].totalDuration+=B.duration_ms||0,W[B.agent].cost+=B.estimated_cost||0,B.status==="ERROR"&&W[B.agent].errors++,B.tokens&&(W[B.agent].tokens.thinking+=B.tokens.thinking||0,W[B.agent].tokens.input+=B.tokens.input||0,W[B.agent].tokens.output+=B.tokens.output||0),B.action&&(W[B.agent].actions[B.action]=(W[B.agent].actions[B.action]||0)+1))});let F={popular:B=>B.count,longest:B=>B.totalDuration/(B.count||1),cost:B=>B.cost,tokens:B=>(B.tokens.input||0)+(B.tokens.output||0)+(B.tokens.thinking||0),errors:B=>B.errors}[D]||(B=>B.count);return Object.values(W).sort((B,Ee)=>F(Ee)-F(B)||Ee.count-B.count)},[n,M,_,D]),q=(0,V.useMemo)(()=>{let E=_!==null?M[_]?.traces||[]:n,W={};return E.forEach(F=>{if(!F.agent)return;let B=`${F.agent}#${F.action||"unknown"}`;W[B]||(W[B]={key:B,agent:F.agent,action:F.action||"unknown",count:0,totalDuration:0,errors:0,minDuration:1/0,maxDuration:0,tokens:{thinking:0,input:0,output:0}}),W[B].count++,W[B].totalDuration+=F.duration_ms||0,W[B].minDuration=Math.min(W[B].minDuration,F.duration_ms||0),W[B].maxDuration=Math.max(W[B].maxDuration,F.duration_ms||0),F.status==="ERROR"&&W[B].errors++,F.tokens&&(W[B].tokens.thinking+=F.tokens.thinking||0,W[B].tokens.input+=F.tokens.input||0,W[B].tokens.output+=F.tokens.output||0)}),Object.values(W).forEach(F=>{F.minDuration===1/0&&(F.minDuration=0)}),Object.values(W).sort((F,B)=>B.count-F.count)},[n,M,_]),G=(0,V.useMemo)(()=>{let E=_!==null?M[_]?.traces||[]:n,W={};return E.forEach(F=>{(F.spans||[]).forEach(B=>{if(B.type!=="tool")return;let Ee=B.attributes?.["tool.name"]||B.name?.replace(/^tool\./,"")||"unknown";W[Ee]||(W[Ee]={name:Ee,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),W[Ee].count++,W[Ee].totalDuration+=B.duration||0,W[Ee].maxDuration=Math.max(W[Ee].maxDuration,B.duration||0),B.error&&W[Ee].errors++,F.agent&&W[Ee].agents.add(`${F.agent}#${F.action||"unknown"}`)})}),Object.values(W).map(F=>({...F,agents:[...F.agents],avgDuration:F.count?F.totalDuration/F.count:0})).sort((F,B)=>B.totalDuration-F.totalDuration)},[n,M,_]),L=(0,V.useMemo)(()=>v.agent==="all"?q.map(E=>E.key):q.filter(E=>E.agent===v.agent).map(E=>E.key),[v.agent,q]),Y=(0,V.useMemo)(()=>Bke($),[$]),K=E=>{if(E&&E.activeTooltipIndex!==void 0){let W=E.activeTooltipIndex;A(_===W?null:W),b(null)}},pe=E=>(E?.input||0)+(E?.output||0)+(E?.thinking||0),De=E=>{let W=E.count?E.errors/E.count:0;return[{label:`Calls ${j.label||""}`.trim(),value:E.count.toLocaleString()},{label:"Errors",value:`${(W*100).toFixed(1)}%`,tone:E.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round(E.totalDuration/(E.count||1))}ms`},{label:"Tokens",value:pe(E.tokens).toLocaleString()},{label:"Cost",value:se(E.cost),title:"Estimated from token counts at this model's published rates",tone:E.cost?void 0:"muted"},{label:"Actions",value:(E.agents?.length||0).toLocaleString()}]},se=E=>E?E<.01?"<$0.01":`$${E.toFixed(2)}`:"\u2014",be=V.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},V.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),V.default.createElement("select",{value:D,onChange:E=>H(E.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"}},V.default.createElement("option",{value:"popular"},"Most calls"),V.default.createElement("option",{value:"longest"},"Longest average"),V.default.createElement("option",{value:"cost"},"Highest cost"),V.default.createElement("option",{value:"tokens"},"Most tokens"),V.default.createElement("option",{value:"errors"},"Most errors"))),ue=E=>k(W=>({...W,agent:W.agent===E?"all":E})),R=E=>{let W=u[E];if(!W)return ue(E);let F=rt(`/agents/${W}`);window.history.pushState(window.history.state,"",F),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:F}}))},we=E=>{let W=Y[0]?.total||1,F=E?"rgba(0,0,0,0.3)":"white",B=E?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",Ee=E?"white":"#111827",Ve=E?"rgba(255,255,255,0.5)":"#6b7280",fe={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return V.default.createElement("div",{className:E?"px-6 pb-6 max-md:px-4":void 0},V.default.createElement("div",{style:{background:F,border:B,borderRadius:"12px",padding:"16px"}},V.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:Ee,marginBottom:"4px"}},"Slowest operations"),V.default.createElement("div",{style:{fontSize:"12px",color:Ve,marginBottom:"14px"}},"Span durations aggregated across ",$.length," trace",$.length===1?"":"s"," \u2014 ranked by total time"),Y.length===0?V.default.createElement("div",{style:{fontSize:"13px",color:Ve,padding:"12px 0"}},"No spans in the current selection"):V.default.createElement("div",{style:{display:"grid",gap:"10px"}},Y.map(ze=>V.default.createElement("div",{key:ze.name,className:"flex flex-wrap items-center gap-3"},V.default.createElement("div",{className:"w-[220px] max-md:w-full",style:{flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},V.default.createElement("span",{style:{color:Ve}},VI(ze.type)),V.default.createElement("span",{style:{fontSize:"13px",color:ze.errors>0?"#ef4444":Ee,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ze.name)),V.default.createElement("div",{className:"flex-1 min-w-[120px] max-md:basis-full",style:{height:"18px",background:E?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},V.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ze.total/W*100,.5)}%`,background:fe[ze.type]||"#6366f1"}})),V.default.createElement("div",{className:"w-[260px] text-right max-md:w-full max-md:text-left",style:{flexShrink:0,fontSize:"12px",color:Ve,fontFamily:It.mono}},ze.count,"\xD7 \xB7 avg ",no(ze.avg)," \xB7 max ",no(ze.max)," \xB7 \u03A3 ",no(ze.total)))))))};if(d)return V.default.createElement("div",{className:"flex items-center justify-center h-64"},V.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let Ce=E=>{let W=An(E);return V.default.createElement("div",{className:E?"px-6 pb-6 max-md:px-4":void 0},G.length===0?V.default.createElement("div",{className:"text-center py-8 text-sm",style:{color:W.textSecondary}},"No tool calls in this window"):V.default.createElement("div",{className:"rounded-xl border overflow-x-auto",style:{background:W.cardBg,borderColor:W.cardBorder}},V.default.createElement("div",{style:{minWidth:560}},V.default.createElement("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium border-b",style:{color:W.textSecondary,borderColor:W.cardBorder}},V.default.createElement("div",{className:"flex-1"},"Tool"),V.default.createElement("div",{className:"w-20 text-right"},"Calls"),V.default.createElement("div",{className:"w-24 text-right"},"Total time"),V.default.createElement("div",{className:"w-20 text-right"},"Avg"),V.default.createElement("div",{className:"w-20 text-right"},"Slowest")),G.map(F=>{let B=G[0].totalDuration?F.totalDuration/G[0].totalDuration*100:0;return V.default.createElement("div",{key:F.name,className:"px-4 py-2 border-b last:border-0",style:{borderColor:W.cardBorder}},V.default.createElement("div",{className:"flex items-center gap-4 text-sm"},V.default.createElement("div",{className:"flex-1 min-w-0"},V.default.createElement("div",{className:"font-medium truncate",style:{color:W.textPrimary},title:F.name},F.name),F.agents.length>0&&V.default.createElement("div",{className:"text-xs truncate",style:{color:W.textMuted},title:F.agents.join(", ")},F.agents.join(", "))),V.default.createElement("div",{className:"w-20 text-right",style:{fontFamily:It.mono,color:W.textBody}},F.count.toLocaleString(),F.errors>0&&V.default.createElement("span",{className:"ml-1",style:{color:W.bad},title:`${F.errors} failed`},"(",F.errors,")")),V.default.createElement("div",{className:"w-24 text-right font-medium",style:{fontFamily:It.mono,color:W.textPrimary}},no(F.totalDuration)),V.default.createElement("div",{className:"w-20 text-right",style:{fontFamily:It.mono,color:W.textSecondary}},no(F.avgDuration)),V.default.createElement("div",{className:"w-20 text-right",style:{fontFamily:It.mono,color:W.textSecondary}},no(F.maxDuration))),V.default.createElement("div",{className:"h-1 rounded mt-1.5",style:{background:W.trackBg}},V.default.createElement("div",{className:"h-1 rounded",style:{width:`${Math.max(B,1)}%`,background:W.good}})))}))))},z=P.summary,ee=P.truncated&&V.default.createElement("div",{role:"status","data-testid":"trace-window-notice",style:{padding:"12px 24px",fontSize:13,color:r?"#fbbf24":"#92400e"}},"Showing newest ",n.length," of ",P.total," traces. Chart and totals cover the full window; lists and breakdowns use these loaded traces."),ae=z.requests===0;return r?V.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},ee,V.default.createElement("div",{className:"px-6 pt-6 pb-4 max-md:px-4 max-md:pt-4",style:{borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px"}},V.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"12px"}},V.default.createElement("div",null,!t&&V.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),V.default.createElement("p",{style:{fontSize:"14px",color:"rgba(255,255,255,0.6)",marginTop:"4px"}},_!==null?`Viewing ${M[_]?.time} \u2022 ${$.length} requests`:`Last ${j.label} \u2022 Click timeline to drill down`)),V.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap",minWidth:0}},V.default.createElement(Vs,null),V.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px",maxWidth:"100%",overflowX:"auto"}},["timeline","agents","actions","tools","spans"].map(E=>V.default.createElement("button",{key:E,onClick:()=>O(E),style:{padding:"6px 12px",background:C===E?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},E))),!e&&V.default.createElement("select",{value:v.agent,onChange:E=>k({...v,agent:E.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"}},V.default.createElement("option",{value:"all"},"All Agents"),s.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.action,onChange:E=>k({...v,action:E.target.value}),style:{padding:"8px 12px",background:v.action!=="all"?"rgba(239, 68, 68, 0.3)":"rgba(255,255,255,0.1)",border:v.action!=="all"?"1px solid #ef4444":"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"220px",textOverflow:"ellipsis"}},V.default.createElement("option",{value:"all"},"All Actions"),L.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.status,onChange:E=>k({...v,status:E.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"}},V.default.createElement("option",{value:"all"},"All Status"),V.default.createElement("option",{value:"success"},"Success"),V.default.createElement("option",{value:"error"},"Error")),V.default.createElement("select",{value:S,onChange:E=>w(E.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"}},V.default.createElement("option",{value:"time"},"Newest first"),V.default.createElement("option",{value:"latency"},"Slowest first")),_!==null&&V.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")))),f&&V.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: ",f),V.default.createElement("div",{className:"px-6 max-md:px-4",style:{marginBottom:"24px"}},V.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},V.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px",flexWrap:"wrap",gap:"8px"}},V.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),V.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries(N).map(([E,W])=>V.default.createElement("div",{key:E,style:{display:"flex",alignItems:"center",gap:"6px"}},V.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:W}}),V.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},E.replace("Agent","")))))),V.default.createElement("div",{style:{height:"150px"}},V.default.createElement(Bc,{width:"100%",height:"100%"},V.default.createElement(hd,{data:M,onClick:K,style:{cursor:"pointer"}},V.default.createElement("defs",null,Object.entries(N).map(([E,W])=>V.default.createElement("linearGradient",{key:E,id:`gradient-${E}`,x1:"0",y1:"0",x2:"0",y2:"1"},V.default.createElement("stop",{offset:"5%",stopColor:W,stopOpacity:.8}),V.default.createElement("stop",{offset:"95%",stopColor:W,stopOpacity:.1})))),V.default.createElement(ju,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),V.default.createElement(Fu,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:I}),V.default.createElement(Uu,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),V.default.createElement(rd,{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:(E,W)=>[E,W.replace("Agent","")]}),Object.keys(N).map(E=>V.default.createElement(zu,{key:E,type:"monotone",dataKey:E,stackId:"1",stroke:N[E],fill:`url(#gradient-${E})`}))))),V.default.createElement("div",{style:{display:"flex",gap:"24px",rowGap:"8px",flexWrap:"wrap",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"white"}},z.requests),V.default.createElement("div",{className:go,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},z.errors),V.default.createElement("div",{className:go,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},z.avgLatency,"ms"),V.default.createElement("div",{className:go,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),V.default.createElement("div",null,V.default.createElement("div",{className:"max-md:text-lg!",style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},z.throughput,"/min"),V.default.createElement("div",{className:go,style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),C==="agents"&&V.default.createElement("div",{className:"px-6 max-md:px-4",style:{marginBottom:"24px"}},be,V.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(280px, 100%), 1fr))",gap:"16px"}},T.map(E=>V.default.createElement(zm,{key:E.agent,name:E.agent,accentColor:N[E.agent],subtitle:E.agents?.length?E.agents.join(", "):void 0,badge:V.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:N[E.agent]+"30",color:N[E.agent],borderRadius:"4px",whiteSpace:"nowrap"}},E.count," calls"),onClick:()=>R(E.agent),stats:De(E),footer:V.default.createElement(V.default.Fragment,null,V.default.createElement("span",null,u[E.agent]?"Open agent \u2192":"Not linked to an agent record"),V.default.createElement("button",{onClick:W=>{W.stopPropagation(),ue(E.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:v.agent===E.agent?"#ef4444":"inherit",font:"inherit"}},v.agent===E.agent?"Clear filter":"Filter traces"))})))),C==="actions"&&V.default.createElement("div",{className:"px-6 max-md:px-4",style:{marginBottom:"24px"}},V.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(320px, 100%), 1fr))",gap:"12px"}},q.map(E=>{let W=v.action===E.key;return V.default.createElement("div",{key:E.key,onClick:()=>{k({...v,action:W?"all":E.key}),O("timeline")},style:{background:W?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:W?"1px solid #ef4444":`1px solid ${N[E.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},V.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},V.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},V.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:N[E.agent]}}),V.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},E.agent),V.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",E.action)),V.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:N[E.agent]+"30",color:N[E.agent],borderRadius:"4px"}},E.count," calls")),V.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),V.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(E.totalDuration/E.count),"ms")),V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),V.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(E.minDuration),"ms / ",Math.round(E.maxDuration),"ms")),V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),V.default.createElement("div",{style:{fontSize:"13px",color:E.errors>0?"#ef4444":"#10b981"}},E.errors," (",(E.errors/E.count*100).toFixed(0),"%)")),V.default.createElement("div",null,V.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),V.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},pe(E.tokens).toLocaleString()))))}))),C==="tools"&&Ce(!0),C==="spans"&&we(!0),C==="timeline"&&!ae&&V.default.createElement("div",{className:"space-y-4"},$.length===0?V.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):$.map(E=>V.default.createElement(S2,{key:E.id,trace:E,darkMode:!0,expanded:g===E.id,onToggle:()=>b(g===E.id?null:E.id)}))),ae&&C==="timeline"&&V.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},V.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),V.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"))):V.default.createElement("div",{className:"space-y-6"},ee,V.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},V.default.createElement("div",null,V.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),V.default.createElement("p",{className:"text-sm text-gray-500"},_!==null?`Viewing ${M[_]?.time} \u2022 ${$.length} requests`:`Last ${j.label} \u2022 Click timeline to drill down`)),V.default.createElement("div",{className:"flex items-center flex-wrap gap-x-3 gap-y-2 min-w-0"},V.default.createElement(Vs,null),V.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 max-w-full overflow-x-auto"},["timeline","agents","actions","tools","spans"].map(E=>V.default.createElement("button",{key:E,onClick:()=>O(E),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${C===E?"bg-white shadow text-gray-900":"text-gray-600"}`},E))),V.default.createElement("select",{value:v.agent,onChange:E=>k({...v,agent:E.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"}},V.default.createElement("option",{value:"all"},"All Agents"),s.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.action,onChange:E=>k({...v,action:E.target.value}),className:`px-3 py-2 border rounded-lg text-sm focus:ring-2 focus:ring-red-500 ${v.action!=="all"?"border-red-500 bg-red-50":"border-gray-300"}`,style:{maxWidth:"220px",textOverflow:"ellipsis"}},V.default.createElement("option",{value:"all"},"All Actions"),L.map(E=>V.default.createElement("option",{key:E,value:E},E))),V.default.createElement("select",{value:v.status,onChange:E=>k({...v,status:E.target.value}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},V.default.createElement("option",{value:"all"},"All Status"),V.default.createElement("option",{value:"success"},"Success"),V.default.createElement("option",{value:"error"},"Error")),V.default.createElement("select",{value:S,onChange:E=>w(E.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},V.default.createElement("option",{value:"time"},"Newest first"),V.default.createElement("option",{value:"latency"},"Slowest first")),_!==null&&V.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"))),f&&V.default.createElement("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700"},"Failed to load traces: ",f),V.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},V.default.createElement("div",{className:"flex flex-wrap justify-between items-center gap-2 mb-3"},V.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),V.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries(N).map(([E,W])=>V.default.createElement("div",{key:E,className:"flex items-center gap-1.5"},V.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:W}}),V.default.createElement("span",{className:"text-xs text-gray-500"},E.replace("Agent","")))))),V.default.createElement("div",{className:"h-36"},V.default.createElement(Bc,{width:"100%",height:"100%"},V.default.createElement(hd,{data:M,onClick:K,style:{cursor:"pointer"}},V.default.createElement("defs",null,Object.entries(N).map(([E,W])=>V.default.createElement("linearGradient",{key:E,id:`gradient-light-${E}`,x1:"0",y1:"0",x2:"0",y2:"1"},V.default.createElement("stop",{offset:"5%",stopColor:W,stopOpacity:.6}),V.default.createElement("stop",{offset:"95%",stopColor:W,stopOpacity:.05})))),V.default.createElement(ju,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),V.default.createElement(Fu,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:I}),V.default.createElement(Uu,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),V.default.createElement(rd,{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:(E,W)=>[E,W.replace("Agent","")]}),Object.keys(N).map(E=>V.default.createElement(zu,{key:E,type:"monotone",dataKey:E,stackId:"1",stroke:N[E],fill:`url(#gradient-light-${E})`}))))),V.default.createElement("div",{className:"flex flex-wrap gap-x-6 gap-y-2 mt-3 pt-3 border-t border-gray-100"},V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-gray-900"},z.requests),V.default.createElement("div",{className:`text-xs text-gray-500 ${go}`},"Total Requests")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-red-500"},z.errors),V.default.createElement("div",{className:`text-xs text-gray-500 ${go}`},"Errors")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-green-600"},z.avgLatency,"ms"),V.default.createElement("div",{className:`text-xs text-gray-500 ${go}`},"Avg Latency")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-lg font-bold text-amber-500"},z.throughput,"/min"),V.default.createElement("div",{className:`text-xs text-gray-500 ${go}`},"Throughput")))),C==="agents"&&V.default.createElement("div",null,be,V.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},T.map(E=>V.default.createElement(zm,{key:E.agent,name:E.agent,accentColor:N[E.agent],subtitle:E.agents?.length?E.agents.join(", "):void 0,badge:V.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:N[E.agent]+"20",color:N[E.agent]}},E.count," calls"),onClick:()=>R(E.agent),stats:De(E),footer:V.default.createElement(V.default.Fragment,null,V.default.createElement("span",null,u[E.agent]?"Open agent \u2192":"Not linked to an agent record"),V.default.createElement("button",{onClick:W=>{W.stopPropagation(),ue(E.agent)},className:v.agent===E.agent?"text-red-600":"hover:text-gray-700"},v.agent===E.agent?"Clear filter":"Filter traces"))})))),C==="actions"&&V.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},q.map(E=>{let W=v.action===E.key;return V.default.createElement("div",{key:E.key,onClick:()=>{k({...v,action:W?"all":E.key}),O("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${W?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:N[E.agent],borderLeftWidth:W?"2px":"4px"}},V.default.createElement("div",{className:"flex items-center justify-between mb-3"},V.default.createElement("div",{className:"flex items-center gap-2"},V.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:N[E.agent]}}),V.default.createElement("span",{className:"font-semibold text-gray-900"},E.agent),V.default.createElement("span",{className:"text-gray-500"},"#",E.action)),V.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:N[E.agent]+"20",color:N[E.agent]}},E.count," calls")),V.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),V.default.createElement("div",{className:"font-medium"},Math.round(E.totalDuration/E.count),"ms")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),V.default.createElement("div",{className:"text-gray-600"},Math.round(E.minDuration),"ms / ",Math.round(E.maxDuration),"ms")),V.default.createElement("div",null,V.default.createElement("div",{className:`text-xs text-gray-500 ${go}`},"Errors"),V.default.createElement("div",{className:E.errors>0?"text-red-600":"text-green-600"},E.errors," (",(E.errors/E.count*100).toFixed(0),"%)")),V.default.createElement("div",null,V.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),V.default.createElement("div",{className:"text-gray-600"},pe(E.tokens).toLocaleString()))))})),C==="tools"&&Ce(!1),C==="spans"&&we(!1),C==="timeline"&&!ae&&V.default.createElement("div",{className:"space-y-4"},$.length===0?V.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):$.map(E=>V.default.createElement(S2,{key:E.id,trace:E,darkMode:!1,expanded:g===E.id,onToggle:()=>b(g===E.id?null:E.id)}))),ae&&C==="timeline"&&V.default.createElement("div",{className:"text-center py-12"},V.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),V.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 xe=X(J());var k2=X(J());function ZI({trace:e,darkMode:t,height:r=8}){let n=An(t);if(!e)return k2.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 k2.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>k2.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${no(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":KI[s.type]||"#9ca3af"}})))}var Xs=X(J());var Sr=X(J());var Vu=X(J());var Fke=/\/agents\/(\d+)/;function ui(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function Wke(e){return t=>t===e?{}:null}function S0(e){return t=>e.test(t)?{agentId:t.match(Fke)?.[1]}:null}function _2(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var Uke=e=>e.assistantEnabled!==!1,Hke=S0(/\/agents\/\d+\/(interactions|history)/),qke=["recording","context","run","scenario_result"],Kke=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function Vke(e){let t=e.match(Kke);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var JI=[{view:"assistant",match:Wke("/assistant"),path:"/assistant",enabled:Uke},{view:"traces",match:ui("/traces"),path:"/traces"},{view:"metrics",match:ui("/metrics"),path:"/metrics"},{view:"scenarios",match:ui("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:ui("/interactions"),path:"/interactions"},{view:"tools",match:ui("/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:ui("/evaluations"),path:"/evaluations"},{view:"analytics",match:ui("/analytics"),path:"/analytics"},{view:"projects",match:ui("/projects"),path:"/projects"},{view:"exploration",match:ui("/explorations"),path:"/explorations"},{view:"builder",match:ui("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=Hke(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:_2("/interactions")},{view:"agent-analytics",match:S0(/\/agents\/\d+\/analytics/),path:_2("/analytics")},{view:"editor",match:S0(/\/agents\/\d+\/edit/),path:_2("/edit")},{view:"runner",match:S0(/\/agents\/\d+\/run/),path:_2("/run")},{view:"history",match:S0(/\/agents\/\d+\/?$/)},{view:"replay",match:Vke},{view:"sessions",match:ui("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:ui("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:ui("/organization"),path:"/organization"},{view:"settings",match:ui("/settings"),path:"/settings"}],Gke="list",vX=[{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:"evaluations",label:"Evaluations",icon:"evaluations"},{view:"scenarios",label:"Scenarios",icon:"evaluations"}]},{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:"sessions",label:"Sessions",icon:"replay",also:["replay"]},{view:"metrics",label:"Metrics",icon:"metrics"}]},{id:"build",label:"Build",items:[{view:"projects",label:"Projects",glyph:""},{view:"tools",label:"Tools",icon:"tools"},{view:"mcp",label:"MCP Services",icon:"mcp"}]},{id:"workspace",label:"Workspace",items:[{view:"organization",label:"Organization",glyph:"\u{1F3E2}"},{view:"settings",label:"Settings",glyph:"\u2699\uFE0F"}]}];function xX(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function k0(e,t={}){return JI.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function bX(e,t={}){for(let r of JI){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:Gke}}function C2(e,{agent:t=null,features:r={}}={}){if(!k0(e,r))return null;let n=JI.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function wX(e){for(let t of vX){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function Ch(e,t){return!qke.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function SX(e={}){return vX.map(t=>({...t,items:t.items.filter(r=>k0(r.view,e))}))}var QI="/api/input_requests",A2="action-agent:input-requests-changed",_X=3e4,kX=100,Yke=["text","choice","confirm","secret"];function CX({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?`${QI}?${n}`:QI}function Ah(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function AX(e){let t=Ah(e).length;if(t!==0)return t>=kX?`${kX-1}+`:t}function RI(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?Ah(e.input_requests).length>0?"awaiting":"poll":"finished"}function eD(e){return Yke.includes(e?.kind)?e.kind:null}function EX(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 NX(e){return e?.id==null?"answer":`answer-${e.id}`}function TX(e){switch(eD(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:NX(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:EX(e).map(t=>t.label)}];default:return[]}}function OX(e,t){if(t?.kind==="form"){let r=t.values?.[NX(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return EX(e).find(r=>r.label===t.text)?.value}var Xke={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function Zke(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:Xke[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 tD(e){return["answered","declined","closed"].includes(e?.state)}async function PX(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${QI}/${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 Zke(a.status,i)}function MX(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 IX(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function DX(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 $X(e,t=Date.now()){return e?`asked ${_v(e,t)}`:null}function jX(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 LX(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=C2("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function zX(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function E2(){window.dispatchEvent(new CustomEvent(A2))}function N2({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=_X}={}){let[o,a]=(0,Vu.useState)(null),[i,s]=(0,Vu.useState)(null),l=(0,Vu.useRef)(0),u=(0,Vu.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(CX({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,Vu.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(A2,u),()=>{clearInterval(c),window.removeEventListener(A2,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var Jke={text:"question",choice:"choice",confirm:"approval",secret:"secret"},Qke={answered:"success",declined:"muted",closed:"warning"},rD={fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},Rke={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:U,fontSize:13};function e_e({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:Rke}),Sr.default.createElement(ie,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function t_e({request:e,busy:t,onApprove:r,onDecline:n}){let o=jX(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:U,fontSize:12}},o),Sr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Sr.default.createElement(ie,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),Sr.default.createElement(ie,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function af({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=ut(),[a,i]=(0,Sr.useState)(!1),[s,l]=(0,Sr.useState)(r),u=eD(e),c=tD(s),d=async y=>{if(a||c)return;i(!0);let x=await PX(e,y);i(!1),l(x),tD(x)&&(E2(),t&&t(e,x))},p=y=>{y!==void 0&&d({answer:y})},f=()=>d({decline:!0}),m=n?LX(e):null,g=IX(e.actor),b=DX(e.expires_at),h=$X(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(ve,{tone:e.kind==="confirm"?"warning":"info",size:10},Jke[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(Jr,{href:rt(m),onClick:()=>st(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:{...rD,marginLeft:"auto",color:b==="expired"?"var(--color-error-text)":rD.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:{...rD,display:"flex",gap:10,flexWrap:"wrap"}},g&&Sr.default.createElement("span",{"data-testid":"input-request-actor"},"for ",g),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(ve,{tone:Qke[s.state]||"muted"},MX(e,s))):Sr.default.createElement(Sr.default.Fragment,null,(u==="text"||u==="choice")&&Sr.default.createElement(Tl,{blocks:TX(e),darkMode:o,onAction:y=>p(OX(e,y))}),u==="confirm"&&Sr.default.createElement(t_e,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&Sr.default.createElement(e_e,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&Sr.default.createElement("div",null,Sr.default.createElement(ie,{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 r_e({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:Xs.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}},Xs.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},Xs.default.createElement($e,{color:"var(--color-warning-text)"},"Needs input"),Xs.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:U,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),Xs.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=>Xs.default.createElement(af,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>Xs.default.createElement(af,{key:n.id,request:n,initialOutcome:o})))}function nD({agentId:e=null}){let{requests:t}=N2({agentId:e}),[r,n]=(0,Xs.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=Ah(t).filter(s=>!o.has(s.id));return Xs.default.createElement(r_e,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var xr=X(J());function BX(e=[],t=""){let r=t.trim().toLowerCase();return e.filter(n=>n.status!=="archived"&&n.status!=="observed").filter(n=>!r||`${n.name||""} ${n.description||""}`.toLowerCase().includes(r)).sort((n,o)=>{let a=i=>i.status==="active"?0:1;return a(n)-a(o)||String(n.name||"").localeCompare(String(o.name||""))})}var FX=e=>`/agents/${e.id}/run?new=1`;function _0({inline:e=!1,label:t="New interaction"}){let[r,n]=(0,xr.useState)(e),[o,a]=(0,xr.useState)(null),[i,s]=(0,xr.useState)(null),[l,u]=(0,xr.useState)(""),c=(0,xr.useRef)(null);(0,xr.useEffect)(()=>{!r||o||fetch("/api/agents").then(f=>{if(!f.ok)throw new Error(`HTTP ${f.status}`);return f.json()}).then(f=>a(f.agents||[])).catch(f=>s(f.message))},[r,o]),(0,xr.useEffect)(()=>{if(e||!r)return;let f=m=>{c.current&&!c.current.contains(m.target)&&n(!1)};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[e,r]);let d=(0,xr.useMemo)(()=>BX(o||[],l),[o,l]),p=xr.default.createElement("div",{"data-testid":"new-interaction-agents"},(o?.length||0)>6&&xr.default.createElement("input",{type:"search",value:l,onChange:f=>u(f.target.value),placeholder:"Find an agent","aria-label":"Find an agent",autoFocus:!e,className:"w-full mb-2 px-3 py-1.5 text-sm rounded-lg",style:{background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"}}),i&&xr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-error)"}},"Could not load agents: ",i),!o&&!i&&xr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-text-muted)"}},"Loading agents\u2026"),o&&d.length===0&&xr.default.createElement(tn,null,o.length===0?"No agents in this workspace yet.":"No agent matches."," ",xr.default.createElement("a",{href:"#",onClick:f=>{f.preventDefault(),st("/agents/new")},style:{color:"var(--color-info)"}},"Create an agent")),xr.default.createElement("ul",{className:"space-y-1 max-h-80 overflow-y-auto"},d.map(f=>xr.default.createElement("li",{key:f.id},xr.default.createElement("button",{type:"button","data-testid":`new-interaction-agent-${f.id}`,onClick:()=>st(FX(f)),className:"w-full text-left px-3 py-2 rounded-lg block",style:{border:"1px solid var(--color-border)",background:"var(--color-card)",cursor:"pointer"}},xr.default.createElement("span",{className:"flex items-center justify-between gap-2"},xr.default.createElement("span",{className:"text-sm font-medium truncate min-w-0",style:{color:"var(--color-text-primary)"}},f.name),f.status&&f.status!=="active"&&xr.default.createElement(ve,{tone:"muted"},f.status)),xr.default.createElement("span",{className:"block truncate",style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},f.provider,"/",f.model),f.description&&xr.default.createElement("span",{className:"block text-xs truncate",style:{color:"var(--color-text-secondary)"}},f.description))))));return e?xr.default.createElement(je,{testId:"new-interaction-card"},xr.default.createElement("div",{className:"flex items-baseline justify-between mb-3 gap-3"},xr.default.createElement("div",null,xr.default.createElement($e,null,"Your agents"),xr.default.createElement("p",{className:"text-sm mt-1",style:{color:"var(--color-text-secondary)"}},"Start a new interaction. It runs with the instructions, tools and MCP servers saved on the agent."))),p):xr.default.createElement("div",{ref:c,className:"relative"},xr.default.createElement(ie,{variant:"primary",size:"sm",testId:"new-interaction",onClick:()=>n(f=>!f)},t),r&&xr.default.createElement("div",{className:"z-50 p-3 rounded-xl max-md:fixed max-md:inset-x-0 max-md:bottom-0 max-md:rounded-b-none max-md:max-h-[80vh] max-md:overflow-y-auto md:absolute md:right-0 md:mt-2 md:z-20 md:w-[360px]","data-testid":"new-interaction-popover",style:{background:"var(--color-card)",border:"1px solid var(--color-border)",boxShadow:"0 8px 24px rgba(0,0,0,0.12)"}},xr.default.createElement($e,{style:{display:"block",marginBottom:8}},"Start a conversation with"),p))}var Ze=X(J());var O2=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var Zs=(e,t)=>`${e} ${t}${e===1?"":"s"}`,C0=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},P2=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),WX=e=>String(e??"").replace(/\s+/g," ").trim(),sf=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Eh=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},M2=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)}`},oD=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`},qX=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:Zs(Number(t),"turn"),M2(r),oD(n)].filter(Boolean).join(" \xB7 "),KX=(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`:""}`},ot=(e,t)=>{let r=i=>Array.isArray(i)?i.filter(Boolean).join(", "):typeof i=="string"?i:"",n=sf(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},n_e={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"}},VX=e=>n_e[e]||{label:P2(e)||"Unknown",tone:"neutral"},I2=e=>["pending","provisioning"].includes(e?.status),GX=e=>e?.status==="ready",o_e={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"}},ks=e=>o_e[e]||{label:P2(e)||"Unknown",tone:"neutral"},Js=e=>["queued","running"].includes(e?.status),T0=e=>["succeeded","failed","cancelled"].includes(e?.status),aD=e=>T0(e)&&e?.diff_pending===!0,iD=e=>T0(e)&&!aD(e),YX=e=>e?.status==="cancelled"&&iD(e)&&e?.diff==null&&!(Number(e?.event_count)>0),sD=e=>{if(!T0(e)){let t=Number(e?.event_count)||0;return t>0?Zs(t,"event"):""}return qX(null,e)},XX=e=>[ks(e?.status).label,sD(e)].filter(Boolean).join(" \xB7 "),ZX=(e,t=80)=>{let r=String(e||"").split(` +`).map(n=>n.trim()).find(Boolean)||"";return C0(r,t)||"(empty prompt)"},xd=(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},JX=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?xd(e,t,r):e,QX=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},RX=(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}},eZ=(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]},Ol=(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},a_e={Bash:e=>e.command,Read:(e,t)=>Ol(e.file_path,t),Write:(e,t)=>Ol(e.file_path,t),Edit:(e,t)=>Ol(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${Zs(e.edits.length,"edit")})`:"";return`${Ol(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>Ol(e.notebook_path,t),NotebookRead:(e,t)=>Ol(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${Ol(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${Ol(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>Ol(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)?Zs(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},i_e=["command","file_path","path","url","query","pattern","description","name","prompt"],s_e=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!sf(t))return C0(WX(typeof t=="string"?t:Eh(t)),120);let n=a_e[e],o=n?n(t,r):null;if(o==null||o===""){let a=i_e.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?Ol(t[a],r):t[a]:o=Object.keys(t).length?Eh(t):""}return C0(WX(o),120)},l_e=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]":Eh(t)).join(` +`):Eh(e),u_e=(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",r_e=e=>{if(!YX(e))return"Done";if(jX[e.subtype])return jX[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},n_e=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?Xs(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: ${C2(e.subtype).toLowerCase()}`:"System event"}},o_e=/^(hook_|thinking_tokens$)/,a_e=e=>o_e.test(String(e?.subtype||"")),i_e=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: ${C2(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},k2=(e,t)=>({kind:"unknown",label:String(e||"event"),text:S0(Ah(t),300)}),$X=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!af(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:Rke(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=t_e(e_e(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)]}},s_e=(e,t)=>{let r=e.message?.content;return typeof r=="string"?$X(r,e.type,t):Array.isArray(r)?r.flatMap(n=>$X(n,e.type,t)):[k2(e.type,e)]},l_e=(e,t={toolNames:{}})=>{if(t.toolNames||={},!af(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:Ah(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),a_e(e)?[]:[n_e(e)];case"rate_limit_event":return i_e(e);case"assistant":case"user":return n(s_e(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=LX(r_e(e),e);return[{kind:"result",tone:YX(e)?"error":"success",text:o?`${a} \xB7 ${Xs(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[k2(e.type,e)]}},N2=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>l_e(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},XX=/^diff (--git|--cc|--combined) /,u_e="\u2026 diff truncated",E0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` -`).map(n=>{if(XX.test(n))return t=!0,{text:n,kind:"meta"};if(n===u_e)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"}})},ZX=e=>{let t=E0(e),r=t.filter(a=>a.kind==="meta"&&XX.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${Xs(r,"file")} changed \xB7 +${n} \u2212${o}`},N0="default",T0="other",JX=["sonnet","opus","haiku"],c_e=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,tD="actionagent.claudeCode.modelChoice",QX=(e="claude_code")=>[{value:N0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:JX.map(t=>({value:t,label:t})),{value:T0,label:"Other\u2026"}],rD=e=>e===N0||e===T0||JX.includes(e),nD=(e,t="")=>{if(!rD(e)||e===N0)return{model:null};if(e!==T0)return{model:e};let r=String(t??"").trim();return r?c_e.test(r)?{model:r}:{error:`"${S0(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},RX=(e,t,r,n="claude_code")=>{let{model:o}=nD(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},T2=e=>{let t={choice:N0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!af(r)||!rD(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},eZ=(e,t="")=>JSON.stringify({choice:rD(e)?e:N0,custom:String(t??"").slice(0,100)}),oD=e=>e?.model||"default model",k0="api_key",_0="local_login",tZ="claude /login",rZ="sk-ant-api03-\u2026",nZ="https://platform.claude.com",oZ="https://code.claude.com/docs/en/legal-and-compliance.md",O2=e=>{let t=af(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===_0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?_0:k0,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}},aZ=(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===_0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:_0,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:tZ}}return t?t.configured&&t.needs_replacing===!0?{view:k0,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:k0,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}},iZ=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===_0?{text:"Claude Code is not logged in on this machine. Run",loginHint:tZ,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},C0="local_login",sZ="codex login",P2=e=>{let t=af(e?.codex_login)?e.codex_login:{},r=e?.codex_auth===C0;return{supported:e?.codex_sessions_supported===!0,mode:r?C0:k0,connected:e?.codex_connected===!0,loggedIn:r&&t.logged_in===!0,authMethod:r&&typeof t.auth_method=="string"&&t.auth_method?t.auth_method:null}},lZ=(e,t)=>{let r={view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,loginHint:null};if(!e)return r;if(e.mode===C0){let n=e.authMethod?` (${e.authMethod})`:"";return{view:C0,status:e.loggedIn?`Using this machine's Codex login \xB7 logged in${n}`:"Using this machine's Codex login \xB7 not logged in",tone:e.loggedIn?"success":"error",keyForm:!1,loginHint:e.loggedIn?null:sZ}}return t?{view:k0,status:t.configured?`Connected \xB7 ${t.hint}`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,loginHint:null}:r},uZ=e=>!e||e.supported!==!0?{text:"This sandbox backend does not support Codex.",loginHint:null,after:null}:e.connected===!0?null:e.mode===C0?{text:"Codex is not logged in on this machine. Run",loginHint:sZ,after:"as the user the dashboard runs as."}:{text:"Connect an OpenAI API key in the Codex integration below.",loginHint:null,after:null};var dZ=1500,aD=[{id:"all",label:"All"},{id:"agent",label:"Agent runs"},{id:"claude_code",label:"Claude Code"},{id:"codex",label:"Codex"}],d_e=new Set(aD.map(e=>e.id)),iD=e=>e?.source==="code_session"||/^code-\d+$/.test(String(e?.id??"")),sf=e=>{let t=/^code-(\d+)$/.exec(String(e??""));return t?Number(t[1]):null},pZ=(e,t="")=>{let r=new URLSearchParams(t),n=d_e.has(r.get("source"))?r.get("source"):"all",o=/^\d+$/.test(r.get("project")||"")?Number(r.get("project")):null,a=String(e||"").replace(/^\/interactions\/?/,"").replace(/\/$/,"");if(a==="latest")return{view:"latest",source:n,project:o,codeId:null};let i=sf(a);return i?{view:"conversation",source:n,project:o,codeId:i}:{view:"list",source:n,project:o,codeId:null}},ks=e=>`/interactions/code-${e}`,M2=({source:e="all",project:t=null}={})=>{let r=new URLSearchParams;e&&e!=="all"&&r.set("source",e),t&&r.set("project",String(t));let n=r.toString();return`/interactions${n?`?${n}`:""}`},sD=({minutes:e=null,agentId:t=null,source:r="all",project:n=null}={})=>{let o=new URLSearchParams;return e&&o.set("minutes",String(e)),t&&o.set("agent_id",String(t)),r&&r!=="all"&&o.set("source",r),n&&o.set("project_id",String(n)),o.toString()},fZ=e=>{let t=(e||[]).filter(iD);if(t.length===0)return null;let r=[...t].sort((n,o)=>String(o.last_activity_at).localeCompare(String(n.last_activity_at)));return r.find(n=>n.active)||r[0]},mZ=e=>(e||[]).filter(t=>(t.events||[]).length>0).map(t=>`after[${encodeURIComponent(t.id)}]=${t.events_offset+t.events.length}`).join("&"),gZ=(e,t)=>{if(!t)return e;if(!e)return t;let r=new Map((e.turns||[]).map(o=>[o.id,o])),n=(t.turns||[]).map(o=>{let a=r.get(o.id);if(!a||o.events_offset===0)return o;let i=(a.events||[]).slice(0,o.events_offset-a.events_offset);return{...o,events_offset:a.events_offset,events:[...i,...o.events||[]]}});return{...t,turns:n}},hZ=e=>(e?.turns||[]).some(Zs),yZ=e=>{let t=[`Turn ${Number(e.turn_index)+1}`];return e.total_cost_usd!=null&&t.push(A2(e.total_cost_usd)),e.duration_ms!=null&&t.push(JI(e.duration_ms)),e.diff_stat&&t.push(`${Xs(e.diff_stat.files,"file")} +${e.diff_stat.additions} \u2212${e.diff_stat.deletions} since checkout`),t.join(" \xB7 ")},I2=e=>{let t=[Xs(e.turn_count??(e.turns||[]).length,"turn")];e.total_cost_usd&&t.push(A2(e.total_cost_usd));let r=e.tokens?.total||0;return r&&t.push(`${r>=1e3?`${(r/1e3).toFixed(1)}k`:r} tokens`),t.join(" \xB7 ")},vZ=e=>{let t=e?.turns||[],r=t[t.length-1];if(!r||Zs(r))return null;for(let n of[...r.events||[]].reverse()){let o=n?.message?.content;if(Array.isArray(o)){for(let a of[...o].reverse())if(a?.type==="tool_use"&&/(^|__)browser_request_person$/.test(String(a.name||""))){let i=typeof a.input?.reason=="string"?a.input.reason:null;if(i)return{reason:i,turn:r.turn_index}}}}return null},P0=e=>e?.runner==="codex"?"Codex":"Claude Code",xZ=(e,{handoff:t=null}={})=>{if(e?.sandbox_status&&e.sandbox_status!=="ready")return`The sandbox is ${e.sandbox_status}: boot it again to continue this conversation.`;let r=(e?.turns||[]).filter(a=>a.status==="queued").length,n=(e?.turns||[]).some(a=>a.status==="running"),o=t?` ${P0(e)} will be told you drove the browser.`:"";return n?`Your message waits for the turn that runs${r?` (and ${Xs(r,"more")})`:""}.${o}`:`Sends the next turn, resuming this conversation.${o}`},bZ=(e,t)=>{let r=new URLSearchParams(e||"").get("browser");return r==="1"||r==="0"?r==="1":t==="1"},lf=50,D2=25,j2=75,cZ=5,O0=e=>{let t=Number(e);return Number.isFinite(t)?Math.min(j2,Math.max(D2,Math.round(t*10)/10)):lf},wZ=(e,{left:t,width:r})=>r>0?O0((e-t)/r*100):lf,SZ=(e,t)=>{switch(t){case"ArrowLeft":return O0(e-cZ);case"ArrowRight":return O0(e+cZ);case"Home":return D2;case"End":return j2;case"Enter":return lf;default:return null}};var Oe=X(J());var Ht=X(J());var I0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},lD={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 uD({title:e,onClose:t,children:r}){let n=(0,Ht.useRef)(null);return(0,Ht.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),Ht.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)"}},Ht.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},Ht.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),Ht.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")),Ht.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function M0(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 p_e=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 uf({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,Ht.useState)(null),[i,s]=(0,Ht.useState)(!1),[l,u]=(0,Ht.useState)(""),[c,d]=(0,Ht.useState)(!1),[p,f]=(0,Ht.useState)(null),m=(0,Ht.useRef)(null),g=(0,Ht.useRef)(t);g.current=t,(0,Ht.useEffect)(()=>{let x=!1;return M0(n).then(v=>{x||a(v)}).catch(v=>{x||f(v.message)}),()=>{x=!0}},[n]),(0,Ht.useEffect)(()=>{if(!i)return;let x=!1,v,k=async()=>{try{let S=await M0(n);if(x)return;if(a(S),S.authorize_url&&m.current&&(m.current.location=S.authorize_url,m.current=null),S.logged_in){s(!1),u(""),d(!1),r?.(),g.current?.();return}if(!["starting","awaiting_code","submitted"].includes(S.status)){f(p_e(S.status)),d(!1);return}v=setTimeout(k,1200)}catch(S){x||(f(S.message),d(!1))}};return v=setTimeout(k,300),()=>{x=!0,clearTimeout(v)}},[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 M0(n,"POST")),s(!0)}catch(x){m.current?.close(),m.current=null,f(x.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await M0(n,"DELETE")),r?.()}catch(x){f(x.message)}finally{d(!1)}},y=async x=>{if(x.preventDefault(),!l.trim()||c)return;let v=l.trim();u(""),d(!0),f(null);try{a(await M0(`${n}/code`,"POST",{claude_login_code:v}))}catch(k){f(k.message),d(!1)}};return Ht.default.createElement("section",{style:I0,"data-testid":"sandbox-claude-login"},Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},Ht.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},Ht.default.createElement("strong",null,"Claude Code"),Ht.default.createElement(be,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&Ht.default.createElement(ie,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),Ht.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&&Ht.default.createElement(ie,{variant:"primary",onClick:b,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&Ht.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&Ht.default.createElement(uD,{title:"Connect your Claude subscription",onClose:h},Ht.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."),Ht.default.createElement("div",{style:{...I0,fontSize:12}},Ht.default.createElement("strong",null,e.repository||"Checkout sandbox"),Ht.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?Ht.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"):Ht.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),Ht.default.createElement("form",{onSubmit:y,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},Ht.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),Ht.default.createElement("input",{id:`claude-login-code-${e.session_id}`,type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,maxLength:2048,value:l,onChange:x=>u(x.target.value),placeholder:"Paste the code from Claude",style:lD,disabled:c||o?.status!=="awaiting_code"}),Ht.default.createElement(ie,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&Ht.default.createElement(Ht.default.Fragment,null,Ht.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),Ht.default.createElement(ie,{onClick:b,disabled:c},"Start sign-in again")),Ht.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 Br=X(J());function D0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,Br.useState)(null),[i,s]=(0,Br.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 Br.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},Br.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Br.default.createElement("strong",{style:{fontSize:13}},"Before & after"),Br.default.createElement(be,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&Br.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),Br.default.createElement("div",{style:{overflowX:"auto"}},Br.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},Br.default.createElement("thead",null,Br.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(f=>Br.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)))),Br.default.createElement("tbody",null,u.map(f=>Br.default.createElement("tr",{key:`${f.scenario_key}/${f.model}/${f.trial??1}`},Br.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.scenario_key,Br.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},f.model,f.trial>1?` \xB7 trial ${f.trial}`:"")),Br.default.createElement("td",{style:{padding:10}},f.before," \xB7 ",p(f.before_score)),Br.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)}`,Br.default.createElement("div",{style:{fontSize:10,marginTop:4}},f.change.replaceAll("_"," "))),Br.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.score_change==null?"\u2014":`${f.score_change>0?"+":""}${p(f.score_change)}`),Br.default.createElement("td",{style:{padding:10}},f.fault||(f.after?"none":f.before_fault)||"\u2014")))))),Br.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},Br.default.createElement("a",{href:rt(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&Br.default.createElement("a",{href:rt(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&Br.default.createElement(ie,{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)&&Br.default.createElement(ie,{size:"sm",onClick:n},"Try again")),o?.run&&Br.default.createElement("a",{style:{fontSize:12},href:rt(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&Br.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var sn=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)}`},j0=e=>e==null?"\u2014":sn(e),$2=(e,t)=>e==null&&t==null?"\u2014":`${j0(e)}\u2192${j0(t)}`,zn=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`},$0=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)}`},L0=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var Eh=(e,t="%",r=0)=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let n=Number(e);return`${n>0?"+":n<0?"-":""}${Math.abs(n).toFixed(r)}${t}`},_o=e=>{if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t} min ago`;if(t<1440){let n=Math.floor(t/60);return`${n} hour${n===1?"":"s"} ago`}let r=Math.floor(t/1440);return`${r} day${r===1?"":"s"} ago`},qn=(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 f_e=2e4,_Z=()=>{try{return T2(window.localStorage.getItem(tD))}catch{return T2(null)}},m_e=(e,t)=>{try{window.localStorage.setItem(tD,eZ(e,t))}catch{}},EZ=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),CZ={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 Js({tone:e="neutral",children:t}){let{darkMode:r}=ut(),n=CZ[e]||CZ.neutral;return Oe.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"&&Oe.default.createElement("span",{className:"mr-1 h-1.5 w-1.5 rounded-full bg-current animate-pulse"}),t)}function z0({sandbox:e,claudeCode:t,codex:r,onRecheckConnection:n,readOnly:o=!1,focusSessionId:a=null,title:i="Code sessions"}){let{darkMode:s}=ut(),l=`/api/sandboxes/${encodeURIComponent(e.session_id)}/code_sessions`,[u,c]=(0,Oe.useState)(null),[d,p]=(0,Oe.useState)(null),[f,m]=(0,Oe.useState)(null),[g,b]=(0,Oe.useState)(null),[h,y]=(0,Oe.useState)(0),[x,v]=(0,Oe.useState)(0),[k,S]=(0,Oe.useState)(""),[w,_]=(0,Oe.useState)("claude_code"),A=w==="codex"?"Codex":"Claude Code",[C,O]=(0,Oe.useState)(_Z),[D,H]=(0,Oe.useState)(!1),[$,Z]=(0,Oe.useState)(!1),[N,P]=(0,Oe.useState)(null),M=(0,Oe.useRef)(null),I=(0,Oe.useRef)(!0),j=(0,Oe.useCallback)(async()=>{let E=await fetch(l),W=await E.json().catch(()=>({}));if(!E.ok)throw new Error(ot(W,`Could not load code sessions (HTTP ${E.status}).`));return W.code_sessions||[]},[l]);(0,Oe.useEffect)(()=>{let E=!1;return c(null),p(null),j().then(W=>{if(E)return;c(W);let F=W.find(B=>B.id===a)||W.find(Zs)||W[0];p(B=>B??F?.id??null)}).catch(W=>{E||(c([]),P(W.message))}),()=>{E=!0}},[j]),(0,Oe.useEffect)(()=>{a!=null&&p(a)},[a]),(0,Oe.useEffect)(()=>{if(d==null)return;let E=!1,W=null,F=[],B=0;m(null),b(null),I.current=!0;let Ee=async()=>{let Ve=!0,fe=null;try{let ze=await fetch(`${l}/${d}?after=${F.length}`);fe=ze.status;let Vt=await ze.json().catch(()=>({}));if(E)return;if(!ze.ok)throw new Error(ot(Vt,`Could not load the session (HTTP ${ze.status}).`));let Ot=Vt.code_session;F=GX(F,Ot),B=0,b(null),m({...Ot,events:F}),c(Se=>vd(Se||[],KX(Ot),"id"));let Gt=Ot.evaluation_run_id&&Ot.status==="succeeded"&&Ot.diff&&!Ot.verification?.error&&!["complete","failed"].includes(Ot.verification?.status);RI(Ot)&&!Gt&&(Ve=!1)}catch(ze){if(E)return;B+=1,b(ze.message),_2(fe,B)&&(Ve=!1)}Ve&&!E&&(W=setTimeout(Ee,1500))};return Ee(),()=>{E=!0,clearTimeout(W)}},[l,d,h]);let T=(u||[]).find(Zs)||null,q=T&&T.id!==d?T.id:null,G=w==="codex"?uZ(r):iZ(t),L=G?"not_connected":T?"busy":null;(0,Oe.useEffect)(()=>{if(q==null)return;let E=!1,W=setTimeout(async()=>{try{let F=await j();E||c(F)}catch{}E||v(F=>F+1)},1500*2);return()=>{E=!0,clearTimeout(W)}},[q,x,j]);let Y=(0,Oe.useMemo)(()=>N2(f?.events),[f?.events]);(0,Oe.useLayoutEffect)(()=>{let E=M.current;E&&I.current&&(E.scrollTop=E.scrollHeight)},[Y.length]);let K=E=>{let W=E.currentTarget;I.current=W.scrollHeight-W.scrollTop-W.clientHeight<40},pe=nD(C.choice,C.custom).error||null,De=E=>{O(W=>{let F={...W,...E};return w==="claude_code"&&m_e(F.choice,F.custom),F})},se=async()=>{let E=k.trim();if(!(!E||L||D||pe)){H(!0),P(null);try{let W=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(RX(E,C.choice,C.custom,w))}),F=await W.json().catch(()=>({}));if(!W.ok)throw F.code_session&&(c(B=>vd(B||[],F.code_session,"id")),p(F.code_session.id)),new Error(ot(F,`Could not start ${A} (HTTP ${W.status}).`));c(B=>vd(B||[],F.code_session,"id")),p(F.code_session.id),S("")}catch(W){P(W.message)}finally{H(!1)}}},xe=async E=>{Z(!0),P(null);try{let W=await fetch(`${l}/${E.id}/cancel`,{method:"POST"}),F=await W.json().catch(()=>({}));if(!W.ok)throw new Error(ot(F,`Could not cancel the session (HTTP ${W.status}).`));c(B=>vd(B||[],F.code_session,"id")),m(B=>B&&B.id===F.code_session.id?{...B,...F.code_session}:B)}catch(W){P(W.message)}finally{Z(!1)}},ue=s?"text-gray-400":"text-gray-500",R=s?"text-white":"text-gray-900",we=s?"border-gray-700":"border-gray-200",Ce=`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"}`,z=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,ee=`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"}`,ae=f&&f.id===d?f:(u||[]).find(E=>E.id===d)||null;return Oe.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${we}`},!o&&t?.mode==="sandbox_login"&&Oe.default.createElement(uf,{sandbox:e,onChange:n}),Oe.default.createElement("div",{className:"flex items-center justify-between"},Oe.default.createElement("p",{className:`text-sm font-medium ${R}`},i),Oe.default.createElement("p",{className:`text-xs ${ue}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Oe.default.createElement("div",{className:ee},N),!o&&Oe.default.createElement("div",{className:"space-y-2"},Oe.default.createElement("label",{className:`flex items-center gap-2 text-xs ${ue}`},"Agent",Oe.default.createElement("select",{"aria-label":"Coding agent",value:w,onChange:E=>{_(E.target.value),O(E.target.value==="claude_code"?_Z():T2(null))},disabled:D,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},Oe.default.createElement("option",{value:"claude_code"},"Claude Code"),Oe.default.createElement("option",{value:"codex",disabled:!r?.supported},"Codex",r?.supported?"":" (backend unavailable)"))),Oe.default.createElement("textarea",{value:k,onChange:E=>S(E.target.value),onKeyDown:E=>{E.key==="Enter"&&(E.metaKey||E.ctrlKey)&&se()},rows:3,maxLength:f_e,disabled:L==="not_connected"||D,placeholder:`What should ${A} 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"}`}),Oe.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Oe.default.createElement("label",{htmlFor:`code-session-model-${e.session_id}`,className:`text-xs ${ue}`},"Model"),Oe.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:C.choice,onChange:E=>De({choice:E.target.value}),disabled:D,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"}`},QX(w).map(E=>Oe.default.createElement("option",{key:E.value,value:E.value},E.label))),C.choice===T0&&Oe.default.createElement("input",{type:"text",value:C.custom,onChange:E=>De({custom:E.target.value}),disabled:D,maxLength:100,placeholder:w==="codex"?"Model id":"claude-sonnet-4-5","aria-label":"Model id","aria-invalid":!!pe,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"}`})),pe&&C.custom.trim()&&Oe.default.createElement("p",{className:`text-xs ${s?"text-red-300":"text-red-700"}`},pe),Oe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Oe.default.createElement("p",{className:`text-xs ${ue}`},L==="not_connected"&&Oe.default.createElement(Oe.default.Fragment,null,G.text,G.loginHint&&Oe.default.createElement(Oe.default.Fragment,null," ",Oe.default.createElement("code",{className:"font-mono"},G.loginHint)," ",G.after)," ",n&&Oe.default.createElement("button",{type:"button",onClick:n,className:z},"Check again")),L==="busy"&&Oe.default.createElement(Oe.default.Fragment,null,"A session is ",T.status," in this checkout; wait for it to finish or cancel it."," ",T.id!==d&&Oe.default.createElement("button",{type:"button",onClick:()=>p(T.id),className:z},"Show it"))),Oe.default.createElement("button",{type:"button",onClick:se,disabled:!!L||D||!k.trim()||!!pe,className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},D?"Starting\u2026":`Run ${A}`)),N&&Oe.default.createElement("div",{className:ee},N)),u&&u.length>0&&Oe.default.createElement("div",{className:"space-y-1"},Oe.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${ue}`},"Sessions"),Oe.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(E=>{let{label:W,tone:F}=Ss(E.status),B=E.id===d;return Oe.default.createElement("button",{key:E.id,type:"button",title:UX(E),onClick:()=>B?y(Ee=>Ee+1):p(E.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${B?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Oe.default.createElement(Js,{tone:F},W),Oe.default.createElement("span",{className:`text-xs ${ue}`},E.runner==="codex"?"Codex":"Claude Code"),Oe.default.createElement("span",{className:`flex-1 truncate ${R}`},HX(E.prompt)),Oe.default.createElement("span",{className:`shrink-0 text-xs font-mono ${ue}`},oD(E)),Oe.default.createElement("span",{className:`shrink-0 text-xs ${ue}`},_o(E.created_at)))}))),u===null&&Oe.default.createElement("p",{className:`text-xs ${ue}`},"Loading sessions\u2026"),ae&&Oe.default.createElement(g_e,{session:ae,rows:Y,loaded:!!(f&&f.id===ae.id),detailError:g,cancelling:$,onCancel:()=>xe(ae),onReload:()=>y(E=>E+1),transcriptRef:M,onTranscriptScroll:K,classes:{muted:ue,strong:R,border:we,secondaryButton:Ce,linkButton:z,errorBox:ee}}))}function g_e({session:e,rows:t,loaded:r,detailError:n,cancelling:o,onCancel:a,onReload:i,transcriptRef:s,onTranscriptScroll:l,classes:u}){let{darkMode:c}=ut(),{muted:d,strong:p,border:f,secondaryButton:m,linkButton:g,errorBox:b}=u,{label:h,tone:y}=Ss(e.status),x=Zs(e),v=A0(e),k=WX(e),S=Number(e.dropped_events_count)||0;return Oe.default.createElement("div",{className:`pt-3 border-t space-y-2 ${f}`},Oe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Oe.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Oe.default.createElement(Js,{tone:y},h),Oe.default.createElement("span",{className:`text-xs truncate ${d}`},[eD(e),oD(e)].filter(Boolean).join(" \xB7 "))),Oe.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},Oe.default.createElement("a",{href:rt(ks(e.conversation_id||e.id)),onClick:w=>{w.preventDefault(),st(ks(e.conversation_id||e.id))},className:g,"data-testid":"code-session-open-interaction"},"Open in Interactions"),x&&Oe.default.createElement("button",{type:"button",onClick:a,disabled:o,className:`${m} shrink-0 disabled:opacity-50`},o?"Cancelling\u2026":"Cancel"))),Oe.default.createElement("p",{className:`text-xs whitespace-pre-wrap break-words max-h-24 overflow-y-auto ${d}`},e.prompt),n&&Oe.default.createElement("div",{className:b},n),Oe.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:EZ(c)},!r&&Oe.default.createElement("p",{className:`text-xs ${d}`},"Loading transcript\u2026"),r&&t.length===0&&Oe.default.createElement("p",{className:`text-xs ${d}`},e.status==="queued"?"Waiting for the sandbox to start the agent\u2026":x?"The agent is starting\u2026":k?"Cancelled before the agent started.":"No transcript was recorded."),t.map(w=>Oe.default.createElement(cD,{key:w.key,row:w,darkMode:c,muted:d,strong:p})),S>0&&Oe.default.createElement("p",{className:`text-xs italic ${d}`},S," later event",S===1?" was":"s were"," not kept: a transcript keeps its first 1,000.")),e.error_message&&Oe.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&&Oe.default.createElement(D0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),v&&r&&Oe.default.createElement(dD,{diff:e.diff,pending:QI(e),onReload:i,muted:d,linkButton:g,darkMode:c}))}function cD({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 Oe.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${n} ${o}`},e.text);case"user_text":return Oe.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${r} ${o}`},e.text);case"thinking":return Oe.default.createElement("p",{className:`text-xs italic whitespace-pre-wrap break-words line-clamp-3 ${r} ${o}`},e.text);case"tool_use":return Oe.default.createElement("p",{className:`text-xs font-mono break-words ${o}`},Oe.default.createElement("span",{className:`font-semibold ${t?"text-blue-300":"text-blue-700"}`},e.name),e.summary&&Oe.default.createElement("span",{className:r}," ",e.summary));case"tool_result":return Oe.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 Oe.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 Oe.default.createElement("p",{className:`text-xs ${r}`},e.text);case"raw":return Oe.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},e.text);default:return Oe.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},"[",e.label,"] ",e.text)}}var AZ={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 dD({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Oe.useMemo)(()=>E0(e),[e]);return e==null?t?Oe.default.createElement("p",{className:`text-xs ${n}`},"The diff is recorded once the agent has stopped."," ",Oe.default.createElement("button",{type:"button",onClick:r,className:o},"Refresh")):Oe.default.createElement("p",{className:`text-xs ${n}`},"No diff was recorded."):i.length===0?Oe.default.createElement("p",{className:`text-xs ${n}`},"No changes in the checkout."):Oe.default.createElement("div",{className:"space-y-1"},Oe.default.createElement("p",{className:`text-xs ${n}`},"Diff \xB7 ",ZX(e)),Oe.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:EZ(a)},i.map((s,l)=>{let u=AZ[s.kind]||AZ.context;return Oe.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var gt=X(J());function L2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var NZ=["left","middle","right"];function TZ(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 z2(e,t,r){let n=TZ(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:L2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:NZ[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function OZ(e,t,r){let n=z2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:L2(e),button:NZ[e.button]||"left",clickCount:1}}var h_e=16,y_e=800;function PZ(e,t){let r=TZ(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?h_e:e.deltaMode===2?y_e:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:L2(e)}}function pD(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:L2(t)}}function MZ(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var v_e=600;function IZ(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=v_e}var fD=32*1024;function DZ(e){let t="";for(let r=0;r=1024*1024?`${Math.round(e/(1024*1024)*10)/10} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} bytes`}function $Z(e,t){let r=Array.from(e||[]);if(!t)return{error:"The page is no longer asking for a file."};if(r.length===0)return{error:"Choose a file to upload."};let n=t.multiple?t.max_files:1;if(r.length>n)return{error:n===1?"This field takes one file.":`This field takes at most ${n} files.`};let o=r.find(a=>a.size>t.max_file_bytes);return o?{error:`${o.name} is larger than ${jZ(t.max_file_bytes)}.`}:{files:r.map(a=>({name:a.name,size:a.size})),total:r.reduce((a,i)=>a+i.size,0)}}function LZ(e){if(!e)return null;let t=e.total>0?Math.min(100,Math.floor(e.sent/e.total*100)):100;return`Uploading ${jZ(e.total)}\u2026 ${t}%`}function zZ(e){return!e.fileChooser||e.control.mine?null:e.control.yours?"The page is asking for a file. Choose it in the view you are driving from.":`The page is asking ${e.control.by||"the person driving"} for a file.`}var B0={ready:!1,control:{held:!1,mine:!1,yours:!1,by:null,since:null},agent:{waiting:!1,tool:null,since:null,client:null},page:null,frameSize:null,fileChooser:null,personRequest:null,error:null};function BZ(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...B0.control,...t.control},agent:{...B0.agent,...t.agent},page:t.page||null,fileChooser:t.file_chooser||null,personRequest:t.person_request||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,client:t.client||null}};case"person_requested":return{...e,personRequest:t.request||null};case"page":return{...e,page:t.page||null};case"file_chooser":return{...e,fileChooser:t.chooser||null};case"file_upload":return t.status==="failed"?{...e,error:t.message||"The upload failed"}:e;case"error":return{...e,error:t.message||"The browser refused that"};case"clear_error":return{...e,error:null};case"reset":return B0;default:return e}}function FZ(e){if(!e.agent.waiting||!e.control.held)return null;let t=e.agent.tool?` (${e.agent.tool})`:"",r=e.agent.client||"The agent";return e.control.mine?`${r} is waiting for you to hand back control${t}.`:e.control.yours?`${r} is waiting for you to hand back control in your other view${t}.`:`${r} is waiting for ${e.control.by||"the person driving"} to hand back control${t}.`}function WZ(e){let t=e.personRequest;return!t||e.control.held?null:`${t.client||"The agent"} needs a person: ${t.reason}`}function UZ({by:e=null,takenAt:t,releasedAt:r,page:n=null}){let o=a=>Number.isFinite(a)?new Date(a).toISOString():null;return{by:e||null,taken_at:o(t),released_at:o(r),page_url:typeof n?.url=="string"&&/^https?:\/\//.test(n.url)?n.url:null}}function HZ(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 qZ(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 KZ(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 x_e={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 VZ(e,{requested:t=!1}={}){return t?null:x_e[e]||"The live view lost its connection to the browser."}var b_e={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function GZ(e){return e?.status?b_e[e.status]||{label:e.status,tone:"neutral"}:null}function YZ(e){return e?.status==="starting"||e?.status==="running"}function XZ({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}async function ZZ(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(ot(n,`Could not open the live view (HTTP ${r.status}).`));return n}var JZ=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v",w_e=1024*1024,S_e=e=>new Promise(t=>{setTimeout(t,e)});function k_e({chooser:e,upload:t,onFiles:r,onCancel:n}){let{darkMode:o}=ut(),a=o?"text-gray-400":"text-gray-500",i=o?"text-white":"text-gray-900",s=e.multiple;return gt.default.createElement("div",{role:"dialog","aria-label":"Choose a file for the page","data-testid":"live-view-file-chooser",className:`absolute inset-x-4 top-4 p-3 rounded border shadow space-y-2 ${o?"bg-gray-800 border-gray-600":"bg-white border-gray-300"}`},gt.default.createElement("p",{className:`text-sm font-medium ${i}`},"The page asked for ",s?"files":"a file"),gt.default.createElement("p",{className:`text-xs ${a}`},"Choose ",s?`up to ${e.max_files} files`:"one"," from this computer, or drop ",s?"them":"it"," on the view. ",e.accept?`The page takes ${e.accept}. `:"","Only the browser receives the files, and they stay in the sandbox until the browser stops."),t?gt.default.createElement("p",{className:`text-xs ${i}`,role:"status"},LZ(t)):gt.default.createElement("input",{type:"file",multiple:s,accept:e.accept||void 0,onChange:l=>r(l.target.files),"aria-label":s?"Files for the page":"File for the page",className:`block text-xs ${i}`}),gt.default.createElement("button",{type:"button",onClick:n,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"))}function F0({sessionId:e,headed:t=!1,watchOnOpen:r=!1,onHandBack:n=null,handBackLabel:o="Hand back"}){let{darkMode:a}=ut(),[i,s]=(0,gt.useReducer)(BZ,B0),[l,u]=(0,gt.useState)("idle"),[c,d]=(0,gt.useState)(null),[p,f]=(0,gt.useState)(!1),[m,g]=(0,gt.useState)(null),b=(0,gt.useRef)(null),h=(0,gt.useRef)(!1),y=(0,gt.useRef)(0),x=(0,gt.useRef)(!1),v=(0,gt.useRef)(null),k=(0,gt.useRef)(null),S=(0,gt.useRef)({pending:null,decoding:!1}),w=(0,gt.useRef)({message:null,scheduled:!1}),_=(0,gt.useRef)(null),A=(0,gt.useRef)(null),C=(0,gt.useRef)(0),O=i.control.mine,D=(0,gt.useRef)(null),H=(0,gt.useRef)(i);H.current=i,(0,gt.useEffect)(()=>{if(O){D.current=i.control.since||Date.now();return}if(D.current===null)return;let F=D.current;D.current=null,n?.(UZ({by:null,takenAt:F,releasedAt:Date.now(),page:H.current.page}))},[O]);let $=(0,gt.useCallback)(F=>{let B=b.current;F&&B?.readyState===WebSocket.OPEN&&B.send(JSON.stringify(F))},[]),Z=(0,gt.useCallback)(F=>{let B=S.current;if(B.pending=F,B.decoding)return;let Ee=()=>{let Ve=B.pending;if(B.pending=null,B.decoding=!!Ve,!Ve)return;let fe=new Image;fe.onload=()=>{let ze=v.current;ze&&((ze.width!==fe.naturalWidth||ze.height!==fe.naturalHeight)&&(ze.width=fe.naturalWidth,ze.height=fe.naturalHeight),ze.getContext("2d")?.drawImage(fe,0,0)),Ee()},fe.onerror=Ee,fe.src=`data:image/jpeg;base64,${Ve.data}`};Ee()},[]),N=(0,gt.useCallback)(()=>{y.current+=1;let F=b.current;if(!F){u("idle");return}x.current&&F.readyState===WebSocket.OPEN&&F.send(JSON.stringify({type:"hand_back"})),h.current=!0,F.close(1e3)},[]);(0,gt.useEffect)(()=>N,[N]);let P=async()=>{y.current+=1;let F=y.current;d(null),u("connecting");try{let{ticket:B,url:Ee}=await ZZ(e,"view");if(y.current!==F)return;let Ve=new WebSocket(Ee);b.current=Ve,h.current=!1,Ve.onopen=()=>Ve.send(JSON.stringify({type:"auth",ticket:B})),Ve.onmessage=fe=>{let ze;try{ze=JSON.parse(fe.data)}catch{return}ze.type==="ready"&&u("open"),ze.type==="frame"&&Z(ze),(ze.type==="file_upload"&&ze.status!=="progress"||ze.type==="file_chooser"&&!ze.chooser)&&(C.current+=1,g(null)),s(ze)},Ve.onclose=fe=>{b.current===Ve&&(b.current=null,C.current+=1,g(null),u("idle"),s({type:"reset"}),d(VZ(fe.code,{requested:h.current})))}}catch(B){if(y.current!==F)return;u("idle"),d(B.message)}},M=(0,gt.useRef)(!1);(0,gt.useEffect)(()=>{!r||M.current||(M.current=!0,P())},[r]);let I=async()=>{s({type:"clear_error"}),f(!0);try{let{ticket:F}=await ZZ(e,"control");$({type:"take_control",ticket:F})}catch(F){d(F.message)}finally{f(!1)}},j=()=>{$({type:"hand_back"}),v.current?.blur()},T=async F=>{let B=i.fileChooser,Ee=$Z(F,B);if(Ee.error){d(Ee.error);return}let Ve=b.current;if(!Ve||Ve.readyState!==WebSocket.OPEN)return;C.current+=1;let fe=C.current;d(null),s({type:"clear_error"}),$({type:"file_upload",chooser:B.id,files:Ee.files});let ze=0;g({sent:ze,total:Ee.total});try{for(let Vt of Array.from(F))for(let Ot=0;Otw_e&&C.current===fe;)await S_e(50);if(C.current!==fe||Ve.readyState!==WebSocket.OPEN)return;let Gt=new Uint8Array(await Vt.slice(Ot,Ot+fD).arrayBuffer());$({type:"file_chunk",chooser:B.id,data:DZ(Gt)}),ze+=Gt.length,g({sent:ze,total:Ee.total})}}catch(Vt){d(`Could not read the file: ${Vt.message}`),q()}},q=()=>{C.current+=1,g(null),i.fileChooser&&$({type:"file_cancel",chooser:i.fileChooser.id})},G=O&&!!i.fileChooser,L=G?{onDragOver:F=>{F.preventDefault(),F.dataTransfer.dropEffect="copy"},onDrop:F=>{F.preventDefault(),m||T(F.dataTransfer.files)}}:{};(0,gt.useEffect)(()=>{x.current=O,O?v.current?.focus():v.current?.blur()},[O]),(0,gt.useEffect)(()=>{let F=v.current;if(!F||!O)return;let B=Ee=>{Ee.preventDefault(),$(PZ(Ee,F.getBoundingClientRect()))};return F.addEventListener("wheel",B,{passive:!1}),()=>F.removeEventListener("wheel",B)},[O,$,l]);let Y=()=>v.current?.getBoundingClientRect(),K=F=>{F&&(_.current={x:F.x,y:F.y},$(F))},pe=O?{onMouseDown:F=>{F.preventDefault(),v.current?.focus(),K(z2("down",F,Y())),window.addEventListener("mouseup",B=>K(OZ(B,Y(),_.current)),{once:!0})},onMouseMove:F=>{let B=w.current;B.message=z2("move",F,Y()),!B.scheduled&&(B.scheduled=!0,requestAnimationFrame(()=>{B.scheduled=!1,K(B.message),B.message=null}))},onContextMenu:F=>F.preventDefault(),onKeyDown:F=>{if(IZ(F,A.current)){F.preventDefault(),A.current=null,k.current?.focus();return}if(A.current=F.key==="Escape"&&!F.repeat?F.timeStamp:null,JZ(F))return;let B=pD("down",F);B&&(F.preventDefault(),$(B))},onKeyUp:F=>{if(JZ(F))return;let B=pD("up",F);B&&(F.preventDefault(),$(B))},onPaste:F=>{F.preventDefault(),$(MZ(F.clipboardData?.getData("text/plain")))}}:{},De=a?"text-gray-400":"text-gray-500",se=a?"text-white":"text-gray-900",xe=`px-3 py-1 text-sm rounded disabled:opacity-50 ${a?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,ue="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",R=FZ(i),we=WZ(i),Ce=HZ(i),z=qZ(i,{taking:p}),ee=KZ(i.page),ae=zZ(i),E=l==="open",{frameSize:W}=i;return gt.default.createElement("div",{className:"space-y-2"},gt.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},l==="idle"?gt.default.createElement("button",{type:"button",onClick:P,className:xe},"Watch live"):gt.default.createElement("button",{type:"button",onClick:N,className:xe},"Stop watching"),E&&(O?gt.default.createElement("button",{ref:k,type:"button",onClick:j,className:ue},o):gt.default.createElement("button",{ref:k,type:"button",onClick:I,disabled:z.disabled,className:ue},z.label)),Ce&>.default.createElement("span",{className:`text-xs font-medium ${se}`},Ce),l==="connecting"&>.default.createElement("span",{className:`text-xs ${De}`},"Connecting\u2026")),c&>.default.createElement("p",{className:`text-xs ${De}`,role:"status"},c),i.error&>.default.createElement("p",{className:`text-xs ${a?"text-red-400":"text-red-600"}`,role:"alert"},i.error),we&>.default.createElement("p",{role:"alert","data-testid":"live-view-person-request",className:`p-2 rounded text-xs border ${a?"bg-blue-900/20 border-blue-800 text-blue-200":"bg-blue-50 border-blue-200 text-blue-800"}`},we,E?" Take over to help, then hand back.":" Watch live, then take over to help."),R&>.default.createElement("p",{role:"status",className:`p-2 rounded text-xs border ${a?"bg-amber-900/20 border-amber-800 text-amber-300":"bg-amber-50 border-amber-200 text-amber-800"}`},R),l!=="idle"&>.default.createElement("div",{className:"space-y-1"},ee&>.default.createElement("p",{className:`text-xs font-mono truncate ${De}`,title:ee},ee),ae&>.default.createElement("p",{className:`text-xs ${De}`,role:"status"},ae),gt.default.createElement("div",{className:"relative","data-testid":"live-view-frame",...L},gt.default.createElement("canvas",{ref:v,tabIndex:O?0:-1,role:O?"application":"img","aria-label":O?"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 ${O?"cursor-default outline-none focus:ring-2 focus:ring-blue-500":""} ${a?"border-gray-700":"border-gray-200"}`,style:{aspectRatio:W?`${W.width} / ${W.height}`:"16 / 10"},...pe}),G&>.default.createElement(k_e,{chooser:i.fileChooser,upload:m,onFiles:F=>{T(F)},onCancel:q})),O&>.default.createElement("p",{className:`text-xs ${De}`},"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&>.default.createElement("p",{className:`text-xs ${De}`},"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."))}var __e={settings:"Started from Settings",boot_fix:"Fixing a failed boot",evaluation_fix:"Implementing an evaluation fix",chat:"Chat"};function C_e({turn:e,sandboxId:t,darkMode:r,muted:n,strong:o}){let a=(0,Ze.useMemo)(()=>N2(e.events),[e.events]),[i,s]=(0,Ze.useState)(void 0),l=Ss(e.status),u=async()=>{if(i!==void 0){s(void 0);return}let c=await fetch(`/api/sandboxes/${encodeURIComponent(t)}/code_sessions/${e.id}?after=1000000000`),d=await c.json().catch(()=>({}));s(c.ok?d.code_session?.diff??null:null)};return Ze.default.createElement("li",{className:`rounded border p-3 space-y-2 ${r?"border-gray-700":"border-gray-200"}`,"data-testid":"code-interaction-turn"},Ze.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ze.default.createElement(Js,{tone:l.tone},l.label),Ze.default.createElement("span",{className:`text-xs ${n}`},yZ(e))),e.context_note&&Ze.default.createElement("p",{className:`text-xs italic ${n}`,title:"Sent to Claude Code ahead of the message"},"Dashboard note: ",e.context_note),Ze.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words font-medium ${o}`},e.prompt),Ze.default.createElement("div",{className:"space-y-1"},a.length===0&&Ze.default.createElement("p",{className:`text-xs ${n}`},Zs(e)?"Waiting for Claude Code\u2026":"No transcript was recorded."),a.map(c=>Ze.default.createElement(cD,{key:c.key,row:c,darkMode:r,muted:n,strong:o}))),e.error_message&&Ze.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`},e.error_message),!Zs(e)&&Ze.default.createElement("div",{className:"space-y-1"},Ze.default.createElement("button",{type:"button",onClick:u,className:`text-xs underline ${n}`},i===void 0?"Show the checkout\u2019s diff after this turn":"Hide the diff"),i!==void 0&&Ze.default.createElement(dD,{diff:i,pending:!1,muted:n,darkMode:r,linkButton:"underline"})))}function mD({rootId:e,onBack:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Ze.useState)(null),[a,i]=(0,Ze.useState)(null),[s,l]=(0,Ze.useState)(""),[u,c]=(0,Ze.useState)(!1),[d,p]=(0,Ze.useState)(null),[f,m]=(0,Ze.useState)(E_e),g=(0,Ze.useRef)(null);g.current=n;let b=(0,Ze.useRef)(null),h=(0,Ze.useRef)(null),y=(0,Ze.useRef)(null),x=T_e(h,!!n),v=(0,Ze.useRef)(null),[k,S]=(0,Ze.useState)(A_e),[w,_]=(0,Ze.useState)(!1),A=f&&!!x,C=B=>{S(B),QZ(B)},O=(0,Ze.useRef)(null),D=(0,Ze.useRef)(k);D.current=k;let H=B=>{B.button!==0||!v.current||(B.preventDefault(),B.currentTarget.setPointerCapture?.(B.pointerId),O.current=v.current.getBoundingClientRect(),_(!0))},$=B=>{if(!O.current)return;let Ee=wZ(B.clientX,O.current);D.current=Ee,S(Ee)},Z=B=>{O.current&&(B.currentTarget.releasePointerCapture?.(B.pointerId),O.current=null,_(!1),QZ(D.current))},N=B=>{let Ee=SZ(k,B.key);Ee!==null&&(B.preventDefault(),C(Ee))},P=B=>{m(Ee=>{let Ve=typeof B=="function"?B(Ee):B;return N_e(Ve),Ve})},M=(0,Ze.useCallback)(async()=>{let B=mZ(g.current?.turns),Ee=await fetch(`/api/interactions/code-${e}${B?`?${B}`:""}`),Ve=await Ee.json().catch(()=>({}));if(!Ee.ok){i(ot(Ve,`Could not load the conversation (HTTP ${Ee.status}).`));return}i(null),o(fe=>gZ(fe,Ve.interaction))},[e]);(0,Ze.useEffect)(()=>{o(null),g.current=null,M()},[M]);let I=hZ(n);(0,Ze.useEffect)(()=>{if(!I)return;let B=setInterval(()=>{M()},dZ);return()=>clearInterval(B)},[I,M]);let j=n?.turns?.length||0,T=n?.turns?.reduce((B,Ee)=>B+(Ee.events?.length||0),0)||0,q=(0,Ze.useRef)(!0);(0,Ze.useEffect)(()=>{let B=y.current;B&&q.current&&(B.scrollTop=B.scrollHeight)},[j,T,x]);let G=()=>{let B=y.current;B&&(q.current=B.scrollHeight-B.scrollTop-B.clientHeight<48)},L=n?.sandbox_session_id,Y=n?.turns?.[n.turns.length-1],K=vZ(n),pe=n?.browser?.status==="running",De=async B=>{B?.preventDefault();let Ee=s.trim();if(!(!Ee||!L)){c(!0),i(null);try{let Ve=await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:Ee,...d?{handoff:d}:{}})}),fe=await Ve.json().catch(()=>({}));if(!Ve.ok)throw new Error(ot(fe,`The message was not sent (HTTP ${Ve.status}).`));l(""),p(null),await M()}catch(Ve){i(Ve.message)}finally{c(!1)}}},se=async()=>{let B=(n?.turns||[]).filter(Zs);for(let Ee of B)await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${Ee.id}/cancel`,{method:"POST"});await M()},xe=B=>{p(B),l(Ee=>Ee||"I've handed the browser back. "),b.current?.focus()},ue=r?"text-gray-400":"text-gray-500",R=r?"text-white":"text-gray-900",we=`rounded-lg border p-4 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,Ce=`px-3 py-1 text-sm rounded disabled:opacity-50 ${r?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,z="px-3 py-1 text-sm rounded text-white bg-red-600 hover:bg-red-700 disabled:opacity-50",ee=`p-2 rounded text-sm border ${r?"bg-blue-900/20 border-blue-800 text-blue-200":"bg-blue-50 border-blue-200 text-blue-800"}`;if(!n)return Ze.default.createElement("div",{className:we,"data-testid":"code-interaction"},a?Ze.default.createElement("p",{className:`text-sm ${r?"text-red-400":"text-red-600"}`},a):Ze.default.createElement("p",{className:`text-sm ${ue}`},"Loading\u2026"));let ae=Ss(n.status),E=`flex items-center justify-between gap-2 px-4 py-2 border-b ${r?"border-gray-700":"border-gray-200"}`,W=`rounded-lg border flex flex-col min-h-0 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,F=`px-2 py-0.5 text-xs rounded ${r?"text-gray-300 hover:bg-gray-700":"text-gray-600 hover:bg-gray-100"}`;return Ze.default.createElement("div",{ref:h,className:"flex flex-col gap-3",style:x?{height:x}:void 0,"data-testid":"code-interaction"},Ze.default.createElement("div",{className:"flex flex-wrap items-start justify-between gap-3 shrink-0"},Ze.default.createElement("div",{className:"space-y-1"},t&&Ze.default.createElement("button",{type:"button",onClick:t,className:`text-xs ${ue}`},"\u2190 Interactions"),Ze.default.createElement("h2",{className:`text-xl font-bold ${R}`},n.display_name),Ze.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ze.default.createElement(Js,{tone:ae.tone},ae.label),Ze.default.createElement("span",{className:`text-xs ${ue}`},__e[n.origin]||n.origin," \xB7 ",I2(n)),n.project&&Ze.default.createElement("a",{href:rt(`/projects/${n.project.id}`),onClick:B=>{B.preventDefault(),st(`/projects/${n.project.id}`)},className:"text-xs underline"},n.project.name))),Ze.default.createElement("div",{className:"flex items-center gap-2"},I&&Ze.default.createElement("button",{type:"button",onClick:se,className:Ce},"Stop"),Ze.default.createElement("button",{type:"button",onClick:()=>P(B=>!B),className:Ce,"aria-pressed":f,"aria-controls":`code-interaction-${e}-browser`},f?"Hide browser":"Show browser"))),K&&!f&&Ze.default.createElement("p",{role:"alert",className:`${ee} shrink-0`},"Claude Code needs you: ",K.reason," ",Ze.default.createElement("button",{type:"button",onClick:()=>P(!0),className:"underline"},"Show the browser")),Ze.default.createElement("div",{ref:v,className:`flex-1 min-h-0 flex flex-col gap-4 ${A?"lg:flex-row lg:gap-0":""} ${w?"select-none cursor-col-resize":""}`},Ze.default.createElement("section",{className:`${W} lg:h-full min-w-0`,style:A?{flex:`0 0 ${k}%`}:void 0,"aria-label":"Conversation",id:`code-interaction-${e}-conversation`},Ze.default.createElement("div",{className:E},Ze.default.createElement("span",{className:`text-sm font-medium ${R}`},"Conversation"),!f&&Ze.default.createElement("button",{type:"button",onClick:()=>P(!0),className:F},"Show browser \u203A")),Ze.default.createElement("ol",{ref:y,onScroll:G,className:"space-y-3 p-4 flex-1 min-h-0 overflow-y-auto"},n.turns.map(B=>Ze.default.createElement(C_e,{key:B.id,turn:B,sandboxId:L,darkMode:r,muted:ue,strong:R}))),Ze.default.createElement("form",{onSubmit:De,className:`space-y-2 p-4 border-t shrink-0 max-lg:sticky max-lg:bottom-0 max-lg:rounded-b-lg ${r?"border-gray-700 bg-gray-900":"border-gray-200 bg-white"}`},Ze.default.createElement("label",{htmlFor:`code-interaction-${e}-message`,className:`text-xs font-medium ${R}`},"Message ",P0(n)),Ze.default.createElement("textarea",{id:`code-interaction-${e}-message`,ref:b,value:s,onChange:B=>l(B.target.value),rows:3,className:`w-full text-sm rounded border p-2 ${r?"bg-gray-800 border-gray-600 text-white":"bg-white border-gray-300"}`,placeholder:Y?.result?"Reply, or ask for the next change":"What should happen next?"}),Ze.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Ze.default.createElement("span",{className:`text-xs ${ue}`,role:"status"},xZ(n,{handoff:d})),Ze.default.createElement("button",{type:"submit",className:z,disabled:u||!s.trim()},u?"Sending\u2026":"Send")),a&&Ze.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`,role:"alert"},a))),A&&Ze.default.createElement("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize the conversation and the browser","aria-controls":`code-interaction-${e}-conversation`,"aria-valuenow":Math.round(k),"aria-valuemin":D2,"aria-valuemax":j2,tabIndex:0,onPointerDown:H,onPointerMove:$,onPointerUp:Z,onPointerCancel:Z,onKeyDown:N,onDoubleClick:()=>C(lf),className:"group hidden lg:flex w-4 shrink-0 cursor-col-resize items-center justify-center touch-none focus:outline-none","data-testid":"code-interaction-separator"},Ze.default.createElement("span",{className:`h-12 w-1 rounded-full transition-colors ${w?"bg-red-500":r?"bg-gray-600 group-hover:bg-gray-400 group-focus-visible:bg-red-500":"bg-gray-300 group-hover:bg-gray-500 group-focus-visible:bg-red-500"}`})),f&&Ze.default.createElement("section",{id:`code-interaction-${e}-browser`,className:`${W} lg:h-full min-w-0 flex-1`,"aria-label":"The sandbox\u2019s browser","data-testid":"code-interaction-browser"},Ze.default.createElement("div",{className:E},Ze.default.createElement("span",{className:`text-sm font-medium ${R}`},"The sandbox\u2019s browser"),Ze.default.createElement("button",{type:"button",onClick:()=>P(!1),className:F,"aria-label":"Hide the browser"},"Hide \xD7")),Ze.default.createElement("div",{className:"p-4 space-y-2 flex-1 min-h-0 overflow-y-auto"},K&&Ze.default.createElement("p",{role:"alert",className:ee},P0(n)," needs you: ",K.reason),pe?Ze.default.createElement(F0,{sessionId:L,watchOnOpen:!0,onHandBack:xe,handBackLabel:`Hand back to ${P0(n)}`}):Ze.default.createElement("p",{className:`text-xs ${ue}`},"The browser is not running."," ",n.project?Ze.default.createElement("a",{href:rt(`/projects/${n.project.id}?tab=browser`),onClick:B=>{B.preventDefault(),st(`/projects/${n.project.id}?tab=browser`)},className:"underline"},"Start it from the project"):"Start it from Settings \u2192 Integrations",", and Claude Code reaches it from its next turn.")))))}var RZ="activeagents.codeInteraction.showBrowser",eJ="activeagents.codeInteraction.split";function A_e(){try{let e=window.localStorage.getItem(eJ);return e===null?lf:O0(e)}catch{return lf}}function QZ(e){try{window.localStorage.setItem(eJ,String(e))}catch{}}function E_e(){let e=null;try{e=window.localStorage.getItem(RZ)}catch{}return bZ(window.location.search,e)}function N_e(e){try{window.localStorage.setItem(RZ,e?"1":"0")}catch{}let t=new URL(window.location.href);t.searchParams.set("browser",e?"1":"0"),window.history.replaceState(window.history.state,"",t)}function T_e(e,t){let[r,n]=(0,Ze.useState)(null);return(0,Ze.useLayoutEffect)(()=>{let o=window.matchMedia("(min-width: 1024px)"),a=()=>{let i=e.current;if(!i||!o.matches){n(null);return}let s=i.getBoundingClientRect().top+window.scrollY;n(Math.max(420,Math.floor(window.innerHeight-s-24)))};return a(),window.addEventListener("resize",a),o.addEventListener("change",a),()=>{window.removeEventListener("resize",a),o.removeEventListener("change",a)}},[e,t]),r}var tJ=X(J());function xd({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=_h(e,t);return a?tJ.default.createElement("a",{href:rt(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),st(a))},style:{fontFamily:U,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var O_e=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=hd(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=hd(a.content)+hd(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:p0(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}]}},rJ=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],P_e=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],M_e=[{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"}],I_e=3e4,Vu=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),nJ=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 D_e({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=An(t),[i,s]=(0,ve.useState)(null),[l,u]=(0,ve.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,ve.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(g=>g.ok?g.json():Promise.reject(new Error("not found"))).then(({trace:g})=>m&&s(g)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let p=!!i,f=(i?.spans||[]).length;return ve.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},ve.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},ve.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},ve.default.createElement("span",{title:e.cache_hit?`${Vu(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&&ve.default.createElement("span",{className:"text-amber-500",title:`${Vu(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Vu(e.tokens.thinking)),ve.default.createElement("span",null,e.model||"unknown-model"),e.provider&&ve.default.createElement("span",null,e.provider),ve.default.createElement("span",{className:"text-blue-500"},"in:",Vu(e.tokens.input)),ve.default.createElement("span",{className:"text-green-500"},"out:",Vu(e.tokens.output)),e.finish_reason&&ve.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&ve.default.createElement("span",null,ro(d)),c&&ve.default.createElement("a",{href:rt(`/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&&ve.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),ve.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?ve.default.createElement(HI,{trace:i,darkMode:t}):d>0?ve.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},ve.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,p&&ve.default.createElement(ve.default.Fragment,null,ve.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},f," ",f===1?"span":"spans"),ve.default.createElement(rf,{open:n,darkMode:t,size:12})))),n&&i&&ve.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},ve.default.createElement(v0,{trace:i,darkMode:t,compact:!0})))}function Gu({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,ve.useState)([]),[a,i]=(0,ve.useState)(!0),[s,l]=(0,ve.useState)(null),[u,c]=(0,ve.useState)(null),[d,p]=(0,ve.useState)({}),{timeWindow:f}=El(),m=!t&&!e,g=()=>m?pZ(Zn(),window.location.search):{view:"list",source:"all",project:null,codeId:null},[b,h]=(0,ve.useState)(g),[y,x]=(0,ve.useState)([]),{source:v,project:k}=b;(0,ve.useEffect)(()=>{if(!m)return;let L=()=>h(g());return window.addEventListener("popstate",L),window.addEventListener("dashboard:navigate",L),()=>{window.removeEventListener("popstate",L),window.removeEventListener("dashboard:navigate",L)}},[m]),(0,ve.useEffect)(()=>{m&&fetch("/api/projects").then(L=>L.ok?L.json():{projects:[]}).then(L=>x(L.projects||[])).catch(()=>{})},[m]);let S=L=>{Pc(L),h(g())},w=L=>S(M2({source:v,project:k,...L})),_=L=>S(ks(L));(0,ve.useEffect)(()=>{if(b.view!=="latest")return;let L=sD({source:v==="all"?"claude_code":v,project:k});fetch(`/api/interactions?${L}`).then(Y=>Y.json()).then(Y=>{let K=fZ(Y.interactions),pe=K?ks(sf(K.id)):M2({source:v,project:k});window.history.replaceState({},"",rt(pe)),h(g())}).catch(()=>{})},[b.view,v,k]);let A=(0,ve.useCallback)(async()=>{try{let L=await fetch(`/api/interactions?${sD({minutes:f.minutes,agentId:e,source:v,project:k})}`);if(!L.ok)throw new Error(`Request failed (${L.status})`);let Y=await L.json();o(Y.interactions||[]),l(null)}catch(L){l(L.message)}finally{i(!1)}},[f.minutes,e,v,k]);(0,ve.useEffect)(()=>{A();let L=setInterval(A,I_e);return()=>clearInterval(L)},[A]);let[C,O]=(0,ve.useState)("recent"),D=(0,ve.useMemo)(()=>{let L=[...new Set(n.map(Y=>Y.display_name).filter(Boolean))].sort();return Object.fromEntries(L.map((Y,K)=>[Y,rJ[K%rJ.length]]))},[n]),H=(0,ve.useMemo)(()=>{let L=n.reduce((K,pe)=>K+(pe.tokens?.total||0),0),Y=new Set(n.map(K=>K.display_name).filter(Boolean));return{interactions:n.length,tokens:L,agents:Y.size,avgTokens:n.length?Math.round(L/n.length):0}},[n]),$=(0,ve.useMemo)(()=>{if(n.length===0)return[];let L=Date.now(),Y=f.bucketSeconds*1e3,K=Math.max(1,Math.round(f.minutes*60/f.bucketSeconds)),pe=Object.keys(D);return Array.from({length:K},(De,se)=>{let xe=L-(K-1-se)*Y,ue=xe-Y,R=n.filter(we=>{let Ce=new Date(we.last_activity_at).getTime();return Ce>=ue&&Ce1440?new Date(xe).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(xe).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),...Object.fromEntries(pe.map(we=>[we,R.filter(Ce=>Ce.display_name===we).length]))}})},[n,D,f]),Z=Math.max(0,Math.ceil($.length/6)-1),N=(0,ve.useCallback)(L=>{let Y=[...L];switch(C){case"tokens":return Y.sort((K,pe)=>(pe.tokens?.total||0)-(K.tokens?.total||0));case"messages":return Y.sort((K,pe)=>(pe.message_count||0)-(K.message_count||0));default:return Y.sort((K,pe)=>String(pe.last_activity_at).localeCompare(String(K.last_activity_at)))}},[C]),P=(0,ve.useMemo)(()=>{let L=new Map;n.forEach(K=>{let pe=K.agent_name||K.agent?.name||"Unattributed",De=K.action_name,se=`${pe}#${De||""}`;L.has(se)||L.set(se,{key:se,title:De?`${pe} ${De.charAt(0).toUpperCase()}${De.slice(1)} Agent Interactions`:`${pe} Interactions`,sessions:[],tokens:0,lastActivity:K.last_activity_at});let xe=L.get(se);xe.sessions.push(K),xe.tokens+=K.tokens?.total||0,K.last_activity_at>xe.lastActivity&&(xe.lastActivity=K.last_activity_at)});let Y=[...L.values()].map(K=>({...K,sessions:N(K.sessions)}));return C==="tokens"?Y.sort((K,pe)=>pe.tokens-K.tokens):C==="messages"?Y.sort((K,pe)=>pe.sessions.length-K.sessions.length):Y.sort((K,pe)=>String(pe.lastActivity).localeCompare(String(K.lastActivity)))},[n,C,N]),M=async L=>{if(m&&sf(L)){_(sf(L));return}if(u===L){c(null);return}if(c(L),!d[L])try{let Y=await fetch(`/api/interactions/${L}`);if(Y.ok){let K=await Y.json();p(pe=>({...pe,[L]:K.interaction}))}}catch{}},[I,j]=(0,ve.useState)({}),[T,q]=kh(),G=An(r);return m&&b.view==="conversation"?ve.default.createElement(mD,{rootId:b.codeId,onBack:()=>S(M2({source:v,project:k}))}):a?ve.default.createElement("div",{className:"flex items-center justify-center h-64"},ve.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):ve.default.createElement("div",{className:"space-y-6"},ve.default.createElement("div",{className:"flex flex-col max-lg:gap-3 lg:flex-row lg:items-start lg:justify-between"},!t&&ve.default.createElement("div",null,ve.default.createElement("h1",{className:"text-2xl font-bold",style:{color:G.textPrimary}},"Interactions"),ve.default.createElement("p",{className:"text-sm mt-1",style:{color:G.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),ve.default.createElement("div",{className:"flex flex-wrap items-center gap-3 lg:flex-shrink-0 lg:justify-end"},ve.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},ve.default.createElement("span",{className:"text-xs px-1",style:{color:G.textMuted}},"Sort"),P_e.map(L=>ve.default.createElement("button",{key:L.id,onClick:()=>O(L.id),className:"px-2 py-1 text-xs rounded transition-colors",style:C===L.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:G.textSecondary}},L.label))),ve.default.createElement(Ks,null),m&&ve.default.createElement(w0,null))),m&&ve.default.createElement("div",{className:"flex flex-wrap items-center gap-3","data-testid":"interactions-filters"},ve.default.createElement("div",{className:"flex items-center rounded-lg p-1",role:"group","aria-label":"Source",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},aD.map(L=>ve.default.createElement("button",{key:L.id,type:"button",onClick:()=>w({source:L.id}),"aria-pressed":v===L.id,className:"px-2 py-1 text-xs rounded transition-colors",style:v===L.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary}:{color:G.textSecondary}},L.label))),y.length>0&&ve.default.createElement("label",{className:"flex items-center gap-1 text-xs",style:{color:G.textSecondary}},"Project",ve.default.createElement("select",{value:k||"",onChange:L=>w({project:L.target.value?Number(L.target.value):null}),className:"text-xs rounded border px-1 py-0.5",style:{background:G.cardBg,borderColor:G.cardBorder,color:G.textPrimary}},ve.default.createElement("option",{value:""},"All projects"),y.map(L=>ve.default.createElement("option",{key:L.id,value:L.id},L.name)))),ve.default.createElement("button",{type:"button",onClick:()=>S(`/interactions/latest${k?`?project=${k}`:""}`),className:"px-2 py-1 text-xs rounded border",style:{borderColor:G.cardBorder,color:G.textPrimary},title:"Open the most recent Claude Code or Codex conversation"},"Latest conversation")),ve.default.createElement(ZI,{agentId:e}),s&&ve.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&&ve.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:G.cardBg,borderColor:G.cardBorder}},ve.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2 mb-3"},ve.default.createElement("h3",{className:"text-sm font-semibold",style:{color:G.textPrimary}},"Interactions over time"),ve.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(D).map(([L,Y])=>ve.default.createElement("span",{key:L,className:"flex items-center gap-1.5 text-xs",style:{color:G.textSecondary}},ve.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:Y}}),L)))),ve.default.createElement("div",{className:"h-32"},ve.default.createElement(zc,{width:"100%",height:"100%"},ve.default.createElement(gd,{data:$},ve.default.createElement("defs",null,Object.entries(D).map(([L,Y])=>ve.default.createElement("linearGradient",{key:L,id:`ix-gradient-${L.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},ve.default.createElement("stop",{offset:"5%",stopColor:Y,stopOpacity:.6}),ve.default.createElement("stop",{offset:"95%",stopColor:Y,stopOpacity:.05})))),ve.default.createElement(ju,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),ve.default.createElement(Bu,{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:Z}),ve.default.createElement(Wu,{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}),ve.default.createElement(td,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${G.cardBorder}`,borderRadius:"8px"},labelStyle:{color:G.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(D).map(([L,Y])=>ve.default.createElement(Lu,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:Y,strokeWidth:2,fill:`url(#ix-gradient-${L.replace(/\W/g,"-")})`}))))),ve.default.createElement("div",{className:"grid grid-cols-2 gap-3 md:flex md:items-center md:gap-8 pt-3 mt-3 border-t",style:{borderColor:G.cardBorder}},[{label:"Interactions",value:H.interactions.toLocaleString()},{label:"Agents",value:H.agents.toLocaleString()},{label:"Total tokens",value:Vu(H.tokens)},{label:"Avg / interaction",value:Vu(H.avgTokens)}].map(L=>ve.default.createElement("div",{key:L.label},ve.default.createElement("div",{className:"text-lg font-bold",style:{color:G.textPrimary}},L.value),ve.default.createElement("div",{className:`text-xs ${mo}`,style:{color:G.textSecondary}},L.label))))),n.length===0?ve.default.createElement("div",{className:"text-center py-12"},ve.default.createElement("div",{className:"text-lg",style:{color:G.textMuted}},"No interactions in the last ",f.label),ve.default.createElement("p",{className:"text-sm mt-2",style:{color:G.textSecondary}},"Widen the time window, or run an agent to start recording its conversation stream")):ve.default.createElement("div",{className:"space-y-8"},P.map(L=>ve.default.createElement("div",{key:L.key,className:"space-y-4"},ve.default.createElement("div",{className:"flex flex-wrap items-baseline justify-between gap-x-4 gap-y-1"},ve.default.createElement("h2",{className:"text-sm font-semibold",style:{color:G.textPrimary}},L.title),ve.default.createElement("span",{className:"text-xs whitespace-nowrap",style:{color:G.textMuted}},L.sessions.length," ",L.sessions.length===1?"interaction":"interactions",L.tokens>0&&` \xB7 ${Vu(L.tokens)} tokens`)),L.sessions.map(Y=>{let K=d[Y.id],pe=u===Y.id,De=I[Y.id]||"conversation",se=Y.tokens?.total||0,xe=(Y.tokens?.input||0)+(Y.tokens?.output||0)||se;return ve.default.createElement(g2,{key:Y.id,darkMode:r,className:"shadow-sm"},ve.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:()=>M(Y.id),style:pe?{background:G.hoverBg}:void 0},ve.default.createElement("div",{className:"flex items-center gap-3 min-w-0 max-lg:flex-wrap max-lg:gap-y-1"},iD(Y)?ve.default.createElement("span",{className:"px-2 py-1 text-xs font-medium rounded flex-shrink-0",style:{background:r?"rgba(249,115,22,0.15)":"#fff7ed",color:r?"#fdba74":"#c2410c"},title:`${Y.turn_count} ${Y.turn_count===1?"turn":"turns"}${Y.active?", one running now":""}`},Y.runner==="codex"?"CODEX":"CLAUDE CODE",Y.active?" \xB7 LIVE":""):Y.source==="telemetry"?ve.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"):ve.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),ve.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:G.textPrimary}},Y.display_name),Y.agent&&ve.default.createElement("span",{className:"text-sm truncate",style:{color:G.textSecondary}},Y.agent.name),Y.service_name&&ve.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:G.textMuted}},Y.service_name)),ve.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0 max-lg:w-full max-lg:min-w-0"},ve.default.createElement(wh,{darkMode:r,cells:[{key:"activity",width:Fa.count,content:Y.message_count>0?`${Y.message_count} messages`:`${Y.tool_count||0} tool ${Y.tool_count===1?"call":"calls"}`},{key:"tokens",width:Fa.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:se>0&&`${Vu(se)} tokens`},{key:"context",width:Fa.context,empty:"Context: this interaction recorded no token counts",content:se>0&&ve.default.createElement(yd,{compact:!0,darkMode:r,label:"Context",used:xe,limit:p0(Y.model),segments:[{key:"messages",label:"Context",tokens:xe}]})},{key:"age",width:Fa.age,title:Y.last_activity_at||void 0,empty:"No activity recorded",content:nJ(Y.last_activity_at)&&ve.default.createElement("span",{style:{color:G.textMuted}},nJ(Y.last_activity_at))}]}),Y.source!=="telemetry"&&ve.default.createElement(xd,{kind:"context",id:Y.id,title:"Replay this conversation"}),ve.default.createElement(rf,{open:pe,darkMode:r}))),!pe&&ve.default.createElement(Sh,{darkMode:r,onClick:()=>M(Y.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:Y.preview?.input,color:Un("user",r).color},{label:"output",text:Y.preview?.output,color:Un("assistant",r).color}]}),pe&&ve.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:G.cardBorder,background:G.innerBg}},K?ve.default.createElement(ve.default.Fragment,null,ve.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},ve.default.createElement(y0,{options:M_e,value:De,onChange:ue=>j(R=>({...R,[Y.id]:ue})),darkMode:r}),ve.default.createElement("span",{className:"text-xs",style:{color:G.textSecondary}},K.messages.length," ",K.messages.length===1?"message":"messages",K.generations.length>0&&` \xB7 ${K.generations.length} ${K.generations.length===1?"generation":"generations"}`)),De==="conversation"&&ve.default.createElement(ve.default.Fragment,null,K.messages.length===0&&ve.default.createElement("div",{className:"text-sm",style:{color:G.textMuted}},"No conversation content captured for this run. Enable content capture in the reporting app to record prompts, tool arguments, and responses."),ve.default.createElement(ws,{darkMode:r,messages:K.instructions?[{id:`ctx-${Y.id}-system`,role:"system",content:K.instructions,created_at:Y.created_at},...K.messages]:K.messages}),(()=>{let ue=O_e(K);return ue?ve.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:G.cardBorder}},ve.default.createElement(yd,{...ue,label:"Context pressure",estimated:!0,darkMode:r})):null})()),De==="spans"&&(K.generations.length===0?ve.default.createElement("div",{className:"text-sm",style:{color:G.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):ve.default.createElement("div",{className:"space-y-2"},K.generations.map(ue=>ve.default.createElement(D_e,{key:ue.id,generation:ue,darkMode:r,maxMs:Math.max(...K.generations.map(R=>(R.duration_seconds||0)*1e3),1),expanded:T(`${Y.id}:${ue.id}`),onToggle:()=>q(`${Y.id}:${ue.id}`)}))))):ve.default.createElement("div",{className:"flex justify-center py-6"},ve.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var Te=X(J());function aJ(e,t,r=null){let n=d=>Object.values(t[d]||{})[0]??null,o=(d,p)=>{if(!p)return null;let f=p.scenario||p;return{key:d,prompt:f.prompt,group:f.group??null,notes:f.notes??null,expectations:f.expectations||{},position:f.position}},a=(d,p)=>{let f=o(d.key,p),m=["prompt","group","notes","expectations"].some(g=>JSON.stringify(d[g]??null)!==JSON.stringify(f[g]??null));return{...d,...f,catalogChanged:m}},i=(d,p)=>({...o(d,p),id:null,enabled:!1,orphan:!0}),s=(d,p,f,m)=>{if(!r)return m();let g=r.get(d);if(g&&g.scenario===p&&g.first===f)return g.row;let b=m();return r.set(d,{scenario:p,first:f,row:b}),b},l=new Set(e.map(d=>d.key)),u=e.map(d=>{let p=n(d.key);return p?s(d.key,d,p,()=>a(d,p)):d}),c=Object.keys(t).filter(d=>!l.has(d)).map(d=>{let p=n(d);return s(d,null,p,()=>i(d,p))});return[...u,...c]}var oJ=e=>/^[1-9]\d*$/.test(e||"")?e:null;function gD(e){let t=new URLSearchParams(e),r=oJ(t.get("evaluation"));return r?{evaluationId:r,runId:oJ(t.get("run"))}:null}async function iJ(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 hD="([1-9]\\d*)",j_e=new RegExp(`^/evaluations/${hD}(?:/runs/${hD}(?:/results/${hD})?)?/?$`);function sJ(e){let t=String(e||"").match(j_e);if(!t)return null;let r=n=>n?Number(n):null;return{evaluationId:Number(t[1]),runId:r(t[2]),resultId:r(t[3])}}var yD=e=>/^[1-9]\d*$/.test(String(e??""));function W0({evaluationId:e,runId:t=null,resultId:r=null}={}){if(!yD(e))return null;let n=`/evaluations/${e}`;return t==null?r==null?n:null:yD(t)?(n+=`/runs/${t}`,r==null?n:yD(r)?`${n}/results/${r}`:null):null}function lJ(e,{origin:t="",mountPath:r=""}={}){if(!e)return null;let n=String(r||"").replace(/\/+$/,"");return`${String(t||"").replace(/\/+$/,"")}${n}${e}`}var ye=X(J());async function bd(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 Nh(e){if(!e)return null;let t=`/api${e}`;return{report:t,markdown:`${t}.md`,html:`${t}?download=1`,json:`${t}.json?download=1`,md:`${t}.md?download=1`}}function B2(e,{part:t=null,model:r=null,scenario:n=null}={}){if(!e)return null;let o=new URLSearchParams;t&&o.set("part",t),r&&r!=="all"&&o.set("model",r),n&&o.set("scenario",n);let a=o.toString();return a?`${e}?${a}`:e}async function uJ(e,{fetch:t=globalThis.fetch,navigator:r=globalThis.navigator,document:n=globalThis.document,ClipboardItem:o=globalThis.ClipboardItem,Blob:a=globalThis.Blob}={}){if(!e||typeof t!="function")return!1;let i=()=>t(e,{headers:{Accept:"text/markdown"},credentials:"same-origin"}).then(s=>{if(!s.ok)throw new Error(`HTTP ${s.status}`);return s.text()});if(o&&a&&r?.clipboard?.write)try{let s=i();return await r.clipboard.write([new o({"text/plain":s.then(l=>new a([l],{type:"text/plain"}))})]),!0}catch{}try{return await bd(await i(),{navigator:r,document:n})}catch{return!1}}var $_e=["trace_error_rate","trace_latency"],SD=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],St=(e,t)=>`${e} ${t}${e===1?"":"s"}`,U0=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},cJ=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),bD=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,L_e=(e,t)=>t>0?`${e}/${t} \xB7 ${bD(e/t)}`:"\u2014",dJ=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},Ol=e=>e?.type==="llm_judge"?"judge":$_e.includes(e?.type)?"telemetry":"rules",F2=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||cJ(e.key);default:return cJ(e?.key)}},Ph=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 ${dJ(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 ${dJ(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${U0(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},H0=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},Mh=(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"},kD=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,cf=(e,t=null)=>{let r=kD(e,t);if(e?.scenario_suite){let a=t?.samples_evaluated&&r?Math.round(t.samples_evaluated/r):e.scenario_count||0;return`${St(a,"scenario")} \xD7 ${St(r,"model")}`}let n=(e?.criteria||[]).length,o=n===1?"criterion":"criteria";return r>1?`${n} ${o} \xD7 ${St(r,"model")}`:`${n} ${o} \xB7 ${St(e?.sample_size??0,"sample")}`},_D=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),Ih=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var q0=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 Ih(e).forEach(([,n])=>{_D(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},df=(e,t)=>!e||typeof e!="object"?null:_D(e)?t&&e[t]||null:e,fJ=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null,z_e=e=>!!e&&["pending","running"].includes(e.status),Oh=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,pf=(e,t)=>e!=null&&t?e/t:null,W2=(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=Oh(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,p50_duration_ms:i.p50_duration_ms??null,p95_duration_ms:i.p95_duration_ms??null,input_tokens:i.input_tokens??null,output_tokens:i.output_tokens??null,cost:i.cost??null,priced:Oh(i,i.scenarios),reported:i.reported??null,estimated:W2(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:Oh(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=q0(e);return o.length?o.map(a=>{let i=Ih(e).map(([,s])=>df(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"}]},mJ=(e,t)=>{let r=Ih(e).map(([,o])=>df(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}},gJ=20,ff=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,K0=(e=[],t=null)=>{let r=ff(e,t),n=e.length=gJ;return`${St(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},hJ=3,yJ=(e=[],{limit:t=null,selectedId:r=null}={})=>{let n=e.map((o,a)=>a);return!Number.isFinite(t)||e.length<=t?n:n.filter(o=>o{if(!r)return"skipped";let o=t.map(s=>e[s]),a=o.filter(s=>s&&s.status!=="pending"),i=a.some(s=>s.status!=="passed");return t.length>0&&a.length===t.length?i?"failed":"passed":n?o.some(Boolean)?"running":"queued":i?"failed":"missing"},jh=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:ff(r,n)-t,V0=(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"}},vJ=(e={},t={},r=[])=>{let n={},o={improved:0,regressed:0,errored:0},a=i=>!!i&&i.status!=="pending";return Object.entries(e||{}).forEach(([i,s])=>{r.forEach(l=>{let u=s?.[l],c=t?.[i]?.[l];if(!a(u)||!a(c)||c.status==="errored")return;let d=null;u.status==="errored"?d="errored":u.status==="passed"&&c.status!=="passed"?d="improved":u.status!=="passed"&&c.status==="passed"&&(d="regressed"),d&&(n[i]={...n[i],[l]:{kind:d,was:c}},o[d]+=1)})}),{byKey:n,...o}},xJ=({improved:e=0,regressed:t=0,errored:r=0}={})=>{let n=[];return e&&n.push(`\u25B2${e}`),t&&n.push(`\u25BC${t}`),r&&n.push(`\u25CB${r}`),n.length?` \xB7 ${n.join(" ")}`:""},bJ=(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}`:""}`}},wJ=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}`:""}`}},zi=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=Oh(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:W2(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??pf(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}},SJ=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"},G0=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},Y0=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 ")},B_e=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=zi(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:pf(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},$h=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},CD=e=>e?e.standing?e.standing:e.archived_at?"archived":$h(e)?"current":"none":"none",F_e=["current","unrecorded"],kJ=(e=[],{focusId:t=null}={})=>{let r=t!=null?e.filter(d=>String(d.id)===String(t)):[],n=r.length>0,o=n?r:e,a={total:0,stale:0,archived:0,none:0},i=[],s={},l=[],u=0,c=0;return o.forEach(d=>{let p=$h(d),f=CD(d);if(!(n?!!p:!!p&&F_e.includes(f))){a.total+=1,f==="archived"?a.archived+=1:f==="stale"?a.stale+=1:a.none+=1;return}i.push(p),l.push({id:d.id,name:d.name||`evaluation ${d.id}`}),u+=p.samples_evaluated||0,c+=p.samples_passed||0,(d.per_model&&typeof d.per_model=="object"&&Object.keys(d.per_model).length?Object.entries(d.per_model).map(([b,h])=>({label:b,passed:h?.passed||0,total:h?.total||0})):Dh(p).filter(b=>b.label&&b.samples>0).map(b=>({label:b.label,passed:b.passed||0,total:b.samples||0}))).forEach(({label:b,passed:h,total:y})=>{let x=s[b]||={label:b,passed:0,total:0,byEvaluation:{}};x.passed+=h,x.total+=y;let v=x.byEvaluation[d.id]||={passed:0,total:0};v.passed+=h,v.total+=y})}),{evaluations:o.length,counted:i.length,notCounted:a,runs:i,samplesScored:u,samplesPassed:c,passRatio:u?c/u:null,perModel:Object.values(s),columns:l,spend:B_e(i),focused:n}},vD=1.96,W_e=(e,t)=>{let r=Number(t)||0;if(r<=0)return 0;let n=(Number(e)||0)/r,o=vD*vD,a=n+o/(2*r),i=vD*Math.sqrt(n*(1-n)/r+o/(4*r*r));return Math.max(0,(a-i)/(1+o/r))},_J=e=>(e?.perModel||[]).filter(t=>t.total>0).map(t=>({...t,ratio:t.passed/t.total,lower:W_e(t.passed,t.total)})).sort((t,r)=>r.lower-t.lower||r.total-t.total||t.label.localeCompare(r.label)).map((t,r)=>({...t,rank:r+1})),CJ=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 ")},H2=(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=[];Ih(t).forEach(([u,c])=>{let d=H0(e,u);(_D(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[Ol(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 ${St(u.length,"model")}`:""}`,text:`Scored under the pass mark (pass \u2265 ${bD(.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}`:""} ${bD(c.stats.score)} \xB7 expects ${Ph(c.criterion)} \xB7 ${L_e(c.stats.passed,c.stats.total)} passed`)})}return r},pJ=e=>String(e||"").replace(/_/g," "),AJ=e=>{let t=e?.scores?._comparison;if(!t||typeof t!="object"||!Array.isArray(t.ranking)||t.ranking.length<2)return null;let r=t.method||{};return{rows:t.ranking.map(n=>{let o=t.models?.[n]||{};return{label:n,passRate:o.pass_rate??null,interval:Array.isArray(o.interval)&&o.interval.length===2?o.interval:null,scenarios:o.scenarios??0}}),conclusion:t.conclusion||null,confidence:Math.round(Number(r.confidence??.95)*100),resamples:r.resamples??null}},q2=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=Dh(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),g=d.passed??f.filter(C=>C.status==="passed").length,b=Object.keys(d.faults||{}).length?d.faults:f.reduce((C,O)=>O.fault?{...C,[O.fault]:(C[O.fault]||0)+1}:C,{}),h=C=>p.find(O=>O.fault===C)||null,y=C=>C==="low_quality"?1:0,x=Object.entries(b).sort((C,O)=>O[1]-C[1]||(h(O[0])?1:0)-(h(C[0])?1:0)||y(C[0])-y(O[0])||C[0].localeCompare(O[0])),[v,k]=x[0]||[],S=v?h(v):null,w=m||null,_=C=>C==null||!w?null:C/w,A=d.avg_score??(f.length&&f.some(C=>C.score!=null)?f.filter(C=>C.score!=null).reduce((C,O)=>C+Number(O.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:g,total:m,scored:d.samples??f.length,passRate:m?g/m:null,avgScore:A==null?null:Number(A),avgDurationMs:d.avg_duration_ms??null,p50DurationMs:d.p50_duration_ms??null,p95DurationMs:d.p95_duration_ms??null,inputTokens:d.input_tokens??null,outputTokens:d.output_tokens??null,avgInputTokens:_(d.input_tokens),avgOutputTokens:_(d.output_tokens),avgTokens:d.input_tokens==null&&d.output_tokens==null?null:_((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:pf(d.cost,d.priced),faults:x.map(([C,O])=>({fault:C,name:pJ(C),count:O})),typicalFault:v?{fault:v,name:pJ(v),count:k,scenarioKey:S?.scenario_key||null,summary:(S?.diagnosis?.summary||S?.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))},EJ=(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 ${U0(s,t)}`},NJ=(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}}),AD=(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}),TJ=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,AD(e,r).length])),K2=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:OJ(t)})),OJ=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}`},X0=e=>OJ(e?.sandbox),PJ=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},V2=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"",mf=e=>e?.selection||e?.scores?._selection||{},MJ=e=>(mf(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function Z0(e,t=[]){let r=mf(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):z_e(e)||e.status==="failed"?n.map(o=>o.key):[]}var ED=(e,t=[])=>{let r=mf(e);if(r.group)return`partial: ${r.group}`;let n=r.scenario_keys||r.keys,o=t.filter(a=>a.enabled!==!1).length;return Array.isArray(n)&&n.length&&n.length{let r=new Set(t.filter(a=>a&&a.enabled!==!1).map(a=>a.key)),n=[],o=[];return[...new Set((e||[]).filter(a=>a!=null))].forEach(a=>(r.has(a)?n:o).push(a)),{keys:n,dropped:o}},IJ=(e=[],t=[])=>gf((e||[]).filter(r=>r&&r.scenario_key&&r.status!=="pending"&&r.status!=="passed").map(r=>r.scenario_key),t),DJ=(e,t=[])=>{let r=mf(e);if(r.group)return{group:r.group};let n=Array.isArray(r.scenario_keys)&&r.scenario_keys.length?r.scenario_keys:r.keys;return Array.isArray(n)&&n.length?{keys:gf(n,t).keys}:{}},ND=272,TD=16,jJ=32,$J=940,OD="clamp(360px, calc(100vh - 240px), 900px)",LJ=320,U_e=3,zJ=4,BJ=720,wD="aa.evaluations.detail",FJ=e=>368+138*e,WJ=e=>504+170*e,UJ=e=>{try{let t=e?.getItem(wD);return t==="tools"||t==="steps"?t:null}catch{return null}},HJ=(e,t)=>{try{t==null?e?.removeItem?.(wD):e?.setItem(wD,t)}catch{}},qJ=(e=[])=>(e.find(t=>t?.step==="running")||e.find(t=>t?.step==="queued"))?.key??null,KJ=(e=[])=>{if(!e.length)return"none";let t=e.filter(n=>n!=="skipped"&&n!=="none");if(!t.length)return e.every(n=>n==="none")?"none":"skipped";if(t.includes("loading"))return"loading";if(t.includes("running"))return"running";let r=t.filter(n=>n==="queued").length;return r&&rnull,r="suite")=>{if(r!=="failed-first")return e;let n=[],o=new Map;return e.forEach(a=>{let i=a?.group||"",s=o.get(i);s||(s={failed:0,rows:[]},o.set(i,s),n.push(s));let l=t(a)==="failed";l&&(s.failed+=1),s.rows.push({row:a,failed:l})}),n.sort((a,i)=>i.failed-a.failed).flatMap(a=>[...a.rows.filter(i=>i.failed),...a.rows.filter(i=>!i.failed)].map(i=>i.row))},PD=(e=[],t=new Set)=>{let r=t instanceof Set?t:new Set(t||[]),n=new Set;if(!r.size)return n;let o=new Set;return e.forEach(a=>{(r.has(a?.key)?o:n).add(a?.group||"")}),o.forEach(a=>n.delete(a)),n},MD=(e={},t=[])=>{let r=t.map(n=>e?.[n]).filter(n=>n&&n.status!=="pending"&&n.duration_ms!=null&&Number.isFinite(Number(n.duration_ms))).map(n=>Number(n.duration_ms));return r.length?Math.max(...r):null},xD=e=>e!=null&&Number.isFinite(Number(e))?Number(e):null,G2=e=>{if(!e||e.status==="pending")return null;let t={durationMs:xD(e.duration_ms),inputTokens:xD(e.input_tokens),outputTokens:xD(e.output_tokens)};return t.durationMs==null&&t.inputTokens==null&&t.outputTokens==null?null:t},GJ=(e=[])=>{let t={durationMs:null,inputTokens:null,outputTokens:null,count:0};return e.forEach(r=>{let n=G2(r);n&&(t.count+=1,["durationMs","inputTokens","outputTokens"].forEach(o=>{n[o]!=null&&(t[o]=(t[o]||0)+n[o])}))}),t.count?t:null},YJ=(e={},t=[])=>{let r=GJ(t.map(n=>e?.[n]));return!r||r.inputTokens==null&&r.outputTokens==null?null:{input:r.inputTokens,output:r.outputTokens}},XJ=(e=[])=>{let t=e.filter(Boolean);if(!t.length)return null;let r=n=>t.some(o=>o[n]!=null)?t.reduce((o,a)=>o+(a[n]||0),0):null;return{input:r("input"),output:r("output")}},ID=(e={},t=[],r=Object.keys(e))=>Object.fromEntries(t.map(n=>[n,GJ(r.map(o=>e[o]?.[n]))])),ZJ=(e=[],t={},r=[])=>{let n=e.map(o=>MD(t[o?.key],r)).filter(o=>o!=null);return n.length?n.reduce((o,a)=>o+a,0):null},JJ=(e,t=Date.now())=>{if(!e)return null;let r=e.usage?.runtime_ms;if(r!=null&&Number.isFinite(Number(r)))return Number(r);if(e.status==="pending"||e.status==="failed"||!e.created_at)return null;let n=Date.parse(e.created_at),o=e.completed_at?Date.parse(e.completed_at):t;return!Number.isFinite(n)||!Number.isFinite(o)?null:Math.max(0,o-n)},Th=e=>String(e).padStart(2,"0"),QJ=e=>{let t=Math.max(0,Math.floor(Number(e)/1e3));return{hours:Math.floor(t/3600),minutes:Math.floor(t%3600/60),seconds:t%60,total:t}},RJ=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n}=QJ(e);return t?`${t}:${Th(r)}:${Th(n)}`:`${Th(r)}:${Th(n)}`},DD=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n,total:o}=QJ(e);return o<60?`${o}s`:t?`${t}h ${Th(r)}m`:`${r}m ${Th(n)}s`},J0=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let t=Number(e);return t>=6e4?DD(t):t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},eQ=e=>{let t=Number(e)||0;return t<=500?3e3:t<=2e3?6e3:1e4},H_e=(e,t)=>!!e&&!!t&&e.id===t.id&&e.status===t.status&&e.score===t.score&&e.fault===t.fault&&e.cost===t.cost&&(e.judge_usage?.cost??null)===(t.judge_usage?.cost??null)&&(e.output||"").length===(t.output||"").length,tQ=(e=[],t=[])=>{let r=new Map;(e||[]).forEach(i=>{i&&i.id!=null&&r.set(i.id,i)});let n=0,o=(t||[]).map(i=>{let s=i&&i.id!=null?r.get(i.id):null;return s&&H_e(s,i)?(n+=1,s):i}),a=o.length!==(e||[]).length||n!==o.length;return{results:a?o:e||[],changed:a}},jD=(e=[],t=n=>n?.model,r={})=>{let n={};(e||[]).forEach(i=>{!i||!i.scenario_key||((n[i.scenario_key]||={})[t(i)]=i)});let o=Object.keys(n),a=0;return o.forEach(i=>{let s=r?.[i];if(!s)return;let l=Object.keys(n[i]);l.length===Object.keys(s).length&&l.every(u=>s[u]===n[i][u])&&(n[i]=s,a+=1)}),r&&a===o.length&&o.length===Object.keys(r).length?r:n},rQ=(e=[],t=U_e)=>{if(e.length<=t)return e;let r=n=>e.reduce((o,a)=>o+(Number(a?.[n])||0),0);return[{label:"combined",short:`${e.length} models`,passed:r("passed"),total:r("total"),title:e.map(n=>`${n.short} ${n.passed??"\u2014"}/${n.total??"\u2014"}`).join(" \xB7 ")}]},$D=(e={},t=[])=>{let r=new Set((t||[]).filter(a=>a!=null).map(String)),n=Object.entries(e||{}),o=n.filter(([a])=>r.has(String(a)));return o.length===n.length?e||{}:Object.fromEntries(o)},nQ=({rowTop:e=0,headerHeight:t=0,boxHeight:r=0}={})=>Math.max(0,e-t-Math.round((r-t)/3)),oQ=({rowTop:e=0,headerHeight:t=0,groupRowHeight:r=0}={})=>Math.max(0,e-t-r);var q_e=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],aQ=["openai","anthropic","ollama","openrouter","mock"];function K_e(e,t=aQ){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=q_e.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function V_e(e,t,r=aQ){let n=K_e(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function iQ(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:V_e(r,o)}]:[]}))}function Q0(e,{providers:t,qualify:r=!0}){let n=iQ(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function sQ(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=iQ(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 wd(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function R0(e){return e.join(", ")}function lQ(e,t){return[...new Set([...e,...wd(t)])]}function uQ(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function cQ(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function dQ({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var Lh=X(J()),Qs=typeof window>"u"?Lh.useEffect:Lh.useLayoutEffect;function hf(e){let[t,r]=(0,Lh.useState)(0);return Qs(()=>{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}var sa=X(J());function eb({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,sa.useState)(""),[p,f]=(0,sa.useState)(""),m=(0,sa.useRef)(null),g=(0,sa.useId)(),b=wd(e),h=(0,sa.useRef)(b);h.current=b;let y=_=>{let A=lQ(h.current,_);A.length!==h.current.length&&(t(R0(A)),f(`Added ${A.slice(h.current.length).join(", ")}`)),d("")},x=_=>{t(R0(h.current.filter(A=>A!==_))),f(`Removed ${_}`),m.current?.focus()},v=(_,A)=>{if(_.includes(",")){let{complete:C,rest:O}=uQ(_);y(C),d(O)}else cQ(A.nativeEvent?.inputType,_,r)?y(_):d(_.trimStart())},k=_=>{let A=dQ(_,c,h.current.length);A==="commit"?(_.preventDefault(),setTimeout(()=>y(m.current?.value||""),0)):A==="removeLast"&&(_.preventDefault(),x(h.current[h.current.length-1]))},S=r.filter(_=>!b.includes(_)),w=[i,a&&`${g}-title`,`${g}-selected`].filter(Boolean).join(" ");return sa.default.createElement("div",{"data-testid":u,onClick:_=>{_.target===_.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},b.map(_=>sa.default.createElement("span",{key:_,style:G_e},sa.default.createElement("span",{style:{overflowWrap:"anywhere"}},_),sa.default.createElement("button",{type:"button",onClick:()=>x(_),"aria-label":`Remove ${_}`,title:`Remove ${_}`,style:Y_e},"\xD7"))),sa.default.createElement(pu,{inputRef:m,id:s,"aria-label":l,"aria-describedby":w,title:a,value:c,models:S,onChange:v,onKeyDown:k,onBlur:()=>{c.trim()&&y(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&&sa.default.createElement("span",{id:`${g}-title`,style:LD},a),sa.default.createElement("span",{id:`${g}-selected`,style:LD},b.length?`Chosen: ${b.join(", ")}`:"No models chosen"),sa.default.createElement("span",{role:"status","aria-live":"polite",style:LD},p))}var G_e={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:U,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},Y_e={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},LD={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Qe=X(J());var Bi=X(J());var X_e="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",Z_e="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",yf="var(--color-text-muted)",Y2=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Yu=(e,t=!1)=>kr(e,{estimated:t}),pQ=(e,{total:t=!1}={})=>{if(!e)return null;let r=[];if(e.agent){let n=[`agent ${kr(e.agent.cost,{estimated:e.agent.estimated})}`,St(e.agent.count,Y2(e))];e.agent.perInteraction!=null&&n.push(`${Yu(e.agent.perInteraction,e.agent.estimated)} each`),r.push(n.join(" \xB7 "))}return e.judge&&r.push(`judge ${kr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${St(e.judge.calls,"call")}`),t&&e.total!=null&&r.push(`total ${kr(e.total,{estimated:e.totalEstimated})}`),r.join(" \xB7 ")};function vf({label:e,value:t,sub:r,title:n,valueColor:o,testId:a,valueTestId:i,onClick:s,onKeyDown:l,role:u,tabIndex:c,style:d}){return Bi.default.createElement("div",{"data-testid":a,title:n,role:u,tabIndex:c,onClick:s,onKeyDown:l,style:{padding:"10px 16px",minWidth:0,marginLeft:-1,marginTop:-1,borderLeft:"1px solid var(--color-border-light)",borderTop:"1px solid var(--color-border-light)",...d}},Bi.default.createElement(je,{size:10,color:yf},e),Bi.default.createElement("div",{"data-testid":i,style:{marginTop:4,fontFamily:U,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),Bi.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}var fQ={value:"\u2026",valueColor:yf,sub:"priced when the run completes"};function zD({spend:e,pending:t=!1,failed:r=!1}){let n=e?.agent||null,o=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${sn(n.inputTokens)} \xB7 out ${sn(n.outputTokens)}`:"",a=r?{value:"\u2014",valueColor:yf,sub:"nothing replayed"}:t?fQ:{value:n?kr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:yf,sub:n?`${St(n.count,Y2(e))}${n.perInteraction!=null?` \xB7 ${Yu(n.perInteraction,n.estimated)} per interaction`:""}${o}`:"nothing replayed or sampled"};return Bi.default.createElement(vf,{label:"Agent cost",title:X_e,testId:"run-spend-agent",...a})}function BD({spend:e,judgedBy:t=null,pending:r=!1,failed:n=!1}){let o=e?.judge||null,i=o?[St(o.calls,"call"),Y0(o),o.model,G0(o),"offline"].filter(Boolean).join(" \xB7 "):t&&t!=="rules"?`judge ${t} \xB7 spend not recorded`:"no judge asked \xB7 rules only",s=n?{value:"\u2014",valueColor:yf,sub:i}:r?fQ:{value:o?kr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:yf,sub:i};return Bi.default.createElement(vf,{label:"Judge cost",title:Z_e,testId:"run-spend-judge",...s})}function FD({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{total:n,totalEstimated:o}=e;return Bi.default.createElement(Le,{padding:0,testId:r,style:{overflow:"hidden"}},Bi.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Bi.default.createElement(zD,{spend:e}),Bi.default.createElement(BD,{spend:e,judgedBy:t}),Bi.default.createElement(vf,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:n!=null?kr(n,{estimated:o}):"\u2014",sub:SJ(e),testId:"run-spend-total"})),o&&Bi.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:U,fontSize:11,color:yf}},ml))}function bf({run:e,testId:t,short:r=!1}){if(!e)return Qe.default.createElement(be,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Qe.default.createElement(be,{tone:"error",testId:t},"failed");if(e.status==="pending")return Qe.default.createElement(be,{tone:"warning",testId:t},"queued");if(e.status==="running")return Qe.default.createElement(be,{tone:"warning",testId:t},"running");if(e.samples_evaluated){let n=Jn(e.samples_passed||0,e.samples_evaluated);return Qe.default.createElement(be,{tone:cu(fJ(e)),testId:t,title:r?`${n} passed`:void 0},r?n:`${n} passed`)}if(e.average_score!=null){let n=Number(e.average_score);return Qe.default.createElement(be,{tone:n>=.85?"success":n>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${na(n)}`)}return Qe.default.createElement(be,{tone:"muted",testId:t},"no samples")}function Z2({run:e,testId:t="run-version"}){let r=wJ(e);return r?Qe.default.createElement(be,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var xf={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},tb={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},mQ=Fa.cost+32,J_e=e=>Dh(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:qn(t.label||"").short||"all samples",passed:t.passed,total:t.samples})),hQ=(e,t,r)=>[`@${r||t?.agent?.name||"agent"}`,cf(t,e),Mh(t,e),X0(e)&&`against ${X0(e)}`].filter(Boolean).join(" \xB7 ");function J2({runs:e=[],runCount:t=null,evaluation:r,agentName:n,selectedId:o=null,previousRun:a=null,barsFor:i=null,deltaFor:s=null}){return e.map((l,u)=>{let c=jh(l,u,e,t),d=e[u+1]||(u===0&&e.length===1?a:null),p=d?Number.isFinite(d.number)?d.number:c-1:null,f=s?s(l,d,p):V0(l,d,{olderNumber:p}),m=f&&d?bJ(l,d):null,g=zi(l);return{run:l,number:c,latest:u===0,when:_o(l.completed_at||l.created_at),meta:hQ(l,r,n),bars:i?i(l):J_e(l),delta:f,version:m,spend:g,selected:l.id===o}})}function qD({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}=ut(),p=J2({runs:e,runCount:t,evaluation:r,agentName:n,selectedId:o,previousRun:i,barsFor:s,deltaFor:l});return Qe.default.createElement(en,{title:u,meta:K0(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&Qe.default.createElement(tn,null,"[ ] no runs yet"),Qe.default.createElement("div",{style:{minWidth:920}},p.map(f=>Qe.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"}`}},Qe.default.createElement("div",{style:{minWidth:0}},Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&Qe.default.createElement(be,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&Qe.default.createElement(be,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&Qe.default.createElement(be,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),Qe.default.createElement(Z2,{run:f.run})),Qe.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&Qe.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),Qe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?Qe.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Qe.default.createElement(du,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Qe.default.createElement(LI,{darkMode:d,cells:[{key:"agent",width:mQ,title:f.spend?.agent?`Agent: ${St(f.spend.agent.count,Y2(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${Yu(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&&Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11}},Qe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),kr(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:mQ,title:f.spend?.judge?`Judge: ${St(f.spend.judge.calls,"call")}${Y0(f.spend.judge)?` \xB7 ${Y0(f.spend.judge)}`:""}${G0(f.spend.judge)?` \xB7 ${G0(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11}},Qe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),kr(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&&Qe.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:xf[f.delta.tone]||xf.muted}},f.delta.text),f.version&&Qe.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:U,fontSize:10,color:tb[f.version.kind]||tb.same}},f.version.text))},{key:"badge",width:132,content:Qe.default.createElement(bf,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Qe.default.createElement(Ia,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var gQ='[data-testid="evaluation-run"]',Q_e=150,WD=(e,t)=>e&&t!=null?e.querySelector(`[data-run-id="${CSS.escape(String(t))}"]`):null,UD=(e,t,r="y")=>{if(!e||!t)return;if(r==="x"){let o=t.offsetLeft;(oe.scrollLeft+e.clientWidth)&&(e.scrollLeft=Math.max(o-8,0));return}let n=t.offsetTop;(ne.scrollTop+e.clientHeight-t.offsetHeight)&&(e.scrollTop=Math.max(n-8,0))},R_e=(e=[])=>{let t=e.filter(o=>o.total!=null),r=o=>t.reduce((a,i)=>a+(Number(i[o])||0),0),n=r("total");return n>0?{passed:r("passed"),failed:r("failed"),total:n}:null},eCe=(e,{evaluation:t,agentName:r,bars:n,selectedId:o})=>({run:e,number:Number.isFinite(e.number)?e.number:"?",latest:!1,when:_o(e.completed_at||e.created_at),meta:hQ(e,t,r),bars:n||[],delta:null,version:null,spend:zi(e),selected:e.id===o}),HD={fontFamily:U,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function tCe({bar:e}){let t=e.title||void 0;return e.passed==null||e.total==null?Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8},title:t},Qe.default.createElement("span",{style:{...HD,width:96,flexShrink:0},title:e.label||void 0},e.short),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Qe.default.createElement("div",{title:t},Qe.default.createElement(du,{label:e.short,labelWidth:96,passed:e.passed,total:e.total,height:4,valueWidth:44}))}function X2({row:e,selected:t=!1,tabIndex:r=-1,card:n=!1,onOpen:o,noteFor:a=null,style:i}){let{run:s}=e,l=a?a(s):null,u=n&&s.status==="running"?R_e(e.bars):null,c=rQ(s.status==="failed"?e.bars.filter(p=>p.passed!=null&&p.total!=null):e.bars),d=()=>o?.(s);return Qe.default.createElement("div",{role:"button",tabIndex:r,"aria-current":t?"true":void 0,"data-testid":"evaluation-run","data-run-id":s.id,"data-selected":t?"true":"false",onClick:d,onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),d())},className:t?void 0:"hover:bg-[var(--color-hover)]",title:e.meta,style:{display:"flex",flexDirection:"column",gap:5,padding:"9px 12px 9px 10px",borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:t?"var(--color-muted)":void 0,borderLeft:`2px solid ${t?"var(--color-accent-ui)":"transparent"}`,...i}},Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0,flexWrap:n?"wrap":"nowrap"}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`#${e.number}`),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.when),Qe.default.createElement(Z2,{run:s}),Qe.default.createElement("span",{style:{marginLeft:"auto",flexShrink:0}},Qe.default.createElement(bf,{run:s,short:!0,testId:e.latest?"suite-pass-badge":void 0}))),c.map(p=>Qe.default.createElement(tCe,{key:p.label||"all",bar:p})),u&&Qe.default.createElement(yw,{parts:[{value:u.passed,tone:"success"},{value:u.failed,tone:"error"}],total:u.total,height:3,title:`${u.passed} of ${u.total} passed so far${u.failed?` \xB7 ${u.failed} failed`:""}`,testId:"evaluation-run-progress"}),s.status==="failed"&&s.error_message&&Qe.default.createElement("div",{style:{...HD,color:"var(--color-error)"},title:s.error_message},`[!] ${s.error_message}`),l&&Qe.default.createElement("div",{"data-testid":"evaluation-run-note",style:HD,title:l},l),(e.delta||e.spend?.agent?.cost!=null)&&Qe.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,fontFamily:U,fontSize:10,minWidth:0}},e.delta&&Qe.default.createElement("span",{style:{fontWeight:600,color:xf[e.delta.tone]||xf.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:e.version?.text},e.delta.text),e.spend?.agent?.cost!=null&&Qe.default.createElement("span",{style:{marginLeft:"auto",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},kr(e.spend.agent.cost,{estimated:e.spend.agent.estimated}))))}function KD({rows:e=null,runs:t=[],runCount:r=null,evaluation:n,agentName:o,selectedId:a=null,onOpen:i,previousRun:s=null,barsFor:l=null,deltaFor:u=null,noteFor:c=null,linkedRun:d=null,linkedBars:p=null,layout:f="rail",limit:m=null,maxHeight:g=null,expandedHeight:b=LJ,testId:h="suite-runs-panel",style:y}){let x=e??J2({runs:t,runCount:r,evaluation:n,agentName:o,selectedId:a,previousRun:s,barsFor:l,deltaFor:u}),v=t.length||!e?t:e.map(K=>K.run),k=a??x.find(K=>K.selected)?.run.id??null,S=K=>K.run.id===k,w=d&&!x.some(K=>K.run.id===d.id)?eCe(d,{evaluation:n,agentName:o,bars:p,selectedId:k}):null,_=f==="strip",A=_?yJ(x.map(K=>K.run),{limit:m,selectedId:k}).map(K=>x[K]):x,C=w?[w,...A]:A,O=x.length-A.length,D=_&&Number.isFinite(m)&&O>0,H=ff(v,r)-v.length,$=(C.find(S)||C[0])?.run.id??null,Z=(x.find(S)||x[0])?.run.id??null,[N,P]=(0,Qe.useState)(!1),M=(0,Qe.useRef)(null),I=(0,Qe.useRef)(null),j=(0,Qe.useRef)(null),T=(0,Qe.useRef)(null);(0,Qe.useEffect)(()=>()=>clearTimeout(T.current),[]),(0,Qe.useEffect)(()=>{D||P(!1)},[D]);let q=new Map(C.concat(x).map(K=>[String(K.run.id),K.run])),G=K=>{clearTimeout(T.current),T.current=setTimeout(()=>i?.(K),Q_e)},L=(K,{next:pe,prev:De,axis:se})=>xe=>{let ue=K.current,R=ue?Array.from(ue.querySelectorAll(gQ)):[];if(R.length===0)return;let we=xe.target.closest(gQ),Ce=R.indexOf(we),z;if(xe.key===pe)z=R[Math.min(Ce+1,R.length-1)];else if(xe.key===De)z=R[Math.max(Ce-1,0)];else if(xe.key==="Home")z=R[0];else if(xe.key==="End")z=R[R.length-1];else return;if(xe.preventDefault(),!z||z===we)return;z.focus({preventScroll:!0}),UD(ue,z,se);let ee=q.get(z.dataset.runId);ee&&G(ee)};Qs(()=>{if(N||j.current==null)return;let K=WD(I.current,j.current);j.current=null,K?.focus({preventScroll:!0})},[N]),Qs(()=>{k!=null&&(UD(I.current,WD(I.current,k),"x"),UD(M.current,WD(M.current,k),"y"))},[k,f,N]);let Y=H>0&&Qe.default.createElement("div",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},`${St(H,"older run")} \xB7 reachable by link`);return _?Qe.default.createElement(en,{title:"Runs",meta:K0(v,r),testId:h,style:y},Qe.default.createElement("div",{ref:I,"data-testid":"run-strip",onKeyDown:L(I,{next:"ArrowRight",prev:"ArrowLeft",axis:"x"}),style:{display:"flex",overflowX:"auto",scrollbarGutter:"stable",position:"relative"}},C.length===0&&Qe.default.createElement(tn,{style:{flex:1}},"[ ] no runs yet"),C.map((K,pe)=>Qe.default.createElement(X2,{key:K.run.id,row:K,card:!0,selected:S(K),tabIndex:$===K.run.id?0:-1,onOpen:i,noteFor:c,style:{flex:"1 1 0",minWidth:200,borderTop:"none",borderRight:peP(K=>!K),className:"bg-transparent hover:bg-[var(--color-hover)]",style:{display:"block",width:"100%",textAlign:"left",padding:"6px 12px",border:0,borderTop:"1px solid var(--color-border-light)",cursor:"pointer",fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"}},N?`[-] latest ${m}`:`[+] ${St(O,"earlier run")}`),D&&N&&Qe.default.createElement("div",{ref:M,onKeyDown:L(M,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{maxHeight:b,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},x.map(K=>Qe.default.createElement(X2,{key:K.run.id,row:K,selected:S(K),tabIndex:Z===K.run.id?0:-1,noteFor:c,onOpen:pe=>{j.current=pe.id,P(!1),i?.(pe)}})),Y)):Qe.default.createElement(en,{title:"Runs",meta:K0(v,r),testId:h,style:{display:"flex",flexDirection:"column",maxHeight:g||void 0,...y},bodyStyle:{flex:1,minHeight:0,display:"flex",flexDirection:"column"}},Qe.default.createElement("div",{ref:M,onKeyDown:L(M,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{flex:1,minHeight:0,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},w&&Qe.default.createElement(Qe.default.Fragment,null,Qe.default.createElement("div",{"data-testid":"runs-rail-linked",style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",padding:"4px 12px",background:"var(--color-muted)"}},`linked \xB7 older than the latest ${v.length}`),Qe.default.createElement(X2,{row:w,selected:S(w),tabIndex:$===w.run.id?0:-1,onOpen:i,noteFor:c})),!w&&x.length===0&&Qe.default.createElement(tn,null,"[ ] no runs yet"),x.map(K=>Qe.default.createElement(X2,{key:K.run.id,row:K,selected:S(K),tabIndex:$===K.run.id?0:-1,onOpen:i,noteFor:c})),Y))}var yQ=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[St(n,"run"),r?`latest #${jh(r,0,e,t)} ${_o(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${Jn(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var Mt=X(J());var Sd=X(J());function _s({text:e=null,url:t=null,label:r="Copy as Markdown",title:n,testId:o="copy-markdown",style:a}){let[i,s]=(0,Sd.useState)("idle"),l=(0,Sd.useRef)(null);return(0,Sd.useEffect)(()=>()=>clearTimeout(l.current),[]),!e&&!t?null:Sd.default.createElement(ie,{size:"sm",variant:"ghost",onClick:async c=>{c?.stopPropagation?.();let d=e?await bd(e):await uJ(t);s(d?"copied":"failed"),clearTimeout(l.current),l.current=setTimeout(()=>s("idle"),2e3)},testId:o,title:n||"Copy as GitHub-flavored Markdown, for an issue or a pull request",style:{padding:"4px 8px",fontSize:12,color:i==="failed"?"var(--color-error)":i==="copied"?"var(--color-success-text)":"var(--color-text-secondary)",...a}},i==="copied"?"Copied":i==="failed"?"Copy failed":r)}var vQ=X(J());function Xu({evaluationId:e,runId:t=null,resultId:r=null,label:n="Copy link",title:o,testId:a="copy-link",style:i}){let s=W0({evaluationId:e,runId:t,resultId:r});if(!s)return null;let l=lJ(s,{origin:typeof window<"u"?window.location?.origin:"",mountPath:typeof window<"u"?window.ACTIVE_AGENT_DASHBOARD?.mountPath:""});return vQ.default.createElement(_s,{text:l,label:n,testId:a,title:o||"Copy a link to this view, for a teammate in your organization",style:i})}var Fi="var(--color-text-muted)",VD=3,xQ={passed:0,total:0},bQ={items:0,faults:0,scenarios:0},rCe={keys:[],dropped:[]},Pl=(e,t,r={})=>({fontFamily:U,fontSize:e,color:t,...r}),rb=e=>typeof window>"u"?"#":rt(e),nCe=e=>{let[t,r]=(0,Mt.useState)(()=>Date.now());return(0,Mt.useEffect)(()=>{if(!e)return;r(Date.now());let n=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(n)},[e]),t};function wQ({short:e,label:t}){return Mt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Mt.default.createElement("span",{style:Pl(10,Fi,{width:110,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),title:t||void 0},e),Mt.default.createElement("span",{style:Pl(11,Fi)},"\u2014"))}function GD({run:e,runNumber:t=null,latestNumber:r=null,isLatest:n=!1,runningElsewhere:o=null,agentName:a="agent",scenarioCount:i=0,groupCount:s=0,columns:l=[],judgedBy:u="rules",bars:c=[],delta:d=null,version:p=null,totals:f=xQ,settledCount:m=0,settledFailed:g=0,expectedResults:b=0,running:h=!1,loading:y=!1,spend:x=null,fixSummary:v=bQ,selectionLabel:k=null,sandboxLabel:S=null,reportPath:w=null,rerun:_=rCe,evaluationId:A=null,onSelectLatest:C,onWatchLatest:O,onJumpToFix:D,onRerunFailed:H,onRunAgain:$}){let{darkMode:Z}=ut(),N=nCe(h);if(!e)return null;let P=Nh(w),M=e.status==="failed",I=e.status==="complete",j=h?`started ${_o(e.created_at)}`:_o(e.completed_at||e.created_at),T=`@${a} \xB7 ${St(i,"scenario")}${s?` in ${St(s,"group")}`:""} \xD7 ${St(l.length,"model")} \xB7 judged by ${u}${S?` \xB7 against ${S}`:""}`,q=_?.keys||[],G=_?.dropped||[],L=G.length?`${q.length} of ${q.length+G.length}`:`${q.length}`,Y="Replay every scenario that failed on any model, under the models in the picker"+(G.length?` \xB7 not replayed (disabled or removed): ${G.join(", ")}`:""),K=JJ(e,N),pe=[{key:"duration",width:Fa.duration,content:K!=null&&Mt.default.createElement("span",{style:Pl(11)},h?RJ(K):DD(K)),title:e.usage?.runtime_ms!=null?"Wall clock, as the run recorded it":"From the run's start to its end",empty:"Duration is read once the run starts"},{key:"delta",width:136,content:d&&Mt.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Mt.default.createElement("span",{style:Pl(11,xf[d.tone]||xf.muted,{fontWeight:600})},d.text),p&&Mt.default.createElement("span",{"data-testid":"run-version-delta",style:Pl(10,tb[p.kind]||tb.same)},p.text)),title:"Samples passed, against the run before",empty:I&&!d?"Movement is read against the run before, which is not loaded":"Movement is read once the run completes"},{key:"badge",content:Mt.default.createElement(bf,{run:e,testId:"suite-run-badge"})}],De=f||xQ,se=De.total>0?De.passed/De.total:null,xe=M?{value:"\u2014",valueColor:Fi,sub:m?`${m} of ${b} before it failed`:"run failed"}:h?{value:`${De.passed} passed`,sub:Mt.default.createElement("span",{"data-testid":"suite-run-progress"},`${m} of ${b} results in${g?` \xB7 ${g} failed`:""}`)}:{value:Jn(De.passed,De.total),valueColor:se==null?Fi:Fn[cu(se)].text,sub:`${Math.max(De.total-De.passed,0)} failed \xB7 ${St(i,"scenario")} \xD7 ${St(l.length,"model")}`},ue=c.slice(0,VD),R=Mt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:5,fontWeight:400,lineHeight:"normal"}},c.length===0&&l.length===0&&Mt.default.createElement("span",{style:Pl(11,Fi)},"\u2014"),c.length===0&&l.map(F=>Mt.default.createElement(wQ,{key:F,short:qn(F).short,label:F})),ue.map(F=>F.passed==null||F.total==null?Mt.default.createElement(wQ,{key:F.label||"all",short:F.short,label:F.label}):Mt.default.createElement(du,{key:F.label||"all",label:F.short,labelWidth:110,passed:F.passed,total:F.total,height:4,valueWidth:48}))),we=c.length>VD?Mt.default.createElement("span",{style:Pl(10,Fi)},`+${c.length-VD} more`):void 0,Ce=v||bQ,z=M?{value:"\u2014",valueColor:Fi,sub:"\u2014"}:y?{value:"\u2026",valueColor:Fi,sub:"loading\u2026"}:h?{value:"\u2026",valueColor:Fi,sub:"scoring\u2026"}:Ce.items>0?{value:Ce.items,valueColor:Fn.error.text,sub:Mt.default.createElement("span",{style:{color:"var(--color-info)"}},`${St(Ce.faults,"fault")} across ${St(Ce.scenarios,"scenario")} ${yv.link}`)}:{value:"0",valueColor:Fi,sub:"nothing to fix"},ee=()=>D?.(),E=M?{}:{role:"button",tabIndex:0,onClick:ee,onKeyDown:F=>{(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),ee())},style:{cursor:"pointer"}},W=`The faults this run found, grouped into fixes${M?"":" \u2014 opens What to fix"}`;return Mt.default.createElement(Le,{padding:0,testId:"suite-run-header",style:{overflow:"hidden"}},Mt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",padding:"10px 16px",borderBottom:"1px solid var(--color-border-light)"}},Mt.default.createElement("span",{style:Pl(13,"var(--color-text-primary)",{fontWeight:700})},`Run #${t??"?"}`),Mt.default.createElement("span",{style:Pl(11,Fi,{whiteSpace:"nowrap"})},j),n&&Mt.default.createElement(be,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),Mt.default.createElement(Z2,{run:e}),Mt.default.createElement("span",{style:Pl(11,Fi,{minWidth:0,textWrap:"pretty"})},T),k&&Mt.default.createElement(be,{tone:"muted",size:10,style:{padding:"1px 6px"},testId:"suite-run-selection"},k),!n&&Mt.default.createElement(Jr,{onClick:()=>C?.(),title:"Show the suite's latest run",testId:"suite-latest-run"},`latest${r!=null?` #${r}`:""}`),o&&Mt.default.createElement(Jr,{onClick:()=>O?.(),title:"A newer run is going; show it as it replays",testId:"suite-watch-latest"},`#${o.number??r??"?"} is running \xB7 watch`),I&&!y&&q.length>0&&Mt.default.createElement(Jr,{onClick:()=>H?.(),title:Y,testId:"suite-rerun-failed"},`re-run failed (${L})`),M&&Mt.default.createElement(Jr,{onClick:()=>$?.(),title:"Replay what this run was asked to, under the models in the picker",testId:"suite-run-again"},"run again"),Mt.default.createElement(Xu,{evaluationId:A,runId:e.id,label:"copy link",testId:"suite-run-copy-link",title:"Copy a link that opens this run, for a teammate in your organization",style:{padding:"0 4px",fontFamily:U,fontSize:11}}),w&&Mt.default.createElement(Jr,{href:rb(w),onClick:()=>st(w),title:"The run rendered as a report page",testId:"suite-run-report"},"run report"),P&&Mt.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:10,flexWrap:"wrap"},"data-testid":"suite-run-exports"},Mt.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:Fi}},"download"),Mt.default.createElement(Jr,{href:rb(P.html),title:"The report as one self-contained HTML page",testId:"suite-run-download-html"},"html"),Mt.default.createElement(Jr,{href:rb(P.json),title:"The run as the evaluation report envelope another install imports",testId:"suite-run-download-json"},"json"),Mt.default.createElement(Jr,{href:rb(P.md),title:"The report as GitHub-flavored Markdown",testId:"suite-run-download-md"},"markdown"),Mt.default.createElement(_s,{url:rb(P.markdown),label:"copy markdown",testId:"suite-run-copy-markdown",title:"Copy the whole report as GitHub-flavored Markdown",style:{padding:"0 4px",fontFamily:U,fontSize:11}})),Mt.default.createElement("span",{className:"flex min-w-0 max-w-full",style:{marginLeft:"auto"}},Mt.default.createElement(wh,{darkMode:Z,cells:pe}))),Mt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Mt.default.createElement(vf,{label:"Passed",title:"Results that passed, over every scenario \xD7 model the run covers",testId:"suite-run-passed",...xe}),Mt.default.createElement(vf,{label:"Models",title:"Each model's passed scenarios \u2014 counted from the results that have landed while the run goes",testId:"suite-run-models",value:R,sub:we}),Mt.default.createElement(zD,{spend:x,pending:h,failed:M}),Mt.default.createElement(BD,{spend:x,judgedBy:u,pending:h,failed:M}),Mt.default.createElement(vf,{label:"To fix",title:W,testId:"suite-to-fix",...E,...z})),h&&b>0&&Mt.default.createElement(yw,{parts:[{value:m-g,tone:"success"},{value:g,tone:"error"}],total:b,height:4,radius:0,role:"progressbar","aria-label":"Results in","aria-valuemin":0,"aria-valuemax":b,"aria-valuenow":m,"aria-valuetext":`${m} of ${b} results in${g?`, ${g} failed`:""}`,testId:"suite-run-progress-bar"}),M&&Mt.default.createElement("div",{"data-testid":"suite-run-error",style:{padding:"8px 16px",background:"var(--color-error-soft)",color:"var(--color-error-text)",fontSize:13}},`[!] ${e.error_message||"unknown error"}`))}var jo=X(J());function Sf({evaluation:e,run:t=null,keys:r=null,spend:n=null,spendTotal:o=!1,reportPath:a=null,onDelete:i,deleting:s=!1,deleteLabel:l="Delete evaluation"}){let u=(r||(e.criteria||[]).map(m=>m.key)).map(m=>H0(e,m)),c={fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},d={fontFamily:U,fontSize:11,color:"var(--color-text-cell)"},p=(m,g,b)=>jo.default.createElement("span",{"data-testid":g,title:b,style:{...c,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},m),f=pQ(n,{total:o});return jo.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},jo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},jo.default.createElement("span",{style:c},"judge"),jo.default.createElement("span",{style:{...d,fontWeight:600}},Mh(e,t)),jo.default.createElement("span",{style:{...c,marginLeft:8}},"criteria"),u.length===0&&jo.default.createElement("span",{style:c},e.judge_kind==="judge_defined"?"defined by the judge on the first run":e.scenario_suite?"each scenario's own expectations":"\u2014"),u.map((m,g)=>jo.default.createElement(jo.default.Fragment,{key:m.key||g},g>0&&jo.default.createElement("span",{style:c},"\xB7"),jo.default.createElement("span",{style:d,title:Ph(m)||void 0},F2(m)),Ol(m)==="telemetry"&&p("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),Ol(m)==="judge"&&p("judge",void 0,"Scored by the judge model; needs provider credentials"))),jo.default.createElement("span",{style:{...c,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},Sw(.7))),jo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},jo.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&jo.default.createElement("span",{style:{...c,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&&jo.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},ml),a&&jo.default.createElement(Jr,{href:rt(a),onClick:()=>st(a),title:"The run rendered as a report page"},"run report"),i&&jo.default.createElement("button",{type:"button",onClick:m=>{m.stopPropagation(),i()},disabled:s,title:"Delete this evaluation and its runs",style:{marginLeft:"auto",background:"transparent",border:"none",padding:0,cursor:s?"not-allowed":"pointer",fontFamily:U,fontSize:11,color:"var(--color-error)",opacity:s?.5:1}},s?"Deleting\u2026":l)))}var oCe=["tools","contains","not_contains"];function aCe(e){let t=e.expectations||{},r=[];return oCe.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 SQ(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(aCe(n))}),t.join(` -`)}var ne=X(J());var Fr=X(J());var iCe=e=>e>=.85?"success":e>=.7?"warning":"error";function zh({label:e,children:t,title:r,nowrap:n=!0}){return Fr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",Fr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function nb({label:e,short:t,provider:r,winner:n=!1,passed:o,total:a,avgScore:i,criteria:s,latencyMs:l,p50Ms:u=null,p95Ms:c=null,inputTokens:d,outputTokens:p,cost:f,perInteraction:m,estimated:g=!1,judgeCost:b=null,judgeCalls:h=0,judgeEstimated:y=!1,unit:x="interaction",badges:v=[],note:k,testId:S="model-scorecard"}){let w=o!=null&&a>0,_=w?o/a:null,A=w?cu(_):i!=null?iCe(i):"muted",C=Fn[A].strong,O=b!=null||h>0;return Fr.default.createElement(Le,{padding:"14px 16px",testId:S,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},Fr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Fr.default.createElement("span",{style:{fontFamily:U,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&Fr.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},r),n&&Fr.default.createElement(be,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),Fr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},Fr.default.createElement("span",{style:{fontFamily:U,fontSize:26,fontWeight:700,lineHeight:1,color:C},"data-testid":"model-scorecard-headline"},w?Jn(o,a):i!=null?na(i):"\u2014"),Fr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},w?`${x==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),Fr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Fr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:C,width:`${Math.round((_??i??0)*100)}%`}})),Fr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"}},Fr.default.createElement(zh,{label:"score"},na(i)),s&&Fr.default.createElement(zh,{label:"criteria"},Jn(s.cleared,s.scored)),l!=null&&Fr.default.createElement(zh,{label:"latency"},zn(l)),u!=null&&Fr.default.createElement(zh,{label:"p50 / p95"},`${zn(u)} / ${zn(c)}`),(d!=null||p!=null)&&Fr.default.createElement("span",{style:{whiteSpace:"nowrap"}},Fr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",Fr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},j0(d))," \xB7 ",Fr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",Fr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},j0(p))),f!=null&&Fr.default.createElement(zh,{label:"cost",title:`What the agent spent under this model${m!=null?` \u2014 ${Yu(m,g)} per ${x}`:""}${g?` \xB7 ${Bm()}`:""}`},kr(f,{estimated:g}),m!=null&&Fr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Yu(m,g)} / ${x}`)),O&&Fr.default.createElement(zh,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},kr(b,{estimated:y}),Fr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${St(h,"call")}`))),(v.length>0||k)&&Fr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v.map(D=>Fr.default.createElement(be,{key:D.text,tone:D.tone,testId:D.testId},D.text)),k&&Fr.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:k.color||"var(--color-text-muted)"}},k.text)))}var ui=X(J());var ln=X(J());var ZD=X(J());var kQ={good:"best third",mid:"middle third",poor:"bottom third",none:"not ranked"},YD=e=>e!=null&&Number.isFinite(Number(e)),Bh=(e,t)=>t.value?t.value(e):e?.[t.key],sCe=e=>e?.better==="lower"?"ascending":"descending",_Q=(e=[],t={})=>{let r=e.map(()=>"none"),n=t.band||"tercile";if(n==="none")return r;let o=e.map((l,u)=>({index:u,value:Bh(l,t)})).filter(l=>YD(l.value)).map(l=>({...l,value:Number(l.value)}));if(n==="threshold"){let[l,u]=t.thresholds||[],c=t.better!=="lower";return o.forEach(({index:d,value:p})=>{let f=m=>c?p>=m:p<=m;r[d]=l!=null&&f(l)?"good":u!=null&&f(u)?"mid":"poor"}),r}if(o.sort((l,u)=>t.better==="lower"?l.value-u.value:u.value-l.value),o.length===1)return r[o[0].index]="good",r;let a=Math.ceil(o.length/3),i=l=>o.length===2?l===0?"good":"poor":l{u>0&&l.value!==o[u-1].value&&(s=u),r[l.index]=i(s)}),r},CQ=(e=[],t={},r="descending")=>{let n=t.kind==="text";return e.map((o,a)=>({row:o,index:a,value:Bh(o,t)})).sort((o,a)=>{let i=n?o.value==null||o.value==="":!YD(o.value),s=n?a.value==null||a.value==="":!YD(a.value);if(i||s)return i===s?o.index-a.index:i?1:-1;let l=n?String(o.value).localeCompare(String(a.value)):Number(o.value)-Number(a.value);return(r==="ascending"?l:-l)||o.index-a.index}).map(o=>o.row)},XD=e=>e?.kind==="text"?"ascending":sCe(e);var AQ={good:{background:"var(--color-success-soft)",color:"var(--color-success-text)"},mid:{background:"var(--color-warning-soft)",color:"var(--color-warning-text)"},poor:{background:"var(--color-error-soft)",color:"var(--color-error-text)"},none:{background:"var(--color-muted)",color:"var(--color-text-cell)"}},lCe={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"},EQ={mini:{padding:"3px 8px",fontSize:11,minWidth:0},compact:{padding:"5px 11px",fontSize:12,minWidth:"6ch"},product:{padding:"6px 12px",fontSize:13,minWidth:"7ch"},marketing:{padding:"10px 16px",fontSize:15,minWidth:"7ch"}};function $o({rank:e="none",size:t="product",children:r,title:n,style:o,testId:a}){let i=AQ[e]||AQ.none,s=EQ[t]||EQ.product;return ZD.default.createElement("span",{className:"aa-pill","data-rank":e,"data-testid":a,title:n,style:{display:"inline-block",borderRadius:9999,textAlign:"center",whiteSpace:"nowrap",fontFamily:U,fontWeight:700,lineHeight:1.2,fontVariantNumeric:"tabular-nums",...s,...i,...o}},r,e!=="none"&&ZD.default.createElement("span",{style:lCe},` ${kQ[e]}`))}var JD={compact:{row:"8px 12px",head:"8px 12px",pill:"compact",name:13},product:{row:"12px 14px",head:"10px 14px",pill:"product",name:14},marketing:{row:"20px 16px",head:"12px 16px",pill:"marketing",name:17}},uCe={fontFamily:U,fontSize:11,fontWeight:700,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-primary)",display:"inline-flex",alignItems:"center",gap:4,whiteSpace:"nowrap"},cCe={fontFamily:U,fontSize:10,fontWeight:500,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-secondary)",whiteSpace:"nowrap"},dCe={fontSize:9,color:"var(--color-accent-ui)",lineHeight:1};function NQ({column:e,sorted:t,direction:r,onSort:n,density:o,align:a,isIdentity:i}){let s=e.sortable!==!1&&n,l=ln.default.createElement("span",{style:{display:"inline-grid",gap:3,justifyItems:a==="left"?"start":"center",textAlign:a}},ln.default.createElement("span",{style:uCe},e.label,t&&ln.default.createElement("span",{"aria-hidden":"true",className:"aa-caret",style:dCe},r==="ascending"?"\u25B2":"\u25BC")),e.unit&&ln.default.createElement("span",{className:"aa-head-unit",style:cCe},e.unit));return ln.default.createElement("th",{scope:"col","aria-sort":s?t?r:"none":void 0,"data-key":e.key,title:e.title,className:i?"aa-comparison-id":void 0,style:{padding:JD[o].head,textAlign:a,verticalAlign:"bottom",borderBottom:"1px solid var(--color-border)",width:e.width,background:"var(--color-card)"}},s?ln.default.createElement("button",{type:"button",onClick:()=>n(e),className:"aa-sort",style:{all:"unset",cursor:"pointer",display:"inline-block",textAlign:"inherit"}},l):l)}function kf({columns:e=[],rows:t=[],identity:r,rowKey:n=(p,f)=>p?.key??p?.id??p?.label??f,rowProps:o,sort:a,defaultSort:i,onSortChange:s,density:l="product",testId:u,style:c,emptyText:d=null}){let[p,f]=(0,ln.useState)(()=>{if(!i)return null;let S=typeof i=="string"?i:i.key,w=e.find(_=>_.key===S)||(r?.key===S?r:null);return w?{key:S,direction:typeof i=="object"&&i.direction||XD(w)}:null}),m=a||p,g=r?{kind:"text",key:r.key||"identity",value:r.value,sortable:r.sortable,...r}:null,b=g?[g,...e]:e,h=S=>{let w=m?.key===S.key?m.direction==="ascending"?"descending":"ascending":XD(S),_={key:S.key,direction:w};a||f(_),s?.(_.key,_.direction)},y=(0,ln.useMemo)(()=>Object.fromEntries(e.map(S=>[S.key,_Q(t,S)])),[e,t]),x=(0,ln.useMemo)(()=>{let S=m&&b.find(_=>_.key===m.key),w=t.map((_,A)=>({row:_,index:A}));return S?CQ(w,{...S,value:_=>Bh(_.row,S)},m.direction):w},[t,b,m]),v=JD[l]||JD.product,k=e.length;return t.length?ln.default.createElement("div",{className:"aa-comparison-wrap",style:{overflowX:"auto",minWidth:0,...c}},ln.default.createElement("table",{className:"aa-comparison","data-testid":u,"data-density":l,style:{width:"100%",borderCollapse:"collapse","--aa-cols":k}},ln.default.createElement("thead",null,ln.default.createElement("tr",null,g&&ln.default.createElement(NQ,{column:g,sorted:m?.key===g.key,direction:m?.direction,onSort:h,density:l,align:"left",isIdentity:!0}),e.map(S=>ln.default.createElement(NQ,{key:S.key,column:S,sorted:m?.key===S.key,direction:m?.direction,onSort:h,density:l,align:S.align||"center"})))),ln.default.createElement("tbody",null,x.map(({row:S,index:w})=>ln.default.createElement("tr",{key:n(S,w),className:"aa-comparison-row",...o?o(S,w):{}},g&&ln.default.createElement("td",{className:"aa-comparison-id",style:{padding:v.row,textAlign:"left",verticalAlign:"middle",fontSize:v.name,fontWeight:600,color:"var(--color-text-primary)"}},r.render?r.render(S,w):Bh(S,g)),e.map(_=>{let A=y[_.key][w],C=Bh(S,_),O=C==null||_.kind!=="text"&&!Number.isFinite(Number(C)),D=_.format?_.format(C,S):O?"\u2014":String(C),H=_.sub?_.sub(S):null;return ln.default.createElement("td",{key:_.key,className:_.kind==="text"?"aa-comparison-text":void 0,"data-label":_.unit?`${_.label} \xB7 ${_.unit}`:_.label,"data-testid":_.testId?_.testId(S):void 0,"data-rank":_.cell?void 0:A,title:_.cellTitle?_.cellTitle(S):void 0,style:{padding:v.row,textAlign:_.align||"center",verticalAlign:"middle"}},_.cell?_.cell(S,A):ln.default.createElement(ln.default.Fragment,null,ln.default.createElement($o,{rank:O?"none":A,size:v.pill},D),H!=null&&ln.default.createElement("span",{className:"aa-pill-sub",style:{display:"block",marginTop:4,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},H)))})))))):d?ln.default.createElement("div",{style:{padding:16,fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},d):null}var Fh=[.85,.5],TQ=e=>e==null?"var(--color-text-muted)":e>=Fh[0]?"var(--color-success-text)":e>=Fh[1]?"var(--color-warning-text)":"var(--color-error)";function QD({label:e,provider:t,winner:r,size:n=13}){let{short:o,provider:a}=qn(e,t||"");return ui.default.createElement("span",{style:{display:"inline-grid",gap:2,minWidth:0}},ui.default.createElement("span",{style:{display:"inline-flex",alignItems:"baseline",gap:6,whiteSpace:"nowrap"}},ui.default.createElement("span",{style:{fontFamily:U,fontSize:n,fontWeight:600,color:"var(--color-text-primary)"},title:e},o),r&&ui.default.createElement("span",{style:{fontFamily:U,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick")),a&&ui.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},a))}function ob({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(m=>m.cost!=null),s=e.some(m=>m.judgeCost!=null||m.judgeCalls>0),l=e.some(m=>m.avgTokens!=null),u=e.some(m=>m.avgDurationMs!=null),c=e.some(m=>m.p50DurationMs!=null),d=e.some(m=>m.typicalFault),p=e.some(m=>m.cost!=null&&m.estimated||m.judgeCost!=null&&n),f=[{key:"passRate",label:"Passed",unit:"Pass rate",better:"higher",band:"threshold",thresholds:Fh,format:(m,g)=>Jn(g.passed,g.total)},{key:"avgScore",label:"Score",unit:"Mean",better:"higher",format:m=>na(m)},u&&{key:"avgDurationMs",label:"Latency",unit:"Mean",better:"lower",format:m=>m==null?"\u2014":zn(m)},c&&{key:"p95DurationMs",label:"P50 / P95",unit:"Latency",title:"Median and 95th percentile latency, nearest rank",better:"lower",band:"none",format:(m,g)=>g.p50DurationMs==null?"\u2014":`${zn(g.p50DurationMs)} / ${zn(g.p95DurationMs)}`,testId:()=>"model-comparison-percentiles"},l&&{key:"avgTokens",label:"Tokens",unit:`Per ${t}`,title:`Average input + output tokens per ${t}`,better:"lower",format:m=>m==null?"\u2014":sn(Math.round(m)),cellTitle:m=>m.avgInputTokens==null?void 0:`${Math.round(m.avgInputTokens)} in \xB7 ${Math.round(m.avgOutputTokens||0)} out per ${t}`},i&&{key:"cost",label:"Cost",unit:"Cohort",title:`Cohort spend, and per ${t}`,better:"lower",format:(m,g)=>kr(m,{estimated:g.estimated}),testId:()=>"model-comparison-cost",cellTitle:m=>m.cost!=null&&m.estimated?Bm():void 0,sub:m=>m.costPerInteraction==null?null:`${kr(m.costPerInteraction,{estimated:m.estimated})}/${t}`},s&&{key:"judgeCost",label:"Judge",unit:"Spend",title:"What the judge spent scoring this model's answers",better:"lower",band:"none",format:(m,g)=>m==null&&!g.judgeCalls?"\u2014":kr(m,{estimated:n}),testId:()=>"model-comparison-judge",sub:m=>m.judgeCalls>0?St(m.judgeCalls,"call"):null},d&&{key:"typicalFault",label:"Typical fault",kind:"text",sortable:!1,align:"left",width:"30%",value:m=>m.typicalFault?.name||null,cell:m=>ui.default.createElement("span",{style:{fontSize:13,color:m.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},EJ(m))}].filter(Boolean);return ui.default.createElement(Le,{padding:0,style:{overflow:"hidden"},testId:a},ui.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 14px",flexWrap:"wrap"}},ui.default.createElement(je,null,o),ui.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),p&&ui.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},ml)),ui.default.createElement(kf,{identity:{key:"label",label:"Model",unit:"Cohort",render:m=>ui.default.createElement(QD,{label:m.label,provider:m.provider,winner:m.winner})},columns:f,rows:e,rowKey:m=>m.label,rowProps:m=>({"data-testid":"model-comparison-row","data-model":m.label})}))}var Lo=X(J());var pCe=[0,25,50,75,100],fCe={display:"grid",gridTemplateColumns:"minmax(64px, 200px) minmax(96px, 1fr) auto",alignItems:"center",gap:"6px 12px",padding:"10px 12px",border:"1px solid var(--color-border-light)",borderRadius:10},OQ={display:"contents"},RD={gridColumn:"1 / -1"},mCe={fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"};function gCe({passRate:e,interval:t}){return Lo.default.createElement("span",{"aria-hidden":"true",style:{position:"relative",display:"block",height:14}},Lo.default.createElement("span",{style:{position:"absolute",left:0,right:0,top:6,height:2,background:"var(--color-muted)"}}),t&&Lo.default.createElement("span",{"data-testid":"comparison-interval-range",style:{position:"absolute",top:3,height:8,left:`${t[0]}%`,width:`${Math.max(0,Math.round((t[1]-t[0])*10)/10)}%`,boxSizing:"border-box",border:"1px solid var(--color-info)",borderRadius:999,background:"var(--color-info-soft)"}}),e!=null&&Lo.default.createElement("span",{style:{position:"absolute",top:2,left:`${e}%`,width:10,height:10,marginLeft:-5,borderRadius:"50%",background:"var(--color-info)"}}))}function e3({plot:e,testId:t="comparison-intervals"}){if(!e)return null;let r=`${e.confidence}% CI`;return Lo.default.createElement("div",{style:fCe,"data-testid":t},Lo.default.createElement(je,{size:10,color:"var(--color-text-muted)",style:RD},`Pass rate \xB7 ${r}`),e.rows.map(n=>{let{short:o}=qn(n.label,"");return Lo.default.createElement("div",{key:n.label,style:OQ,"data-testid":"comparison-interval-row","data-model":n.label},Lo.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:n.label},o),Lo.default.createElement(gCe,{passRate:n.passRate,interval:n.interval}),Lo.default.createElement("span",{style:mCe},Lo.default.createElement("strong",{style:{color:"var(--color-text-primary)"}},n.passRate==null?"\u2014":`${n.passRate}%`),` ${n.interval?`${n.interval[0]} to ${n.interval[1]}`:"no interval"} \xB7 ${St(n.scenarios,"scenario")}`))}),Lo.default.createElement("div",{style:OQ,"aria-hidden":"true"},Lo.default.createElement("span",null),Lo.default.createElement("span",{style:{position:"relative",display:"block",height:14}},pCe.map(n=>Lo.default.createElement("span",{key:n,style:{position:"absolute",left:`${n}%`,transform:"translateX(-50%)",fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},`${n}%`))),Lo.default.createElement("span",null)),e.conclusion&&Lo.default.createElement("div",{style:{...RD,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",textWrap:"pretty"},"data-testid":"comparison-conclusion"},e.conclusion),e.resamples!=null&&Lo.default.createElement("span",{style:{...RD,fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},`${r} from ${Number(e.resamples).toLocaleString("en-US")} resamples of whole scenarios`))}var Wr=X(J());var PQ={evaluation:"pinned on this evaluation",provider_key:"the provider key's default model",config:"the host's config/active_agent.yml",provider_default:"the provider's own default"},hCe={openrouter:"openrouter/auto"},MQ=(e,t)=>{let r=t?.scores?._judge;if(!r||typeof r!="object")return null;let n=PQ[r.model_source]?r.model_source:"provider_default",o=Object.entries(r.answered||{}).filter(([,i])=>Number(i)>0).sort(([i,s],[l,u])=>u-s||i.localeCompare(l)),a=r.model||null;return{agent:r.agent||"EvaluationJudgeAgent",provider:r.provider||null,requested:a,source:n,sourceText:PQ[n],providerDefault:hCe[r.provider]||null,answered:o,auto:!a,pinned:e?.judge_model||null,suggestion:e?.judge_model||a||(o.length===1?o[0][0]:"")}},IQ=e=>{if(!e)return"";let t=e.requested?`${e.requested} (${e.sourceText})`:`${e.providerDefault||"no model"} (${e.sourceText})`,r=e.answered.map(([n,o])=>`${n} \xD7${o}`).join(", ");return`${e.agent} on ${e.provider||"no provider"} \xB7 asked for ${t}${r?` \xB7 answered by ${r}`:""}`};var DQ="/settings?tab=api-keys",Q2=(e=11)=>({fontFamily:U,fontSize:e,color:"var(--color-text-secondary)"});function t3({evaluation:e,run:t,label:r,onChanged:n,testId:o="judge-chip"}){let a=MQ(e,t),[i,s]=(0,Wr.useState)(!1),[l,u]=(0,Wr.useState)(a?.suggestion||""),[c,d]=(0,Wr.useState)(!1),[p,f]=(0,Wr.useState)(null);if((0,Wr.useEffect)(()=>{u(a?.suggestion||"")},[a?.suggestion]),!r)return null;if(!a)return Wr.default.createElement("span",{style:Q2()},`judged by ${r}`);let m=async b=>{d(!0),f(null);try{let h=await fetch(`/api/evaluations/${e.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{judge_model:b}})}),y=await h.json().catch(()=>({}));if(!h.ok){f((y.errors||[y.error]).filter(Boolean).join(", ")||`Saving the judge failed (HTTP ${h.status})`);return}await n?.()}finally{d(!1)}},g=(b,h)=>Wr.default.createElement(Wr.default.Fragment,null,Wr.default.createElement(je,{size:10},b),Wr.default.createElement("span",{style:{...Q2(12),color:"var(--color-text-cell)",overflowWrap:"anywhere"}},h));return Wr.default.createElement("span",{style:{display:"inline-flex",flexDirection:"column",gap:8,minWidth:0},"data-testid":o},Wr.default.createElement("button",{type:"button",onClick:()=>s(!i),title:IQ(a),"aria-expanded":i,style:{...Q2(),display:"inline-flex",alignItems:"center",gap:6,background:"none",border:"none",padding:0,cursor:"pointer"}},Wr.default.createElement("span",null,"judged by ",Wr.default.createElement("span",{style:{color:"var(--color-info)"}},r)),a.auto&&Wr.default.createElement(be,{tone:"warning",size:10,title:"No judge model is pinned: the provider chose"},"auto"),a.answered.length>1&&Wr.default.createElement(be,{tone:"error",size:10,title:"More than one model judged this run"},`${a.answered.length} models`)),i&&Wr.default.createElement(Le,{padding:"12px 14px",testId:`${o}-panel`,style:{display:"flex",flexDirection:"column",gap:10,maxWidth:560}},Wr.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"max-content 1fr",columnGap:14,rowGap:6,alignItems:"baseline"}},g("Judge agent",a.agent),g("Provider",a.provider||"\u2014"),g("Asked for",a.requested?`${a.requested} \xB7 ${a.sourceText}`:`${a.providerDefault||"no model"} \xB7 ${a.sourceText}`),g("Answered by",a.answered.length?a.answered.map(([b,h])=>`${b} \xD7${h}`).join(", "):"no calls recorded")),a.auto&&Wr.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},a.answered.length>1?"Different models judged this run. Pin one so runs are judged alike.":"No judge model is pinned, so a later run can be judged by a different model. Pin one to compare runs."),e?.id!=null&&Wr.default.createElement("form",{onSubmit:b=>{b.preventDefault(),l.trim()&&m(l.trim())},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Wr.default.createElement("input",{value:l,onChange:b=>u(b.target.value),placeholder:a.provider==="openrouter"?"e.g. anthropic/claude-sonnet-4.5":"judge model id","aria-label":"Judge model","data-testid":`${o}-model`,style:{flex:"1 1 220px",padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:U,boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}}),Wr.default.createElement(ie,{size:"sm",variant:"primary",type:"submit",disabled:c||!l.trim()||l.trim()===a.pinned,testId:`${o}-pin`},"Pin judge model"),a.pinned&&Wr.default.createElement(ie,{size:"sm",onClick:()=>m(""),disabled:c,testId:`${o}-unpin`},"Unpin")),Wr.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"baseline"}},Wr.default.createElement("span",{style:Q2()},a.pinned?`next run: ${a.pinned}`:`next run: ${a.providerDefault||`${a.provider} default`}`),Wr.default.createElement(Jr,{href:rt(DQ),onClick:()=>st(DQ)},`${a.provider||"provider"} key in Settings`)),p&&Wr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},p)))}var kd=X(J());function ab({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,kd.useState)("idle"),a=(0,kd.useRef)(null);(0,kd.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await bd(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 kd.default.createElement(ie,{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 R2=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var Nt=X(J());var Ie=X(J());var eA="Update from the sandbox",yCe=new Set(["queued","publishing"]);function ib(e){return!!(e&&yCe.has(e.status))}function $Q(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:`${jQ(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:jQ(e),tone:vCe(e)}}}function jQ(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function vCe(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function LQ(e){return!e?.head_commit||!e.number||ib(e)?!1:!["closed","merged"].includes(e.state)}function zQ(e){return!!(e?.head_commit&&!e.number&&!ib(e))}function BQ(e,t,r){let n=new Set(Wh(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function FQ(e){return(e||[]).some(t=>t.refusal==="not_read")}function WQ(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function tA(e){return e==="changed_since_preview"}function rA(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function nA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function Wh(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function UQ(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=Wh(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 HQ(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var xCe=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function bCe(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||xCe.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function qQ({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return Wh(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?bCe(n):"Add a title."}function oA({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=Wh(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 KQ(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 r3(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 VQ(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var GQ={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 YQ(e){return/[.!?]$/.test(e)?e:`${e}.`}function XQ(){let{darkMode:e}=ut();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 sb({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Ie.useState)(null),[a,i]=(0,Ie.useState)(null),[s,l]=(0,Ie.useState)(null),[u,c]=(0,Ie.useState)(0),[d,p]=(0,Ie.useState)(!1),f=(0,Ie.useCallback)(async()=>{let h=await fetch(r),y=await h.json().catch(()=>({}));if(!h.ok)throw new Error(ot(y,`Could not load the pull request (HTTP ${h.status}).`));return y},[r]);(0,Ie.useEffect)(()=>{let h=!1,y=null,x=async()=>{try{let v=await f();if(h)return;o(v),i(null),ib(v.pull_request)&&(y=setTimeout(x,2e3))}catch(v){h||i(v.message)}};return x(),()=>{h=!0,clearTimeout(y)}},[f,u]);let m=async h=>{p(!0),i(null);try{let y=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),x=await y.json().catch(()=>({}));if(!y.ok)throw new Error(ot(x,`Could not open the pull request (HTTP ${y.status}).`));c(v=>v+1)}catch(y){i(y.message)}finally{p(!1)}},g=n?.pull_request||null,b=n?.publishing||null;return b&&!b.supported?null:Ie.default.createElement(Ie.default.Fragment,null,Ie.default.createElement(SCe,{pullRequest:g,publishing:b,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Ie.default.createElement(kCe,{codeSession:t,sandbox:e,pullRequest:g,publishing:b,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function SCe({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=XQ(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:g}=$Q(e),b=ib(e),h=!!t?.available,y=LQ(e),x=zQ(e);return Ie.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Ie.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ie.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Ie.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Ie.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&y&&Ie.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:b,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Ie.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:b,className:p},"Open draft PR"))),t&&!h&&Ie.default.createElement("p",{className:`text-xs ${s}`},YQ(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Ie.default.createElement("div",{className:"space-y-1"},Ie.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Ie.default.createElement(Js,{tone:g},m),e.url?Ie.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Ie.default.createElement("span",{className:`truncate ${l}`},e.title)),Ie.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"&&Ie.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Ie.default.createElement("p",{className:f},e.error_message),x&&Ie.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Ie.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Ie.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&&Ie.default.createElement("div",{className:f},r))}function kCe({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,Ie.useState)(null),[d,p]=(0,Ie.useState)(!0),[f,m]=(0,Ie.useState)(null),[g,b]=(0,Ie.useState)(new Set),[h,y]=(0,Ie.useState)(l?t?.title||"":VQ(e)),[x,v]=(0,Ie.useState)(""),[k,S]=(0,Ie.useState)(l&&t?.branch||""),[w,_]=(0,Ie.useState)(eA),[A,C]=(0,Ie.useState)(""),[O,D]=(0,Ie.useState)(null),[H,$]=(0,Ie.useState)(!1),[Z,N]=(0,Ie.useState)(0);return(0,Ie.useEffect)(()=>{let M=!1;return p(!0),(async()=>{try{let I=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(O?{allowlist:O}:{})}),j=await I.json().catch(()=>({}));if(M)return;if(!I.ok)throw new Error(ot(j,`Could not read the sandbox's changes (HTTP ${I.status}).`));c(j.preview),b(rA(j.preview.files)),S(T=>T||j.preview.suggested_branch||"")}catch(I){M||m(I.message)}finally{M||p(!1)}})(),()=>{M=!0}},[s,Z,O]),Ie.default.createElement(n3,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:g,onToggle:M=>b(I=>nA(I,M)),fields:{title:h,body:x,branch:k,message:w,allowlist:A},onField:(M,I)=>({title:y,body:v,branch:S,message:_,allowlist:C})[M](I),allowlistApplied:!!O,onApplyAllowlist:()=>{m(null),D(WQ(A))},mode:n,submitting:H,onSubmit:async()=>{$(!0),m(null);try{let M=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...oA({files:u?.files,selection:g,title:h,body:x,branch:k,message:w,allowlist:O,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),I=await M.json().catch(()=>({}));if(!M.ok)throw tA(I.code)&&N(j=>j+1),new Error(ot(I,`Could not publish (HTTP ${M.status}).`));a(I.pull_request)}catch(M){m(M.message)}finally{$(!1)}},onCancel:o})}function n3({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:g,patchHref:b}){let h=XQ(),{muted:y,strong:x,border:v,link:k,secondaryButton:S,primaryButton:w,input:_,errorBox:A,darkMode:C}=h,O=t?.files||[],D=(0,Ie.useMemo)(()=>Wh(O,i),[O,i]),H=!!o?.available,$=p==="patch"||!H,Z=p==="update"&&!$,N=t&&!$?qQ({files:O,selection:i,title:l.title,branch:l.branch,message:l.message,update:Z}):null,P=Z?BQ(a,O,i):[],M="Open draft PR";$?M="Download patch":Z&&(M="Update draft PR");let I=`Publishes the files you tick from ${e.repository}@${e.repository_ref} through the GitHub API, as one commit on a new branch.`;return $?I=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:Z&&(I="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."),Ie.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":M},Ie.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${v} ${C?"bg-gray-900":"bg-white"}`},Ie.default.createElement("div",{className:"flex items-start justify-between gap-3"},Ie.default.createElement("div",null,Ie.default.createElement("p",{className:`text-lg font-medium ${x}`},M),Ie.default.createElement("p",{className:`text-xs ${y}`},I," Nothing under .github/ is ever published.")),Ie.default.createElement("button",{type:"button",onClick:g,className:S},"Close")),r&&Ie.default.createElement("p",{className:`text-sm ${y}`},"Reading the sandbox's changes\u2026"),n&&Ie.default.createElement("div",{className:A},n),t&&Ie.default.createElement(Ie.default.Fragment,null,d&&(FQ(O)||c)&&Ie.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Ie.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Only read paths matching"),Ie.default.createElement("input",{type:"text",value:l.allowlist,onChange:j=>u("allowlist",j.target.value),disabled:f||r,placeholder:"app/**, lib/*.rb",className:`${_} font-mono`})),Ie.default.createElement("button",{type:"button",onClick:d,disabled:f||r,className:`${S} disabled:opacity-50`},"Read again")),Ie.default.createElement("div",{className:"space-y-1"},Ie.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${y}`},"Files \xB7 ",UQ(O,i)),O.length===0&&Ie.default.createElement("p",{className:`text-sm ${y}`},"The sandbox has no changes."),Ie.default.createElement("ul",{className:"space-y-1"},O.map(j=>Ie.default.createElement("li",{key:j.path,className:"flex items-center gap-2 text-sm"},Ie.default.createElement("input",{type:"checkbox","aria-label":`Publish ${j.path}`,checked:!j.refusal&&i.has(j.path),disabled:!!j.refusal||f,onChange:()=>s(j.path)}),Ie.default.createElement("span",{className:`w-4 text-xs font-mono ${y}`},HQ(j)),Ie.default.createElement("span",{className:`font-mono truncate ${j.refusal?y:x}`},j.path),j.size!=null&&j.status!=="deleted"&&Ie.default.createElement("span",{className:`shrink-0 text-xs ${y}`},r3(j.size)),j.refusal&&Ie.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},j.refusal_message))))),P.length>0&&Ie.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: ",Ie.default.createElement("span",{className:"font-mono"},P.join(", "))),D.length>0&&Ie.default.createElement("div",{className:"space-y-2"},Ie.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${y}`},"What will be published"),D.map(j=>Ie.default.createElement(_Ce,{key:j.path,file:j,classes:h}))),!$&&Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Branch"),Ie.default.createElement("input",{type:"text",value:l.branch,onChange:j=>u("branch",j.target.value),disabled:Z||f,maxLength:200,className:`${_} font-mono`})),Z?Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Commit message"),Ie.default.createElement("input",{type:"text",value:l.message,onChange:j=>u("message",j.target.value),disabled:f,className:_})):Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Title"),Ie.default.createElement("input",{type:"text",value:l.title,onChange:j=>u("title",j.target.value),disabled:f,maxLength:256,className:_})),!$&&!Z&&Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Description"),Ie.default.createElement("textarea",{value:l.body,onChange:j=>u("body",j.target.value),disabled:f,rows:4,className:_})),Ie.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Ie.default.createElement("p",{className:`text-xs ${y}`},!H&&YQ(o?.refusal||"Publishing is not available for this sandbox"),H&&N),Ie.default.createElement("div",{className:"flex items-center gap-3"},D.length>0&&Ie.default.createElement("a",{href:rt((b||((j,T)=>KQ(e.session_id,j,T)))(D.map(j=>j.path),Z?l.message:l.title)),className:`text-sm ${k}`},"Download patch"),Ie.default.createElement("button",{type:"button",onClick:g,className:S},"Cancel"),!$&&Ie.default.createElement("button",{type:"button",onClick:m,disabled:!!N||f,className:w},f?"Publishing\u2026":M))))))}function _Ce({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Ie.useMemo)(()=>E0(e.diff),[e.diff]);return Ie.default.createElement("div",{className:`rounded border ${n}`},Ie.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Ie.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",r3(e.size),": published as it is in the sandbox."):Ie.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=GQ[s.kind]||GQ.context;return Ie.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var CCe=(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")),aA=new Map,ACe=e=>(aA.has(e)||aA.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(()=>aA.delete(e))),aA.get(e));function o3({item:e,evaluation:t,run:r}){let[n,o]=(0,Nt.useState)(!1),[a,i]=(0,Nt.useState)(null),[s,l]=(0,Nt.useState)(""),[u,c]=(0,Nt.useState)(null),[d,p]=(0,Nt.useState)(!1),[f,m]=(0,Nt.useState)(null),g=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,b=(0,Nt.useCallback)(async()=>{let _=await ACe(g);return i(_),l(A=>A||_.sandboxes?.find(C=>C.status==="ready")?.session_id||""),_},[g]);if((0,Nt.useEffect)(()=>{if(!t?.id||!r?.id)return;let _=!1,A,C=async()=>{try{await b()}catch(O){_||c(O.message)}!_&&n&&(A=setTimeout(C,2500))};return C(),()=>{_=!0,clearTimeout(A)}},[b,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(_=>CCe(_.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let y=h.find(_=>_.id===f)||h[0],x=a?.sandboxes?.find(_=>_.session_id===(y?.sandbox_session_id||s)),v=y&&(["queued","running"].includes(y.status)||y.status==="succeeded"&&y.diff&&!y.verification?.error&&!["complete","failed"].includes(y.verification?.status)),k=a?.auth_mode!=="sandbox_login"||x?.claude_login?.credential_mode,S=async(_=null)=>{if(!(!x||d||v)){p(!0),c(null);try{let A=await fetch(`/api/sandboxes/${encodeURIComponent(x.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:_?.id})}),C=await A.json();if(!A.ok)throw new Error(C.error||"Could not start this fix.");m(C.code_session.id),await b()}catch(A){c(A.message)}finally{p(!1)}}},w=y?y.verification?.status==="complete"?3:y.status==="succeeded"?2:1:0;return Nt.default.createElement(Nt.default.Fragment,null,Nt.default.createElement(ie,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},y?"Review implementation":"Implement with Claude Code"),y?.verification?.status==="complete"&&Nt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},y.verification.counts.fixed||0," fixed \xB7 ",y.verification.counts.regressed||0," regressed"),n&&Nt.default.createElement(uD,{title:"Implement evaluation fix",onClose:()=>o(!1)},Nt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((_,A)=>Nt.default.createElement(be,{key:_,tone:A===w?"accent":A_.status==="ready")&&Nt.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",Nt.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...lD,marginTop:8},value:s,onChange:_=>l(_.target.value)},Nt.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(_=>_.status==="ready").map(_=>Nt.default.createElement("option",{key:_.session_id,value:_.session_id},_.repository," \xB7 ",_.repository_ref," \xB7 ",_.session_id.slice(0,8))))),a&&!x&&Nt.default.createElement("div",{style:I0},Nt.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),Nt.default.createElement("a",{href:rt(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),Nt.default.createElement(ie,{size:"sm",onClick:()=>b().catch(_=>c(_.message)),style:{marginLeft:12}},"Check again")),x&&a?.auth_mode==="sandbox_login"&&!v&&Nt.default.createElement(uf,{sandbox:x,onConnected:b,onChange:b}),x&&Nt.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",Nt.default.createElement("strong",null,x.claude_login?.credential_mode==="sandbox_login"?"your Claude subscription":a?.auth_mode==="local_login"?"this machine\u2019s Claude login":k?"the account\u2019s Anthropic API key":"your sandbox login after you connect"),". Verification uses the agent\u2019s own provider credentials."),!y&&Nt.default.createElement(ie,{variant:"primary",disabled:!x||!k||d||!!a?.refusal||!a?.supported,onClick:()=>S()},d?"Starting\u2026":"Implement this fix"),y&&Nt.default.createElement(Nt.default.Fragment,null,Nt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},Nt.default.createElement(be,{tone:y.status==="failed"?"error":"info"},"Claude Code \xB7 ",y.status),Nt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",y.id)),["queued","running"].includes(y.status)&&Nt.default.createElement(ie,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(x.session_id)}/code_sessions/${y.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await b()}catch(_){c(_.message)}}},"Cancel session"),y.result&&Nt.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},y.result),y.error_message&&Nt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},y.error_message),y.diff&&Nt.default.createElement("details",null,Nt.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),Nt.default.createElement("pre",{style:{...I0,maxHeight:240,overflow:"auto",fontSize:11}},y.diff)),Nt.default.createElement(D0,{session:y,evaluationId:t.id,sandboxId:x?.session_id,onRetry:()=>S(y)}),y.verification?.status==="complete"&&x&&Nt.default.createElement(sb,{sandbox:x,codeSession:y})),u&&Nt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var _f=X(J());function a3({items:e=[],size:t="compact",gap:r=14,style:n,testId:o}){let a=e.filter(i=>i&&i.value!=null&&i.value!=="");return a.length?_f.default.createElement("div",{"data-testid":o,style:{display:"flex",flexWrap:"wrap",gap:r,alignItems:"flex-end",...n}},a.map(i=>_f.default.createElement("span",{key:i.key||i.label,"data-testid":i.testId,title:i.title,style:{display:"inline-grid",gap:4,justifyItems:"start"}},_f.default.createElement("span",{style:{display:"inline-grid",gap:1}},_f.default.createElement("span",{style:{fontFamily:U,fontSize:10,fontWeight:700,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-primary)",whiteSpace:"nowrap"}},i.label),i.unit&&_f.default.createElement("span",{style:{fontFamily:U,fontSize:9,fontWeight:500,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},i.unit)),_f.default.createElement($o,{rank:i.rank||"none",size:t},i.value)))):null}var i3=6,ECe=600,Uh=12,Hh=e=>String(e||"").replace(/_/g," "),Cs=e=>String(e??"").trim(),lb=e=>[...new Set(e.filter(Boolean))],s3=e=>Cs(e).split(` +`);o.length>t&&(o=o.slice(0,t));let a=o.lengthe?.is_error===!0||e?.subtype!=null&&e.subtype!=="success",c_e=e=>{if(!tZ(e))return"Done";if(UX[e.subtype])return UX[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},d_e=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?Zs(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: ${P2(e.subtype).toLowerCase()}`:"System event"}},p_e=/^(hook_|thinking_tokens$)/,f_e=e=>p_e.test(String(e?.subtype||"")),m_e=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: ${P2(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},T2=(e,t)=>({kind:"unknown",label:String(e||"event"),text:C0(Eh(t),300)}),HX=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!sf(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:s_e(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=u_e(l_e(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[T2(`${t} ${e.type||"block"}`,e)]}},g_e=(e,t)=>{let r=e.message?.content;return typeof r=="string"?HX(r,e.type,t):Array.isArray(r)?r.flatMap(n=>HX(n,e.type,t)):[T2(e.type,e)]},h_e=(e,t={toolNames:{}})=>{if(t.toolNames||={},!sf(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:Eh(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}]:[T2(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),f_e(e)?[]:[d_e(e)];case"rate_limit_event":return m_e(e);case"assistant":case"user":return n(g_e(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=qX(c_e(e),e);return[{kind:"result",tone:tZ(e)?"error":"success",text:o?`${a} \xB7 ${Zs(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[T2(e.type,e)]}},D2=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>h_e(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},rZ=/^diff (--git|--cc|--combined) /,y_e="\u2026 diff truncated",O0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` +`).map(n=>{if(rZ.test(n))return t=!0,{text:n,kind:"meta"};if(n===y_e)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"}})},nZ=e=>{let t=O0(e),r=t.filter(a=>a.kind==="meta"&&rZ.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${Zs(r,"file")} changed \xB7 +${n} \u2212${o}`},P0="default",M0="other",oZ=["sonnet","opus","haiku"],v_e=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,lD="actionagent.claudeCode.modelChoice",aZ=(e="claude_code")=>[{value:P0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:oZ.map(t=>({value:t,label:t})),{value:M0,label:"Other\u2026"}],uD=e=>e===P0||e===M0||oZ.includes(e),cD=(e,t="")=>{if(!uD(e)||e===P0)return{model:null};if(e!==M0)return{model:e};let r=String(t??"").trim();return r?v_e.test(r)?{model:r}:{error:`"${C0(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},iZ=(e,t,r,n="claude_code")=>{let{model:o}=cD(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},$2=e=>{let t={choice:P0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!sf(r)||!uD(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},sZ=(e,t="")=>JSON.stringify({choice:uD(e)?e:P0,custom:String(t??"").slice(0,100)}),dD=e=>e?.model||"default model",A0="api_key",E0="local_login",lZ="claude /login",uZ="sk-ant-api03-\u2026",cZ="https://platform.claude.com",dZ="https://code.claude.com/docs/en/legal-and-compliance.md",j2=e=>{let t=sf(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===E0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?E0:A0,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}},pZ=(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===E0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:E0,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:lZ}}return t?t.configured&&t.needs_replacing===!0?{view:A0,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:A0,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}},fZ=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===E0?{text:"Claude Code is not logged in on this machine. Run",loginHint:lZ,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},N0="local_login",mZ="codex login",L2=e=>{let t=sf(e?.codex_login)?e.codex_login:{},r=e?.codex_auth===N0;return{supported:e?.codex_sessions_supported===!0,mode:r?N0:A0,connected:e?.codex_connected===!0,loggedIn:r&&t.logged_in===!0,authMethod:r&&typeof t.auth_method=="string"&&t.auth_method?t.auth_method:null}},gZ=(e,t)=>{let r={view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,loginHint:null};if(!e)return r;if(e.mode===N0){let n=e.authMethod?` (${e.authMethod})`:"";return{view:N0,status:e.loggedIn?`Using this machine's Codex login \xB7 logged in${n}`:"Using this machine's Codex login \xB7 not logged in",tone:e.loggedIn?"success":"error",keyForm:!1,loginHint:e.loggedIn?null:mZ}}return t?{view:A0,status:t.configured?`Connected \xB7 ${t.hint}`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,loginHint:null}:r},hZ=e=>!e||e.supported!==!0?{text:"This sandbox backend does not support Codex.",loginHint:null,after:null}:e.connected===!0?null:e.mode===N0?{text:"Codex is not logged in on this machine. Run",loginHint:mZ,after:"as the user the dashboard runs as."}:{text:"Connect an OpenAI API key in the Codex integration below.",loginHint:null,after:null};var vZ=1500,pD=[{id:"all",label:"All"},{id:"agent",label:"Agent runs"},{id:"claude_code",label:"Claude Code"},{id:"codex",label:"Codex"}],x_e=new Set(pD.map(e=>e.id)),fD=e=>e?.source==="code_session"||/^code-\d+$/.test(String(e?.id??"")),lf=e=>{let t=/^code-(\d+)$/.exec(String(e??""));return t?Number(t[1]):null},xZ=(e,t="")=>{let r=new URLSearchParams(t),n=x_e.has(r.get("source"))?r.get("source"):"all",o=/^\d+$/.test(r.get("project")||"")?Number(r.get("project")):null,a=String(e||"").replace(/^\/interactions\/?/,"").replace(/\/$/,"");if(a==="latest")return{view:"latest",source:n,project:o,codeId:null};let i=lf(a);return i?{view:"conversation",source:n,project:o,codeId:i}:{view:"list",source:n,project:o,codeId:null}},_s=e=>`/interactions/code-${e}`,z2=({source:e="all",project:t=null}={})=>{let r=new URLSearchParams;e&&e!=="all"&&r.set("source",e),t&&r.set("project",String(t));let n=r.toString();return`/interactions${n?`?${n}`:""}`},mD=({minutes:e=null,agentId:t=null,source:r="all",project:n=null}={})=>{let o=new URLSearchParams;return e&&o.set("minutes",String(e)),t&&o.set("agent_id",String(t)),r&&r!=="all"&&o.set("source",r),n&&o.set("project_id",String(n)),o.toString()},bZ=e=>{let t=(e||[]).filter(fD);if(t.length===0)return null;let r=[...t].sort((n,o)=>String(o.last_activity_at).localeCompare(String(n.last_activity_at)));return r.find(n=>n.active)||r[0]},wZ=e=>(e||[]).filter(t=>(t.events||[]).length>0).map(t=>`after[${encodeURIComponent(t.id)}]=${t.events_offset+t.events.length}`).join("&"),SZ=(e,t)=>{if(!t)return e;if(!e)return t;let r=new Map((e.turns||[]).map(o=>[o.id,o])),n=(t.turns||[]).map(o=>{let a=r.get(o.id);if(!a||o.events_offset===0)return o;let i=(a.events||[]).slice(0,o.events_offset-a.events_offset);return{...o,events_offset:a.events_offset,events:[...i,...o.events||[]]}});return{...t,turns:n}},kZ=e=>(e?.turns||[]).some(Js),_Z=e=>{let t=[`Turn ${Number(e.turn_index)+1}`];return e.total_cost_usd!=null&&t.push(M2(e.total_cost_usd)),e.duration_ms!=null&&t.push(oD(e.duration_ms)),e.diff_stat&&t.push(`${Zs(e.diff_stat.files,"file")} +${e.diff_stat.additions} \u2212${e.diff_stat.deletions} since checkout`),t.join(" \xB7 ")},B2=e=>{let t=[Zs(e.turn_count??(e.turns||[]).length,"turn")];e.total_cost_usd&&t.push(M2(e.total_cost_usd));let r=e.tokens?.total||0;return r&&t.push(`${r>=1e3?`${(r/1e3).toFixed(1)}k`:r} tokens`),t.join(" \xB7 ")},CZ=e=>{let t=e?.turns||[],r=t[t.length-1];if(!r||Js(r))return null;for(let n of[...r.events||[]].reverse()){let o=n?.message?.content;if(Array.isArray(o)){for(let a of[...o].reverse())if(a?.type==="tool_use"&&/(^|__)browser_request_person$/.test(String(a.name||""))){let i=typeof a.input?.reason=="string"?a.input.reason:null;if(i)return{reason:i,turn:r.turn_index}}}}return null},D0=e=>e?.runner==="codex"?"Codex":"Claude Code",AZ=(e,{handoff:t=null}={})=>{if(e?.sandbox_status&&e.sandbox_status!=="ready")return`The sandbox is ${e.sandbox_status}: boot it again to continue this conversation.`;let r=(e?.turns||[]).filter(a=>a.status==="queued").length,n=(e?.turns||[]).some(a=>a.status==="running"),o=t?` ${D0(e)} will be told you drove the browser.`:"";return n?`Your message waits for the turn that runs${r?` (and ${Zs(r,"more")})`:""}.${o}`:`Sends the next turn, resuming this conversation.${o}`},EZ=(e,t)=>{let r=new URLSearchParams(e||"").get("browser");return r==="1"||r==="0"?r==="1":t==="1"},uf=50,F2=25,W2=75,yZ=5,I0=e=>{let t=Number(e);return Number.isFinite(t)?Math.min(W2,Math.max(F2,Math.round(t*10)/10)):uf},NZ=(e,{left:t,width:r})=>r>0?I0((e-t)/r*100):uf,TZ=(e,t)=>{switch(t){case"ArrowLeft":return I0(e-yZ);case"ArrowRight":return I0(e+yZ);case"Home":return F2;case"End":return W2;case"Enter":return uf;default:return null}};var Oe=X(J());var Ht=X(J());var j0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},gD={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 hD({title:e,onClose:t,children:r}){let n=(0,Ht.useRef)(null);return(0,Ht.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),Ht.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)"}},Ht.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},Ht.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),Ht.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")),Ht.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function $0(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 b_e=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 cf({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,Ht.useState)(null),[i,s]=(0,Ht.useState)(!1),[l,u]=(0,Ht.useState)(""),[c,d]=(0,Ht.useState)(!1),[p,f]=(0,Ht.useState)(null),m=(0,Ht.useRef)(null),g=(0,Ht.useRef)(t);g.current=t,(0,Ht.useEffect)(()=>{let x=!1;return $0(n).then(v=>{x||a(v)}).catch(v=>{x||f(v.message)}),()=>{x=!0}},[n]),(0,Ht.useEffect)(()=>{if(!i)return;let x=!1,v,k=async()=>{try{let S=await $0(n);if(x)return;if(a(S),S.authorize_url&&m.current&&(m.current.location=S.authorize_url,m.current=null),S.logged_in){s(!1),u(""),d(!1),r?.(),g.current?.();return}if(!["starting","awaiting_code","submitted"].includes(S.status)){f(b_e(S.status)),d(!1);return}v=setTimeout(k,1200)}catch(S){x||(f(S.message),d(!1))}};return v=setTimeout(k,300),()=>{x=!0,clearTimeout(v)}},[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 $0(n,"POST")),s(!0)}catch(x){m.current?.close(),m.current=null,f(x.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await $0(n,"DELETE")),r?.()}catch(x){f(x.message)}finally{d(!1)}},y=async x=>{if(x.preventDefault(),!l.trim()||c)return;let v=l.trim();u(""),d(!0),f(null);try{a(await $0(`${n}/code`,"POST",{claude_login_code:v}))}catch(k){f(k.message),d(!1)}};return Ht.default.createElement("section",{style:j0,"data-testid":"sandbox-claude-login"},Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},Ht.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},Ht.default.createElement("strong",null,"Claude Code"),Ht.default.createElement(ve,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&Ht.default.createElement(ie,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),Ht.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&&Ht.default.createElement(ie,{variant:"primary",onClick:b,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&Ht.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&Ht.default.createElement(hD,{title:"Connect your Claude subscription",onClose:h},Ht.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."),Ht.default.createElement("div",{style:{...j0,fontSize:12}},Ht.default.createElement("strong",null,e.repository||"Checkout sandbox"),Ht.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?Ht.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"):Ht.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),Ht.default.createElement("form",{onSubmit:y,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},Ht.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),Ht.default.createElement("input",{id:`claude-login-code-${e.session_id}`,type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,maxLength:2048,value:l,onChange:x=>u(x.target.value),placeholder:"Paste the code from Claude",style:gD,disabled:c||o?.status!=="awaiting_code"}),Ht.default.createElement(ie,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&Ht.default.createElement(Ht.default.Fragment,null,Ht.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),Ht.default.createElement(ie,{onClick:b,disabled:c},"Start sign-in again")),Ht.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 Br=X(J());function L0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,Br.useState)(null),[i,s]=(0,Br.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 Br.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},Br.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Br.default.createElement("strong",{style:{fontSize:13}},"Before & after"),Br.default.createElement(ve,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&Br.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),Br.default.createElement("div",{style:{overflowX:"auto"}},Br.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},Br.default.createElement("thead",null,Br.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(f=>Br.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)))),Br.default.createElement("tbody",null,u.map(f=>Br.default.createElement("tr",{key:`${f.scenario_key}/${f.model}/${f.trial??1}`},Br.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.scenario_key,Br.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},f.model,f.trial>1?` \xB7 trial ${f.trial}`:"")),Br.default.createElement("td",{style:{padding:10}},f.before," \xB7 ",p(f.before_score)),Br.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)}`,Br.default.createElement("div",{style:{fontSize:10,marginTop:4}},f.change.replaceAll("_"," "))),Br.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.score_change==null?"\u2014":`${f.score_change>0?"+":""}${p(f.score_change)}`),Br.default.createElement("td",{style:{padding:10}},f.fault||(f.after?"none":f.before_fault)||"\u2014")))))),Br.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},Br.default.createElement("a",{href:rt(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&Br.default.createElement("a",{href:rt(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&Br.default.createElement(ie,{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)&&Br.default.createElement(ie,{size:"sm",onClick:n},"Try again")),o?.run&&Br.default.createElement("a",{style:{fontSize:12},href:rt(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&Br.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var sn=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)}`},z0=e=>e==null?"\u2014":sn(e),U2=(e,t)=>e==null&&t==null?"\u2014":`${z0(e)}\u2192${z0(t)}`,Bn=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`},B0=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)}`},F0=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var Nh=(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}`},Co=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`},Kn=(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 w_e=2e4,PZ=()=>{try{return $2(window.localStorage.getItem(lD))}catch{return $2(null)}},S_e=(e,t)=>{try{window.localStorage.setItem(lD,sZ(e,t))}catch{}},DZ=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),MZ={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 Qs({tone:e="neutral",children:t}){let{darkMode:r}=ut(),n=MZ[e]||MZ.neutral;return Oe.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"&&Oe.default.createElement("span",{className:"mr-1 h-1.5 w-1.5 rounded-full bg-current animate-pulse"}),t)}function W0({sandbox:e,claudeCode:t,codex:r,onRecheckConnection:n,readOnly:o=!1,focusSessionId:a=null,title:i="Code sessions"}){let{darkMode:s}=ut(),l=`/api/sandboxes/${encodeURIComponent(e.session_id)}/code_sessions`,[u,c]=(0,Oe.useState)(null),[d,p]=(0,Oe.useState)(null),[f,m]=(0,Oe.useState)(null),[g,b]=(0,Oe.useState)(null),[h,y]=(0,Oe.useState)(0),[x,v]=(0,Oe.useState)(0),[k,S]=(0,Oe.useState)(""),[w,_]=(0,Oe.useState)("claude_code"),A=w==="codex"?"Codex":"Claude Code",[C,O]=(0,Oe.useState)(PZ),[D,H]=(0,Oe.useState)(!1),[j,Z]=(0,Oe.useState)(!1),[N,P]=(0,Oe.useState)(null),M=(0,Oe.useRef)(null),I=(0,Oe.useRef)(!0),$=(0,Oe.useCallback)(async()=>{let E=await fetch(l),W=await E.json().catch(()=>({}));if(!E.ok)throw new Error(ot(W,`Could not load code sessions (HTTP ${E.status}).`));return W.code_sessions||[]},[l]);(0,Oe.useEffect)(()=>{let E=!1;return c(null),p(null),$().then(W=>{if(E)return;c(W);let F=W.find(B=>B.id===a)||W.find(Js)||W[0];p(B=>B??F?.id??null)}).catch(W=>{E||(c([]),P(W.message))}),()=>{E=!0}},[$]),(0,Oe.useEffect)(()=>{a!=null&&p(a)},[a]),(0,Oe.useEffect)(()=>{if(d==null)return;let E=!1,W=null,F=[],B=0;m(null),b(null),I.current=!0;let Ee=async()=>{let Ve=!0,fe=null;try{let ze=await fetch(`${l}/${d}?after=${F.length}`);fe=ze.status;let Vt=await ze.json().catch(()=>({}));if(E)return;if(!ze.ok)throw new Error(ot(Vt,`Could not load the session (HTTP ${ze.status}).`));let Ot=Vt.code_session;F=eZ(F,Ot),B=0,b(null),m({...Ot,events:F}),c(Se=>xd(Se||[],QX(Ot),"id"));let Gt=Ot.evaluation_run_id&&Ot.status==="succeeded"&&Ot.diff&&!Ot.verification?.error&&!["complete","failed"].includes(Ot.verification?.status);iD(Ot)&&!Gt&&(Ve=!1)}catch(ze){if(E)return;B+=1,b(ze.message),O2(fe,B)&&(Ve=!1)}Ve&&!E&&(W=setTimeout(Ee,1500))};return Ee(),()=>{E=!0,clearTimeout(W)}},[l,d,h]);let T=(u||[]).find(Js)||null,q=T&&T.id!==d?T.id:null,G=w==="codex"?hZ(r):fZ(t),L=G?"not_connected":T?"busy":null;(0,Oe.useEffect)(()=>{if(q==null)return;let E=!1,W=setTimeout(async()=>{try{let F=await $();E||c(F)}catch{}E||v(F=>F+1)},1500*2);return()=>{E=!0,clearTimeout(W)}},[q,x,$]);let Y=(0,Oe.useMemo)(()=>D2(f?.events),[f?.events]);(0,Oe.useLayoutEffect)(()=>{let E=M.current;E&&I.current&&(E.scrollTop=E.scrollHeight)},[Y.length]);let K=E=>{let W=E.currentTarget;I.current=W.scrollHeight-W.scrollTop-W.clientHeight<40},pe=cD(C.choice,C.custom).error||null,De=E=>{O(W=>{let F={...W,...E};return w==="claude_code"&&S_e(F.choice,F.custom),F})},se=async()=>{let E=k.trim();if(!(!E||L||D||pe)){H(!0),P(null);try{let W=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(iZ(E,C.choice,C.custom,w))}),F=await W.json().catch(()=>({}));if(!W.ok)throw F.code_session&&(c(B=>xd(B||[],F.code_session,"id")),p(F.code_session.id)),new Error(ot(F,`Could not start ${A} (HTTP ${W.status}).`));c(B=>xd(B||[],F.code_session,"id")),p(F.code_session.id),S("")}catch(W){P(W.message)}finally{H(!1)}}},be=async E=>{Z(!0),P(null);try{let W=await fetch(`${l}/${E.id}/cancel`,{method:"POST"}),F=await W.json().catch(()=>({}));if(!W.ok)throw new Error(ot(F,`Could not cancel the session (HTTP ${W.status}).`));c(B=>xd(B||[],F.code_session,"id")),m(B=>B&&B.id===F.code_session.id?{...B,...F.code_session}:B)}catch(W){P(W.message)}finally{Z(!1)}},ue=s?"text-gray-400":"text-gray-500",R=s?"text-white":"text-gray-900",we=s?"border-gray-700":"border-gray-200",Ce=`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"}`,z=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,ee=`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"}`,ae=f&&f.id===d?f:(u||[]).find(E=>E.id===d)||null;return Oe.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${we}`},!o&&t?.mode==="sandbox_login"&&Oe.default.createElement(cf,{sandbox:e,onChange:n}),Oe.default.createElement("div",{className:"flex items-center justify-between"},Oe.default.createElement("p",{className:`text-sm font-medium ${R}`},i),Oe.default.createElement("p",{className:`text-xs ${ue}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Oe.default.createElement("div",{className:ee},N),!o&&Oe.default.createElement("div",{className:"space-y-2"},Oe.default.createElement("label",{className:`flex items-center gap-2 text-xs ${ue}`},"Agent",Oe.default.createElement("select",{"aria-label":"Coding agent",value:w,onChange:E=>{_(E.target.value),O(E.target.value==="claude_code"?PZ():$2(null))},disabled:D,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},Oe.default.createElement("option",{value:"claude_code"},"Claude Code"),Oe.default.createElement("option",{value:"codex",disabled:!r?.supported},"Codex",r?.supported?"":" (backend unavailable)"))),Oe.default.createElement("textarea",{value:k,onChange:E=>S(E.target.value),onKeyDown:E=>{E.key==="Enter"&&(E.metaKey||E.ctrlKey)&&se()},rows:3,maxLength:w_e,disabled:L==="not_connected"||D,placeholder:`What should ${A} 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"}`}),Oe.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Oe.default.createElement("label",{htmlFor:`code-session-model-${e.session_id}`,className:`text-xs ${ue}`},"Model"),Oe.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:C.choice,onChange:E=>De({choice:E.target.value}),disabled:D,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"}`},aZ(w).map(E=>Oe.default.createElement("option",{key:E.value,value:E.value},E.label))),C.choice===M0&&Oe.default.createElement("input",{type:"text",value:C.custom,onChange:E=>De({custom:E.target.value}),disabled:D,maxLength:100,placeholder:w==="codex"?"Model id":"claude-sonnet-4-5","aria-label":"Model id","aria-invalid":!!pe,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"}`})),pe&&C.custom.trim()&&Oe.default.createElement("p",{className:`text-xs ${s?"text-red-300":"text-red-700"}`},pe),Oe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Oe.default.createElement("p",{className:`text-xs ${ue}`},L==="not_connected"&&Oe.default.createElement(Oe.default.Fragment,null,G.text,G.loginHint&&Oe.default.createElement(Oe.default.Fragment,null," ",Oe.default.createElement("code",{className:"font-mono"},G.loginHint)," ",G.after)," ",n&&Oe.default.createElement("button",{type:"button",onClick:n,className:z},"Check again")),L==="busy"&&Oe.default.createElement(Oe.default.Fragment,null,"A session is ",T.status," in this checkout; wait for it to finish or cancel it."," ",T.id!==d&&Oe.default.createElement("button",{type:"button",onClick:()=>p(T.id),className:z},"Show it"))),Oe.default.createElement("button",{type:"button",onClick:se,disabled:!!L||D||!k.trim()||!!pe,className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},D?"Starting\u2026":`Run ${A}`)),N&&Oe.default.createElement("div",{className:ee},N)),u&&u.length>0&&Oe.default.createElement("div",{className:"space-y-1"},Oe.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${ue}`},"Sessions"),Oe.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(E=>{let{label:W,tone:F}=ks(E.status),B=E.id===d;return Oe.default.createElement("button",{key:E.id,type:"button",title:XX(E),onClick:()=>B?y(Ee=>Ee+1):p(E.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${B?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Oe.default.createElement(Qs,{tone:F},W),Oe.default.createElement("span",{className:`text-xs ${ue}`},E.runner==="codex"?"Codex":"Claude Code"),Oe.default.createElement("span",{className:`flex-1 truncate ${R}`},ZX(E.prompt)),Oe.default.createElement("span",{className:`shrink-0 text-xs font-mono ${ue}`},dD(E)),Oe.default.createElement("span",{className:`shrink-0 text-xs ${ue}`},Co(E.created_at)))}))),u===null&&Oe.default.createElement("p",{className:`text-xs ${ue}`},"Loading sessions\u2026"),ae&&Oe.default.createElement(k_e,{session:ae,rows:Y,loaded:!!(f&&f.id===ae.id),detailError:g,cancelling:j,onCancel:()=>be(ae),onReload:()=>y(E=>E+1),transcriptRef:M,onTranscriptScroll:K,classes:{muted:ue,strong:R,border:we,secondaryButton:Ce,linkButton:z,errorBox:ee}}))}function k_e({session:e,rows:t,loaded:r,detailError:n,cancelling:o,onCancel:a,onReload:i,transcriptRef:s,onTranscriptScroll:l,classes:u}){let{darkMode:c}=ut(),{muted:d,strong:p,border:f,secondaryButton:m,linkButton:g,errorBox:b}=u,{label:h,tone:y}=ks(e.status),x=Js(e),v=T0(e),k=YX(e),S=Number(e.dropped_events_count)||0;return Oe.default.createElement("div",{className:`pt-3 border-t space-y-2 ${f}`},Oe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Oe.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Oe.default.createElement(Qs,{tone:y},h),Oe.default.createElement("span",{className:`text-xs truncate ${d}`},[sD(e),dD(e)].filter(Boolean).join(" \xB7 "))),Oe.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},Oe.default.createElement("a",{href:rt(_s(e.conversation_id||e.id)),onClick:w=>{w.preventDefault(),st(_s(e.conversation_id||e.id))},className:g,"data-testid":"code-session-open-interaction"},"Open in Interactions"),x&&Oe.default.createElement("button",{type:"button",onClick:a,disabled:o,className:`${m} shrink-0 disabled:opacity-50`},o?"Cancelling\u2026":"Cancel"))),Oe.default.createElement("p",{className:`text-xs whitespace-pre-wrap break-words max-h-24 overflow-y-auto ${d}`},e.prompt),n&&Oe.default.createElement("div",{className:b},n),Oe.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:DZ(c)},!r&&Oe.default.createElement("p",{className:`text-xs ${d}`},"Loading transcript\u2026"),r&&t.length===0&&Oe.default.createElement("p",{className:`text-xs ${d}`},e.status==="queued"?"Waiting for the sandbox to start the agent\u2026":x?"The agent is starting\u2026":k?"Cancelled before the agent started.":"No transcript was recorded."),t.map(w=>Oe.default.createElement(yD,{key:w.key,row:w,darkMode:c,muted:d,strong:p})),S>0&&Oe.default.createElement("p",{className:`text-xs italic ${d}`},S," later event",S===1?" was":"s were"," not kept: a transcript keeps its first 1,000.")),e.error_message&&Oe.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&&Oe.default.createElement(L0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),v&&r&&Oe.default.createElement(vD,{diff:e.diff,pending:aD(e),onReload:i,muted:d,linkButton:g,darkMode:c}))}function yD({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 Oe.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${n} ${o}`},e.text);case"user_text":return Oe.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${r} ${o}`},e.text);case"thinking":return Oe.default.createElement("p",{className:`text-xs italic whitespace-pre-wrap break-words line-clamp-3 ${r} ${o}`},e.text);case"tool_use":return Oe.default.createElement("p",{className:`text-xs font-mono break-words ${o}`},Oe.default.createElement("span",{className:`font-semibold ${t?"text-blue-300":"text-blue-700"}`},e.name),e.summary&&Oe.default.createElement("span",{className:r}," ",e.summary));case"tool_result":return Oe.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 Oe.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 Oe.default.createElement("p",{className:`text-xs ${r}`},e.text);case"raw":return Oe.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},e.text);default:return Oe.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},"[",e.label,"] ",e.text)}}var IZ={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 vD({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Oe.useMemo)(()=>O0(e),[e]);return e==null?t?Oe.default.createElement("p",{className:`text-xs ${n}`},"The diff is recorded once the agent has stopped."," ",Oe.default.createElement("button",{type:"button",onClick:r,className:o},"Refresh")):Oe.default.createElement("p",{className:`text-xs ${n}`},"No diff was recorded."):i.length===0?Oe.default.createElement("p",{className:`text-xs ${n}`},"No changes in the checkout."):Oe.default.createElement("div",{className:"space-y-1"},Oe.default.createElement("p",{className:`text-xs ${n}`},"Diff \xB7 ",nZ(e)),Oe.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:DZ(a)},i.map((s,l)=>{let u=IZ[s.kind]||IZ.context;return Oe.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var gt=X(J());function H2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var $Z=["left","middle","right"];function jZ(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 q2(e,t,r){let n=jZ(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:H2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:$Z[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function LZ(e,t,r){let n=q2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:H2(e),button:$Z[e.button]||"left",clickCount:1}}var __e=16,C_e=800;function zZ(e,t){let r=jZ(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?__e:e.deltaMode===2?C_e:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:H2(e)}}function xD(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:H2(t)}}function BZ(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var A_e=600;function FZ(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=A_e}var bD=32*1024;function WZ(e){let t="";for(let r=0;r=1024*1024?`${Math.round(e/(1024*1024)*10)/10} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} bytes`}function HZ(e,t){let r=Array.from(e||[]);if(!t)return{error:"The page is no longer asking for a file."};if(r.length===0)return{error:"Choose a file to upload."};let n=t.multiple?t.max_files:1;if(r.length>n)return{error:n===1?"This field takes one file.":`This field takes at most ${n} files.`};let o=r.find(a=>a.size>t.max_file_bytes);return o?{error:`${o.name} is larger than ${UZ(t.max_file_bytes)}.`}:{files:r.map(a=>({name:a.name,size:a.size})),total:r.reduce((a,i)=>a+i.size,0)}}function qZ(e){if(!e)return null;let t=e.total>0?Math.min(100,Math.floor(e.sent/e.total*100)):100;return`Uploading ${UZ(e.total)}\u2026 ${t}%`}function KZ(e){return!e.fileChooser||e.control.mine?null:e.control.yours?"The page is asking for a file. Choose it in the view you are driving from.":`The page is asking ${e.control.by||"the person driving"} for a file.`}var U0={ready:!1,control:{held:!1,mine:!1,yours:!1,by:null,since:null},agent:{waiting:!1,tool:null,since:null,client:null},page:null,frameSize:null,fileChooser:null,personRequest:null,error:null};function VZ(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...U0.control,...t.control},agent:{...U0.agent,...t.agent},page:t.page||null,fileChooser:t.file_chooser||null,personRequest:t.person_request||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,client:t.client||null}};case"person_requested":return{...e,personRequest:t.request||null};case"page":return{...e,page:t.page||null};case"file_chooser":return{...e,fileChooser:t.chooser||null};case"file_upload":return t.status==="failed"?{...e,error:t.message||"The upload failed"}:e;case"error":return{...e,error:t.message||"The browser refused that"};case"clear_error":return{...e,error:null};case"reset":return U0;default:return e}}function GZ(e){if(!e.agent.waiting||!e.control.held)return null;let t=e.agent.tool?` (${e.agent.tool})`:"",r=e.agent.client||"The agent";return e.control.mine?`${r} is waiting for you to hand back control${t}.`:e.control.yours?`${r} is waiting for you to hand back control in your other view${t}.`:`${r} is waiting for ${e.control.by||"the person driving"} to hand back control${t}.`}function YZ(e){let t=e.personRequest;return!t||e.control.held?null:`${t.client||"The agent"} needs a person: ${t.reason}`}function XZ({by:e=null,takenAt:t,releasedAt:r,page:n=null}){let o=a=>Number.isFinite(a)?new Date(a).toISOString():null;return{by:e||null,taken_at:o(t),released_at:o(r),page_url:typeof n?.url=="string"&&/^https?:\/\//.test(n.url)?n.url:null}}function ZZ(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 JZ(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 QZ(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 E_e={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 RZ(e,{requested:t=!1}={}){return t?null:E_e[e]||"The live view lost its connection to the browser."}var N_e={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function eJ(e){return e?.status?N_e[e.status]||{label:e.status,tone:"neutral"}:null}function tJ(e){return e?.status==="starting"||e?.status==="running"}function rJ({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}async function nJ(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(ot(n,`Could not open the live view (HTTP ${r.status}).`));return n}var oJ=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v",T_e=1024*1024,O_e=e=>new Promise(t=>{setTimeout(t,e)});function P_e({chooser:e,upload:t,onFiles:r,onCancel:n}){let{darkMode:o}=ut(),a=o?"text-gray-400":"text-gray-500",i=o?"text-white":"text-gray-900",s=e.multiple;return gt.default.createElement("div",{role:"dialog","aria-label":"Choose a file for the page","data-testid":"live-view-file-chooser",className:`absolute inset-x-4 top-4 p-3 rounded border shadow space-y-2 ${o?"bg-gray-800 border-gray-600":"bg-white border-gray-300"}`},gt.default.createElement("p",{className:`text-sm font-medium ${i}`},"The page asked for ",s?"files":"a file"),gt.default.createElement("p",{className:`text-xs ${a}`},"Choose ",s?`up to ${e.max_files} files`:"one"," from this computer, or drop ",s?"them":"it"," on the view. ",e.accept?`The page takes ${e.accept}. `:"","Only the browser receives the files, and they stay in the sandbox until the browser stops."),t?gt.default.createElement("p",{className:`text-xs ${i}`,role:"status"},qZ(t)):gt.default.createElement("input",{type:"file",multiple:s,accept:e.accept||void 0,onChange:l=>r(l.target.files),"aria-label":s?"Files for the page":"File for the page",className:`block text-xs ${i}`}),gt.default.createElement("button",{type:"button",onClick:n,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"))}function H0({sessionId:e,headed:t=!1,watchOnOpen:r=!1,onHandBack:n=null,handBackLabel:o="Hand back"}){let{darkMode:a}=ut(),[i,s]=(0,gt.useReducer)(VZ,U0),[l,u]=(0,gt.useState)("idle"),[c,d]=(0,gt.useState)(null),[p,f]=(0,gt.useState)(!1),[m,g]=(0,gt.useState)(null),b=(0,gt.useRef)(null),h=(0,gt.useRef)(!1),y=(0,gt.useRef)(0),x=(0,gt.useRef)(!1),v=(0,gt.useRef)(null),k=(0,gt.useRef)(null),S=(0,gt.useRef)({pending:null,decoding:!1}),w=(0,gt.useRef)({message:null,scheduled:!1}),_=(0,gt.useRef)(null),A=(0,gt.useRef)(null),C=(0,gt.useRef)(0),O=i.control.mine,D=(0,gt.useRef)(null),H=(0,gt.useRef)(i);H.current=i,(0,gt.useEffect)(()=>{if(O){D.current=i.control.since||Date.now();return}if(D.current===null)return;let F=D.current;D.current=null,n?.(XZ({by:null,takenAt:F,releasedAt:Date.now(),page:H.current.page}))},[O]);let j=(0,gt.useCallback)(F=>{let B=b.current;F&&B?.readyState===WebSocket.OPEN&&B.send(JSON.stringify(F))},[]),Z=(0,gt.useCallback)(F=>{let B=S.current;if(B.pending=F,B.decoding)return;let Ee=()=>{let Ve=B.pending;if(B.pending=null,B.decoding=!!Ve,!Ve)return;let fe=new Image;fe.onload=()=>{let ze=v.current;ze&&((ze.width!==fe.naturalWidth||ze.height!==fe.naturalHeight)&&(ze.width=fe.naturalWidth,ze.height=fe.naturalHeight),ze.getContext("2d")?.drawImage(fe,0,0)),Ee()},fe.onerror=Ee,fe.src=`data:image/jpeg;base64,${Ve.data}`};Ee()},[]),N=(0,gt.useCallback)(()=>{y.current+=1;let F=b.current;if(!F){u("idle");return}x.current&&F.readyState===WebSocket.OPEN&&F.send(JSON.stringify({type:"hand_back"})),h.current=!0,F.close(1e3)},[]);(0,gt.useEffect)(()=>N,[N]);let P=async()=>{y.current+=1;let F=y.current;d(null),u("connecting");try{let{ticket:B,url:Ee}=await nJ(e,"view");if(y.current!==F)return;let Ve=new WebSocket(Ee);b.current=Ve,h.current=!1,Ve.onopen=()=>Ve.send(JSON.stringify({type:"auth",ticket:B})),Ve.onmessage=fe=>{let ze;try{ze=JSON.parse(fe.data)}catch{return}ze.type==="ready"&&u("open"),ze.type==="frame"&&Z(ze),(ze.type==="file_upload"&&ze.status!=="progress"||ze.type==="file_chooser"&&!ze.chooser)&&(C.current+=1,g(null)),s(ze)},Ve.onclose=fe=>{b.current===Ve&&(b.current=null,C.current+=1,g(null),u("idle"),s({type:"reset"}),d(RZ(fe.code,{requested:h.current})))}}catch(B){if(y.current!==F)return;u("idle"),d(B.message)}},M=(0,gt.useRef)(!1);(0,gt.useEffect)(()=>{!r||M.current||(M.current=!0,P())},[r]);let I=async()=>{s({type:"clear_error"}),f(!0);try{let{ticket:F}=await nJ(e,"control");j({type:"take_control",ticket:F})}catch(F){d(F.message)}finally{f(!1)}},$=()=>{j({type:"hand_back"}),v.current?.blur()},T=async F=>{let B=i.fileChooser,Ee=HZ(F,B);if(Ee.error){d(Ee.error);return}let Ve=b.current;if(!Ve||Ve.readyState!==WebSocket.OPEN)return;C.current+=1;let fe=C.current;d(null),s({type:"clear_error"}),j({type:"file_upload",chooser:B.id,files:Ee.files});let ze=0;g({sent:ze,total:Ee.total});try{for(let Vt of Array.from(F))for(let Ot=0;OtT_e&&C.current===fe;)await O_e(50);if(C.current!==fe||Ve.readyState!==WebSocket.OPEN)return;let Gt=new Uint8Array(await Vt.slice(Ot,Ot+bD).arrayBuffer());j({type:"file_chunk",chooser:B.id,data:WZ(Gt)}),ze+=Gt.length,g({sent:ze,total:Ee.total})}}catch(Vt){d(`Could not read the file: ${Vt.message}`),q()}},q=()=>{C.current+=1,g(null),i.fileChooser&&j({type:"file_cancel",chooser:i.fileChooser.id})},G=O&&!!i.fileChooser,L=G?{onDragOver:F=>{F.preventDefault(),F.dataTransfer.dropEffect="copy"},onDrop:F=>{F.preventDefault(),m||T(F.dataTransfer.files)}}:{};(0,gt.useEffect)(()=>{x.current=O,O?v.current?.focus():v.current?.blur()},[O]),(0,gt.useEffect)(()=>{let F=v.current;if(!F||!O)return;let B=Ee=>{Ee.preventDefault(),j(zZ(Ee,F.getBoundingClientRect()))};return F.addEventListener("wheel",B,{passive:!1}),()=>F.removeEventListener("wheel",B)},[O,j,l]);let Y=()=>v.current?.getBoundingClientRect(),K=F=>{F&&(_.current={x:F.x,y:F.y},j(F))},pe=O?{onMouseDown:F=>{F.preventDefault(),v.current?.focus(),K(q2("down",F,Y())),window.addEventListener("mouseup",B=>K(LZ(B,Y(),_.current)),{once:!0})},onMouseMove:F=>{let B=w.current;B.message=q2("move",F,Y()),!B.scheduled&&(B.scheduled=!0,requestAnimationFrame(()=>{B.scheduled=!1,K(B.message),B.message=null}))},onContextMenu:F=>F.preventDefault(),onKeyDown:F=>{if(FZ(F,A.current)){F.preventDefault(),A.current=null,k.current?.focus();return}if(A.current=F.key==="Escape"&&!F.repeat?F.timeStamp:null,oJ(F))return;let B=xD("down",F);B&&(F.preventDefault(),j(B))},onKeyUp:F=>{if(oJ(F))return;let B=xD("up",F);B&&(F.preventDefault(),j(B))},onPaste:F=>{F.preventDefault(),j(BZ(F.clipboardData?.getData("text/plain")))}}:{},De=a?"text-gray-400":"text-gray-500",se=a?"text-white":"text-gray-900",be=`px-3 py-1 text-sm rounded disabled:opacity-50 ${a?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,ue="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",R=GZ(i),we=YZ(i),Ce=ZZ(i),z=JZ(i,{taking:p}),ee=QZ(i.page),ae=KZ(i),E=l==="open",{frameSize:W}=i;return gt.default.createElement("div",{className:"space-y-2"},gt.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},l==="idle"?gt.default.createElement("button",{type:"button",onClick:P,className:be},"Watch live"):gt.default.createElement("button",{type:"button",onClick:N,className:be},"Stop watching"),E&&(O?gt.default.createElement("button",{ref:k,type:"button",onClick:$,className:ue},o):gt.default.createElement("button",{ref:k,type:"button",onClick:I,disabled:z.disabled,className:ue},z.label)),Ce&>.default.createElement("span",{className:`text-xs font-medium ${se}`},Ce),l==="connecting"&>.default.createElement("span",{className:`text-xs ${De}`},"Connecting\u2026")),c&>.default.createElement("p",{className:`text-xs ${De}`,role:"status"},c),i.error&>.default.createElement("p",{className:`text-xs ${a?"text-red-400":"text-red-600"}`,role:"alert"},i.error),we&>.default.createElement("p",{role:"alert","data-testid":"live-view-person-request",className:`p-2 rounded text-xs border ${a?"bg-blue-900/20 border-blue-800 text-blue-200":"bg-blue-50 border-blue-200 text-blue-800"}`},we,E?" Take over to help, then hand back.":" Watch live, then take over to help."),R&>.default.createElement("p",{role:"status",className:`p-2 rounded text-xs border ${a?"bg-amber-900/20 border-amber-800 text-amber-300":"bg-amber-50 border-amber-200 text-amber-800"}`},R),l!=="idle"&>.default.createElement("div",{className:"space-y-1"},ee&>.default.createElement("p",{className:`text-xs font-mono truncate ${De}`,title:ee},ee),ae&>.default.createElement("p",{className:`text-xs ${De}`,role:"status"},ae),gt.default.createElement("div",{className:"relative","data-testid":"live-view-frame",...L},gt.default.createElement("canvas",{ref:v,tabIndex:O?0:-1,role:O?"application":"img","aria-label":O?"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 ${O?"cursor-default outline-none focus:ring-2 focus:ring-blue-500":""} ${a?"border-gray-700":"border-gray-200"}`,style:{aspectRatio:W?`${W.width} / ${W.height}`:"16 / 10"},...pe}),G&>.default.createElement(P_e,{chooser:i.fileChooser,upload:m,onFiles:F=>{T(F)},onCancel:q})),O&>.default.createElement("p",{className:`text-xs ${De}`},"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&>.default.createElement("p",{className:`text-xs ${De}`},"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."))}var M_e={settings:"Started from Settings",boot_fix:"Fixing a failed boot",evaluation_fix:"Implementing an evaluation fix",chat:"Chat"};function I_e({turn:e,sandboxId:t,darkMode:r,muted:n,strong:o}){let a=(0,Ze.useMemo)(()=>D2(e.events),[e.events]),[i,s]=(0,Ze.useState)(void 0),l=ks(e.status),u=async()=>{if(i!==void 0){s(void 0);return}let c=await fetch(`/api/sandboxes/${encodeURIComponent(t)}/code_sessions/${e.id}?after=1000000000`),d=await c.json().catch(()=>({}));s(c.ok?d.code_session?.diff??null:null)};return Ze.default.createElement("li",{className:`rounded border p-3 space-y-2 ${r?"border-gray-700":"border-gray-200"}`,"data-testid":"code-interaction-turn"},Ze.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ze.default.createElement(Qs,{tone:l.tone},l.label),Ze.default.createElement("span",{className:`text-xs ${n}`},_Z(e))),e.context_note&&Ze.default.createElement("p",{className:`text-xs italic ${n}`,title:"Sent to Claude Code ahead of the message"},"Dashboard note: ",e.context_note),Ze.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words font-medium ${o}`},e.prompt),Ze.default.createElement("div",{className:"space-y-1"},a.length===0&&Ze.default.createElement("p",{className:`text-xs ${n}`},Js(e)?"Waiting for Claude Code\u2026":"No transcript was recorded."),a.map(c=>Ze.default.createElement(yD,{key:c.key,row:c,darkMode:r,muted:n,strong:o}))),e.error_message&&Ze.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`},e.error_message),!Js(e)&&Ze.default.createElement("div",{className:"space-y-1"},Ze.default.createElement("button",{type:"button",onClick:u,className:`text-xs underline ${n}`},i===void 0?"Show the checkout\u2019s diff after this turn":"Hide the diff"),i!==void 0&&Ze.default.createElement(vD,{diff:i,pending:!1,muted:n,darkMode:r,linkButton:"underline"})))}function wD({rootId:e,onBack:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Ze.useState)(null),[a,i]=(0,Ze.useState)(null),[s,l]=(0,Ze.useState)(""),[u,c]=(0,Ze.useState)(!1),[d,p]=(0,Ze.useState)(null),[f,m]=(0,Ze.useState)($_e),g=(0,Ze.useRef)(null);g.current=n;let b=(0,Ze.useRef)(null),h=(0,Ze.useRef)(null),y=(0,Ze.useRef)(null),x=L_e(h,!!n),v=(0,Ze.useRef)(null),[k,S]=(0,Ze.useState)(D_e),[w,_]=(0,Ze.useState)(!1),A=f&&!!x,C=B=>{S(B),aJ(B)},O=(0,Ze.useRef)(null),D=(0,Ze.useRef)(k);D.current=k;let H=B=>{B.button!==0||!v.current||(B.preventDefault(),B.currentTarget.setPointerCapture?.(B.pointerId),O.current=v.current.getBoundingClientRect(),_(!0))},j=B=>{if(!O.current)return;let Ee=NZ(B.clientX,O.current);D.current=Ee,S(Ee)},Z=B=>{O.current&&(B.currentTarget.releasePointerCapture?.(B.pointerId),O.current=null,_(!1),aJ(D.current))},N=B=>{let Ee=TZ(k,B.key);Ee!==null&&(B.preventDefault(),C(Ee))},P=B=>{m(Ee=>{let Ve=typeof B=="function"?B(Ee):B;return j_e(Ve),Ve})},M=(0,Ze.useCallback)(async()=>{let B=wZ(g.current?.turns),Ee=await fetch(`/api/interactions/code-${e}${B?`?${B}`:""}`),Ve=await Ee.json().catch(()=>({}));if(!Ee.ok){i(ot(Ve,`Could not load the conversation (HTTP ${Ee.status}).`));return}i(null),o(fe=>SZ(fe,Ve.interaction))},[e]);(0,Ze.useEffect)(()=>{o(null),g.current=null,M()},[M]);let I=kZ(n);(0,Ze.useEffect)(()=>{if(!I)return;let B=setInterval(()=>{M()},vZ);return()=>clearInterval(B)},[I,M]);let $=n?.turns?.length||0,T=n?.turns?.reduce((B,Ee)=>B+(Ee.events?.length||0),0)||0,q=(0,Ze.useRef)(!0);(0,Ze.useEffect)(()=>{let B=y.current;B&&q.current&&(B.scrollTop=B.scrollHeight)},[$,T,x]);let G=()=>{let B=y.current;B&&(q.current=B.scrollHeight-B.scrollTop-B.clientHeight<48)},L=n?.sandbox_session_id,Y=n?.turns?.[n.turns.length-1],K=CZ(n),pe=n?.browser?.status==="running",De=async B=>{B?.preventDefault();let Ee=s.trim();if(!(!Ee||!L)){c(!0),i(null);try{let Ve=await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:Ee,...d?{handoff:d}:{}})}),fe=await Ve.json().catch(()=>({}));if(!Ve.ok)throw new Error(ot(fe,`The message was not sent (HTTP ${Ve.status}).`));l(""),p(null),await M()}catch(Ve){i(Ve.message)}finally{c(!1)}}},se=async()=>{let B=(n?.turns||[]).filter(Js);for(let Ee of B)await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${Ee.id}/cancel`,{method:"POST"});await M()},be=B=>{p(B),l(Ee=>Ee||"I've handed the browser back. "),b.current?.focus()},ue=r?"text-gray-400":"text-gray-500",R=r?"text-white":"text-gray-900",we=`rounded-lg border p-4 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,Ce=`px-3 py-1 text-sm rounded disabled:opacity-50 ${r?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,z="px-3 py-1 text-sm rounded text-white bg-red-600 hover:bg-red-700 disabled:opacity-50",ee=`p-2 rounded text-sm border ${r?"bg-blue-900/20 border-blue-800 text-blue-200":"bg-blue-50 border-blue-200 text-blue-800"}`;if(!n)return Ze.default.createElement("div",{className:we,"data-testid":"code-interaction"},a?Ze.default.createElement("p",{className:`text-sm ${r?"text-red-400":"text-red-600"}`},a):Ze.default.createElement("p",{className:`text-sm ${ue}`},"Loading\u2026"));let ae=ks(n.status),E=`flex items-center justify-between gap-2 px-4 py-2 border-b ${r?"border-gray-700":"border-gray-200"}`,W=`rounded-lg border flex flex-col min-h-0 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,F=`px-2 py-0.5 text-xs rounded ${r?"text-gray-300 hover:bg-gray-700":"text-gray-600 hover:bg-gray-100"}`;return Ze.default.createElement("div",{ref:h,className:"flex flex-col gap-3",style:x?{height:x}:void 0,"data-testid":"code-interaction"},Ze.default.createElement("div",{className:"flex flex-wrap items-start justify-between gap-3 shrink-0"},Ze.default.createElement("div",{className:"space-y-1"},t&&Ze.default.createElement("button",{type:"button",onClick:t,className:`text-xs ${ue}`},"\u2190 Interactions"),Ze.default.createElement("h2",{className:`text-xl font-bold ${R}`},n.display_name),Ze.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ze.default.createElement(Qs,{tone:ae.tone},ae.label),Ze.default.createElement("span",{className:`text-xs ${ue}`},M_e[n.origin]||n.origin," \xB7 ",B2(n)),n.project&&Ze.default.createElement("a",{href:rt(`/projects/${n.project.id}`),onClick:B=>{B.preventDefault(),st(`/projects/${n.project.id}`)},className:"text-xs underline"},n.project.name))),Ze.default.createElement("div",{className:"flex items-center gap-2"},I&&Ze.default.createElement("button",{type:"button",onClick:se,className:Ce},"Stop"),Ze.default.createElement("button",{type:"button",onClick:()=>P(B=>!B),className:Ce,"aria-pressed":f,"aria-controls":`code-interaction-${e}-browser`},f?"Hide browser":"Show browser"))),K&&!f&&Ze.default.createElement("p",{role:"alert",className:`${ee} shrink-0`},"Claude Code needs you: ",K.reason," ",Ze.default.createElement("button",{type:"button",onClick:()=>P(!0),className:"underline"},"Show the browser")),Ze.default.createElement("div",{ref:v,className:`flex-1 min-h-0 flex flex-col gap-4 ${A?"lg:flex-row lg:gap-0":""} ${w?"select-none cursor-col-resize":""}`},Ze.default.createElement("section",{className:`${W} lg:h-full min-w-0`,style:A?{flex:`0 0 ${k}%`}:void 0,"aria-label":"Conversation",id:`code-interaction-${e}-conversation`},Ze.default.createElement("div",{className:E},Ze.default.createElement("span",{className:`text-sm font-medium ${R}`},"Conversation"),!f&&Ze.default.createElement("button",{type:"button",onClick:()=>P(!0),className:F},"Show browser \u203A")),Ze.default.createElement("ol",{ref:y,onScroll:G,className:"space-y-3 p-4 flex-1 min-h-0 overflow-y-auto"},n.turns.map(B=>Ze.default.createElement(I_e,{key:B.id,turn:B,sandboxId:L,darkMode:r,muted:ue,strong:R}))),Ze.default.createElement("form",{onSubmit:De,className:`space-y-2 p-4 border-t shrink-0 max-lg:sticky max-lg:bottom-0 max-lg:rounded-b-lg ${r?"border-gray-700 bg-gray-900":"border-gray-200 bg-white"}`},Ze.default.createElement("label",{htmlFor:`code-interaction-${e}-message`,className:`text-xs font-medium ${R}`},"Message ",D0(n)),Ze.default.createElement("textarea",{id:`code-interaction-${e}-message`,ref:b,value:s,onChange:B=>l(B.target.value),rows:3,className:`w-full text-sm rounded border p-2 ${r?"bg-gray-800 border-gray-600 text-white":"bg-white border-gray-300"}`,placeholder:Y?.result?"Reply, or ask for the next change":"What should happen next?"}),Ze.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Ze.default.createElement("span",{className:`text-xs ${ue}`,role:"status"},AZ(n,{handoff:d})),Ze.default.createElement("button",{type:"submit",className:z,disabled:u||!s.trim()},u?"Sending\u2026":"Send")),a&&Ze.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`,role:"alert"},a))),A&&Ze.default.createElement("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize the conversation and the browser","aria-controls":`code-interaction-${e}-conversation`,"aria-valuenow":Math.round(k),"aria-valuemin":F2,"aria-valuemax":W2,tabIndex:0,onPointerDown:H,onPointerMove:j,onPointerUp:Z,onPointerCancel:Z,onKeyDown:N,onDoubleClick:()=>C(uf),className:"group hidden lg:flex w-4 shrink-0 cursor-col-resize items-center justify-center touch-none focus:outline-none","data-testid":"code-interaction-separator"},Ze.default.createElement("span",{className:`h-12 w-1 rounded-full transition-colors ${w?"bg-red-500":r?"bg-gray-600 group-hover:bg-gray-400 group-focus-visible:bg-red-500":"bg-gray-300 group-hover:bg-gray-500 group-focus-visible:bg-red-500"}`})),f&&Ze.default.createElement("section",{id:`code-interaction-${e}-browser`,className:`${W} lg:h-full min-w-0 flex-1`,"aria-label":"The sandbox\u2019s browser","data-testid":"code-interaction-browser"},Ze.default.createElement("div",{className:E},Ze.default.createElement("span",{className:`text-sm font-medium ${R}`},"The sandbox\u2019s browser"),Ze.default.createElement("button",{type:"button",onClick:()=>P(!1),className:F,"aria-label":"Hide the browser"},"Hide \xD7")),Ze.default.createElement("div",{className:"p-4 space-y-2 flex-1 min-h-0 overflow-y-auto"},K&&Ze.default.createElement("p",{role:"alert",className:ee},D0(n)," needs you: ",K.reason),pe?Ze.default.createElement(H0,{sessionId:L,watchOnOpen:!0,onHandBack:be,handBackLabel:`Hand back to ${D0(n)}`}):Ze.default.createElement("p",{className:`text-xs ${ue}`},"The browser is not running."," ",n.project?Ze.default.createElement("a",{href:rt(`/projects/${n.project.id}?tab=browser`),onClick:B=>{B.preventDefault(),st(`/projects/${n.project.id}?tab=browser`)},className:"underline"},"Start it from the project"):"Start it from Settings \u2192 Integrations",", and Claude Code reaches it from its next turn.")))))}var iJ="activeagents.codeInteraction.showBrowser",sJ="activeagents.codeInteraction.split";function D_e(){try{let e=window.localStorage.getItem(sJ);return e===null?uf:I0(e)}catch{return uf}}function aJ(e){try{window.localStorage.setItem(sJ,String(e))}catch{}}function $_e(){let e=null;try{e=window.localStorage.getItem(iJ)}catch{}return EZ(window.location.search,e)}function j_e(e){try{window.localStorage.setItem(iJ,e?"1":"0")}catch{}let t=new URL(window.location.href);t.searchParams.set("browser",e?"1":"0"),window.history.replaceState(window.history.state,"",t)}function L_e(e,t){let[r,n]=(0,Ze.useState)(null);return(0,Ze.useLayoutEffect)(()=>{let o=window.matchMedia("(min-width: 1024px)"),a=()=>{let i=e.current;if(!i||!o.matches){n(null);return}let s=i.getBoundingClientRect().top+window.scrollY;n(Math.max(420,Math.floor(window.innerHeight-s-24)))};return a(),window.addEventListener("resize",a),o.addEventListener("change",a),()=>{window.removeEventListener("resize",a),o.removeEventListener("change",a)}},[e,t]),r}var lJ=X(J());function bd({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=Ch(e,t);return a?lJ.default.createElement("a",{href:rt(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),st(a))},style:{fontFamily:U,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var z_e=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=yd(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=yd(a.content)+yd(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:g0(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}]}},uJ=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],B_e=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],F_e=[{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"}],W_e=3e4,Gu=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),cJ=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 U_e({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=An(t),[i,s]=(0,xe.useState)(null),[l,u]=(0,xe.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,xe.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(g=>g.ok?g.json():Promise.reject(new Error("not found"))).then(({trace:g})=>m&&s(g)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let p=!!i,f=(i?.spans||[]).length;return xe.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},xe.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},xe.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},xe.default.createElement("span",{title:e.cache_hit?`${Gu(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&&xe.default.createElement("span",{className:"text-amber-500",title:`${Gu(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Gu(e.tokens.thinking)),xe.default.createElement("span",null,e.model||"unknown-model"),e.provider&&xe.default.createElement("span",null,e.provider),xe.default.createElement("span",{className:"text-blue-500"},"in:",Gu(e.tokens.input)),xe.default.createElement("span",{className:"text-green-500"},"out:",Gu(e.tokens.output)),e.finish_reason&&xe.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&xe.default.createElement("span",null,no(d)),c&&xe.default.createElement("a",{href:rt(`/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&&xe.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),xe.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?xe.default.createElement(ZI,{trace:i,darkMode:t}):d>0?xe.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},xe.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,p&&xe.default.createElement(xe.default.Fragment,null,xe.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},f," ",f===1?"span":"spans"),xe.default.createElement(nf,{open:n,darkMode:t,size:12})))),n&&i&&xe.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},xe.default.createElement(w0,{trace:i,darkMode:t,compact:!0})))}function Yu({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,xe.useState)([]),[a,i]=(0,xe.useState)(!0),[s,l]=(0,xe.useState)(null),[u,c]=(0,xe.useState)(null),[d,p]=(0,xe.useState)({}),{timeWindow:f}=Nl(),m=!t&&!e,g=()=>m?xZ(Qn(),window.location.search):{view:"list",source:"all",project:null,codeId:null},[b,h]=(0,xe.useState)(g),[y,x]=(0,xe.useState)([]),{source:v,project:k}=b;(0,xe.useEffect)(()=>{if(!m)return;let L=()=>h(g());return window.addEventListener("popstate",L),window.addEventListener("dashboard:navigate",L),()=>{window.removeEventListener("popstate",L),window.removeEventListener("dashboard:navigate",L)}},[m]),(0,xe.useEffect)(()=>{m&&fetch("/api/projects").then(L=>L.ok?L.json():{projects:[]}).then(L=>x(L.projects||[])).catch(()=>{})},[m]);let S=L=>{Mc(L),h(g())},w=L=>S(z2({source:v,project:k,...L})),_=L=>S(_s(L));(0,xe.useEffect)(()=>{if(b.view!=="latest")return;let L=mD({source:v==="all"?"claude_code":v,project:k});fetch(`/api/interactions?${L}`).then(Y=>Y.json()).then(Y=>{let K=bZ(Y.interactions),pe=K?_s(lf(K.id)):z2({source:v,project:k});window.history.replaceState({},"",rt(pe)),h(g())}).catch(()=>{})},[b.view,v,k]);let A=(0,xe.useCallback)(async()=>{try{let L=await fetch(`/api/interactions?${mD({minutes:f.minutes,agentId:e,source:v,project:k})}`);if(!L.ok)throw new Error(`Request failed (${L.status})`);let Y=await L.json();o(Y.interactions||[]),l(null)}catch(L){l(L.message)}finally{i(!1)}},[f.minutes,e,v,k]);(0,xe.useEffect)(()=>{A();let L=setInterval(A,W_e);return()=>clearInterval(L)},[A]);let[C,O]=(0,xe.useState)("recent"),D=(0,xe.useMemo)(()=>{let L=[...new Set(n.map(Y=>Y.display_name).filter(Boolean))].sort();return Object.fromEntries(L.map((Y,K)=>[Y,uJ[K%uJ.length]]))},[n]),H=(0,xe.useMemo)(()=>{let L=n.reduce((K,pe)=>K+(pe.tokens?.total||0),0),Y=new Set(n.map(K=>K.display_name).filter(Boolean));return{interactions:n.length,tokens:L,agents:Y.size,avgTokens:n.length?Math.round(L/n.length):0}},[n]),j=(0,xe.useMemo)(()=>{if(n.length===0)return[];let L=Date.now(),Y=f.bucketSeconds*1e3,K=Math.max(1,Math.round(f.minutes*60/f.bucketSeconds)),pe=Object.keys(D);return Array.from({length:K},(De,se)=>{let be=L-(K-1-se)*Y,ue=be-Y,R=n.filter(we=>{let Ce=new Date(we.last_activity_at).getTime();return Ce>=ue&&Ce1440?new Date(be).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(be).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),...Object.fromEntries(pe.map(we=>[we,R.filter(Ce=>Ce.display_name===we).length]))}})},[n,D,f]),Z=Math.max(0,Math.ceil(j.length/6)-1),N=(0,xe.useCallback)(L=>{let Y=[...L];switch(C){case"tokens":return Y.sort((K,pe)=>(pe.tokens?.total||0)-(K.tokens?.total||0));case"messages":return Y.sort((K,pe)=>(pe.message_count||0)-(K.message_count||0));default:return Y.sort((K,pe)=>String(pe.last_activity_at).localeCompare(String(K.last_activity_at)))}},[C]),P=(0,xe.useMemo)(()=>{let L=new Map;n.forEach(K=>{let pe=K.agent_name||K.agent?.name||"Unattributed",De=K.action_name,se=`${pe}#${De||""}`;L.has(se)||L.set(se,{key:se,title:De?`${pe} ${De.charAt(0).toUpperCase()}${De.slice(1)} Agent Interactions`:`${pe} Interactions`,sessions:[],tokens:0,lastActivity:K.last_activity_at});let be=L.get(se);be.sessions.push(K),be.tokens+=K.tokens?.total||0,K.last_activity_at>be.lastActivity&&(be.lastActivity=K.last_activity_at)});let Y=[...L.values()].map(K=>({...K,sessions:N(K.sessions)}));return C==="tokens"?Y.sort((K,pe)=>pe.tokens-K.tokens):C==="messages"?Y.sort((K,pe)=>pe.sessions.length-K.sessions.length):Y.sort((K,pe)=>String(pe.lastActivity).localeCompare(String(K.lastActivity)))},[n,C,N]),M=async L=>{if(m&&lf(L)){_(lf(L));return}if(u===L){c(null);return}if(c(L),!d[L])try{let Y=await fetch(`/api/interactions/${L}`);if(Y.ok){let K=await Y.json();p(pe=>({...pe,[L]:K.interaction}))}}catch{}},[I,$]=(0,xe.useState)({}),[T,q]=_h(),G=An(r);return m&&b.view==="conversation"?xe.default.createElement(wD,{rootId:b.codeId,onBack:()=>S(z2({source:v,project:k}))}):a?xe.default.createElement("div",{className:"flex items-center justify-center h-64"},xe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("div",{className:"flex flex-col max-lg:gap-3 lg:flex-row lg:items-start lg:justify-between"},!t&&xe.default.createElement("div",null,xe.default.createElement("h1",{className:"text-2xl font-bold",style:{color:G.textPrimary}},"Interactions"),xe.default.createElement("p",{className:"text-sm mt-1",style:{color:G.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),xe.default.createElement("div",{className:"flex flex-wrap items-center gap-3 lg:flex-shrink-0 lg:justify-end"},xe.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},xe.default.createElement("span",{className:"text-xs px-1",style:{color:G.textMuted}},"Sort"),B_e.map(L=>xe.default.createElement("button",{key:L.id,onClick:()=>O(L.id),className:"px-2 py-1 text-xs rounded transition-colors",style:C===L.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:G.textSecondary}},L.label))),xe.default.createElement(Vs,null),m&&xe.default.createElement(_0,null))),m&&xe.default.createElement("div",{className:"flex flex-wrap items-center gap-3","data-testid":"interactions-filters"},xe.default.createElement("div",{className:"flex items-center rounded-lg p-1",role:"group","aria-label":"Source",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},pD.map(L=>xe.default.createElement("button",{key:L.id,type:"button",onClick:()=>w({source:L.id}),"aria-pressed":v===L.id,className:"px-2 py-1 text-xs rounded transition-colors",style:v===L.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary}:{color:G.textSecondary}},L.label))),y.length>0&&xe.default.createElement("label",{className:"flex items-center gap-1 text-xs",style:{color:G.textSecondary}},"Project",xe.default.createElement("select",{value:k||"",onChange:L=>w({project:L.target.value?Number(L.target.value):null}),className:"text-xs rounded border px-1 py-0.5",style:{background:G.cardBg,borderColor:G.cardBorder,color:G.textPrimary}},xe.default.createElement("option",{value:""},"All projects"),y.map(L=>xe.default.createElement("option",{key:L.id,value:L.id},L.name)))),xe.default.createElement("button",{type:"button",onClick:()=>S(`/interactions/latest${k?`?project=${k}`:""}`),className:"px-2 py-1 text-xs rounded border",style:{borderColor:G.cardBorder,color:G.textPrimary},title:"Open the most recent Claude Code or Codex conversation"},"Latest conversation")),xe.default.createElement(nD,{agentId:e}),s&&xe.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&&xe.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:G.cardBg,borderColor:G.cardBorder}},xe.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2 mb-3"},xe.default.createElement("h3",{className:"text-sm font-semibold",style:{color:G.textPrimary}},"Interactions over time"),xe.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(D).map(([L,Y])=>xe.default.createElement("span",{key:L,className:"flex items-center gap-1.5 text-xs",style:{color:G.textSecondary}},xe.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:Y}}),L)))),xe.default.createElement("div",{className:"h-32"},xe.default.createElement(Bc,{width:"100%",height:"100%"},xe.default.createElement(hd,{data:j},xe.default.createElement("defs",null,Object.entries(D).map(([L,Y])=>xe.default.createElement("linearGradient",{key:L,id:`ix-gradient-${L.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},xe.default.createElement("stop",{offset:"5%",stopColor:Y,stopOpacity:.6}),xe.default.createElement("stop",{offset:"95%",stopColor:Y,stopOpacity:.05})))),xe.default.createElement(ju,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),xe.default.createElement(Fu,{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:Z}),xe.default.createElement(Uu,{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}),xe.default.createElement(rd,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${G.cardBorder}`,borderRadius:"8px"},labelStyle:{color:G.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(D).map(([L,Y])=>xe.default.createElement(zu,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:Y,strokeWidth:2,fill:`url(#ix-gradient-${L.replace(/\W/g,"-")})`}))))),xe.default.createElement("div",{className:"grid grid-cols-2 gap-3 md:flex md:items-center md:gap-8 pt-3 mt-3 border-t",style:{borderColor:G.cardBorder}},[{label:"Interactions",value:H.interactions.toLocaleString()},{label:"Agents",value:H.agents.toLocaleString()},{label:"Total tokens",value:Gu(H.tokens)},{label:"Avg / interaction",value:Gu(H.avgTokens)}].map(L=>xe.default.createElement("div",{key:L.label},xe.default.createElement("div",{className:"text-lg font-bold",style:{color:G.textPrimary}},L.value),xe.default.createElement("div",{className:`text-xs ${go}`,style:{color:G.textSecondary}},L.label))))),n.length===0?xe.default.createElement("div",{className:"text-center py-12"},xe.default.createElement("div",{className:"text-lg",style:{color:G.textMuted}},"No interactions in the last ",f.label),xe.default.createElement("p",{className:"text-sm mt-2",style:{color:G.textSecondary}},"Widen the time window, or run an agent to start recording its conversation stream")):xe.default.createElement("div",{className:"space-y-8"},P.map(L=>xe.default.createElement("div",{key:L.key,className:"space-y-4"},xe.default.createElement("div",{className:"flex flex-wrap items-baseline justify-between gap-x-4 gap-y-1"},xe.default.createElement("h2",{className:"text-sm font-semibold",style:{color:G.textPrimary}},L.title),xe.default.createElement("span",{className:"text-xs whitespace-nowrap",style:{color:G.textMuted}},L.sessions.length," ",L.sessions.length===1?"interaction":"interactions",L.tokens>0&&` \xB7 ${Gu(L.tokens)} tokens`)),L.sessions.map(Y=>{let K=d[Y.id],pe=u===Y.id,De=I[Y.id]||"conversation",se=Y.tokens?.total||0,be=(Y.tokens?.input||0)+(Y.tokens?.output||0)||se;return xe.default.createElement(w2,{key:Y.id,darkMode:r,className:"shadow-sm"},xe.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:()=>M(Y.id),style:pe?{background:G.hoverBg}:void 0},xe.default.createElement("div",{className:"flex items-center gap-3 min-w-0 max-lg:flex-wrap max-lg:gap-y-1"},fD(Y)?xe.default.createElement("span",{className:"px-2 py-1 text-xs font-medium rounded flex-shrink-0",style:{background:r?"rgba(249,115,22,0.15)":"#fff7ed",color:r?"#fdba74":"#c2410c"},title:`${Y.turn_count} ${Y.turn_count===1?"turn":"turns"}${Y.active?", one running now":""}`},Y.runner==="codex"?"CODEX":"CLAUDE CODE",Y.active?" \xB7 LIVE":""):Y.source==="telemetry"?xe.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"):xe.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),xe.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:G.textPrimary}},Y.display_name),Y.agent&&xe.default.createElement("span",{className:"text-sm truncate",style:{color:G.textSecondary}},Y.agent.name),Y.service_name&&xe.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:G.textMuted}},Y.service_name)),xe.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0 max-lg:w-full max-lg:min-w-0"},xe.default.createElement(Sh,{darkMode:r,cells:[{key:"activity",width:Ua.count,content:Y.message_count>0?`${Y.message_count} messages`:`${Y.tool_count||0} tool ${Y.tool_count===1?"call":"calls"}`},{key:"tokens",width:Ua.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:se>0&&`${Gu(se)} tokens`},{key:"context",width:Ua.context,empty:"Context: this interaction recorded no token counts",content:se>0&&xe.default.createElement(vd,{compact:!0,darkMode:r,label:"Context",used:be,limit:g0(Y.model),segments:[{key:"messages",label:"Context",tokens:be}]})},{key:"age",width:Ua.age,title:Y.last_activity_at||void 0,empty:"No activity recorded",content:cJ(Y.last_activity_at)&&xe.default.createElement("span",{style:{color:G.textMuted}},cJ(Y.last_activity_at))}]}),Y.source!=="telemetry"&&xe.default.createElement(bd,{kind:"context",id:Y.id,title:"Replay this conversation"}),xe.default.createElement(nf,{open:pe,darkMode:r}))),!pe&&xe.default.createElement(kh,{darkMode:r,onClick:()=>M(Y.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:Y.preview?.input,color:Hn("user",r).color},{label:"output",text:Y.preview?.output,color:Hn("assistant",r).color}]}),pe&&xe.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:G.cardBorder,background:G.innerBg}},K?xe.default.createElement(xe.default.Fragment,null,xe.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},xe.default.createElement(b0,{options:F_e,value:De,onChange:ue=>$(R=>({...R,[Y.id]:ue})),darkMode:r}),xe.default.createElement("span",{className:"text-xs",style:{color:G.textSecondary}},K.messages.length," ",K.messages.length===1?"message":"messages",K.generations.length>0&&` \xB7 ${K.generations.length} ${K.generations.length===1?"generation":"generations"}`)),De==="conversation"&&xe.default.createElement(xe.default.Fragment,null,K.messages.length===0&&xe.default.createElement("div",{className:"text-sm",style:{color:G.textMuted}},"No conversation content captured for this run. Enable content capture in the reporting app to record prompts, tool arguments, and responses."),xe.default.createElement(Ss,{darkMode:r,messages:K.instructions?[{id:`ctx-${Y.id}-system`,role:"system",content:K.instructions,created_at:Y.created_at},...K.messages]:K.messages}),(()=>{let ue=z_e(K);return ue?xe.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:G.cardBorder}},xe.default.createElement(vd,{...ue,label:"Context pressure",estimated:!0,darkMode:r})):null})()),De==="spans"&&(K.generations.length===0?xe.default.createElement("div",{className:"text-sm",style:{color:G.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):xe.default.createElement("div",{className:"space-y-2"},K.generations.map(ue=>xe.default.createElement(U_e,{key:ue.id,generation:ue,darkMode:r,maxMs:Math.max(...K.generations.map(R=>(R.duration_seconds||0)*1e3),1),expanded:T(`${Y.id}:${ue.id}`),onToggle:()=>q(`${Y.id}:${ue.id}`)}))))):xe.default.createElement("div",{className:"flex justify-center py-6"},xe.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var Te=X(J());function pJ(e,t,r=null){let n=d=>Object.values(t[d]||{})[0]??null,o=(d,p)=>{if(!p)return null;let f=p.scenario||p;return{key:d,prompt:f.prompt,group:f.group??null,notes:f.notes??null,expectations:f.expectations||{},position:f.position}},a=(d,p)=>{let f=o(d.key,p),m=["prompt","group","notes","expectations"].some(g=>JSON.stringify(d[g]??null)!==JSON.stringify(f[g]??null));return{...d,...f,catalogChanged:m}},i=(d,p)=>({...o(d,p),id:null,enabled:!1,orphan:!0}),s=(d,p,f,m)=>{if(!r)return m();let g=r.get(d);if(g&&g.scenario===p&&g.first===f)return g.row;let b=m();return r.set(d,{scenario:p,first:f,row:b}),b},l=new Set(e.map(d=>d.key)),u=e.map(d=>{let p=n(d.key);return p?s(d.key,d,p,()=>a(d,p)):d}),c=Object.keys(t).filter(d=>!l.has(d)).map(d=>{let p=n(d);return s(d,null,p,()=>i(d,p))});return[...u,...c]}var dJ=e=>/^[1-9]\d*$/.test(e||"")?e:null;function SD(e){let t=new URLSearchParams(e),r=dJ(t.get("evaluation"));return r?{evaluationId:r,runId:dJ(t.get("run"))}:null}async function fJ(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 kD="([1-9]\\d*)",H_e=new RegExp(`^/evaluations/${kD}(?:/runs/${kD}(?:/results/${kD})?)?/?$`);function mJ(e){let t=String(e||"").match(H_e);if(!t)return null;let r=n=>n?Number(n):null;return{evaluationId:Number(t[1]),runId:r(t[2]),resultId:r(t[3])}}var _D=e=>/^[1-9]\d*$/.test(String(e??""));function q0({evaluationId:e,runId:t=null,resultId:r=null}={}){if(!_D(e))return null;let n=`/evaluations/${e}`;return t==null?r==null?n:null:_D(t)?(n+=`/runs/${t}`,r==null?n:_D(r)?`${n}/results/${r}`:null):null}function gJ(e,{origin:t="",mountPath:r=""}={}){if(!e)return null;let n=String(r||"").replace(/\/+$/,"");return`${String(t||"").replace(/\/+$/,"")}${n}${e}`}var ye=X(J());async function wd(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 Th(e){if(!e)return null;let t=`/api${e}`;return{report:t,markdown:`${t}.md`,html:`${t}?download=1`,json:`${t}.json?download=1`,md:`${t}.md?download=1`}}function K2(e,{part:t=null,model:r=null,scenario:n=null}={}){if(!e)return null;let o=new URLSearchParams;t&&o.set("part",t),r&&r!=="all"&&o.set("model",r),n&&o.set("scenario",n);let a=o.toString();return a?`${e}?${a}`:e}async function hJ(e,{fetch:t=globalThis.fetch,navigator:r=globalThis.navigator,document:n=globalThis.document,ClipboardItem:o=globalThis.ClipboardItem,Blob:a=globalThis.Blob}={}){if(!e||typeof t!="function")return!1;let i=()=>t(e,{headers:{Accept:"text/markdown"},credentials:"same-origin"}).then(s=>{if(!s.ok)throw new Error(`HTTP ${s.status}`);return s.text()});if(o&&a&&r?.clipboard?.write)try{let s=i();return await r.clipboard.write([new o({"text/plain":s.then(l=>new a([l],{type:"text/plain"}))})]),!0}catch{}try{return await wd(await i(),{navigator:r,document:n})}catch{return!1}}var q_e=["trace_error_rate","trace_latency"],ND=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],St=(e,t)=>`${e} ${t}${e===1?"":"s"}`,K0=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},yJ=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),Ph=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,K_e=(e,t)=>t>0?`${e}/${t} \xB7 ${Ph(e/t)}`:"\u2014",vJ=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},Pl=e=>e?.type==="llm_judge"?"judge":q_e.includes(e?.type)?"telemetry":"rules",V2=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||yJ(e.key);default:return yJ(e?.key)}},Ih=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 ${vJ(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 ${vJ(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${K0(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},V0=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},Dh=(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"},TD=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,df=(e,t=null)=>{let r=TD(e,t);if(e?.scenario_suite){let a=t?.samples_evaluated&&r?Math.round(t.samples_evaluated/r):e.scenario_count||0;return`${St(a,"scenario")} \xD7 ${St(r,"model")}`}let n=(e?.criteria||[]).length,o=n===1?"criterion":"criteria";return r>1?`${n} ${o} \xD7 ${St(r,"model")}`:`${n} ${o} \xB7 ${St(e?.sample_size??0,"sample")}`},OD=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),$h=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var G0=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 $h(e).forEach(([,n])=>{OD(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},pf=(e,t)=>!e||typeof e!="object"?null:OD(e)?t&&e[t]||null:e,bJ=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null,V_e=e=>!!e&&["pending","running"].includes(e.status),Y0=e=>{if(!e||!Array.isArray(e.gates))return null;let t=n=>Number.isFinite(Number(n))?Number(n):0,r=e.gates.filter(n=>n&&typeof n=="object").map(n=>({group:n.group??null,name:String(n.name||n.group||"All"),label:String(n.label||""),passed:t(n.passed),total:t(n.total),rate:t(n.pass_rate),minRate:t(n.min_pass_rate),gated:n.gated!==!1,met:n.met===!0}));return{met:e.gates_met===!0,rows:r}},G2=e=>{let t=e.gated?e.met?`at or above ${Ph(e.minRate)}`:`below ${Ph(e.minRate)}`:"not gated",r=e.total>0?`${e.passed}/${e.total} (${Ph(e.passed/e.total)})`:"\u2014";return`${e.name}${e.label?` \xB7 ${e.label}`:""}: ${r} passed, ${t}`},wJ=e=>(Y0(e)?.rows||[]).filter(t=>t.gated&&!t.met),Mh=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,ff=(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=Mh(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,p50_duration_ms:i.p50_duration_ms??null,p95_duration_ms:i.p95_duration_ms??null,input_tokens:i.input_tokens??null,output_tokens:i.output_tokens??null,cost:i.cost??null,priced:Mh(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:Mh(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=G0(e);return o.length?o.map(a=>{let i=$h(e).map(([,s])=>pf(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"}]},SJ=(e,t)=>{let r=$h(e).map(([,o])=>pf(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}},kJ=20,mf=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,X0=(e=[],t=null)=>{let r=mf(e,t),n=e.length=kJ;return`${St(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},_J=3,CJ=(e=[],{limit:t=null,selectedId:r=null}={})=>{let n=e.map((o,a)=>a);return!Number.isFinite(t)||e.length<=t?n:n.filter(o=>o{if(!r)return"skipped";let o=t.map(s=>e[s]),a=o.filter(s=>s&&s.status!=="pending"),i=a.some(s=>s.status!=="passed");return t.length>0&&a.length===t.length?i?"failed":"passed":n?o.some(Boolean)?"running":"queued":i?"failed":"missing"},Lh=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:mf(r,n)-t,Z0=(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"}},AJ=(e={},t={},r=[])=>{let n={},o={improved:0,regressed:0,errored:0},a=i=>!!i&&i.status!=="pending";return Object.entries(e||{}).forEach(([i,s])=>{r.forEach(l=>{let u=s?.[l],c=t?.[i]?.[l];if(!a(u)||!a(c)||c.status==="errored")return;let d=null;u.status==="errored"?d="errored":u.status==="passed"&&c.status!=="passed"?d="improved":u.status!=="passed"&&c.status==="passed"&&(d="regressed"),d&&(n[i]={...n[i],[l]:{kind:d,was:c}},o[d]+=1)})}),{byKey:n,...o}},EJ=({improved:e=0,regressed:t=0,errored:r=0}={})=>{let n=[];return e&&n.push(`\u25B2${e}`),t&&n.push(`\u25BC${t}`),r&&n.push(`\u25CB${r}`),n.length?` \xB7 ${n.join(" ")}`:""},NJ=(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}`:""}`}},TJ=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}`:""}`}},Bi=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=Mh(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??ff(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}},OJ=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"},J0=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},Q0=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 ")},G_e=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Bi(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:ff(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},zh=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},PD=e=>e?e.standing?e.standing:e.archived_at?"archived":zh(e)?"current":"none":"none",Y_e=["current","unrecorded"],PJ=(e=[],{focusId:t=null}={})=>{let r=t!=null?e.filter(d=>String(d.id)===String(t)):[],n=r.length>0,o=n?r:e,a={total:0,stale:0,archived:0,none:0},i=[],s={},l=[],u=0,c=0;return o.forEach(d=>{let p=zh(d),f=PD(d);if(!(n?!!p:!!p&&Y_e.includes(f))){a.total+=1,f==="archived"?a.archived+=1:f==="stale"?a.stale+=1:a.none+=1;return}i.push(p),l.push({id:d.id,name:d.name||`evaluation ${d.id}`}),u+=p.samples_evaluated||0,c+=p.samples_passed||0,(d.per_model&&typeof d.per_model=="object"&&Object.keys(d.per_model).length?Object.entries(d.per_model).map(([b,h])=>({label:b,passed:h?.passed||0,total:h?.total||0})):jh(p).filter(b=>b.label&&b.samples>0).map(b=>({label:b.label,passed:b.passed||0,total:b.samples||0}))).forEach(({label:b,passed:h,total:y})=>{let x=s[b]||={label:b,passed:0,total:0,byEvaluation:{}};x.passed+=h,x.total+=y;let v=x.byEvaluation[d.id]||={passed:0,total:0};v.passed+=h,v.total+=y})}),{evaluations:o.length,counted:i.length,notCounted:a,runs:i,samplesScored:u,samplesPassed:c,passRatio:u?c/u:null,perModel:Object.values(s),columns:l,spend:G_e(i),focused:n}},CD=1.96,X_e=(e,t)=>{let r=Number(t)||0;if(r<=0)return 0;let n=(Number(e)||0)/r,o=CD*CD,a=n+o/(2*r),i=CD*Math.sqrt(n*(1-n)/r+o/(4*r*r));return Math.max(0,(a-i)/(1+o/r))},MJ=e=>(e?.perModel||[]).filter(t=>t.total>0).map(t=>({...t,ratio:t.passed/t.total,lower:X_e(t.passed,t.total)})).sort((t,r)=>r.lower-t.lower||r.total-t.total||t.label.localeCompare(r.label)).map((t,r)=>({...t,rank:r+1})),IJ=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 ")},Z2=(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=[];$h(t).forEach(([u,c])=>{let d=V0(e,u);(OD(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[Pl(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 ${St(u.length,"model")}`:""}`,text:`Scored under the pass mark (pass \u2265 ${Ph(.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}`:""} ${Ph(c.stats.score)} \xB7 expects ${Ih(c.criterion)} \xB7 ${K_e(c.stats.passed,c.stats.total)} passed`)})}return r},xJ=e=>String(e||"").replace(/_/g," "),DJ=e=>{let t=e?.scores?._comparison;if(!t||typeof t!="object"||!Array.isArray(t.ranking)||t.ranking.length<2)return null;let r=t.method||{};return{rows:t.ranking.map(n=>{let o=t.models?.[n]||{};return{label:n,passRate:o.pass_rate??null,interval:Array.isArray(o.interval)&&o.interval.length===2?o.interval:null,scenarios:o.scenarios??0}}),conclusion:t.conclusion||null,confidence:Math.round(Number(r.confidence??.95)*100),resamples:r.resamples??null}},J2=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=jh(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),g=d.passed??f.filter(C=>C.status==="passed").length,b=Object.keys(d.faults||{}).length?d.faults:f.reduce((C,O)=>O.fault?{...C,[O.fault]:(C[O.fault]||0)+1}:C,{}),h=C=>p.find(O=>O.fault===C)||null,y=C=>C==="low_quality"?1:0,x=Object.entries(b).sort((C,O)=>O[1]-C[1]||(h(O[0])?1:0)-(h(C[0])?1:0)||y(C[0])-y(O[0])||C[0].localeCompare(O[0])),[v,k]=x[0]||[],S=v?h(v):null,w=m||null,_=C=>C==null||!w?null:C/w,A=d.avg_score??(f.length&&f.some(C=>C.score!=null)?f.filter(C=>C.score!=null).reduce((C,O)=>C+Number(O.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:g,total:m,scored:d.samples??f.length,passRate:m?g/m:null,avgScore:A==null?null:Number(A),avgDurationMs:d.avg_duration_ms??null,p50DurationMs:d.p50_duration_ms??null,p95DurationMs:d.p95_duration_ms??null,inputTokens:d.input_tokens??null,outputTokens:d.output_tokens??null,avgInputTokens:_(d.input_tokens),avgOutputTokens:_(d.output_tokens),avgTokens:d.input_tokens==null&&d.output_tokens==null?null:_((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:ff(d.cost,d.priced),faults:x.map(([C,O])=>({fault:C,name:xJ(C),count:O})),typicalFault:v?{fault:v,name:xJ(v),count:k,scenarioKey:S?.scenario_key||null,summary:(S?.diagnosis?.summary||S?.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))},$J=(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 ${K0(s,t)}`},jJ=(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}}),MD=(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}),LJ=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,MD(e,r).length])),Q2=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:zJ(t)})),zJ=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}`},R0=e=>zJ(e?.sandbox),BJ=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},R2=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"",gf=e=>e?.selection||e?.scores?._selection||{},FJ=e=>(gf(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function eb(e,t=[]){let r=gf(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):V_e(e)||e.status==="failed"?n.map(o=>o.key):[]}var ID=(e,t=[])=>{let r=gf(e);if(r.group)return`partial: ${r.group}`;let n=r.scenario_keys||r.keys,o=t.filter(a=>a.enabled!==!1).length;return Array.isArray(n)&&n.length&&n.length{let r=new Set(t.filter(a=>a&&a.enabled!==!1).map(a=>a.key)),n=[],o=[];return[...new Set((e||[]).filter(a=>a!=null))].forEach(a=>(r.has(a)?n:o).push(a)),{keys:n,dropped:o}},WJ=(e=[],t=[])=>hf((e||[]).filter(r=>r&&r.scenario_key&&r.status!=="pending"&&r.status!=="passed").map(r=>r.scenario_key),t),UJ=(e,t=[])=>{let r=gf(e);if(r.group)return{group:r.group};let n=Array.isArray(r.scenario_keys)&&r.scenario_keys.length?r.scenario_keys:r.keys;return Array.isArray(n)&&n.length?{keys:hf(n,t).keys}:{}},DD=272,$D=16,HJ=32,qJ=940,jD="clamp(360px, calc(100vh - 240px), 900px)",KJ=320,Z_e=3,VJ=4,GJ=720,ED="aa.evaluations.detail",YJ=e=>368+138*e,XJ=e=>504+170*e,ZJ=e=>{try{let t=e?.getItem(ED);return t==="tools"||t==="steps"?t:null}catch{return null}},JJ=(e,t)=>{try{t==null?e?.removeItem?.(ED):e?.setItem(ED,t)}catch{}},QJ=(e=[])=>(e.find(t=>t?.step==="running")||e.find(t=>t?.step==="queued"))?.key??null,RJ=(e=[])=>{if(!e.length)return"none";let t=e.filter(n=>n!=="skipped"&&n!=="none");if(!t.length)return e.every(n=>n==="none")?"none":"skipped";if(t.includes("loading"))return"loading";if(t.includes("running"))return"running";let r=t.filter(n=>n==="queued").length;return r&&rnull,r="suite")=>{if(r!=="failed-first")return e;let n=[],o=new Map;return e.forEach(a=>{let i=a?.group||"",s=o.get(i);s||(s={failed:0,rows:[]},o.set(i,s),n.push(s));let l=t(a)==="failed";l&&(s.failed+=1),s.rows.push({row:a,failed:l})}),n.sort((a,i)=>i.failed-a.failed).flatMap(a=>[...a.rows.filter(i=>i.failed),...a.rows.filter(i=>!i.failed)].map(i=>i.row))},LD=(e=[],t=new Set)=>{let r=t instanceof Set?t:new Set(t||[]),n=new Set;if(!r.size)return n;let o=new Set;return e.forEach(a=>{(r.has(a?.key)?o:n).add(a?.group||"")}),o.forEach(a=>n.delete(a)),n},zD=(e={},t=[])=>{let r=t.map(n=>e?.[n]).filter(n=>n&&n.status!=="pending"&&n.duration_ms!=null&&Number.isFinite(Number(n.duration_ms))).map(n=>Number(n.duration_ms));return r.length?Math.max(...r):null},AD=e=>e!=null&&Number.isFinite(Number(e))?Number(e):null,eA=e=>{if(!e||e.status==="pending")return null;let t={durationMs:AD(e.duration_ms),inputTokens:AD(e.input_tokens),outputTokens:AD(e.output_tokens)};return t.durationMs==null&&t.inputTokens==null&&t.outputTokens==null?null:t},tQ=(e=[])=>{let t={durationMs:null,inputTokens:null,outputTokens:null,count:0};return e.forEach(r=>{let n=eA(r);n&&(t.count+=1,["durationMs","inputTokens","outputTokens"].forEach(o=>{n[o]!=null&&(t[o]=(t[o]||0)+n[o])}))}),t.count?t:null},rQ=(e={},t=[])=>{let r=tQ(t.map(n=>e?.[n]));return!r||r.inputTokens==null&&r.outputTokens==null?null:{input:r.inputTokens,output:r.outputTokens}},nQ=(e=[])=>{let t=e.filter(Boolean);if(!t.length)return null;let r=n=>t.some(o=>o[n]!=null)?t.reduce((o,a)=>o+(a[n]||0),0):null;return{input:r("input"),output:r("output")}},BD=(e={},t=[],r=Object.keys(e))=>Object.fromEntries(t.map(n=>[n,tQ(r.map(o=>e[o]?.[n]))])),oQ=(e=[],t={},r=[])=>{let n=e.map(o=>zD(t[o?.key],r)).filter(o=>o!=null);return n.length?n.reduce((o,a)=>o+a,0):null},aQ=(e,t=Date.now())=>{if(!e)return null;let r=e.usage?.runtime_ms;if(r!=null&&Number.isFinite(Number(r)))return Number(r);if(e.status==="pending"||e.status==="failed"||!e.created_at)return null;let n=Date.parse(e.created_at),o=e.completed_at?Date.parse(e.completed_at):t;return!Number.isFinite(n)||!Number.isFinite(o)?null:Math.max(0,o-n)},Oh=e=>String(e).padStart(2,"0"),iQ=e=>{let t=Math.max(0,Math.floor(Number(e)/1e3));return{hours:Math.floor(t/3600),minutes:Math.floor(t%3600/60),seconds:t%60,total:t}},sQ=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n}=iQ(e);return t?`${t}:${Oh(r)}:${Oh(n)}`:`${Oh(r)}:${Oh(n)}`},FD=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n,total:o}=iQ(e);return o<60?`${o}s`:t?`${t}h ${Oh(r)}m`:`${r}m ${Oh(n)}s`},tb=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let t=Number(e);return t>=6e4?FD(t):t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},lQ=e=>{let t=Number(e)||0;return t<=500?3e3:t<=2e3?6e3:1e4},J_e=(e,t)=>!!e&&!!t&&e.id===t.id&&e.status===t.status&&e.score===t.score&&e.fault===t.fault&&e.cost===t.cost&&(e.judge_usage?.cost??null)===(t.judge_usage?.cost??null)&&(e.output||"").length===(t.output||"").length,uQ=(e=[],t=[])=>{let r=new Map;(e||[]).forEach(i=>{i&&i.id!=null&&r.set(i.id,i)});let n=0,o=(t||[]).map(i=>{let s=i&&i.id!=null?r.get(i.id):null;return s&&J_e(s,i)?(n+=1,s):i}),a=o.length!==(e||[]).length||n!==o.length;return{results:a?o:e||[],changed:a}},WD=(e=[],t=n=>n?.model,r={})=>{let n={};(e||[]).forEach(i=>{!i||!i.scenario_key||((n[i.scenario_key]||={})[t(i)]=i)});let o=Object.keys(n),a=0;return o.forEach(i=>{let s=r?.[i];if(!s)return;let l=Object.keys(n[i]);l.length===Object.keys(s).length&&l.every(u=>s[u]===n[i][u])&&(n[i]=s,a+=1)}),r&&a===o.length&&o.length===Object.keys(r).length?r:n},cQ=(e=[],t=Z_e)=>{if(e.length<=t)return e;let r=n=>e.reduce((o,a)=>o+(Number(a?.[n])||0),0);return[{label:"combined",short:`${e.length} models`,passed:r("passed"),total:r("total"),title:e.map(n=>`${n.short} ${n.passed??"\u2014"}/${n.total??"\u2014"}`).join(" \xB7 ")}]},UD=(e={},t=[])=>{let r=new Set((t||[]).filter(a=>a!=null).map(String)),n=Object.entries(e||{}),o=n.filter(([a])=>r.has(String(a)));return o.length===n.length?e||{}:Object.fromEntries(o)},dQ=({rowTop:e=0,headerHeight:t=0,boxHeight:r=0}={})=>Math.max(0,e-t-Math.round((r-t)/3)),pQ=({rowTop:e=0,headerHeight:t=0,groupRowHeight:r=0}={})=>Math.max(0,e-t-r);var Q_e=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],fQ=["openai","anthropic","ollama","openrouter","mock"];function R_e(e,t=fQ){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=Q_e.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function eCe(e,t,r=fQ){let n=R_e(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function mQ(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:eCe(r,o)}]:[]}))}function rb(e,{providers:t,qualify:r=!0}){let n=mQ(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function gQ(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=mQ(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 Sd(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function nb(e){return e.join(", ")}function hQ(e,t){return[...new Set([...e,...Sd(t)])]}function yQ(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function vQ(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function xQ({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var Bh=X(J()),Rs=typeof window>"u"?Bh.useEffect:Bh.useLayoutEffect;function yf(e){let[t,r]=(0,Bh.useState)(0);return Rs(()=>{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}var la=X(J());function ob({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,la.useState)(""),[p,f]=(0,la.useState)(""),m=(0,la.useRef)(null),g=(0,la.useId)(),b=Sd(e),h=(0,la.useRef)(b);h.current=b;let y=_=>{let A=hQ(h.current,_);A.length!==h.current.length&&(t(nb(A)),f(`Added ${A.slice(h.current.length).join(", ")}`)),d("")},x=_=>{t(nb(h.current.filter(A=>A!==_))),f(`Removed ${_}`),m.current?.focus()},v=(_,A)=>{if(_.includes(",")){let{complete:C,rest:O}=yQ(_);y(C),d(O)}else vQ(A.nativeEvent?.inputType,_,r)?y(_):d(_.trimStart())},k=_=>{let A=xQ(_,c,h.current.length);A==="commit"?(_.preventDefault(),setTimeout(()=>y(m.current?.value||""),0)):A==="removeLast"&&(_.preventDefault(),x(h.current[h.current.length-1]))},S=r.filter(_=>!b.includes(_)),w=[i,a&&`${g}-title`,`${g}-selected`].filter(Boolean).join(" ");return la.default.createElement("div",{"data-testid":u,onClick:_=>{_.target===_.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},b.map(_=>la.default.createElement("span",{key:_,style:tCe},la.default.createElement("span",{style:{overflowWrap:"anywhere"}},_),la.default.createElement("button",{type:"button",onClick:()=>x(_),"aria-label":`Remove ${_}`,title:`Remove ${_}`,style:rCe},"\xD7"))),la.default.createElement(fu,{inputRef:m,id:s,"aria-label":l,"aria-describedby":w,title:a,value:c,models:S,onChange:v,onKeyDown:k,onBlur:()=>{c.trim()&&y(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&&la.default.createElement("span",{id:`${g}-title`,style:HD},a),la.default.createElement("span",{id:`${g}-selected`,style:HD},b.length?`Chosen: ${b.join(", ")}`:"No models chosen"),la.default.createElement("span",{role:"status","aria-live":"polite",style:HD},p))}var tCe={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:U,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},rCe={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},HD={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Qe=X(J());var Fi=X(J());var nCe="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",oCe="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",vf="var(--color-text-muted)",tA=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Xu=(e,t=!1)=>kr(e,{estimated:t}),bQ=(e,{total:t=!1}={})=>{if(!e)return null;let r=[];if(e.agent){let n=[`agent ${kr(e.agent.cost,{estimated:e.agent.estimated})}`,St(e.agent.count,tA(e))];e.agent.perInteraction!=null&&n.push(`${Xu(e.agent.perInteraction,e.agent.estimated)} each`),r.push(n.join(" \xB7 "))}return e.judge&&r.push(`judge ${kr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${St(e.judge.calls,"call")}`),t&&e.total!=null&&r.push(`total ${kr(e.total,{estimated:e.totalEstimated})}`),r.join(" \xB7 ")};function xf({label:e,value:t,sub:r,title:n,valueColor:o,testId:a,valueTestId:i,onClick:s,onKeyDown:l,role:u,tabIndex:c,style:d}){return Fi.default.createElement("div",{"data-testid":a,title:n,role:u,tabIndex:c,onClick:s,onKeyDown:l,style:{padding:"10px 16px",minWidth:0,marginLeft:-1,marginTop:-1,borderLeft:"1px solid var(--color-border-light)",borderTop:"1px solid var(--color-border-light)",...d}},Fi.default.createElement($e,{size:10,color:vf},e),Fi.default.createElement("div",{"data-testid":i,style:{marginTop:4,fontFamily:U,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),Fi.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}var wQ={value:"\u2026",valueColor:vf,sub:"priced when the run completes"};function qD({spend:e,pending:t=!1,failed:r=!1}){let n=e?.agent||null,o=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${sn(n.inputTokens)} \xB7 out ${sn(n.outputTokens)}`:"",a=r?{value:"\u2014",valueColor:vf,sub:"nothing replayed"}:t?wQ:{value:n?kr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:vf,sub:n?`${St(n.count,tA(e))}${n.perInteraction!=null?` \xB7 ${Xu(n.perInteraction,n.estimated)} per interaction`:""}${o}`:"nothing replayed or sampled"};return Fi.default.createElement(xf,{label:"Agent cost",title:nCe,testId:"run-spend-agent",...a})}function KD({spend:e,judgedBy:t=null,pending:r=!1,failed:n=!1}){let o=e?.judge||null,i=o?[St(o.calls,"call"),Q0(o),o.model,J0(o),"offline"].filter(Boolean).join(" \xB7 "):t&&t!=="rules"?`judge ${t} \xB7 spend not recorded`:"no judge asked \xB7 rules only",s=n?{value:"\u2014",valueColor:vf,sub:i}:r?wQ:{value:o?kr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:vf,sub:i};return Fi.default.createElement(xf,{label:"Judge cost",title:oCe,testId:"run-spend-judge",...s})}function VD({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{total:n,totalEstimated:o}=e;return Fi.default.createElement(je,{padding:0,testId:r,style:{overflow:"hidden"}},Fi.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Fi.default.createElement(qD,{spend:e}),Fi.default.createElement(KD,{spend:e,judgedBy:t}),Fi.default.createElement(xf,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:n!=null?kr(n,{estimated:o}):"\u2014",sub:OJ(e),testId:"run-spend-total"})),o&&Fi.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:U,fontSize:11,color:vf}},gl))}function wf({run:e,testId:t,short:r=!1}){if(!e)return Qe.default.createElement(ve,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Qe.default.createElement(ve,{tone:"error",testId:t},"failed");if(e.status==="pending")return Qe.default.createElement(ve,{tone:"warning",testId:t},"queued");if(e.status==="running")return Qe.default.createElement(ve,{tone:"warning",testId:t},"running");if(e.samples_evaluated){let n=Dn(e.samples_passed||0,e.samples_evaluated),o=Y0(e),a=!!o&&!o.met,i=o?a?wJ(e).map(G2).join(` +`)||"No gate was reached":"Every pass gate was met":null,s=r?n:`${n} passed`,l=a?" \xB7 gate missed":o&&!r?" \xB7 gates met":"",u=[r||o?`${n} passed`:null,i].filter(Boolean).join(` +`)||void 0;return Qe.default.createElement(ve,{tone:a?"error":du(bJ(e)),testId:t,title:u},`${s}${l}`)}if(e.average_score!=null){let n=Number(e.average_score);return Qe.default.createElement(ve,{tone:n>=.85?"success":n>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${oa(n)}`)}return Qe.default.createElement(ve,{tone:"muted",testId:t},"no samples")}function nA({run:e,testId:t="run-version"}){let r=TJ(e);return r?Qe.default.createElement(ve,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var bf={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},ab={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},SQ=Ua.cost+32,aCe=e=>jh(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:Kn(t.label||"").short||"all samples",passed:t.passed,total:t.samples})),_Q=(e,t,r)=>[`@${r||t?.agent?.name||"agent"}`,df(t,e),Dh(t,e),R0(e)&&`against ${R0(e)}`].filter(Boolean).join(" \xB7 ");function oA({runs:e=[],runCount:t=null,evaluation:r,agentName:n,selectedId:o=null,previousRun:a=null,barsFor:i=null,deltaFor:s=null}){return e.map((l,u)=>{let c=Lh(l,u,e,t),d=e[u+1]||(u===0&&e.length===1?a:null),p=d?Number.isFinite(d.number)?d.number:c-1:null,f=s?s(l,d,p):Z0(l,d,{olderNumber:p}),m=f&&d?NJ(l,d):null,g=Bi(l);return{run:l,number:c,latest:u===0,when:Co(l.completed_at||l.created_at),meta:_Q(l,r,n),bars:i?i(l):aCe(l),delta:f,version:m,spend:g,selected:l.id===o}})}function ZD({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}=ut(),p=oA({runs:e,runCount:t,evaluation:r,agentName:n,selectedId:o,previousRun:i,barsFor:s,deltaFor:l});return Qe.default.createElement(en,{title:u,meta:X0(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&Qe.default.createElement(tn,null,"[ ] no runs yet"),Qe.default.createElement("div",{style:{minWidth:920}},p.map(f=>Qe.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"}`}},Qe.default.createElement("div",{style:{minWidth:0}},Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&Qe.default.createElement(ve,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&Qe.default.createElement(ve,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&Qe.default.createElement(ve,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),Qe.default.createElement(nA,{run:f.run})),Qe.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&Qe.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),Qe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?Qe.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Qe.default.createElement(pu,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Qe.default.createElement(qI,{darkMode:d,cells:[{key:"agent",width:SQ,title:f.spend?.agent?`Agent: ${St(f.spend.agent.count,tA(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${Xu(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&&Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11}},Qe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),kr(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:SQ,title:f.spend?.judge?`Judge: ${St(f.spend.judge.calls,"call")}${Q0(f.spend.judge)?` \xB7 ${Q0(f.spend.judge)}`:""}${J0(f.spend.judge)?` \xB7 ${J0(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11}},Qe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),kr(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&&Qe.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:bf[f.delta.tone]||bf.muted}},f.delta.text),f.version&&Qe.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:U,fontSize:10,color:ab[f.version.kind]||ab.same}},f.version.text))},{key:"badge",width:132,content:Qe.default.createElement(wf,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Qe.default.createElement($a,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var kQ='[data-testid="evaluation-run"]',iCe=150,GD=(e,t)=>e&&t!=null?e.querySelector(`[data-run-id="${CSS.escape(String(t))}"]`):null,YD=(e,t,r="y")=>{if(!e||!t)return;if(r==="x"){let o=t.offsetLeft;(oe.scrollLeft+e.clientWidth)&&(e.scrollLeft=Math.max(o-8,0));return}let n=t.offsetTop;(ne.scrollTop+e.clientHeight-t.offsetHeight)&&(e.scrollTop=Math.max(n-8,0))},sCe=(e=[])=>{let t=e.filter(o=>o.total!=null),r=o=>t.reduce((a,i)=>a+(Number(i[o])||0),0),n=r("total");return n>0?{passed:r("passed"),failed:r("failed"),total:n}:null},lCe=(e,{evaluation:t,agentName:r,bars:n,selectedId:o})=>({run:e,number:Number.isFinite(e.number)?e.number:"?",latest:!1,when:Co(e.completed_at||e.created_at),meta:_Q(e,t,r),bars:n||[],delta:null,version:null,spend:Bi(e),selected:e.id===o}),XD={fontFamily:U,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function uCe({bar:e}){let t=e.title||void 0;return e.passed==null||e.total==null?Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8},title:t},Qe.default.createElement("span",{style:{...XD,width:96,flexShrink:0},title:e.label||void 0},e.short),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Qe.default.createElement("div",{title:t},Qe.default.createElement(pu,{label:e.short,labelWidth:96,passed:e.passed,total:e.total,height:4,valueWidth:44}))}function rA({row:e,selected:t=!1,tabIndex:r=-1,card:n=!1,onOpen:o,noteFor:a=null,style:i}){let{run:s}=e,l=a?a(s):null,u=n&&s.status==="running"?sCe(e.bars):null,c=cQ(s.status==="failed"?e.bars.filter(p=>p.passed!=null&&p.total!=null):e.bars),d=()=>o?.(s);return Qe.default.createElement("div",{role:"button",tabIndex:r,"aria-current":t?"true":void 0,"data-testid":"evaluation-run","data-run-id":s.id,"data-selected":t?"true":"false",onClick:d,onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),d())},className:t?void 0:"hover:bg-[var(--color-hover)]",title:e.meta,style:{display:"flex",flexDirection:"column",gap:5,padding:"9px 12px 9px 10px",borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:t?"var(--color-muted)":void 0,borderLeft:`2px solid ${t?"var(--color-accent-ui)":"transparent"}`,...i}},Qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0,flexWrap:n?"wrap":"nowrap"}},Qe.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`#${e.number}`),Qe.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.when),Qe.default.createElement(nA,{run:s}),Qe.default.createElement("span",{style:{marginLeft:"auto",flexShrink:0}},Qe.default.createElement(wf,{run:s,short:!0,testId:e.latest?"suite-pass-badge":void 0}))),c.map(p=>Qe.default.createElement(uCe,{key:p.label||"all",bar:p})),u&&Qe.default.createElement(kw,{parts:[{value:u.passed,tone:"success"},{value:u.failed,tone:"error"}],total:u.total,height:3,title:`${u.passed} of ${u.total} passed so far${u.failed?` \xB7 ${u.failed} failed`:""}`,testId:"evaluation-run-progress"}),s.status==="failed"&&s.error_message&&Qe.default.createElement("div",{style:{...XD,color:"var(--color-error)"},title:s.error_message},`[!] ${s.error_message}`),l&&Qe.default.createElement("div",{"data-testid":"evaluation-run-note",style:XD,title:l},l),(e.delta||e.spend?.agent?.cost!=null)&&Qe.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,fontFamily:U,fontSize:10,minWidth:0}},e.delta&&Qe.default.createElement("span",{style:{fontWeight:600,color:bf[e.delta.tone]||bf.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:e.version?.text},e.delta.text),e.spend?.agent?.cost!=null&&Qe.default.createElement("span",{style:{marginLeft:"auto",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},kr(e.spend.agent.cost,{estimated:e.spend.agent.estimated}))))}function JD({rows:e=null,runs:t=[],runCount:r=null,evaluation:n,agentName:o,selectedId:a=null,onOpen:i,previousRun:s=null,barsFor:l=null,deltaFor:u=null,noteFor:c=null,linkedRun:d=null,linkedBars:p=null,layout:f="rail",limit:m=null,maxHeight:g=null,expandedHeight:b=KJ,testId:h="suite-runs-panel",style:y}){let x=e??oA({runs:t,runCount:r,evaluation:n,agentName:o,selectedId:a,previousRun:s,barsFor:l,deltaFor:u}),v=t.length||!e?t:e.map(K=>K.run),k=a??x.find(K=>K.selected)?.run.id??null,S=K=>K.run.id===k,w=d&&!x.some(K=>K.run.id===d.id)?lCe(d,{evaluation:n,agentName:o,bars:p,selectedId:k}):null,_=f==="strip",A=_?CJ(x.map(K=>K.run),{limit:m,selectedId:k}).map(K=>x[K]):x,C=w?[w,...A]:A,O=x.length-A.length,D=_&&Number.isFinite(m)&&O>0,H=mf(v,r)-v.length,j=(C.find(S)||C[0])?.run.id??null,Z=(x.find(S)||x[0])?.run.id??null,[N,P]=(0,Qe.useState)(!1),M=(0,Qe.useRef)(null),I=(0,Qe.useRef)(null),$=(0,Qe.useRef)(null),T=(0,Qe.useRef)(null);(0,Qe.useEffect)(()=>()=>clearTimeout(T.current),[]),(0,Qe.useEffect)(()=>{D||P(!1)},[D]);let q=new Map(C.concat(x).map(K=>[String(K.run.id),K.run])),G=K=>{clearTimeout(T.current),T.current=setTimeout(()=>i?.(K),iCe)},L=(K,{next:pe,prev:De,axis:se})=>be=>{let ue=K.current,R=ue?Array.from(ue.querySelectorAll(kQ)):[];if(R.length===0)return;let we=be.target.closest(kQ),Ce=R.indexOf(we),z;if(be.key===pe)z=R[Math.min(Ce+1,R.length-1)];else if(be.key===De)z=R[Math.max(Ce-1,0)];else if(be.key==="Home")z=R[0];else if(be.key==="End")z=R[R.length-1];else return;if(be.preventDefault(),!z||z===we)return;z.focus({preventScroll:!0}),YD(ue,z,se);let ee=q.get(z.dataset.runId);ee&&G(ee)};Rs(()=>{if(N||$.current==null)return;let K=GD(I.current,$.current);$.current=null,K?.focus({preventScroll:!0})},[N]),Rs(()=>{k!=null&&(YD(I.current,GD(I.current,k),"x"),YD(M.current,GD(M.current,k),"y"))},[k,f,N]);let Y=H>0&&Qe.default.createElement("div",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},`${St(H,"older run")} \xB7 reachable by link`);return _?Qe.default.createElement(en,{title:"Runs",meta:X0(v,r),testId:h,style:y},Qe.default.createElement("div",{ref:I,"data-testid":"run-strip",onKeyDown:L(I,{next:"ArrowRight",prev:"ArrowLeft",axis:"x"}),style:{display:"flex",overflowX:"auto",scrollbarGutter:"stable",position:"relative"}},C.length===0&&Qe.default.createElement(tn,{style:{flex:1}},"[ ] no runs yet"),C.map((K,pe)=>Qe.default.createElement(rA,{key:K.run.id,row:K,card:!0,selected:S(K),tabIndex:j===K.run.id?0:-1,onOpen:i,noteFor:c,style:{flex:"1 1 0",minWidth:200,borderTop:"none",borderRight:peP(K=>!K),className:"bg-transparent hover:bg-[var(--color-hover)]",style:{display:"block",width:"100%",textAlign:"left",padding:"6px 12px",border:0,borderTop:"1px solid var(--color-border-light)",cursor:"pointer",fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"}},N?`[-] latest ${m}`:`[+] ${St(O,"earlier run")}`),D&&N&&Qe.default.createElement("div",{ref:M,onKeyDown:L(M,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{maxHeight:b,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},x.map(K=>Qe.default.createElement(rA,{key:K.run.id,row:K,selected:S(K),tabIndex:Z===K.run.id?0:-1,noteFor:c,onOpen:pe=>{$.current=pe.id,P(!1),i?.(pe)}})),Y)):Qe.default.createElement(en,{title:"Runs",meta:X0(v,r),testId:h,style:{display:"flex",flexDirection:"column",maxHeight:g||void 0,...y},bodyStyle:{flex:1,minHeight:0,display:"flex",flexDirection:"column"}},Qe.default.createElement("div",{ref:M,onKeyDown:L(M,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{flex:1,minHeight:0,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},w&&Qe.default.createElement(Qe.default.Fragment,null,Qe.default.createElement("div",{"data-testid":"runs-rail-linked",style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)",padding:"4px 12px",background:"var(--color-muted)"}},`linked \xB7 older than the latest ${v.length}`),Qe.default.createElement(rA,{row:w,selected:S(w),tabIndex:j===w.run.id?0:-1,onOpen:i,noteFor:c})),!w&&x.length===0&&Qe.default.createElement(tn,null,"[ ] no runs yet"),x.map(K=>Qe.default.createElement(rA,{key:K.run.id,row:K,selected:S(K),tabIndex:j===K.run.id?0:-1,onOpen:i,noteFor:c})),Y))}var CQ=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[St(n,"run"),r?`latest #${Lh(r,0,e,t)} ${Co(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${Dn(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var Mt=X(J());var kd=X(J());function Cs({text:e=null,url:t=null,label:r="Copy as Markdown",title:n,testId:o="copy-markdown",style:a}){let[i,s]=(0,kd.useState)("idle"),l=(0,kd.useRef)(null);return(0,kd.useEffect)(()=>()=>clearTimeout(l.current),[]),!e&&!t?null:kd.default.createElement(ie,{size:"sm",variant:"ghost",onClick:async c=>{c?.stopPropagation?.();let d=e?await wd(e):await hJ(t);s(d?"copied":"failed"),clearTimeout(l.current),l.current=setTimeout(()=>s("idle"),2e3)},testId:o,title:n||"Copy as GitHub-flavored Markdown, for an issue or a pull request",style:{padding:"4px 8px",fontSize:12,color:i==="failed"?"var(--color-error)":i==="copied"?"var(--color-success-text)":"var(--color-text-secondary)",...a}},i==="copied"?"Copied":i==="failed"?"Copy failed":r)}var AQ=X(J());function Zu({evaluationId:e,runId:t=null,resultId:r=null,label:n="Copy link",title:o,testId:a="copy-link",style:i}){let s=q0({evaluationId:e,runId:t,resultId:r});if(!s)return null;let l=gJ(s,{origin:typeof window<"u"?window.location?.origin:"",mountPath:typeof window<"u"?window.ACTIVE_AGENT_DASHBOARD?.mountPath:""});return AQ.default.createElement(Cs,{text:l,label:n,testId:a,title:o||"Copy a link to this view, for a teammate in your organization",style:i})}var Wi="var(--color-text-muted)",QD=3,EQ={passed:0,total:0},NQ={items:0,faults:0,scenarios:0},cCe={keys:[],dropped:[]},Ml=(e,t,r={})=>({fontFamily:U,fontSize:e,color:t,...r}),ib=e=>typeof window>"u"?"#":rt(e),dCe=e=>{let[t,r]=(0,Mt.useState)(()=>Date.now());return(0,Mt.useEffect)(()=>{if(!e)return;r(Date.now());let n=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(n)},[e]),t};function TQ({short:e,label:t}){return Mt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Mt.default.createElement("span",{style:Ml(10,Wi,{width:110,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),title:t||void 0},e),Mt.default.createElement("span",{style:Ml(11,Wi)},"\u2014"))}function RD({run:e,runNumber:t=null,latestNumber:r=null,isLatest:n=!1,runningElsewhere:o=null,agentName:a="agent",scenarioCount:i=0,groupCount:s=0,columns:l=[],judgedBy:u="rules",bars:c=[],delta:d=null,version:p=null,totals:f=EQ,settledCount:m=0,settledFailed:g=0,expectedResults:b=0,running:h=!1,loading:y=!1,spend:x=null,fixSummary:v=NQ,selectionLabel:k=null,sandboxLabel:S=null,reportPath:w=null,rerun:_=cCe,evaluationId:A=null,onSelectLatest:C,onWatchLatest:O,onJumpToFix:D,onRerunFailed:H,onRunAgain:j}){let{darkMode:Z}=ut(),N=dCe(h);if(!e)return null;let P=Th(w),M=e.status==="failed",I=e.status==="complete",$=h?`started ${Co(e.created_at)}`:Co(e.completed_at||e.created_at),T=`@${a} \xB7 ${St(i,"scenario")}${s?` in ${St(s,"group")}`:""} \xD7 ${St(l.length,"model")} \xB7 judged by ${u}${S?` \xB7 against ${S}`:""}`,q=_?.keys||[],G=_?.dropped||[],L=G.length?`${q.length} of ${q.length+G.length}`:`${q.length}`,Y="Replay every scenario that failed on any model, under the models in the picker"+(G.length?` \xB7 not replayed (disabled or removed): ${G.join(", ")}`:""),K=aQ(e,N),pe=[{key:"duration",width:Ua.duration,content:K!=null&&Mt.default.createElement("span",{style:Ml(11)},h?sQ(K):FD(K)),title:e.usage?.runtime_ms!=null?"Wall clock, as the run recorded it":"From the run's start to its end",empty:"Duration is read once the run starts"},{key:"delta",width:136,content:d&&Mt.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Mt.default.createElement("span",{style:Ml(11,bf[d.tone]||bf.muted,{fontWeight:600})},d.text),p&&Mt.default.createElement("span",{"data-testid":"run-version-delta",style:Ml(10,ab[p.kind]||ab.same)},p.text)),title:"Samples passed, against the run before",empty:I&&!d?"Movement is read against the run before, which is not loaded":"Movement is read once the run completes"},{key:"badge",content:Mt.default.createElement(wf,{run:e,testId:"suite-run-badge"})}],De=f||EQ,se=De.total>0?De.passed/De.total:null,be=M?{value:"\u2014",valueColor:Wi,sub:m?`${m} of ${b} before it failed`:"run failed"}:h?{value:`${De.passed} passed`,sub:Mt.default.createElement("span",{"data-testid":"suite-run-progress"},`${m} of ${b} results in${g?` \xB7 ${g} failed`:""}`)}:{value:Dn(De.passed,De.total),valueColor:se==null?Wi:Wn[du(se)].text,sub:`${Math.max(De.total-De.passed,0)} failed \xB7 ${St(i,"scenario")} \xD7 ${St(l.length,"model")}`},ue=c.slice(0,QD),R=Mt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:5,fontWeight:400,lineHeight:"normal"}},c.length===0&&l.length===0&&Mt.default.createElement("span",{style:Ml(11,Wi)},"\u2014"),c.length===0&&l.map(F=>Mt.default.createElement(TQ,{key:F,short:Kn(F).short,label:F})),ue.map(F=>F.passed==null||F.total==null?Mt.default.createElement(TQ,{key:F.label||"all",short:F.short,label:F.label}):Mt.default.createElement(pu,{key:F.label||"all",label:F.short,labelWidth:110,passed:F.passed,total:F.total,height:4,valueWidth:48}))),we=c.length>QD?Mt.default.createElement("span",{style:Ml(10,Wi)},`+${c.length-QD} more`):void 0,Ce=v||NQ,z=M?{value:"\u2014",valueColor:Wi,sub:"\u2014"}:y?{value:"\u2026",valueColor:Wi,sub:"loading\u2026"}:h?{value:"\u2026",valueColor:Wi,sub:"scoring\u2026"}:Ce.items>0?{value:Ce.items,valueColor:Wn.error.text,sub:Mt.default.createElement("span",{style:{color:"var(--color-info)"}},`${St(Ce.faults,"fault")} across ${St(Ce.scenarios,"scenario")} ${bv.link}`)}:{value:"0",valueColor:Wi,sub:"nothing to fix"},ee=()=>D?.(),E=M?{}:{role:"button",tabIndex:0,onClick:ee,onKeyDown:F=>{(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),ee())},style:{cursor:"pointer"}},W=`The faults this run found, grouped into fixes${M?"":" \u2014 opens What to fix"}`;return Mt.default.createElement(je,{padding:0,testId:"suite-run-header",style:{overflow:"hidden"}},Mt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",padding:"10px 16px",borderBottom:"1px solid var(--color-border-light)"}},Mt.default.createElement("span",{style:Ml(13,"var(--color-text-primary)",{fontWeight:700})},`Run #${t??"?"}`),Mt.default.createElement("span",{style:Ml(11,Wi,{whiteSpace:"nowrap"})},$),n&&Mt.default.createElement(ve,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),Mt.default.createElement(nA,{run:e}),Mt.default.createElement("span",{style:Ml(11,Wi,{minWidth:0,textWrap:"pretty"})},T),k&&Mt.default.createElement(ve,{tone:"muted",size:10,style:{padding:"1px 6px"},testId:"suite-run-selection"},k),!n&&Mt.default.createElement(Jr,{onClick:()=>C?.(),title:"Show the suite's latest run",testId:"suite-latest-run"},`latest${r!=null?` #${r}`:""}`),o&&Mt.default.createElement(Jr,{onClick:()=>O?.(),title:"A newer run is going; show it as it replays",testId:"suite-watch-latest"},`#${o.number??r??"?"} is running \xB7 watch`),I&&!y&&q.length>0&&Mt.default.createElement(Jr,{onClick:()=>H?.(),title:Y,testId:"suite-rerun-failed"},`re-run failed (${L})`),M&&Mt.default.createElement(Jr,{onClick:()=>j?.(),title:"Replay what this run was asked to, under the models in the picker",testId:"suite-run-again"},"run again"),Mt.default.createElement(Zu,{evaluationId:A,runId:e.id,label:"copy link",testId:"suite-run-copy-link",title:"Copy a link that opens this run, for a teammate in your organization",style:{padding:"0 4px",fontFamily:U,fontSize:11}}),w&&Mt.default.createElement(Jr,{href:ib(w),onClick:()=>st(w),title:"The run rendered as a report page",testId:"suite-run-report"},"run report"),P&&Mt.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:10,flexWrap:"wrap"},"data-testid":"suite-run-exports"},Mt.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:Wi}},"download"),Mt.default.createElement(Jr,{href:ib(P.html),title:"The report as one self-contained HTML page",testId:"suite-run-download-html"},"html"),Mt.default.createElement(Jr,{href:ib(P.json),title:"The run as the evaluation report envelope another install imports",testId:"suite-run-download-json"},"json"),Mt.default.createElement(Jr,{href:ib(P.md),title:"The report as GitHub-flavored Markdown",testId:"suite-run-download-md"},"markdown"),Mt.default.createElement(Cs,{url:ib(P.markdown),label:"copy markdown",testId:"suite-run-copy-markdown",title:"Copy the whole report as GitHub-flavored Markdown",style:{padding:"0 4px",fontFamily:U,fontSize:11}})),Mt.default.createElement("span",{className:"flex min-w-0 max-w-full",style:{marginLeft:"auto"}},Mt.default.createElement(Sh,{darkMode:Z,cells:pe}))),Mt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Mt.default.createElement(xf,{label:"Passed",title:"Results that passed, over every scenario \xD7 model the run covers",testId:"suite-run-passed",...be}),Mt.default.createElement(xf,{label:"Models",title:"Each model's passed scenarios \u2014 counted from the results that have landed while the run goes",testId:"suite-run-models",value:R,sub:we}),Mt.default.createElement(qD,{spend:x,pending:h,failed:M}),Mt.default.createElement(KD,{spend:x,judgedBy:u,pending:h,failed:M}),Mt.default.createElement(xf,{label:"To fix",title:W,testId:"suite-to-fix",...E,...z})),h&&b>0&&Mt.default.createElement(kw,{parts:[{value:m-g,tone:"success"},{value:g,tone:"error"}],total:b,height:4,radius:0,role:"progressbar","aria-label":"Results in","aria-valuemin":0,"aria-valuemax":b,"aria-valuenow":m,"aria-valuetext":`${m} of ${b} results in${g?`, ${g} failed`:""}`,testId:"suite-run-progress-bar"}),M&&Mt.default.createElement("div",{"data-testid":"suite-run-error",style:{padding:"8px 16px",background:"var(--color-error-soft)",color:"var(--color-error-text)",fontSize:13}},`[!] ${e.error_message||"unknown error"}`))}var Vn=X(J());var ci=X(J());var ln=X(J());var r3=X(J());var OQ={good:"best third",mid:"middle third",poor:"bottom third",none:"not ranked"},e3=e=>e!=null&&Number.isFinite(Number(e)),Fh=(e,t)=>t.value?t.value(e):e?.[t.key],pCe=e=>e?.better==="lower"?"ascending":"descending",PQ=(e=[],t={})=>{let r=e.map(()=>"none"),n=t.band||"tercile";if(n==="none")return r;let o=e.map((l,u)=>({index:u,value:Fh(l,t)})).filter(l=>e3(l.value)).map(l=>({...l,value:Number(l.value)}));if(n==="threshold"){let[l,u]=t.thresholds||[],c=t.better!=="lower";return o.forEach(({index:d,value:p})=>{let f=m=>c?p>=m:p<=m;r[d]=l!=null&&f(l)?"good":u!=null&&f(u)?"mid":"poor"}),r}if(o.sort((l,u)=>t.better==="lower"?l.value-u.value:u.value-l.value),o.length===1)return r[o[0].index]="good",r;let a=Math.ceil(o.length/3),i=l=>o.length===2?l===0?"good":"poor":l{u>0&&l.value!==o[u-1].value&&(s=u),r[l.index]=i(s)}),r},MQ=(e=[],t={},r="descending")=>{let n=t.kind==="text";return e.map((o,a)=>({row:o,index:a,value:Fh(o,t)})).sort((o,a)=>{let i=n?o.value==null||o.value==="":!e3(o.value),s=n?a.value==null||a.value==="":!e3(a.value);if(i||s)return i===s?o.index-a.index:i?1:-1;let l=n?String(o.value).localeCompare(String(a.value)):Number(o.value)-Number(a.value);return(r==="ascending"?l:-l)||o.index-a.index}).map(o=>o.row)},t3=e=>e?.kind==="text"?"ascending":pCe(e);var IQ={good:{background:"var(--color-success-soft)",color:"var(--color-success-text)"},mid:{background:"var(--color-warning-soft)",color:"var(--color-warning-text)"},poor:{background:"var(--color-error-soft)",color:"var(--color-error-text)"},none:{background:"var(--color-muted)",color:"var(--color-text-cell)"}},fCe={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"},DQ={mini:{padding:"3px 8px",fontSize:11,minWidth:0},compact:{padding:"5px 11px",fontSize:12,minWidth:"6ch"},product:{padding:"6px 12px",fontSize:13,minWidth:"7ch"},marketing:{padding:"10px 16px",fontSize:15,minWidth:"7ch"}};function jo({rank:e="none",size:t="product",children:r,title:n,style:o,testId:a}){let i=IQ[e]||IQ.none,s=DQ[t]||DQ.product;return r3.default.createElement("span",{className:"aa-pill","data-rank":e,"data-testid":a,title:n,style:{display:"inline-block",borderRadius:9999,textAlign:"center",whiteSpace:"nowrap",fontFamily:U,fontWeight:700,lineHeight:1.2,fontVariantNumeric:"tabular-nums",...s,...i,...o}},r,e!=="none"&&r3.default.createElement("span",{style:fCe},` ${OQ[e]}`))}var n3={compact:{row:"8px 12px",head:"8px 12px",pill:"compact",name:13},product:{row:"12px 14px",head:"10px 14px",pill:"product",name:14},marketing:{row:"20px 16px",head:"12px 16px",pill:"marketing",name:17}},mCe={fontFamily:U,fontSize:11,fontWeight:700,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-primary)",display:"inline-flex",alignItems:"center",gap:4,whiteSpace:"nowrap"},gCe={fontFamily:U,fontSize:10,fontWeight:500,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-secondary)",whiteSpace:"nowrap"},hCe={fontSize:9,color:"var(--color-accent-ui)",lineHeight:1};function $Q({column:e,sorted:t,direction:r,onSort:n,density:o,align:a,isIdentity:i}){let s=e.sortable!==!1&&n,l=ln.default.createElement("span",{style:{display:"inline-grid",gap:3,justifyItems:a==="left"?"start":"center",textAlign:a}},ln.default.createElement("span",{style:mCe},e.label,t&&ln.default.createElement("span",{"aria-hidden":"true",className:"aa-caret",style:hCe},r==="ascending"?"\u25B2":"\u25BC")),e.unit&&ln.default.createElement("span",{className:"aa-head-unit",style:gCe},e.unit));return ln.default.createElement("th",{scope:"col","aria-sort":s?t?r:"none":void 0,"data-key":e.key,title:e.title,className:i?"aa-comparison-id":void 0,style:{padding:n3[o].head,textAlign:a,verticalAlign:"bottom",borderBottom:"1px solid var(--color-border)",width:e.width,background:"var(--color-card)"}},s?ln.default.createElement("button",{type:"button",onClick:()=>n(e),className:"aa-sort",style:{all:"unset",cursor:"pointer",display:"inline-block",textAlign:"inherit"}},l):l)}function Sf({columns:e=[],rows:t=[],identity:r,rowKey:n=(p,f)=>p?.key??p?.id??p?.label??f,rowProps:o,sort:a,defaultSort:i,onSortChange:s,density:l="product",testId:u,style:c,emptyText:d=null}){let[p,f]=(0,ln.useState)(()=>{if(!i)return null;let S=typeof i=="string"?i:i.key,w=e.find(_=>_.key===S)||(r?.key===S?r:null);return w?{key:S,direction:typeof i=="object"&&i.direction||t3(w)}:null}),m=a||p,g=r?{kind:"text",key:r.key||"identity",value:r.value,sortable:r.sortable,...r}:null,b=g?[g,...e]:e,h=S=>{let w=m?.key===S.key?m.direction==="ascending"?"descending":"ascending":t3(S),_={key:S.key,direction:w};a||f(_),s?.(_.key,_.direction)},y=(0,ln.useMemo)(()=>Object.fromEntries(e.map(S=>[S.key,PQ(t,S)])),[e,t]),x=(0,ln.useMemo)(()=>{let S=m&&b.find(_=>_.key===m.key),w=t.map((_,A)=>({row:_,index:A}));return S?MQ(w,{...S,value:_=>Fh(_.row,S)},m.direction):w},[t,b,m]),v=n3[l]||n3.product,k=e.length;return t.length?ln.default.createElement("div",{className:"aa-comparison-wrap",style:{overflowX:"auto",minWidth:0,...c}},ln.default.createElement("table",{className:"aa-comparison","data-testid":u,"data-density":l,style:{width:"100%",borderCollapse:"collapse","--aa-cols":k}},ln.default.createElement("thead",null,ln.default.createElement("tr",null,g&&ln.default.createElement($Q,{column:g,sorted:m?.key===g.key,direction:m?.direction,onSort:h,density:l,align:"left",isIdentity:!0}),e.map(S=>ln.default.createElement($Q,{key:S.key,column:S,sorted:m?.key===S.key,direction:m?.direction,onSort:h,density:l,align:S.align||"center"})))),ln.default.createElement("tbody",null,x.map(({row:S,index:w})=>ln.default.createElement("tr",{key:n(S,w),className:"aa-comparison-row",...o?o(S,w):{}},g&&ln.default.createElement("td",{className:"aa-comparison-id",style:{padding:v.row,textAlign:"left",verticalAlign:"middle",fontSize:v.name,fontWeight:600,color:"var(--color-text-primary)"}},r.render?r.render(S,w):Fh(S,g)),e.map(_=>{let A=y[_.key][w],C=Fh(S,_),O=C==null||_.kind!=="text"&&!Number.isFinite(Number(C)),D=_.format?_.format(C,S):O?"\u2014":String(C),H=_.sub?_.sub(S):null;return ln.default.createElement("td",{key:_.key,className:_.kind==="text"?"aa-comparison-text":void 0,"data-label":_.unit?`${_.label} \xB7 ${_.unit}`:_.label,"data-testid":_.testId?_.testId(S):void 0,"data-rank":_.cell?void 0:A,title:_.cellTitle?_.cellTitle(S):void 0,style:{padding:v.row,textAlign:_.align||"center",verticalAlign:"middle"}},_.cell?_.cell(S,A):ln.default.createElement(ln.default.Fragment,null,ln.default.createElement(jo,{rank:O?"none":A,size:v.pill},D),H!=null&&ln.default.createElement("span",{className:"aa-pill-sub",style:{display:"block",marginTop:4,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},H)))})))))):d?ln.default.createElement("div",{style:{padding:16,fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},d):null}var Wh=[.85,.5],jQ=e=>e==null?"var(--color-text-muted)":e>=Wh[0]?"var(--color-success-text)":e>=Wh[1]?"var(--color-warning-text)":"var(--color-error)";function sb({label:e,provider:t,winner:r,size:n=13}){let{short:o,provider:a}=Kn(e,t||"");return ci.default.createElement("span",{style:{display:"inline-grid",gap:2,minWidth:0}},ci.default.createElement("span",{style:{display:"inline-flex",alignItems:"baseline",gap:6,whiteSpace:"nowrap"}},ci.default.createElement("span",{style:{fontFamily:U,fontSize:n,fontWeight:600,color:"var(--color-text-primary)"},title:e},o),r&&ci.default.createElement("span",{style:{fontFamily:U,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick")),a&&ci.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},a))}function lb({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(m=>m.cost!=null),s=e.some(m=>m.judgeCost!=null||m.judgeCalls>0),l=e.some(m=>m.avgTokens!=null),u=e.some(m=>m.avgDurationMs!=null),c=e.some(m=>m.p50DurationMs!=null),d=e.some(m=>m.typicalFault),p=e.some(m=>m.cost!=null&&m.estimated||m.judgeCost!=null&&n),f=[{key:"passRate",label:"Passed",unit:"Pass rate",better:"higher",band:"threshold",thresholds:Wh,format:(m,g)=>Dn(g.passed,g.total)},{key:"avgScore",label:"Score",unit:"Mean",better:"higher",format:m=>oa(m)},u&&{key:"avgDurationMs",label:"Latency",unit:"Mean",better:"lower",format:m=>m==null?"\u2014":Bn(m)},c&&{key:"p95DurationMs",label:"P50 / P95",unit:"Latency",title:"Median and 95th percentile latency, nearest rank",better:"lower",band:"none",format:(m,g)=>g.p50DurationMs==null?"\u2014":`${Bn(g.p50DurationMs)} / ${Bn(g.p95DurationMs)}`,testId:()=>"model-comparison-percentiles"},l&&{key:"avgTokens",label:"Tokens",unit:`Per ${t}`,title:`Average input + output tokens per ${t}`,better:"lower",format:m=>m==null?"\u2014":sn(Math.round(m)),cellTitle:m=>m.avgInputTokens==null?void 0:`${Math.round(m.avgInputTokens)} in \xB7 ${Math.round(m.avgOutputTokens||0)} out per ${t}`},i&&{key:"cost",label:"Cost",unit:"Cohort",title:`Cohort spend, and per ${t}`,better:"lower",format:(m,g)=>kr(m,{estimated:g.estimated}),testId:()=>"model-comparison-cost",cellTitle:m=>m.cost!=null&&m.estimated?Fm():void 0,sub:m=>m.costPerInteraction==null?null:`${kr(m.costPerInteraction,{estimated:m.estimated})}/${t}`},s&&{key:"judgeCost",label:"Judge",unit:"Spend",title:"What the judge spent scoring this model's answers",better:"lower",band:"none",format:(m,g)=>m==null&&!g.judgeCalls?"\u2014":kr(m,{estimated:n}),testId:()=>"model-comparison-judge",sub:m=>m.judgeCalls>0?St(m.judgeCalls,"call"):null},d&&{key:"typicalFault",label:"Typical fault",kind:"text",sortable:!1,align:"left",width:"30%",value:m=>m.typicalFault?.name||null,cell:m=>ci.default.createElement("span",{style:{fontSize:13,color:m.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},$J(m))}].filter(Boolean);return ci.default.createElement(je,{padding:0,style:{overflow:"hidden"},testId:a},ci.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 14px",flexWrap:"wrap"}},ci.default.createElement($e,null,o),ci.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),p&&ci.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},gl)),ci.default.createElement(Sf,{identity:{key:"label",label:"Model",unit:"Cohort",render:m=>ci.default.createElement(sb,{label:m.label,provider:m.provider,winner:m.winner})},columns:f,rows:e,rowKey:m=>m.label,rowProps:m=>({"data-testid":"model-comparison-row","data-model":m.label})}))}var o3={met:{tone:"success",text:"met"},missed:{tone:"error",text:"not met"},ungated:{tone:"muted",text:"reported only"}},Uh={padding:"8px 14px",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)",textAlign:"left"},ub={...Uh,fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-muted)",borderTop:"none"};function a3({run:e,testId:t="run-gates"}){let r=Y0(e);if(!r||!r.rows.length)return null;let n=r.rows.filter(o=>o.gated&&!o.met).length;return Vn.default.createElement(je,{padding:0,style:{overflow:"hidden"},testId:t},Vn.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 14px",flexWrap:"wrap"}},Vn.default.createElement($e,null,"Pass rate by group"),Vn.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:r.met?"var(--color-text-muted)":"var(--color-error-text)"},"data-testid":"run-gates-verdict"},r.met?"every gate met":n?`${n} ${n===1?"gate":"gates"} not met`:"no gate reached")),Vn.default.createElement("div",{style:{overflowX:"auto"}},Vn.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Vn.default.createElement("thead",null,Vn.default.createElement("tr",null,Vn.default.createElement("th",{scope:"col",style:ub},"Group"),Vn.default.createElement("th",{scope:"col",style:ub},"Model"),Vn.default.createElement("th",{scope:"col",style:{...ub,textAlign:"right"}},"Passed"),Vn.default.createElement("th",{scope:"col",style:{...ub,textAlign:"right"}},"Required"),Vn.default.createElement("th",{scope:"col",style:ub},"Gate"))),Vn.default.createElement("tbody",null,r.rows.map(o=>{let a=o.gated?o.met?o3.met:o3.missed:o3.ungated;return Vn.default.createElement("tr",{key:`${o.group??""}\0${o.label}`,"data-testid":"run-gate-row","data-gate":a.text,title:G2(o)},Vn.default.createElement("td",{style:{...Uh,fontWeight:o.group==null?600:400}},o.name),Vn.default.createElement("td",{style:Uh},Vn.default.createElement(sb,{label:o.label,size:12})),Vn.default.createElement("td",{style:{...Uh,fontFamily:U,textAlign:"right",whiteSpace:"nowrap"}},Dn(o.passed,o.total)),Vn.default.createElement("td",{style:{...Uh,fontFamily:U,textAlign:"right",whiteSpace:"nowrap"}},o.gated?`${Math.round(o.minRate*100)}%`:"\u2014"),Vn.default.createElement("td",{style:Uh},Vn.default.createElement(ve,{tone:a.tone,size:10},a.text)))})))))}var Lo=X(J());function _f({evaluation:e,run:t=null,keys:r=null,spend:n=null,spendTotal:o=!1,reportPath:a=null,onDelete:i,deleting:s=!1,deleteLabel:l="Delete evaluation"}){let u=(r||(e.criteria||[]).map(m=>m.key)).map(m=>V0(e,m)),c={fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},d={fontFamily:U,fontSize:11,color:"var(--color-text-cell)"},p=(m,g,b)=>Lo.default.createElement("span",{"data-testid":g,title:b,style:{...c,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},m),f=bQ(n,{total:o});return Lo.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},Lo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},Lo.default.createElement("span",{style:c},"judge"),Lo.default.createElement("span",{style:{...d,fontWeight:600}},Dh(e,t)),Lo.default.createElement("span",{style:{...c,marginLeft:8}},"criteria"),u.length===0&&Lo.default.createElement("span",{style:c},e.judge_kind==="judge_defined"?"defined by the judge on the first run":e.scenario_suite?"each scenario's own expectations":"\u2014"),u.map((m,g)=>Lo.default.createElement(Lo.default.Fragment,{key:m.key||g},g>0&&Lo.default.createElement("span",{style:c},"\xB7"),Lo.default.createElement("span",{style:d,title:Ih(m)||void 0},V2(m)),Pl(m)==="telemetry"&&p("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),Pl(m)==="judge"&&p("judge",void 0,"Scored by the judge model; needs provider credentials"))),Lo.default.createElement("span",{style:{...c,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},Nw(.7))),Lo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},Lo.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&Lo.default.createElement("span",{style:{...c,minWidth:0,textWrap:"pretty"},title:"What this run spent: the agent's replays or sampled interactions, and the judge's own calls"},f),f&&n?.totalEstimated&&Lo.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},gl),a&&Lo.default.createElement(Jr,{href:rt(a),onClick:()=>st(a),title:"The run rendered as a report page"},"run report"),i&&Lo.default.createElement("button",{type:"button",onClick:m=>{m.stopPropagation(),i()},disabled:s,title:"Delete this evaluation and its runs",style:{marginLeft:"auto",background:"transparent",border:"none",padding:0,cursor:s?"not-allowed":"pointer",fontFamily:U,fontSize:11,color:"var(--color-error)",opacity:s?.5:1}},s?"Deleting\u2026":l)))}var yCe=["tools","contains","not_contains"];function vCe(e){let t=e.expectations||{},r=[];return yCe.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 LQ(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(vCe(n))}),t.join(` +`)}var ne=X(J());var Fr=X(J());var xCe=e=>e>=.85?"success":e>=.7?"warning":"error";function Hh({label:e,children:t,title:r,nowrap:n=!0}){return Fr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",Fr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function cb({label:e,short:t,provider:r,winner:n=!1,passed:o,total:a,avgScore:i,criteria:s,latencyMs:l,p50Ms:u=null,p95Ms:c=null,inputTokens:d,outputTokens:p,cost:f,perInteraction:m,estimated:g=!1,judgeCost:b=null,judgeCalls:h=0,judgeEstimated:y=!1,unit:x="interaction",badges:v=[],note:k,testId:S="model-scorecard"}){let w=o!=null&&a>0,_=w?o/a:null,A=w?du(_):i!=null?xCe(i):"muted",C=Wn[A].strong,O=b!=null||h>0;return Fr.default.createElement(je,{padding:"14px 16px",testId:S,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},Fr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Fr.default.createElement("span",{style:{fontFamily:U,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&Fr.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},r),n&&Fr.default.createElement(ve,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),Fr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},Fr.default.createElement("span",{style:{fontFamily:U,fontSize:26,fontWeight:700,lineHeight:1,color:C},"data-testid":"model-scorecard-headline"},w?Dn(o,a):i!=null?oa(i):"\u2014"),Fr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},w?`${x==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),Fr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Fr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:C,width:`${Math.round((_??i??0)*100)}%`}})),Fr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"}},Fr.default.createElement(Hh,{label:"score"},oa(i)),s&&Fr.default.createElement(Hh,{label:"criteria"},Dn(s.cleared,s.scored)),l!=null&&Fr.default.createElement(Hh,{label:"latency"},Bn(l)),u!=null&&Fr.default.createElement(Hh,{label:"p50 / p95"},`${Bn(u)} / ${Bn(c)}`),(d!=null||p!=null)&&Fr.default.createElement("span",{style:{whiteSpace:"nowrap"}},Fr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",Fr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},z0(d))," \xB7 ",Fr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",Fr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},z0(p))),f!=null&&Fr.default.createElement(Hh,{label:"cost",title:`What the agent spent under this model${m!=null?` \u2014 ${Xu(m,g)} per ${x}`:""}${g?` \xB7 ${Fm()}`:""}`},kr(f,{estimated:g}),m!=null&&Fr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Xu(m,g)} / ${x}`)),O&&Fr.default.createElement(Hh,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},kr(b,{estimated:y}),Fr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${St(h,"call")}`))),(v.length>0||k)&&Fr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v.map(D=>Fr.default.createElement(ve,{key:D.text,tone:D.tone,testId:D.testId},D.text)),k&&Fr.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:k.color||"var(--color-text-muted)"}},k.text)))}var zo=X(J());var bCe=[0,25,50,75,100],wCe={display:"grid",gridTemplateColumns:"minmax(64px, 200px) minmax(96px, 1fr) auto",alignItems:"center",gap:"6px 12px",padding:"10px 12px",border:"1px solid var(--color-border-light)",borderRadius:10},zQ={display:"contents"},i3={gridColumn:"1 / -1"},SCe={fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"};function kCe({passRate:e,interval:t}){return zo.default.createElement("span",{"aria-hidden":"true",style:{position:"relative",display:"block",height:14}},zo.default.createElement("span",{style:{position:"absolute",left:0,right:0,top:6,height:2,background:"var(--color-muted)"}}),t&&zo.default.createElement("span",{"data-testid":"comparison-interval-range",style:{position:"absolute",top:3,height:8,left:`${t[0]}%`,width:`${Math.max(0,Math.round((t[1]-t[0])*10)/10)}%`,boxSizing:"border-box",border:"1px solid var(--color-info)",borderRadius:999,background:"var(--color-info-soft)"}}),e!=null&&zo.default.createElement("span",{style:{position:"absolute",top:2,left:`${e}%`,width:10,height:10,marginLeft:-5,borderRadius:"50%",background:"var(--color-info)"}}))}function s3({plot:e,testId:t="comparison-intervals"}){if(!e)return null;let r=`${e.confidence}% CI`;return zo.default.createElement("div",{style:wCe,"data-testid":t},zo.default.createElement($e,{size:10,color:"var(--color-text-muted)",style:i3},`Pass rate \xB7 ${r}`),e.rows.map(n=>{let{short:o}=Kn(n.label,"");return zo.default.createElement("div",{key:n.label,style:zQ,"data-testid":"comparison-interval-row","data-model":n.label},zo.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:n.label},o),zo.default.createElement(kCe,{passRate:n.passRate,interval:n.interval}),zo.default.createElement("span",{style:SCe},zo.default.createElement("strong",{style:{color:"var(--color-text-primary)"}},n.passRate==null?"\u2014":`${n.passRate}%`),` ${n.interval?`${n.interval[0]} to ${n.interval[1]}`:"no interval"} \xB7 ${St(n.scenarios,"scenario")}`))}),zo.default.createElement("div",{style:zQ,"aria-hidden":"true"},zo.default.createElement("span",null),zo.default.createElement("span",{style:{position:"relative",display:"block",height:14}},bCe.map(n=>zo.default.createElement("span",{key:n,style:{position:"absolute",left:`${n}%`,transform:"translateX(-50%)",fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},`${n}%`))),zo.default.createElement("span",null)),e.conclusion&&zo.default.createElement("div",{style:{...i3,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",textWrap:"pretty"},"data-testid":"comparison-conclusion"},e.conclusion),e.resamples!=null&&zo.default.createElement("span",{style:{...i3,fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},`${r} from ${Number(e.resamples).toLocaleString("en-US")} resamples of whole scenarios`))}var Wr=X(J());var BQ={evaluation:"pinned on this evaluation",provider_key:"the provider key's default model",config:"the host's config/active_agent.yml",provider_default:"the provider's own default"},_Ce={openrouter:"openrouter/auto"},FQ=(e,t)=>{let r=t?.scores?._judge;if(!r||typeof r!="object")return null;let n=BQ[r.model_source]?r.model_source:"provider_default",o=Object.entries(r.answered||{}).filter(([,i])=>Number(i)>0).sort(([i,s],[l,u])=>u-s||i.localeCompare(l)),a=r.model||null;return{agent:r.agent||"EvaluationJudgeAgent",provider:r.provider||null,requested:a,source:n,sourceText:BQ[n],providerDefault:_Ce[r.provider]||null,answered:o,auto:!a,pinned:e?.judge_model||null,suggestion:e?.judge_model||a||(o.length===1?o[0][0]:"")}},WQ=e=>{if(!e)return"";let t=e.requested?`${e.requested} (${e.sourceText})`:`${e.providerDefault||"no model"} (${e.sourceText})`,r=e.answered.map(([n,o])=>`${n} \xD7${o}`).join(", ");return`${e.agent} on ${e.provider||"no provider"} \xB7 asked for ${t}${r?` \xB7 answered by ${r}`:""}`};var UQ="/settings?tab=api-keys",aA=(e=11)=>({fontFamily:U,fontSize:e,color:"var(--color-text-secondary)"});function l3({evaluation:e,run:t,label:r,onChanged:n,testId:o="judge-chip"}){let a=FQ(e,t),[i,s]=(0,Wr.useState)(!1),[l,u]=(0,Wr.useState)(a?.suggestion||""),[c,d]=(0,Wr.useState)(!1),[p,f]=(0,Wr.useState)(null);if((0,Wr.useEffect)(()=>{u(a?.suggestion||"")},[a?.suggestion]),!r)return null;if(!a)return Wr.default.createElement("span",{style:aA()},`judged by ${r}`);let m=async b=>{d(!0),f(null);try{let h=await fetch(`/api/evaluations/${e.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{judge_model:b}})}),y=await h.json().catch(()=>({}));if(!h.ok){f((y.errors||[y.error]).filter(Boolean).join(", ")||`Saving the judge failed (HTTP ${h.status})`);return}await n?.()}finally{d(!1)}},g=(b,h)=>Wr.default.createElement(Wr.default.Fragment,null,Wr.default.createElement($e,{size:10},b),Wr.default.createElement("span",{style:{...aA(12),color:"var(--color-text-cell)",overflowWrap:"anywhere"}},h));return Wr.default.createElement("span",{style:{display:"inline-flex",flexDirection:"column",gap:8,minWidth:0},"data-testid":o},Wr.default.createElement("button",{type:"button",onClick:()=>s(!i),title:WQ(a),"aria-expanded":i,style:{...aA(),display:"inline-flex",alignItems:"center",gap:6,background:"none",border:"none",padding:0,cursor:"pointer"}},Wr.default.createElement("span",null,"judged by ",Wr.default.createElement("span",{style:{color:"var(--color-info)"}},r)),a.auto&&Wr.default.createElement(ve,{tone:"warning",size:10,title:"No judge model is pinned: the provider chose"},"auto"),a.answered.length>1&&Wr.default.createElement(ve,{tone:"error",size:10,title:"More than one model judged this run"},`${a.answered.length} models`)),i&&Wr.default.createElement(je,{padding:"12px 14px",testId:`${o}-panel`,style:{display:"flex",flexDirection:"column",gap:10,maxWidth:560}},Wr.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"max-content 1fr",columnGap:14,rowGap:6,alignItems:"baseline"}},g("Judge agent",a.agent),g("Provider",a.provider||"\u2014"),g("Asked for",a.requested?`${a.requested} \xB7 ${a.sourceText}`:`${a.providerDefault||"no model"} \xB7 ${a.sourceText}`),g("Answered by",a.answered.length?a.answered.map(([b,h])=>`${b} \xD7${h}`).join(", "):"no calls recorded")),a.auto&&Wr.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},a.answered.length>1?"Different models judged this run. Pin one so runs are judged alike.":"No judge model is pinned, so a later run can be judged by a different model. Pin one to compare runs."),e?.id!=null&&Wr.default.createElement("form",{onSubmit:b=>{b.preventDefault(),l.trim()&&m(l.trim())},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Wr.default.createElement("input",{value:l,onChange:b=>u(b.target.value),placeholder:a.provider==="openrouter"?"e.g. anthropic/claude-sonnet-4.5":"judge model id","aria-label":"Judge model","data-testid":`${o}-model`,style:{flex:"1 1 220px",padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:U,boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}}),Wr.default.createElement(ie,{size:"sm",variant:"primary",type:"submit",disabled:c||!l.trim()||l.trim()===a.pinned,testId:`${o}-pin`},"Pin judge model"),a.pinned&&Wr.default.createElement(ie,{size:"sm",onClick:()=>m(""),disabled:c,testId:`${o}-unpin`},"Unpin")),Wr.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"baseline"}},Wr.default.createElement("span",{style:aA()},a.pinned?`next run: ${a.pinned}`:`next run: ${a.providerDefault||`${a.provider} default`}`),Wr.default.createElement(Jr,{href:rt(UQ),onClick:()=>st(UQ)},`${a.provider||"provider"} key in Settings`)),p&&Wr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},p)))}var _d=X(J());function db({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,_d.useState)("idle"),a=(0,_d.useRef)(null);(0,_d.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await wd(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 _d.default.createElement(ie,{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 iA=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var Nt=X(J());var Ie=X(J());var sA="Update from the sandbox",CCe=new Set(["queued","publishing"]);function pb(e){return!!(e&&CCe.has(e.status))}function qQ(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:`${HQ(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:HQ(e),tone:ACe(e)}}}function HQ(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function ACe(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function KQ(e){return!e?.head_commit||!e.number||pb(e)?!1:!["closed","merged"].includes(e.state)}function VQ(e){return!!(e?.head_commit&&!e.number&&!pb(e))}function GQ(e,t,r){let n=new Set(qh(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function YQ(e){return(e||[]).some(t=>t.refusal==="not_read")}function XQ(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function lA(e){return e==="changed_since_preview"}function uA(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function cA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function qh(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function ZQ(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=qh(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 JQ(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var ECe=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function NCe(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||ECe.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function QQ({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return qh(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?NCe(n):"Add a title."}function dA({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=qh(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 RQ(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 u3(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 eR(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var tR={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 rR(e){return/[.!?]$/.test(e)?e:`${e}.`}function nR(){let{darkMode:e}=ut();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 fb({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Ie.useState)(null),[a,i]=(0,Ie.useState)(null),[s,l]=(0,Ie.useState)(null),[u,c]=(0,Ie.useState)(0),[d,p]=(0,Ie.useState)(!1),f=(0,Ie.useCallback)(async()=>{let h=await fetch(r),y=await h.json().catch(()=>({}));if(!h.ok)throw new Error(ot(y,`Could not load the pull request (HTTP ${h.status}).`));return y},[r]);(0,Ie.useEffect)(()=>{let h=!1,y=null,x=async()=>{try{let v=await f();if(h)return;o(v),i(null),pb(v.pull_request)&&(y=setTimeout(x,2e3))}catch(v){h||i(v.message)}};return x(),()=>{h=!0,clearTimeout(y)}},[f,u]);let m=async h=>{p(!0),i(null);try{let y=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),x=await y.json().catch(()=>({}));if(!y.ok)throw new Error(ot(x,`Could not open the pull request (HTTP ${y.status}).`));c(v=>v+1)}catch(y){i(y.message)}finally{p(!1)}},g=n?.pull_request||null,b=n?.publishing||null;return b&&!b.supported?null:Ie.default.createElement(Ie.default.Fragment,null,Ie.default.createElement(OCe,{pullRequest:g,publishing:b,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Ie.default.createElement(PCe,{codeSession:t,sandbox:e,pullRequest:g,publishing:b,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function OCe({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=nR(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:g}=qQ(e),b=pb(e),h=!!t?.available,y=KQ(e),x=VQ(e);return Ie.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Ie.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ie.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Ie.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Ie.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&y&&Ie.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:b,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Ie.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:b,className:p},"Open draft PR"))),t&&!h&&Ie.default.createElement("p",{className:`text-xs ${s}`},rR(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Ie.default.createElement("div",{className:"space-y-1"},Ie.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Ie.default.createElement(Qs,{tone:g},m),e.url?Ie.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Ie.default.createElement("span",{className:`truncate ${l}`},e.title)),Ie.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"&&Ie.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Ie.default.createElement("p",{className:f},e.error_message),x&&Ie.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Ie.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Ie.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&&Ie.default.createElement("div",{className:f},r))}function PCe({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,Ie.useState)(null),[d,p]=(0,Ie.useState)(!0),[f,m]=(0,Ie.useState)(null),[g,b]=(0,Ie.useState)(new Set),[h,y]=(0,Ie.useState)(l?t?.title||"":eR(e)),[x,v]=(0,Ie.useState)(""),[k,S]=(0,Ie.useState)(l&&t?.branch||""),[w,_]=(0,Ie.useState)(sA),[A,C]=(0,Ie.useState)(""),[O,D]=(0,Ie.useState)(null),[H,j]=(0,Ie.useState)(!1),[Z,N]=(0,Ie.useState)(0);return(0,Ie.useEffect)(()=>{let M=!1;return p(!0),(async()=>{try{let I=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(O?{allowlist:O}:{})}),$=await I.json().catch(()=>({}));if(M)return;if(!I.ok)throw new Error(ot($,`Could not read the sandbox's changes (HTTP ${I.status}).`));c($.preview),b(uA($.preview.files)),S(T=>T||$.preview.suggested_branch||"")}catch(I){M||m(I.message)}finally{M||p(!1)}})(),()=>{M=!0}},[s,Z,O]),Ie.default.createElement(c3,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:g,onToggle:M=>b(I=>cA(I,M)),fields:{title:h,body:x,branch:k,message:w,allowlist:A},onField:(M,I)=>({title:y,body:v,branch:S,message:_,allowlist:C})[M](I),allowlistApplied:!!O,onApplyAllowlist:()=>{m(null),D(XQ(A))},mode:n,submitting:H,onSubmit:async()=>{j(!0),m(null);try{let M=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...dA({files:u?.files,selection:g,title:h,body:x,branch:k,message:w,allowlist:O,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),I=await M.json().catch(()=>({}));if(!M.ok)throw lA(I.code)&&N($=>$+1),new Error(ot(I,`Could not publish (HTTP ${M.status}).`));a(I.pull_request)}catch(M){m(M.message)}finally{j(!1)}},onCancel:o})}function c3({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:g,patchHref:b}){let h=nR(),{muted:y,strong:x,border:v,link:k,secondaryButton:S,primaryButton:w,input:_,errorBox:A,darkMode:C}=h,O=t?.files||[],D=(0,Ie.useMemo)(()=>qh(O,i),[O,i]),H=!!o?.available,j=p==="patch"||!H,Z=p==="update"&&!j,N=t&&!j?QQ({files:O,selection:i,title:l.title,branch:l.branch,message:l.message,update:Z}):null,P=Z?GQ(a,O,i):[],M="Open draft PR";j?M="Download patch":Z&&(M="Update draft PR");let I=`Publishes the files you tick from ${e.repository}@${e.repository_ref} through the GitHub API, as one commit on a new branch.`;return j?I=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:Z&&(I="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."),Ie.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":M},Ie.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${v} ${C?"bg-gray-900":"bg-white"}`},Ie.default.createElement("div",{className:"flex items-start justify-between gap-3"},Ie.default.createElement("div",null,Ie.default.createElement("p",{className:`text-lg font-medium ${x}`},M),Ie.default.createElement("p",{className:`text-xs ${y}`},I," Nothing under .github/ is ever published.")),Ie.default.createElement("button",{type:"button",onClick:g,className:S},"Close")),r&&Ie.default.createElement("p",{className:`text-sm ${y}`},"Reading the sandbox's changes\u2026"),n&&Ie.default.createElement("div",{className:A},n),t&&Ie.default.createElement(Ie.default.Fragment,null,d&&(YQ(O)||c)&&Ie.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Ie.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Only read paths matching"),Ie.default.createElement("input",{type:"text",value:l.allowlist,onChange:$=>u("allowlist",$.target.value),disabled:f||r,placeholder:"app/**, lib/*.rb",className:`${_} font-mono`})),Ie.default.createElement("button",{type:"button",onClick:d,disabled:f||r,className:`${S} disabled:opacity-50`},"Read again")),Ie.default.createElement("div",{className:"space-y-1"},Ie.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${y}`},"Files \xB7 ",ZQ(O,i)),O.length===0&&Ie.default.createElement("p",{className:`text-sm ${y}`},"The sandbox has no changes."),Ie.default.createElement("ul",{className:"space-y-1"},O.map($=>Ie.default.createElement("li",{key:$.path,className:"flex items-center gap-2 text-sm"},Ie.default.createElement("input",{type:"checkbox","aria-label":`Publish ${$.path}`,checked:!$.refusal&&i.has($.path),disabled:!!$.refusal||f,onChange:()=>s($.path)}),Ie.default.createElement("span",{className:`w-4 text-xs font-mono ${y}`},JQ($)),Ie.default.createElement("span",{className:`font-mono truncate ${$.refusal?y:x}`},$.path),$.size!=null&&$.status!=="deleted"&&Ie.default.createElement("span",{className:`shrink-0 text-xs ${y}`},u3($.size)),$.refusal&&Ie.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},$.refusal_message))))),P.length>0&&Ie.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: ",Ie.default.createElement("span",{className:"font-mono"},P.join(", "))),D.length>0&&Ie.default.createElement("div",{className:"space-y-2"},Ie.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${y}`},"What will be published"),D.map($=>Ie.default.createElement(MCe,{key:$.path,file:$,classes:h}))),!j&&Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Branch"),Ie.default.createElement("input",{type:"text",value:l.branch,onChange:$=>u("branch",$.target.value),disabled:Z||f,maxLength:200,className:`${_} font-mono`})),Z?Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Commit message"),Ie.default.createElement("input",{type:"text",value:l.message,onChange:$=>u("message",$.target.value),disabled:f,className:_})):Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Title"),Ie.default.createElement("input",{type:"text",value:l.title,onChange:$=>u("title",$.target.value),disabled:f,maxLength:256,className:_})),!j&&!Z&&Ie.default.createElement("label",{className:`block text-xs space-y-1 ${y}`},Ie.default.createElement("span",null,"Description"),Ie.default.createElement("textarea",{value:l.body,onChange:$=>u("body",$.target.value),disabled:f,rows:4,className:_})),Ie.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Ie.default.createElement("p",{className:`text-xs ${y}`},!H&&rR(o?.refusal||"Publishing is not available for this sandbox"),H&&N),Ie.default.createElement("div",{className:"flex items-center gap-3"},D.length>0&&Ie.default.createElement("a",{href:rt((b||(($,T)=>RQ(e.session_id,$,T)))(D.map($=>$.path),Z?l.message:l.title)),className:`text-sm ${k}`},"Download patch"),Ie.default.createElement("button",{type:"button",onClick:g,className:S},"Cancel"),!j&&Ie.default.createElement("button",{type:"button",onClick:m,disabled:!!N||f,className:w},f?"Publishing\u2026":M))))))}function MCe({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Ie.useMemo)(()=>O0(e.diff),[e.diff]);return Ie.default.createElement("div",{className:`rounded border ${n}`},Ie.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Ie.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",u3(e.size),": published as it is in the sandbox."):Ie.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=tR[s.kind]||tR.context;return Ie.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var ICe=(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")),pA=new Map,DCe=e=>(pA.has(e)||pA.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(()=>pA.delete(e))),pA.get(e));function d3({item:e,evaluation:t,run:r}){let[n,o]=(0,Nt.useState)(!1),[a,i]=(0,Nt.useState)(null),[s,l]=(0,Nt.useState)(""),[u,c]=(0,Nt.useState)(null),[d,p]=(0,Nt.useState)(!1),[f,m]=(0,Nt.useState)(null),g=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,b=(0,Nt.useCallback)(async()=>{let _=await DCe(g);return i(_),l(A=>A||_.sandboxes?.find(C=>C.status==="ready")?.session_id||""),_},[g]);if((0,Nt.useEffect)(()=>{if(!t?.id||!r?.id)return;let _=!1,A,C=async()=>{try{await b()}catch(O){_||c(O.message)}!_&&n&&(A=setTimeout(C,2500))};return C(),()=>{_=!0,clearTimeout(A)}},[b,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(_=>ICe(_.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let y=h.find(_=>_.id===f)||h[0],x=a?.sandboxes?.find(_=>_.session_id===(y?.sandbox_session_id||s)),v=y&&(["queued","running"].includes(y.status)||y.status==="succeeded"&&y.diff&&!y.verification?.error&&!["complete","failed"].includes(y.verification?.status)),k=a?.auth_mode!=="sandbox_login"||x?.claude_login?.credential_mode,S=async(_=null)=>{if(!(!x||d||v)){p(!0),c(null);try{let A=await fetch(`/api/sandboxes/${encodeURIComponent(x.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:_?.id})}),C=await A.json();if(!A.ok)throw new Error(C.error||"Could not start this fix.");m(C.code_session.id),await b()}catch(A){c(A.message)}finally{p(!1)}}},w=y?y.verification?.status==="complete"?3:y.status==="succeeded"?2:1:0;return Nt.default.createElement(Nt.default.Fragment,null,Nt.default.createElement(ie,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},y?"Review implementation":"Implement with Claude Code"),y?.verification?.status==="complete"&&Nt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},y.verification.counts.fixed||0," fixed \xB7 ",y.verification.counts.regressed||0," regressed"),n&&Nt.default.createElement(hD,{title:"Implement evaluation fix",onClose:()=>o(!1)},Nt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((_,A)=>Nt.default.createElement(ve,{key:_,tone:A===w?"accent":A_.status==="ready")&&Nt.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",Nt.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...gD,marginTop:8},value:s,onChange:_=>l(_.target.value)},Nt.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(_=>_.status==="ready").map(_=>Nt.default.createElement("option",{key:_.session_id,value:_.session_id},_.repository," \xB7 ",_.repository_ref," \xB7 ",_.session_id.slice(0,8))))),a&&!x&&Nt.default.createElement("div",{style:j0},Nt.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),Nt.default.createElement("a",{href:rt(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),Nt.default.createElement(ie,{size:"sm",onClick:()=>b().catch(_=>c(_.message)),style:{marginLeft:12}},"Check again")),x&&a?.auth_mode==="sandbox_login"&&!v&&Nt.default.createElement(cf,{sandbox:x,onConnected:b,onChange:b}),x&&Nt.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",Nt.default.createElement("strong",null,x.claude_login?.credential_mode==="sandbox_login"?"your Claude subscription":a?.auth_mode==="local_login"?"this machine\u2019s Claude login":k?"the account\u2019s Anthropic API key":"your sandbox login after you connect"),". Verification uses the agent\u2019s own provider credentials."),!y&&Nt.default.createElement(ie,{variant:"primary",disabled:!x||!k||d||!!a?.refusal||!a?.supported,onClick:()=>S()},d?"Starting\u2026":"Implement this fix"),y&&Nt.default.createElement(Nt.default.Fragment,null,Nt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},Nt.default.createElement(ve,{tone:y.status==="failed"?"error":"info"},"Claude Code \xB7 ",y.status),Nt.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",y.id)),["queued","running"].includes(y.status)&&Nt.default.createElement(ie,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(x.session_id)}/code_sessions/${y.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await b()}catch(_){c(_.message)}}},"Cancel session"),y.result&&Nt.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},y.result),y.error_message&&Nt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},y.error_message),y.diff&&Nt.default.createElement("details",null,Nt.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),Nt.default.createElement("pre",{style:{...j0,maxHeight:240,overflow:"auto",fontSize:11}},y.diff)),Nt.default.createElement(L0,{session:y,evaluationId:t.id,sandboxId:x?.session_id,onRetry:()=>S(y)}),y.verification?.status==="complete"&&x&&Nt.default.createElement(fb,{sandbox:x,codeSession:y})),u&&Nt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var Cf=X(J());function p3({items:e=[],size:t="compact",gap:r=14,style:n,testId:o}){let a=e.filter(i=>i&&i.value!=null&&i.value!=="");return a.length?Cf.default.createElement("div",{"data-testid":o,style:{display:"flex",flexWrap:"wrap",gap:r,alignItems:"flex-end",...n}},a.map(i=>Cf.default.createElement("span",{key:i.key||i.label,"data-testid":i.testId,title:i.title,style:{display:"inline-grid",gap:4,justifyItems:"start"}},Cf.default.createElement("span",{style:{display:"inline-grid",gap:1}},Cf.default.createElement("span",{style:{fontFamily:U,fontSize:10,fontWeight:700,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-primary)",whiteSpace:"nowrap"}},i.label),i.unit&&Cf.default.createElement("span",{style:{fontFamily:U,fontSize:9,fontWeight:500,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},i.unit)),Cf.default.createElement(jo,{rank:i.rank||"none",size:t},i.value)))):null}var f3=6,$Ce=600,Kh=12,Vh=e=>String(e||"").replace(/_/g," "),As=e=>String(e??"").trim(),mb=e=>[...new Set(e.filter(Boolean))],m3=e=>As(e).split(` `).map(t=>`> ${t}`).join(` -`),l3=(e,t=ECe)=>{let r=Cs(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},Rs=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,iA=e=>String(e||"").replace(/\/+$/,""),ZQ=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${Hh(e.fault)}`:`Fix: ${Hh(e.label||e.kind)}`:"Fix",JQ=(e,t)=>{let r=lb(e?.models||[]);return r.length?r:lb(q0(t).map(n=>typeof n=="string"?n:n?.label))},NCe=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${Hh(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),TCe=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: ${l3(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),OCe=(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"?Cs(l.diagnosis?.judge?.instruction_change)===Cs(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},PCe=(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},MCe=(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=[`### ${Rs(e)}`];o&&s.push("","Prompt:",s3(o));let l=NCe(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${Cs(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 ${Hh(p)}`:""}`),s.push(`- Tools called: ${TCe(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(Cs).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let g=f.judge.suggested_tool;s.push(`- Suggested tool: ${Rs(g.name)}${g.description?` (${Cs(g.description)})`:""}`)}u.error_message&&s.push(`- Error: ${l3(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:",s3(l3(u.output))):s.push("- Answer: not retained for this run")}),s},QQ=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=iA(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 ${Rs(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},RQ=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=iA(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 ${Rs("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 ${Rs("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. ${Rs("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},eR=({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=iA(s),d=lb(e.scenario_keys||[]),p=JQ(e,r),f=OCe(e,o,{labelFor:l}),m=new Map;f.forEach(v=>m.set(v.scenario_key,[...m.get(v.scenario_key)||[],v]));let g=[`# ${ZQ(e)}`,"",...QQ({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];g.push("## What went wrong","");let b=e.count||d.length,h=`${Hh(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${p.length&&(e.models||[]).length?` under ${p.join(", ")}`:""}`;if(g.push(`${b>1?`${b} results: `:""}${h}.`),e.recommendation&&g.push("",Cs(e.recommendation)),e.quote&&g.push("","The judge proposes adding this to the instructions:","",s3(e.quote)),e.note&&g.push("",Cs(e.note)),lb((e.tools||[]).map(v=>typeof v=="string"?v:v?.name)).length&&(g.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(v=>{let k=typeof v=="string"?v:v?.name;if(!k)return;let S=typeof v=="object"?v.note:null,w=typeof v=="object"?v.server:null,_=w?` \xB7 served by ${w.name||w.key}${w.status?` (${w.status})`:""}`:"";g.push(`- ${Rs(k)}${S&&S!==w?.name?` \u2014 ${Cs(S)}`:""}${_}`)}),e.server)){let v=e.server.status==="enabled";g.push("",`MCP server **${e.server.name||e.server.key}** (${Rs(e.server.key)}) is ${v?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}g.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,i3).forEach(v=>{g.push("",...MCe(v,m.get(v)||[],PCe(v,a,o)))}),d.length>i3&&g.push("",`Also failing: ${d.slice(i3).map(Rs).join(", ")}.`),g.push("","## Where to look","");let x=t?.agent?.id;return g.push(`- The agent's instructions and action prompts${c&&x!=null?`: ${c}/agents/${x}/edit`:""}.`),g.push(`- Its tools and MCP servers${c?`: ${c}/tools`:""}.`),e.action?.label&&g.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"?g.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."):g.push("",...RQ({evaluation:t,run:r,runNumber:n,keys:d,models:p,dashboardUrl:s})),`${g.join(` +`),g3=(e,t=$Ce)=>{let r=As(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},el=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,fA=e=>String(e||"").replace(/\/+$/,""),oR=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${Vh(e.fault)}`:`Fix: ${Vh(e.label||e.kind)}`:"Fix",aR=(e,t)=>{let r=mb(e?.models||[]);return r.length?r:mb(G0(t).map(n=>typeof n=="string"?n:n?.label))},jCe=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${Vh(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),LCe=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: ${g3(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),zCe=(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"?As(l.diagnosis?.judge?.instruction_change)===As(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},BCe=(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},FCe=(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=[`### ${el(e)}`];o&&s.push("","Prompt:",m3(o));let l=jCe(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${As(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 ${Vh(p)}`:""}`),s.push(`- Tools called: ${LCe(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(As).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let g=f.judge.suggested_tool;s.push(`- Suggested tool: ${el(g.name)}${g.description?` (${As(g.description)})`:""}`)}u.error_message&&s.push(`- Error: ${g3(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:",m3(g3(u.output))):s.push("- Answer: not retained for this run")}),s},iR=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=fA(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 ${el(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},sR=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=fA(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 ${el("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 ${el("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. ${el("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},lR=({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=fA(s),d=mb(e.scenario_keys||[]),p=aR(e,r),f=zCe(e,o,{labelFor:l}),m=new Map;f.forEach(v=>m.set(v.scenario_key,[...m.get(v.scenario_key)||[],v]));let g=[`# ${oR(e)}`,"",...iR({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];g.push("## What went wrong","");let b=e.count||d.length,h=`${Vh(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${p.length&&(e.models||[]).length?` under ${p.join(", ")}`:""}`;if(g.push(`${b>1?`${b} results: `:""}${h}.`),e.recommendation&&g.push("",As(e.recommendation)),e.quote&&g.push("","The judge proposes adding this to the instructions:","",m3(e.quote)),e.note&&g.push("",As(e.note)),mb((e.tools||[]).map(v=>typeof v=="string"?v:v?.name)).length&&(g.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(v=>{let k=typeof v=="string"?v:v?.name;if(!k)return;let S=typeof v=="object"?v.note:null,w=typeof v=="object"?v.server:null,_=w?` \xB7 served by ${w.name||w.key}${w.status?` (${w.status})`:""}`:"";g.push(`- ${el(k)}${S&&S!==w?.name?` \u2014 ${As(S)}`:""}${_}`)}),e.server)){let v=e.server.status==="enabled";g.push("",`MCP server **${e.server.name||e.server.key}** (${el(e.server.key)}) is ${v?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}g.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,f3).forEach(v=>{g.push("",...FCe(v,m.get(v)||[],BCe(v,a,o)))}),d.length>f3&&g.push("",`Also failing: ${d.slice(f3).map(el).join(", ")}.`),g.push("","## Where to look","");let x=t?.agent?.id;return g.push(`- The agent's instructions and action prompts${c&&x!=null?`: ${c}/agents/${x}/edit`:""}.`),g.push(`- Its tools and MCP servers${c?`: ${c}/tools`:""}.`),e.action?.label&&g.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"?g.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."):g.push("",...sR({evaluation:t,run:r,runNumber:n,keys:d,models:p,dashboardUrl:s})),`${g.join(` `)} -`},tR=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${ZQ(e)}`,"",...QQ({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||Hh(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",Cs(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,Uh).map(Rs).join(", ")}${e.chips.length>Uh?` and ${e.chips.length-Uh} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,Uh).forEach(d=>i.push(`- ${Cs(d)}`)),e.details.length>Uh&&i.push(`- and ${e.details.length-Uh} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${Rs(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=iA(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=lb(e.kind==="missing"?e.chips||[]:JQ({},r));return i.push("",...RQ({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` +`},uR=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${oR(e)}`,"",...iR({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||Vh(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",As(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,Kh).map(el).join(", ")}${e.chips.length>Kh?` and ${e.chips.length-Kh} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,Kh).forEach(d=>i.push(`- ${As(d)}`)),e.details.length>Kh&&i.push(`- and ${e.details.length-Kh} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${el(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=fA(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=mb(e.kind==="missing"?e.chips||[]:aR({},r));return i.push("",...sR({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` `)} -`};var _d=e=>[...new Set(e)],p3=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},qh=e=>String(e||"").replace(/_/g," "),Ml=e=>e?.status==="passed",Dl=e=>!!e&&e.status!=="pending",Cd=e=>!!e&&["pending","running"].includes(e.status);function Cf(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=MJ(e);if(o.length)return o;let a=_d(t.map(s=>Il(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function Il(e,t){let n=(mf(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 m3(e,t){let r=e?.scores?._models?.[t],n=(mf(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return qn(t,r?.provider||n?.provider||"")}function Kh(e,t=[],r=[]){let n=Z0(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 sR(e,t,r=[],n=0){let o=e?.scores?._models?.[t];if(o&&o.scenarios!=null){let i=o.passed||0,s=o.scenarios||0;return{passed:i,failed:Math.max(s-i,0),total:s}}let a=r.filter(i=>Il(e,i)===t);return{passed:a.filter(Ml).length,failed:a.filter(i=>Dl(i)&&!Ml(i)).length,total:n||a.length}}function lR(e,t=[],r=null,n=[]){let o=Cf(e,t,r),a=Kh(e,o,n);return o.map(i=>{let s={label:i,short:qn(i).short};return e?.scores?._models?.[i]?.scenarios!=null||Cd(e)||t.some(u=>Il(e,u)===i)?{...s,...sR(e,i,t,a)}:{...s,passed:null,failed:null,total:null}})}function uR(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=Kh(e,r,n)*Math.max(r.length,1);return{passed:t.filter(Ml).length,total:o}}function cR(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 ICe=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},u3=e=>e?.diagnosis?.judge?.instruction_change;function dR(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(u3);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>DCe(a,t)),o=new Set;return t.forEach(a=>{let i=u3(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>u3(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:_d(s.map(l=>l.scenario_key)),models:_d(s.map(l=>Il(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 DCe(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=_d(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=_d(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:ICe(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=_d(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||_d(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 ub=e=>e?.cost_source==="estimated",dA=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},sA=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[kr(e.cost,{estimated:ub(e)})];return t!=null&&r.push(`judge ${kr(t,{estimated:dA(e)})}`),r.join(" \xB7 ")},pR=e=>{if(!ub(e))return;let t=e.cost_rate||null;return Bm({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},jCe=(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(Dl),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=>ub(u)||dA(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 fR({entry:e,compact:t=!1,testId:r,tokens:n=null}){let o={display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4,minWidth:0,textAlign:"right"},a=n&&(n.input!=null||n.output!=null)?ne.default.createElement($o,{size:"mini",testId:r?`${r}-tokens`:void 0,title:"input\u2192output tokens across the models"},$2(n.input,n.output)):null;if(!e)return ne.default.createElement("span",{style:o,"data-testid":r},ne.default.createElement("span",{style:En(12)},"\u2014"),a);if(t){let i=e.total??(e.cost!=null||e.judgeCost!=null?(e.cost||0)+(e.judgeCost||0):null),s=[];return e.cost!=null&&s.push(`agent ${kr(e.cost,{estimated:e.estimated})}`),e.judgeCost!=null&&s.push(`judge ${kr(e.judgeCost,{estimated:e.estimated})}`),ne.default.createElement("span",{style:o,"data-testid":r},ne.default.createElement($o,{size:"mini",title:s.join(" \xB7 ")||void 0},kr(i,{estimated:e.estimated})),a)}return ne.default.createElement("span",{style:o,"data-testid":r},ne.default.createElement($o,{size:"mini"},kr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&ne.default.createElement("span",{style:{...En(10.5),whiteSpace:"nowrap"}},`judge ${kr(e.judgeCost,{estimated:e.estimated})}`),a)}var En=(e,t="var(--color-text-muted)",r={})=>({fontFamily:U,fontSize:e,color:t,...r});function mR({calls:e,empty:t,style:r}){return ne.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:U,fontSize:11,...r}},e.map(n=>ne.default.createElement("span",{key:n.name,style:{color:n.color,fontWeight:n.weight}},n.label)),e.length===0&&ne.default.createElement("span",{style:{color:"var(--color-text-muted)"}},t))}function gR({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a,evaluation:i=null,onJudgeChanged:s,markdownUrl:l=null}){let u=e?.scores?._models||{},c=zi(e)?.judge?.estimated??!0;return ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"suite-models-panel"},ne.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},ne.default.createElement(je,null,"Models"),ne.default.createElement(t3,{evaluation:i,run:e,label:o,onChanged:s,testId:"suite-judge"}),ne.default.createElement(_s,{url:B2(l,{part:"verdict"}),testId:"copy-verdict-markdown",title:"Copy the verdict and the model comparison as Markdown",style:{marginLeft:"auto"}})),t.length===0&&ne.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&ne.default.createElement(ob,{rows:q2(e,{results:r,scenarioCount:n,columns:t,labelFor:d=>Il(e,d)}),unit:"scenario",judgedBy:o,judgeEstimated:c}),t.length>1&&ne.default.createElement(e3,{plot:AJ(e)}),t.length>0&&ne.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(260px, 100%), 1fr))",gap:12}},t.map(d=>{let{short:p,provider:f}=m3(e,d),m=u[d],{passed:g,total:b}=sR(e,d,r,n),h=Object.entries(m?.faults||{}),y=Oh(m,m?.scenarios),x=m&&h.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!m&&Cd(e)?{text:"scoring\u2026"}:null;return ne.default.createElement(nb,{key:d,label:d,short:p,provider:f,winner:a?.winner===d,passed:g,total:b,avgScore:m?.avg_score,latencyMs:m?.avg_duration_ms,p50Ms:m?.p50_duration_ms??null,p95Ms:m?.p95_duration_ms??null,inputTokens:m?.input_tokens,outputTokens:m?.output_tokens,cost:m?.cost,perInteraction:pf(m?.cost,y),estimated:W2(m,m?.scenarios),judgeCost:m?.judge_cost,judgeCalls:m?.judge_calls||0,judgeEstimated:c,unit:"scenario",badges:h.map(([v,k])=>({tone:"error",text:`${qh(v)} \xD7${k}`})),note:x})})),a?.rationale&&ne.default.createElement(Le,{padding:"12px 16px",testId:"suite-verdict",style:{display:"flex",flexDirection:"column",gap:6}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ne.default.createElement(je,null,"Verdict"),a.judge&&ne.default.createElement("span",{style:En(11)},`judged by ${a.judge}`)),ne.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},ne.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:U,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var LCe=(e,t)=>e==="tools"?["minmax(220px, 1.6fr)","130px",...Array(t).fill("minmax(160px, 1fr)"),"110px"].join(" "):["minmax(200px, 1fr)",...Array(t).fill("minmax(96px, max-content)"),"max-content","max-content"].join(" "),f3={tools:10,steps:14},zCe="max-lg:sticky max-lg:left-0 max-lg:z-[1] max-lg:self-stretch max-lg:-ml-3 max-lg:pl-3",rR={steps:"max-lg:-mr-2 max-lg:pr-2",tools:"max-lg:-mr-2.5 max-lg:pr-2.5"},c3={row:"max-lg:bg-[var(--color-surface)]",open:"max-lg:bg-[var(--color-surface)] max-lg:[background-image:linear-gradient(var(--color-muted),var(--color-muted))]",group:"max-lg:bg-[var(--color-background)]"},lA=(e,t)=>{let r=t==="header"?"max-lg:-my-2 max-lg:py-2 max-lg:content-end":t==="group"?"max-lg:-my-[7px] max-lg:py-[7px]":e==="steps"?"max-lg:-my-1.5 max-lg:py-1.5 max-lg:items-center!":"max-lg:-my-2.5 max-lg:py-2.5",n=t==="group"?c3.group:t==="row"?c3.row:c3.open;return`${zCe} ${rR[e]||rR.steps} ${r} ${n}`},d3=[],nR={},oR=new Set,uA=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),BCe=600,aR=e=>typeof e=="number"?`${e}px`:e,FCe=e=>["INPUT","TEXTAREA","SELECT"].includes(e?.tagName),WCe={improved:{text:"\u25B2",color:"var(--color-success)",verb:"now passes"},regressed:{text:"\u25BC",color:"var(--color-error)",verb:"now fails"},errored:{text:"\u25CB",color:"var(--color-warning-text)",verb:"errored this time"}};function iR({change:e,comparedNumber:t}){let r=e&&WCe[e.kind];if(!r)return null;let n=e.was,o=`${n.status==="passed"?"passed":n.status} ${na(n.score)}`,a=`${r.verb} \xB7 ${o} in run #${t??"?"}`;return ne.default.createElement("span",{"data-testid":"scenario-cell-change","data-change":e.kind,title:a,"aria-label":a,style:{fontWeight:700,color:r.color,flexShrink:0}},r.text)}function UCe({result:e,expects:t,pending:r,compact:n=!1,change:o=null,comparedNumber:a=null}){if(!e)return ne.default.createElement("span",{style:{...En(12),fontWeight:600}},r?"\u2026":"\u2014");if(!Dl(e))return ne.default.createElement("span",{style:{...En(12),fontWeight:600}},"\u2026");let i=Ml(e),s=cR(e.tool_calls,t);if(n){let l=e.fault?qh(e.fault):e.status==="errored"?"errored":null,u=sA(e),c=s.map(p=>p.label).join(" ")||"no tools called",d=[l,hR(G2(e)),u].filter(Boolean).join(" \xB7 ");return ne.default.createElement("span",{title:`${c}${d?` -${d}`:""}`,style:{display:"inline-flex",alignItems:"center",gap:6,minWidth:0}},ne.default.createElement($o,{rank:i?"good":"poor",size:"mini",testId:"scenario-cell-score"},`${i?"[+]":"[!]"} ${na(e.score)}`),ne.default.createElement(iR,{change:o,comparedNumber:a}))}return ne.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",fontFamily:U,fontSize:12}},ne.default.createElement($o,{rank:i?"good":"poor",size:"compact",testId:"scenario-cell-score"},`${i?"[+]":"[!]"} ${na(e.score)}`),ne.default.createElement(iR,{change:o,comparedNumber:a}),e.fault&&ne.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},qh(e.fault))),ne.default.createElement(mR,{calls:s,empty:"no tools called"}),ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:4}},ne.default.createElement(yR,{metrics:G2(e),testId:"scenario-cell-metrics",style:{display:"contents"}}),sA(e)&&ne.default.createElement("span",{"data-testid":"scenario-cell-cost",title:pR(e)||sA(e),style:{display:"grid",gap:2,justifyItems:"start"}},e.cost!=null&&ne.default.createElement($o,{size:"mini"},kr(e.cost,{estimated:ub(e)})),e.judge_usage?.cost!=null&&ne.default.createElement("span",{style:{...En(10.5),whiteSpace:"nowrap"}},`judge ${kr(e.judge_usage.cost,{estimated:dA(e)})}`))))}var hR=e=>{if(!e)return null;let t=[];e.durationMs!=null&&t.push(J0(e.durationMs));let r=$2(e.inputTokens,e.outputTokens);return r!=="\u2014"&&t.push(r),t.length?t.join(" \xB7 "):null};function yR({metrics:e,testId:t,title:r="time to answer \xB7 input\u2192output tokens",align:n="flex-start",style:o}){if(!e)return null;let a=e.durationMs==null?null:J0(e.durationMs),i=$2(e.inputTokens,e.outputTokens);return a==null&&i==="\u2014"?null:ne.default.createElement("div",{"data-testid":t,title:r,style:{display:"flex",flexWrap:"wrap",gap:4,justifyContent:n,minWidth:0,...o}},a!=null&&ne.default.createElement($o,{size:"mini"},a),i!=="\u2014"&&ne.default.createElement($o,{size:"mini"},i))}function HCe({metrics:e,testId:t="scenario-cell-metrics",title:r="time to answer \xB7 input\u2192output tokens",style:n}){let o=hR(e);return o?ne.default.createElement("span",{"data-testid":t,title:r,style:{...En(10.5),whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,...n}},o):null}var cA={passed:{text:"[+]",color:"var(--color-success)",title:"passed on every model"},failed:{text:"[!]",color:"var(--color-error)",title:"failed on at least one model"},running:{text:"[~]",color:"var(--color-warning-text)",title:"running"},queued:{text:"[ ]",color:"var(--color-text-muted)",title:"queued"},missing:{text:"[?]",color:"var(--color-text-muted)",title:"the run ended without its results"},skipped:{text:"[-]",color:"var(--color-text-muted)",title:"not in this run"},none:{text:"[ ]",color:"var(--color-text-muted)",title:"not run yet"},loading:{text:"[ ]",color:"var(--color-text-muted)",title:"loading results\u2026"}},qCe=(e,t)=>e===t||!!e&&!!t&&e.cost===t.cost&&e.judgeCost===t.judgeCost&&e.total===t.total&&e.estimated===t.estimated,KCe=(e,t)=>e===t||!!e&&!!t&&e.input===t.input&&e.output===t.output,VCe=(e,t)=>{if(e===t)return!0;if(!e||!t)return!1;let r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(n=>e[n].kind===t[n]?.kind&&e[n].was===t[n]?.was)},GCe=(e,t)=>e.scenario===t.scenario&&e.results===t.results&&e.columns===t.columns&&e.step===t.step&&e.current===t.current&&e.open===t.open&&e.detail===t.detail&&e.showKey===t.showKey&&e.grid===t.grid&&e.inSelection===t.inSelection&&e.running===t.running&&e.loading===t.loading&&e.tabIndex===t.tabIndex&&qCe(e.costEntry,t.costEntry)&&KCe(e.tokens,t.tokens)&&e.timeMs===t.timeMs&&VCe(e.changes,t.changes)&&e.comparedNumber===t.comparedNumber,YCe=ne.default.memo(function({scenario:t,results:r,columns:n,step:o,current:a,open:i,detail:s,showKey:l,grid:u,inSelection:c,running:d,loading:p,costEntry:f,tokens:m=null,timeMs:g,tabIndex:b,changes:h=null,comparedNumber:y=null,onToggle:x,onFocus:v}){let k=t.key,S=s==="steps",w=p3(t,"tools"),_=t.enabled===!1,A=cA[o]||cA.none,C=`${k}${_?" \xB7 disabled":""}`,O=ne.default.createElement("span",{"data-testid":"scenario-step",title:A.title,style:{...En(11,A.color),fontWeight:700,flexShrink:0}},A.text),D={fontFamily:U,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"};return ne.default.createElement("div",{"data-testid":"scenario-row","data-scenario-key":k,"data-step":o,"data-nav":k,"data-current":a?"true":void 0,role:"button","aria-expanded":i,tabIndex:b,title:S&&!l?`${C} \xB7 ${t.prompt||""}`:void 0,onClick:()=>x(k),onKeyDown:H=>{(H.key==="Enter"||H.key===" ")&&(H.preventDefault(),x(k))},onFocus:H=>v(k,H),className:i?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:u,gap:f3[s]??f3.steps,padding:S?"8px 12px":"10px 12px",alignItems:S?"center":void 0,borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:i?"var(--color-muted)":void 0,boxShadow:a?"inset 2px 0 0 var(--color-warning)":void 0,opacity:_?.5:1}},S?ne.default.createElement("div",{className:lA(s,i?"open":"row"),style:{display:"flex",alignItems:"flex-start",gap:8,minWidth:0}},ne.default.createElement("span",{style:{paddingTop:l?1:2}},O),ne.default.createElement("span",{style:{display:"grid",gap:2,minWidth:0,flex:1}},l&&ne.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:700,color:t.orphan?"var(--color-text-muted)":"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},C),ne.default.createElement("span",{title:l?t.prompt:void 0,style:{minWidth:0,fontSize:l?12:13,color:l?"var(--color-text-secondary)":t.orphan?"var(--color-text-muted)":"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},t.prompt))):ne.default.createElement(ne.default.Fragment,null,ne.default.createElement("div",{className:lA(s,i?"open":"row"),style:{minWidth:0}},ne.default.createElement("div",{style:{...En(12,"var(--color-text-primary)",{fontWeight:700}),marginBottom:2,display:"flex",gap:6}},O,ne.default.createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},C)),ne.default.createElement("div",{style:{fontSize:13,lineHeight:"18px",color:"var(--color-text-primary)",textWrap:"pretty"}},t.prompt)),ne.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignContent:"flex-start",minWidth:0}},w.map(H=>ne.default.createElement("span",{key:H,style:D},H)),w.length===0&&p3(t,"contains").map(H=>ne.default.createElement("span",{key:`contains-${H}`,style:D,title:"the answer must contain this"},`contains: ${H}`)))),n.map(H=>ne.default.createElement(UCe,{key:H,result:r?.[H],expects:w,pending:(d||p)&&c,compact:S,change:h?.[H]??null,comparedNumber:y})),ne.default.createElement(fR,{entry:f,compact:S,testId:"scenario-row-cost",tokens:S?null:m}),S&&ne.default.createElement("span",{style:{display:"flex",justifyContent:"flex-end"}},ne.default.createElement($o,{size:"mini",testId:"scenario-row-time",title:"the slowest answer across the models"},J0(g))))},GCe);function vR({rows:e=d3,columns:t=d3,run:r=null,resultsByKey:n=nR,changesByKey:o=nR,comparedNumber:a=null,runKeys:i=oR,running:s=!1,loading:l=!1,stepsByKey:u=null,currentKey:c=null,bars:d=d3,detail:p="steps",showKey:f=!0,collapsedGroups:m=oR,onToggleGroup:g,openKey:b=null,onToggleRow:h,following:y=!1,onStopFollowing:x,emptyLabel:v,maxHeight:k=null,renderDetail:S,boxRef:w=null,testId:_="scenario-matrix"}){let A=t.length===0?"tools":p,C=A==="steps",O=LCe(A,t.length),D=f3[A],H=C?FJ(t.length):WJ(t.length),$=Se=>i.has(Se.key)||!!n[Se.key],Z=Se=>r?l?$(Se)?"loading":"skipped":U2(n[Se.key],t,{inRun:$(Se),running:s}):"none",N=Se=>u?.[Se.key]??Z(Se),P=new Map(e.map(Se=>[Se.key,jCe(r,Se.key,n[Se.key])])),M=[...P.values()].some(Se=>Se?.estimated),I=new Map(e.map(Se=>[Se.key,YJ(n[Se.key],t)])),j=ID(n,t),T=e.some(Se=>Se.group),q=[];e.forEach(Se=>{let tt=Se.group||"",dt=q.find(zt=>zt.name===tt);dt||(dt={name:tt,rows:[]},q.push(dt)),dt.rows.push(Se)});let G=Se=>(Se||T)&&m.has(Se),[L,Y]=(0,ne.useState)(null),K=[];q.forEach(Se=>{(Se.name||T)&&K.push(`group:${Se.name}`),G(Se.name)||Se.rows.forEach(tt=>K.push(tt.key))});let pe=new Set(K),De=[L,b,c].find(Se=>Se!=null&&pe.has(Se))??K[0]??null,se=(0,ne.useRef)(null),xe=(0,ne.useRef)(null),ue=hf(se),R=ue>0&&ue{ae.current=we,E.current={onToggleRow:h,onStopFollowing:x}});let W=(0,ne.useCallback)(Se=>{se.current=Se,w&&(w.current=Se)},[w]),F=(0,ne.useCallback)(Se=>E.current.onToggleRow?.(Se),[]),B=(0,ne.useCallback)((Se,tt)=>{Y(Se);let dt=se.current;dt&&!dt.contains(tt.relatedTarget)&&E.current.onStopFollowing?.()},[]),Ee=()=>x?.();Qs(()=>{let Se=xe.current;if(!Se)return;let tt=()=>{let zt=Se.offsetHeight;zt&&Ce(Gr=>Gr===zt?Gr:zt)};if(tt(),typeof ResizeObserver>"u")return;let dt=new ResizeObserver(tt);return dt.observe(Se),()=>dt.disconnect()},[]);let Ve=(0,ne.useCallback)(Se=>{if(!Se){ee(0);return}let tt=()=>ee(Se.offsetHeight);tt();let dt=typeof ResizeObserver>"u"?null:new ResizeObserver(tt);dt?.observe(Se);let zt=se.current,Gr=Se.previousElementSibling;if(zt&&Gr?.hasAttribute("data-scenario-key")){let ho=Gr.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]');zt.scrollTo({top:oQ({rowTop:Gr.offsetTop,headerHeight:ae.current,groupRowHeight:ho?.offsetHeight??0}),behavior:"smooth"})}return()=>{dt?.disconnect(),ee(0)}},[]),fe=(0,ne.useRef)(null),ze=(0,ne.useRef)(null),Vt=(0,ne.useRef)(0);Qs(()=>{let Se=se.current;if(!Se||!y||!c){fe.current=c;return}let tt=Se.querySelector(`[data-scenario-key="${uA(c)}"]`);if(!tt)return;let dt=nQ({rowTop:tt.offsetTop,headerHeight:we,boxHeight:Se.clientHeight});if(Math.abs(dt-Se.scrollTop)>4){let zt=Date.now(){let tt=se.current;if(!tt||!Se)return;let dt=Se.hasAttribute("data-scenario-key")?Se.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]'):null,zt=ae.current+(dt?.offsetHeight??0);Se.offsetTop-zttt.scrollTop+tt.clientHeight&&(tt.scrollTop=Se.offsetTop+Se.offsetHeight-tt.clientHeight)};return ne.default.createElement("div",{ref:W,"data-testid":_,"data-detail":A,onWheel:Ee,onTouchMove:Ee,onKeyDown:Se=>{if(FCe(Se.target))return;let tt=se.current;if(tt){if(Se.key==="ArrowDown"||Se.key==="ArrowUp"){let dt=[...tt.querySelectorAll("[data-nav]")];if(!dt.length)return;let zt=dt.indexOf(Se.target);zt<0&&(zt=dt.findIndex(ho=>ho.hasAttribute("data-scenario-key")&&ho.parentElement?.contains(Se.target)));let Gr=zt<0?dt[0]:dt[Math.min(Math.max(zt+(Se.key==="ArrowDown"?1:-1),0),dt.length-1)];Se.preventDefault(),x?.(),Gr&&Gr!==Se.target&&(Gr.focus({preventScroll:!0}),Ot(Gr));return}Se.key==="Escape"&&b&&(h?.(b),tt.querySelector(`[data-scenario-key="${uA(b)}"]`)?.focus({preventScroll:!0}))}},style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"auto",position:"relative",scrollbarGutter:"stable",maxHeight:k?z?`calc(${aR(k)} + ${z}px)`:aR(k):void 0}},ne.default.createElement("div",{style:{minWidth:H}},ne.default.createElement("div",{ref:xe,style:{display:"grid",gridTemplateColumns:O,gap:D,padding:"8px 12px",alignItems:"end",position:"sticky",top:0,zIndex:2,backgroundColor:"var(--color-surface)",backgroundImage:"linear-gradient(var(--color-muted), var(--color-muted))"}},ne.default.createElement("span",{className:lA(C?"steps":"tools","header"),style:{minWidth:0}},ne.default.createElement(je,{size:10,color:"var(--color-text-muted)"},C?"Step":"Scenario")),!C&&ne.default.createElement(je,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(Se=>{let{short:tt,provider:dt}=m3(r,Se),zt=d.find(Gr=>Gr.label===Se);return ne.default.createElement("span",{key:Se,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:Se},ne.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},tt),ne.default.createElement("span",{style:En(10)},dt||" "),zt&&zt.passed!=null&&zt.total!=null&&ne.default.createElement(du,{passed:zt.passed,total:zt.total,height:4,valueWidth:48,style:{marginTop:3}}),ne.default.createElement(HCe,{metrics:j[Se],testId:"scenario-column-totals",title:"this model's answers' time added up, and its input\u2192output tokens, over the results in",style:{marginTop:2}}))}),ne.default.createElement("span",{style:{textAlign:"right",display:"grid",gap:1,justifyItems:"end"},title:"What the scenario cost across every model, and what judging it cost; under it, its input\u2192output tokens"},ne.default.createElement(je,{size:10,color:"var(--color-text-primary)",style:{fontWeight:700}},"Cost"),ne.default.createElement(je,{size:9,color:"var(--color-text-muted)"},"per scenario")),C&&ne.default.createElement("span",{style:{textAlign:"right",display:"grid",gap:1,justifyItems:"end"},title:"The slowest answer across the run's models; a group's add up"},ne.default.createElement(je,{size:10,color:"var(--color-text-primary)",style:{fontWeight:700}},"Time"),ne.default.createElement(je,{size:9,color:"var(--color-text-muted)"},"slowest"))),q.map(Se=>{let tt=Se.name,dt=G(tt),zt=`group:${tt}`,Gr=Se.rows.filter($),ho=cA[KJ(Se.rows.map(N))]||cA.none,Ui=ID(n,t,Se.rows.map(kt=>kt.key)),pi=t.map(kt=>{let ge=Ui[kt];if(!Gr.length)return{label:kt,text:"not in this run",color:"var(--color-text-muted)",weight:400,metrics:ge};if(l)return{label:kt,text:"loading\u2026",color:"var(--color-text-muted)",weight:400,metrics:ge};let nt=Gr.filter(oo=>Dl(n[oo.key]?.[kt]));if(s&&!nt.length)return{label:kt,text:"queued",color:"var(--color-text-muted)",weight:400,metrics:ge};let it=nt.filter(oo=>Ml(n[oo.key][kt])).length,Yt=Gr.length,Hr=Yt&&it===Yt?"var(--color-success-text)":it===0?"var(--color-error-text)":"var(--color-text-cell)",Bo=Yt&&it===Yt?"good":it===0?"poor":"mid";return{label:kt,text:`${Jn(it,Yt)} passed`,color:Hr,weight:600,metrics:ge,rank:Bo}}),Aa=$Ce(Se.rows.map(kt=>P.get(kt.key))),Bl=XJ(Se.rows.map(kt=>I.get(kt.key)));return ne.default.createElement("div",{key:tt||"__ungrouped","data-group":tt},(tt||T)&&ne.default.createElement("div",{"data-testid":"scenario-group-row","data-group":tt,"data-collapsed":dt?"true":"false","data-nav":zt,role:"button","aria-expanded":!dt,tabIndex:De===zt?0:-1,onClick:()=>g?.(tt),onKeyDown:kt=>{(kt.key==="Enter"||kt.key===" "||kt.key==="ArrowLeft"&&!dt||kt.key==="ArrowRight"&&dt)&&(kt.preventDefault(),g?.(tt))},onFocus:kt=>B(zt,kt),style:{display:"grid",gridTemplateColumns:O,gap:D,padding:"7px 12px",alignItems:"center",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",cursor:"pointer",position:"sticky",top:we,zIndex:1}},ne.default.createElement("div",{className:lA(C?"steps":"tools","group"),style:{display:"flex",alignItems:"center",gap:8,minWidth:0}},ne.default.createElement(Ia,{kind:"chevron",open:!dt}),ne.default.createElement("span",{"data-testid":"scenario-group-step",title:ho.title,style:{...En(11,ho.color),fontWeight:700,flexShrink:0}},ho.text),ne.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},tt||"ungrouped"),C&&ne.default.createElement("span",{style:{...En(11),whiteSpace:"nowrap"}},`\xB7 ${St(Se.rows.length,"scenario")}`)),!C&&ne.default.createElement("span",{style:En(11)},St(Se.rows.length,"scenario")),pi.map(kt=>ne.default.createElement("span",{key:kt.label,style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},kt.rank?ne.default.createElement($o,{rank:kt.rank,size:"mini",style:{alignSelf:"flex-start"}},kt.text):ne.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:kt.weight,color:kt.color,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},kt.text),!C&&ne.default.createElement(yR,{metrics:kt.metrics,testId:"scenario-group-metrics",title:"the group's answers' time added up, and their input\u2192output tokens, on this model"}))),ne.default.createElement(fR,{entry:Aa,compact:C,testId:"scenario-group-cost",tokens:C?null:Bl}),C&&ne.default.createElement("span",{style:{display:"flex",justifyContent:"flex-end"}},ne.default.createElement($o,{size:"mini",testId:"scenario-group-time",title:"the group's scenarios' times added up"},J0(ZJ(Se.rows,n,t))))),!dt&&Se.rows.map(kt=>{let ge=b===kt.key;return ne.default.createElement("div",{key:kt.key},ne.default.createElement(YCe,{scenario:kt,results:n[kt.key],columns:t,step:N(kt),current:kt.key===c,open:ge,detail:A,showKey:f,grid:O,inSelection:$(kt),running:s,loading:l,costEntry:P.get(kt.key)??null,tokens:I.get(kt.key)??null,timeMs:MD(n[kt.key],t),changes:o[kt.key]??null,comparedNumber:a,tabIndex:De===kt.key?0:-1,onToggle:F,onFocus:B}),ge&&ne.default.createElement("div",{ref:Ve,style:R},S?.(kt)))}))}),e.length===0&&ne.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)"}},v||"[+] nothing failed in this group"),M&&ne.default.createElement("div",{style:{...En(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},ml)))}function XCe(e){let t=[];e.duration_ms!=null&&t.push(zn(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${sn((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=sA(e);return r&&t.push(r),t.join(" \xB7 ")}function ZCe({label:e,run:t,result:r,expects:n,running:o,evaluationId:a=null,linked:i=!1}){let{short:s}=m3(t,e),l=ne.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:e},s),u=(k,S)=>ne.default.createElement("div",{"data-testid":"scenario-result-detail","data-result-id":r?.id??void 0,"data-linked":i?"true":void 0,style:{background:"var(--color-card)",border:`1px solid ${i?"var(--color-info)":"var(--color-border-light)"}`,borderRadius:10,overflow:"hidden",minWidth:0,boxShadow:i?"0 0 0 1px var(--color-info)":void 0}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},l,S),ne.default.createElement("div",{style:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:10}},k));if(!r||!Dl(r))return u(ne.default.createElement("span",{style:En(11)},o?"waiting for this replay\u2026":"not part of this run"),ne.default.createElement(be,{tone:"muted"},o?"pending":"no result"));let c=Ml(r),d=c?"success":"error",p=cR(r.tool_calls,n),f=r.diagnosis||{},m=f.judge||{},g=r.fault||(r.status==="errored"?"run_error":null),b=[f.summary,f.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",h=Object.entries(r.scores||{}),y=XCe(r),x=r.input_tokens!=null||r.output_tokens!=null?(r.input_tokens||0)+(r.output_tokens||0):null,v=[{key:"score",label:"Score",unit:c?"passed":"failed",value:r.score==null?null:na(r.score),rank:c?"good":"poor"},{key:"time",label:"Time",unit:"to answer",value:r.duration_ms==null?null:zn(r.duration_ms)},{key:"tokens",label:"Tokens",unit:x==null?null:`${sn(r.input_tokens||0)}\u2192${sn(r.output_tokens||0)}`,value:x==null?null:sn(x)},{key:"cost",label:"Cost",unit:r.judge_usage?.cost!=null?`judge ${kr(r.judge_usage.cost,{estimated:dA(r)})}`:"agent",value:r.cost==null?null:kr(r.cost,{estimated:ub(r)}),title:pR(r)}];return u(ne.default.createElement(ne.default.Fragment,null,ne.default.createElement(a3,{items:v,testId:"scenario-result-metrics"}),ne.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:U,fontSize:11}},ne.default.createElement(je,{size:10,color:"var(--color-text-muted)"},"tools"),ne.default.createElement(mR,{calls:p,empty:"none called",style:{display:"contents"}})),g&&ne.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"}},ne.default.createElement("span",{style:{fontFamily:U,fontWeight:700}},`[!] ${qh(g)}`),b?` \u2014 ${b}`:"",m.suggested_tool?.name&&ne.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11}},`suggested tool: ${m.suggested_tool.name}${m.suggested_tool.description?` \u2014 ${m.suggested_tool.description}`:""}`),m.instruction_change&&ne.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${m.instruction_change}\u201D`)),r.output?ne.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):ne.default.createElement("div",{style:En(11)},"answer not retained for this run"),h.length>0&&ne.default.createElement("div",{style:{...En(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},h.map(([k,S])=>ne.default.createElement("span",{key:k},qh(k)," ",ne.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},S==null?"skipped":na(S)))))),ne.default.createElement(ne.default.Fragment,null,ne.default.createElement(be,{tone:d,title:y||void 0},r.status),r.agent_run_id&&ne.default.createElement(xd,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:{marginLeft:"auto"}}),ne.default.createElement(Xu,{evaluationId:a,runId:t?.id,resultId:r.id,label:"copy link",testId:"scenario-result-copy-link",title:"Copy a link that opens this result, for a teammate in your organization",style:{padding:"0 4px",fontFamily:U,fontSize:11,...y||r.agent_run_id?{}:{marginLeft:"auto"}}})))}function xR({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0,markdownUrl:u=null,evaluationId:c=null,linkedResultId:d=null}){let p=p3(e,"tools"),f=n[e.key]||{},m=r.some(b=>f[b]),g=a||m;return ne.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"12px 12px 14px"},"data-testid":"scenario-drilldown"},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10,flexWrap:"wrap"}},ne.default.createElement("span",{style:En(11)},e.key),ne.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),ne.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},p.join(" or ")||"\u2014"),t&&m&&ne.default.createElement(_s,{url:B2(u,{part:"scenario",scenario:e.key}),testId:"copy-scenario-markdown",title:"Copy this scenario \u2014 the prompt, expectations and each model's result \u2014 as Markdown",style:{marginLeft:"auto"}}),l&&ne.default.createElement("span",{style:{marginLeft:t&&m&&u?0:"auto",display:"flex",alignItems:"center",gap:14}},ne.default.createElement("button",{type:"button",onClick:b=>{b.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:U,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),ne.default.createElement(Jr,{onClick:()=>i?.(e),title:"Run only this scenario under the selected models"},"re-run scenario"))),e.notes&&ne.default.createElement("div",{style:{fontSize:12,fontStyle:"italic",color:"var(--color-text-secondary)",marginBottom:10}},e.notes),e.catalogChanged&&ne.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?g?ne.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(300px, 100%), 1fr))",gap:12}},r.map(b=>ne.default.createElement(ZCe,{key:b,label:b,run:t,result:f[b],expects:p,running:o,evaluationId:c,linked:d!=null&&f[b]?.id===d}))):ne.default.createElement("div",{style:En(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):ne.default.createElement("div",{style:En(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function bR({items:e,columns:t=[],agentName:r,onNavigate:n,onOpenScenario:o,run:a=null,results:i=[],evaluation:s=null,runNumber:l=null,scenarios:u=[],onRerun:c=null,runnableFor:d=null,markdownUrl:p=null}){let f=w=>d?d(w):gf(w.scenario_keys||[],u),[m,g]=(0,ne.useState)("all"),b=t.length>1,h=b?m:"all",y=b?NJ(e,i,w=>Il(a,w)):e,x=AD(y,h),v=b?TJ(y,t):{},k=w=>eR({item:w,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:R2(),labelFor:_=>Il(a,_)}),S=w=>{let _=St((w.scenario_keys||[]).length,"scenario");if(w.kind==="instruction")return`${(w.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let A=_d(w.models||[]);if(t.length<=1||A.length===0)return _;let O=A.length>=t.length?t.length===2?"both models":"all models":A.map(D=>qn(D).short).join(", ");return`${_} \xB7 ${O}`};return ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},ne.default.createElement(_s,{url:B2(p,{part:"fix_items",model:h}),label:h==="all"?"Copy What to fix as Markdown":`Copy What to fix for ${qn(h).short} as Markdown`,testId:"copy-fixes-markdown",title:"Copy What to fix as Markdown, for the model the filter shows",style:{alignSelf:"flex-end"}}),b&&ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},ne.default.createElement("span",{style:En(11)},"for"),ne.default.createElement(In,{square:!0,mono:!0,selected:h==="all",onClick:()=>g("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(w=>ne.default.createElement(In,{key:w,square:!0,mono:!0,selected:h===w,onClick:()=>g(w),title:`Only what ${w} needs fixed`,testId:"fix-filter-model"},`${qn(w).short} ${v[w]??0}`))),x.length===0&&ne.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${qn(h).short}`),ne.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(320px, 100%), 1fr))",gap:12}},x.map((w,_)=>{let A=w.kind==="instruction",C=A?"info":"error",O=[],D=new Set;(w.tools||[]).forEach(P=>{let M=typeof P=="string"?P:P?.name;!M||D.has(M)||(D.add(M),O.push({name:M,note:typeof P=="object"&&(P.note||P.server?.name)||null}))});let H=w.server,$=H?.status==="enabled",Z=r||"the agent",N=c?f(w):null;return ne.default.createElement("div",{key:`${w.fault}-${_}`,"data-testid":"scenario-recommendation",style:{border:"1px solid var(--color-border)",borderRadius:10,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10,minWidth:0}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ne.default.createElement(Ia,{kind:A?"info":"fault"}),ne.default.createElement(be,{tone:C},`${qh(w.fault)}${w.count>1?` \xD7${w.count}`:""}`),o&&(w.scenario_keys||[]).length>0?ne.default.createElement("button",{type:"button",onClick:()=>o(w.scenario_keys),title:`Show ${(w.scenario_keys||[]).join(", ")} \u2014 the question, the answer and the tools it called`,style:{...En(11),background:"none",border:0,padding:0,cursor:"pointer",color:"var(--color-text-link, var(--color-text-primary))",textDecoration:"underline",textUnderlineOffset:2}},S(w)):ne.default.createElement("span",{style:En(11)},S(w))),w.recommendation&&ne.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},w.recommendation),w.quote&&ne.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",w.quote,"\u201D"),O.length>0&&ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},ne.default.createElement(je,{size:10,color:"var(--color-text-muted)"},w.tools_label||"tools"),ne.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},O.map(P=>ne.default.createElement("span",{key:P.name,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",fontFamily:U,fontSize:11,maxWidth:"100%"}},ne.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},P.name),P.note&&ne.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:P.note},P.note))))),H&&ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:12,color:"var(--color-text-cell)"}},ne.default.createElement("span",null,"served by"),ne.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},H.name||H.key),ne.default.createElement(be,{tone:$?"success":"warning",size:10,style:{padding:"1px 6px"}},$?`enabled for ${Z}`:`${H.status||"unknown"} \xB7 not enabled for ${Z}`)),w.note&&ne.default.createElement("div",{style:{fontSize:12,lineHeight:"18px",color:"var(--color-text-secondary)",textWrap:"pretty"}},w.note),ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",paddingTop:2,flexWrap:"wrap"}},w.action?.path&&ne.default.createElement(ie,{size:"sm",onClick:()=>n?.(w.action.path)},w.action.label),w.action?.hint&&ne.default.createElement("span",{style:{...En(11),whiteSpace:"nowrap"}},w.action.hint),N&&(N.keys.length?ne.default.createElement(Jr,{onClick:()=>c(w,N),title:"Replay these scenarios under the models in the picker",testId:"fix-item-rerun"},`re-run ${St(N.keys.length,"scenario")}`):ne.default.createElement("span",{style:{...En(11),whiteSpace:"nowrap"},title:`${N.dropped.join(", ")} \xB7 disabled or no longer in the suite`,"data-testid":"fix-item-rerun-none"},"re-run \xB7 none enabled")),ne.default.createElement(ab,{build:()=>k(w),style:{marginLeft:"auto"}}),ne.default.createElement(_s,{text:w.markdown,testId:"copy-fix-markdown",title:"Copy this fix as Markdown, for an issue or a pull request"}),ne.default.createElement(o3,{item:w,evaluation:s,run:a})))})))}var wR=e=>{let{results:t,fix_items:r,...n}=e;return n},JCe={keys:[],dropped:[]},QCe={byKey:{},improved:0,regressed:0,errored:0},g3={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:U,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},Af={border:"1px solid var(--color-border-light)",borderRadius:10},RCe=(e,t)=>e.size===t.size&&[...e].every(r=>t.has(r)),SR=()=>typeof localStorage<"u"?localStorage:null,kR=()=>typeof document<"u"&&document.visibilityState==="hidden";function h3({evaluation:e,modelProviders:t,onChanged:r,onDelete:n,deleting:o=!1,initialRunId:a=null,initialResultId:i=null,onRunSelected:s}){let l=e.id,u=e.agent?.name||"Agent",[c,d]=(0,ye.useState)(!1),[p,f]=(0,ye.useState)(null),[m,g]=(0,ye.useState)(e.scenarios||[]),[b,h]=(0,ye.useState)(e.scenario_groups||[]),[y,x]=(0,ye.useState)(e.latest_run?[e.latest_run]:[]),[v,k]=(0,ye.useState)(null),[S,w]=(0,ye.useState)(a??e.latest_run?.id??null),[_,A]=(0,ye.useState)({}),[C,O]=(0,ye.useState)({}),[D,H]=(0,ye.useState)(null),[$,Z]=(0,ye.useState)((e.compare_models||[]).join(", ")),N=(0,ye.useMemo)(()=>t===void 0?[]:t??kw,[t]),P=Mc(N),M=(0,ye.useMemo)(()=>Q0(P,{providers:N}),[P,N]),[I,j]=(0,ye.useState)(null),[T,q]=(0,ye.useState)(!1),[G,L]=(0,ye.useState)([]),[Y,K]=(0,ye.useState)(""),[pe,De]=(0,ye.useState)(!1),[se,xe]=(0,ye.useState)(""),[ue,R]=(0,ye.useState)(null),[we,Ce]=(0,ye.useState)(null),[z,ee]=(0,ye.useState)(!1),[ae,E]=(0,ye.useState)(!1),[W,F]=(0,ye.useState)(null),[B,Ee]=(0,ye.useState)(!0),[Ve,fe]=(0,ye.useState)(()=>{let ce=e.scenarios||[],et=(a==null||a===e.latest_run?.id)&&e.latest_run||null;return PD(ce,new Set(Z0(et,ce)))}),[ze,Vt]=(0,ye.useState)(()=>new Map),[Ot,Gt]=(0,ye.useState)(()=>UJ(SR())),[Se,tt]=(0,ye.useState)("suite"),dt=(0,ye.useRef)(null),zt=(0,ye.useRef)(null),Gr=(0,ye.useRef)(null),ho=(0,ye.useRef)(new Map),Ui=(0,ye.useRef)(new Map),pi=(0,ye.useRef)({}),Aa=(0,ye.useRef)(_),Bl=(0,ye.useRef)(S),kt=(0,ye.useRef)(null),ge=hf(dt),nt=ge-jJ,it=ge===0||nt>=$J,Yt=ge===0?0:nt-(it?ND+TD:0),Hr=Ot??"steps",Bo=Yt===0||Yt>=BJ,oo=(0,ye.useCallback)(async()=>{let ce=await fetch(`/api/evaluations/${l}/scenarios`);if(!ce.ok)return;let et=await ce.json();g(et.scenarios||[]),h(et.groups||[])},[l]),ca=(0,ye.useCallback)(async()=>{try{let ce=await fetch(`/api/evaluations/${l}`);if(!ce.ok)return f(`Could not load this suite (HTTP ${ce.status})`),null;let xt=(await ce.json()).evaluation||{};return g(xt.scenarios||[]),h(xt.scenario_groups||[]),x(xt.runs||[]),k(Number.isFinite(xt.run_count)?xt.run_count:null),f(null),xt}catch(ce){return f(`Could not load this suite: ${ce.message}`),null}finally{d(!0)}},[l]);Qs(()=>{Aa.current=_,Bl.current=S});let ao=(0,ye.useCallback)(ce=>{if(!ce)return Promise.resolve(null);if(ho.current.has(ce))return ho.current.get(ce);let et=(async()=>{try{let xt=await fetch(`/api/evaluations/${l}/runs/${ce}`);if(!xt.ok)return O(al=>({...al,[ce]:`HTTP ${xt.status}`})),null;let lr=(await xt.json()).run;if(!lr)return O(al=>({...al,[ce]:"no run in the response"})),null;O(al=>{if(!(ce in al))return al;let{[ce]:Os,...Dd}=al;return Dd});let Fo=Aa.current[lr.id],{results:Hf,changed:rc}=tQ(Fo?.results,lr.results);if(!(!!Fo&&!rc&&Fo.status===lr.status&&Fo.completed_at===lr.completed_at&&(Fo.fix_items?.length??0)===(lr.fix_items?.length??0))){let al=wR(lr);A(Os=>({...Os,[lr.id]:{...lr,results:Hf}})),x(Os=>Os.some(Dd=>Dd.id===lr.id)?Os.map(Dd=>Dd.id===lr.id?{...Dd,...al}:Dd):Os),H(Os=>Os&&Os.id===lr.id?{...Os,...al}:Os)}return lr}catch(xt){return O(Xt=>({...Xt,[ce]:xt.message})),null}finally{ho.current.delete(ce)}})();return ho.current.set(ce,et),et},[l]),da=ce=>{H(wR(ce)),w(ce.id),F(null)};(0,ye.useEffect)(()=>{let ce=!1;return(async()=>{let et=await ca();if(ce)return;let xt=et?.runs?.[0]?.id??null,Xt=!!(a&&et?.runs?.some(rc=>rc.id===a));if(a&&!Xt){let rc=await ao(a);if(ce)return;if(rc){da(rc);return}}let lr=Xt?a:null,Fo=Bl.current,Hf=lr||(Fo&&et?.runs?.some(rc=>rc.id===Fo)?Fo:xt);w(Hf),Hf&&ao(Hf)})(),()=>{ce=!0}},[ca,ao]);let Ru=e.latest_run?.id??null;(0,ye.useEffect)(()=>{!Ru||y.some(ce=>ce.id===Ru)||ca()},[Ru,y,ca]);let Fl=_[S]||y.find(ce=>ce.id===S)||(D?.id===S?D:null),Ea=y[0]||null,Md=ce=>{let et=y.findIndex(Xt=>Xt.id===ce);if(et<0)return null;let xt=new Set(Cf(y[et],[],e));return y.slice(et+1).find(Xt=>Xt.status==="complete"&&Cf(Xt,[],e).some(lr=>xt.has(lr)))||null},hn=Cd(Fl)?Fl.id:Cd(Ea)?Ea.id:null;(0,ye.useEffect)(()=>{if(!hn)return;let ce=!1,et=()=>eQ(Aa.current[hn]?.results?.length??0),xt=lr=>{clearTimeout(kt.current),kt.current=setTimeout(async()=>{if(ce||kR())return;let Fo=null;try{Fo=await ao(hn)}catch{Fo=null}if(!ce){if(Fo&&!Cd(Fo)){await ca(),r?.();return}xt(et())}},lr)},Xt=()=>{document.visibilityState==="visible"&&xt(0)};return kR()||xt(et()),typeof document<"u"&&document.addEventListener("visibilitychange",Xt),()=>{ce=!0,clearTimeout(kt.current),typeof document<"u"&&document.removeEventListener("visibilitychange",Xt)}},[hn,ao,ca,r]);let Lf=(0,ye.useCallback)(async()=>{try{let ce=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!ce.ok)return;let et=await ce.json(),xt=K2(et.sandboxes);L(xt),K(Xt=>V2(Xt,xt))}catch{}},[]);(0,ye.useEffect)(()=>{Lf()},[Lf]);let ay=wd($),ec=async ce=>{q(!0),j(null);try{let et=await fetch(`/api/evaluations/${l}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(PJ(ce,ay,Y))}),xt=await et.json().catch(()=>({}));if(!et.ok)throw xt.code==="sandbox_refused"&&Lf(),new Error((xt.errors||[xt.error]).filter(Boolean).join(", ")||"Run failed to start");let Xt=xt.run;x(lr=>[Xt,...lr.filter(Fo=>Fo.id!==Xt.id)]),k(lr=>lr==null?null:lr+1),A(lr=>({...lr,[Xt.id]:{...Xt,results:[]}})),w(Xt.id),F(null),Ee(!0),tt("suite"),r?.()}catch(et){j(et.message)}finally{q(!1)}},Ib=ce=>[ce,Md(ce)?.id,Ea?.id,S].slice(0,zJ),iy=ce=>{w(ce),F(null),A(et=>$D(et,Ib(ce))),_[ce]||ao(ce)},zf=ce=>{iy(ce.id),s?.(ce.id)};(0,ye.useEffect)(()=>{if(!a||a===S)return;if(y.some(et=>et.id===a)||D?.id===a){iy(a);return}if(!c)return;let ce=!1;return(async()=>{let et=await ao(a);ce||!et||(A(xt=>$D(xt,Ib(et.id))),da(et))})(),()=>{ce=!0}},[a]);let Db=async ce=>{ce.id&&(await fetch(`/api/evaluations/${l}/scenarios/${ce.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:ce.enabled===!1}})}),await oo())},jb=async()=>{R(null);let ce=await fetch(`/api/evaluations/${l}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:se})}),et=await ce.json().catch(()=>({}));if(!ce.ok){R((et.errors||[et.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}g(et.scenarios||[]),h(et.groups||[]),De(!1),r?.()},Xe=Fl,Na=!!Xe&&!Array.isArray(Xe.results),sy=Xe?C[Xe.id]:null,Ao=(0,ye.useMemo)(()=>(Xe?.results||[]).filter(ce=>ce&&ce.scenario_key),[Xe]),Bf=Cf(Xe,Ao,e).join("\0"),pa=(0,ye.useMemo)(()=>Bf?Bf.split("\0"):[],[Bf]),Ta=(0,ye.useMemo)(()=>jD(Ao,ce=>Il(Xe,ce),pi.current),[Ao,Xe]);Qs(()=>{pi.current=Ta});let Ff=(0,ye.useMemo)(()=>new Set(Z0(Xe,m)),[Xe,m]),nl=Xe&&Xe.status!=="failed"?Md(Xe.id):null,tc=nl?_[nl.id]?.results:null;(0,ye.useEffect)(()=>{nl&&!tc&&ao(nl.id)},[nl,tc,ao]);let Wf=(0,ye.useMemo)(()=>tc?jD(tc,ce=>Il(nl,ce)):null,[tc,nl]),Uf=(0,ye.useMemo)(()=>Wf&&!Na?vJ(Ta,Wf,pa):QCe,[Wf,Na,Ta,pa]),Ha=Cd(Xe),ly=Kh(Xe,pa,m),Wl=uR(Xe,Ao,pa,m),Ul=(0,ye.useCallback)(ce=>Ff.has(ce.key)||!!Ta[ce.key],[Ff,Ta]),yo=(0,ye.useMemo)(()=>aJ(m,Ta,Ui.current),[m,Ta]),Ns=(0,ye.useMemo)(()=>{let ce={};return yo.forEach(et=>{let xt=Ul(et);ce[et.key]=Na?xt?"loading":"skipped":Xe?U2(Ta[et.key],pa,{inRun:xt,running:Ha}):"none"}),ce},[yo,Ul,Ta,pa,Xe,Na,Ha]),uy=(0,ye.useCallback)(ce=>Ns[ce.key],[Ns]),cy=(0,ye.useMemo)(()=>Ha?qJ(yo.map(ce=>({key:ce.key,step:Ns[ce.key]}))):null,[Ha,yo,Ns]),Id=(0,ye.useCallback)(ce=>pa.some(et=>{let xt=Ta[ce.key]?.[et];return Dl(xt)&&!Ml(xt)}),[pa,Ta]),$b=(0,ye.useMemo)(()=>yo.filter(Id).length,[yo,Id]),ol=!!Xe&&Xe.status==="complete"&&!Na,Lb=(0,ye.useMemo)(()=>VJ(yo.filter(ce=>!we||(ce.group||"")===we).filter(ce=>!z||Id(ce)).filter(ce=>!ae||Uf.byKey[ce.key]),uy,ol?Se:"suite"),[yo,we,z,Id,ae,Uf,uy,ol,Se]),zb=new Set(yo.filter(Ul).map(ce=>ce.group).filter(Boolean)).size,dy=Ao.filter(Dl).length,py=Ao.filter(ce=>Dl(ce)&&!Ml(ce)).length,GA=ly*Math.max(pa.length,1),le=new Set(Ao.filter(ce=>Dl(ce)&&!Ml(ce)).map(ce=>ce.scenario_key)).size,$e=Xe?.scores?._verdict||null,ct=Object.prototype.hasOwnProperty.call(Xe?.scores||{},"_judge_label")?Xe.scores._judge_label||"rules":$e?.judge&&$e.judge!=="pass rate"?$e.judge:e.judge_model||"rules",Bt=(0,ye.useMemo)(()=>Xe?dR(Xe,Ao):[],[Xe,Ao]),On=(0,ye.useMemo)(()=>Na?JCe:IJ(Ao,m),[Na,Ao,m]),qa=Object.keys(Xe?.scores||{}).filter(ce=>!ce.startsWith("_")),io=(0,ye.useCallback)(ce=>lR(ce,ce.id===Xe?.id?Ao:(_[ce.id]?.results||[]).filter(et=>et&&et.scenario_key),e,m),[Xe,Ao,_,e,m]),fi=(0,ye.useCallback)((ce,et,xt)=>{if(!et||et.status!=="complete"||ce.status!=="complete")return V0(ce,et,{olderNumber:xt});let Xt=Cf(ce,ce.id===Xe?.id?Ao:[],e),lr=Cf(et,[],e),Fo=Kh(et,lr,m)===Kh(ce,Xt,m)&&lr.length===Xt.length;return V0(ce,et,{olderNumber:xt,comparable:Fo})},[Xe,Ao,e,m]),Ts=(0,ye.useMemo)(()=>J2({runs:y,runCount:v,evaluation:e,agentName:u,selectedId:Xe?.id??null,previousRun:e.previous_run,barsFor:io,deltaFor:fi}),[y,v,e,u,Xe?.id,io,fi]),Hl=Ts.find(ce=>ce.run.id===Xe?.id)||null,YA=Ts.find(ce=>ce.run.id===nl?.id)?.number??null,s$=Hl?.number??(Number.isFinite(Xe?.number)?Xe.number:null),l$=Hl?.bars??(Xe?io(Xe):[]),u$=ff(y,v),kre=!!Xe&&Ea?.id===Xe.id,_re=Cd(Ea)&&Ea.id!==Xe?.id?Ea:null,XA=c||m.length>0,ZA=XA?m.length:e.scenario_count??0,c$=XA?m.filter(ce=>ce.enabled!==!1&&(!we||(ce.group||"")===we)).length:ZA,Cre=`Run ${St(c$,"scenario")}${ay.length?` \xD7 ${St(ay.length,"model")}`:""}`,Are=`@${u} \xB7 ${St(ZA,"scenario")}${b.length?` in ${St(b.length,"group")}`:""} \xB7 ${p?"not loaded":c?y.length?St(u$,"run"):"no runs yet":"loading\u2026"}`,Bb=Xe&&Xe.status==="complete"?`/evaluations/${l}/runs/${Xe.id}/report`:null,JA=Bb?rt(Nh(Bb).markdown):null,Ere=[...new Set([...b,...yo.map(ce=>ce.group).filter(Boolean)])],Nre=[{label:`All ${yo.length||ZA}`,value:null}].concat(Ere.map(ce=>({label:XA?`${ce} ${yo.filter(et=>et.group===ce).length}`:ce,value:ce}))),fy=(0,ye.useMemo)(()=>{let ce=[...new Set(yo.map(et=>et.group||""))];return ce.some(Boolean)?ce:[]},[yo]),Tre=fy.some(ce=>!Ve.has(ce)),QA=yo.length===0,Ore=ae?"[ ] nothing changed in this group":z?"[+] nothing failed in this group":"[ ] no scenarios";(0,ye.useEffect)(()=>{Ee(!0),Vt(new Map),tt("suite"),F(null)},[Xe?.id]),(0,ye.useEffect)(()=>{fe(PD(m,Ff))},[Xe?.id,c]);let d$=(0,ye.useRef)(Xe?.id??null);(0,ye.useEffect)(()=>{if(d$.current!==(Xe?.id??null)){d$.current=Xe?.id??null;return}!Ha||!B||fe(ce=>{let et=new Set(ce);return fy.forEach(xt=>{if(ze.has(xt))return;let Xt=yo.filter(lr=>(lr.group||"")===xt&&Ul(lr));Xt.length&&(Xt.every(lr=>Ns[lr.key]==="passed")&&et.add(xt),Xt.some(lr=>lr.key===cy)&&et.delete(xt))}),RCe(et,ce)?ce:et})},[Xe?.id,cy,dy,B,Ha]);let Pre=ce=>{let et=Ve.has(ce);fe(xt=>{let Xt=new Set(xt);return et?Xt.delete(ce):Xt.add(ce),Xt}),Vt(xt=>new Map(xt).set(ce,et))},p$=ce=>{fe(new Set(ce?[]:fy)),Vt(new Map(fy.map(et=>[et,ce])))},Mre=ce=>{Gt(ce),HJ(SR(),ce)},Ire=(0,ye.useCallback)(ce=>{F(et=>et===ce?null:ce),Ee(!1)},[]),Dre=(0,ye.useCallback)(()=>Ee(!1),[]),RA=(0,ye.useCallback)(ce=>{let et=Array.isArray(ce)?ce[0]:ce;if(!et)return;let xt=yo.find(Xt=>Xt.key===et)?.group||"";Ce(null),ee(!1),E(!1),fe(Xt=>{if(!Xt.has(xt))return Xt;let lr=new Set(Xt);return lr.delete(xt),lr}),Vt(Xt=>new Map(Xt).set(xt,!0)),F(et),Ee(!1),requestAnimationFrame(()=>{let Xt=zt.current;Xt&&(Xt.scrollIntoView({behavior:"smooth",block:"start"}),Xt.querySelector(`[data-scenario-key="${uA(et)}"]`)?.focus({preventScroll:!0}))})},[yo]),f$=(0,ye.useRef)(null);(0,ye.useEffect)(()=>{if(!i||!c||!Xe||Xe.id!==a||!Array.isArray(Xe.results))return;let ce=`${Xe.id}:${i}`;if(f$.current===ce)return;let et=Xe.results.find(xt=>xt?.id===i);et?.scenario_key&&(f$.current=ce,RA(et.scenario_key))},[i,a,c,Xe,RA]);let jre=()=>{Gr.current?.scrollIntoView({behavior:"smooth",block:"start"}),Gr.current?.focus({preventScroll:!0})},$re=()=>{Xe&&(O(ce=>{let{[Xe.id]:et,...xt}=ce;return xt}),ao(Xe.id))},m$=()=>{Ea&&zf(Ea)},g$=QA&&p?ye.default.createElement(tn,{style:Af},"[!] suite not loaded"):QA&&!c?ye.default.createElement(tn,{style:Af},"loading\u2026"):QA?ye.default.createElement(tn,{style:Af},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):S!=null&&!Xe?ye.default.createElement(tn,{style:Af},"loading\u2026"):sy&&!Array.isArray(Xe.results)?ye.default.createElement(tn,{style:Af},`[!] results not loaded (${sy}) \xB7 `,ye.default.createElement(Jr,{onClick:$re,title:"Fetch this run's results again",testId:"suite-detail-retry"},"retry")):ye.default.createElement(vR,{rows:Lb,columns:Xe?pa:[],run:Xe,resultsByKey:Ta,changesByKey:Uf.byKey,comparedNumber:YA,runKeys:Ff,running:Ha,loading:Na,stepsByKey:Ns,currentKey:cy,bars:l$,detail:Hr,showKey:Bo,collapsedGroups:Ve,onToggleGroup:Pre,openKey:W,onToggleRow:Ire,following:B,onStopFollowing:Dre,emptyLabel:Ore,maxHeight:OD,boxRef:zt,renderDetail:ce=>ye.default.createElement(xR,{scenario:ce,run:Xe,columns:Xe?pa:[],resultsByKey:Ta,running:Ha,inRun:Ul(ce),canMutate:!ce.orphan,onRerun:et=>ec({keys:[et.key]}),onToggleEnabled:Db,markdownUrl:JA,evaluationId:l,linkedResultId:Xe&&Xe.id===a?i:null})}),h$={rows:Ts,runs:y,runCount:v,evaluation:e,agentName:u,selectedId:Xe?.id??null,onOpen:zf,noteFor:ce=>ED(ce,m),linkedRun:D,linkedBars:D&&io(D)};return ye.default.createElement("div",{ref:dt,style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel","data-layout":it?"rail":"strip"},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Are),ye.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement(ie,{size:"sm",onClick:()=>{xe(SQ(m)),R(null),De(!pe)}},pe?"Cancel":"Edit scenarios"),ye.default.createElement(eb,{value:$,onChange:Z,models:M,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:{...g3,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),G.length>0&&ye.default.createElement("select",{value:Y,onChange:ce=>K(ce.target.value),style:{...g3,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"},ye.default.createElement("option",{value:""},"Run against: agent's own tools"),G.map(ce=>ye.default.createElement("option",{key:ce.value,value:ce.value},`Run against sandbox ${ce.label}`))),ye.default.createElement(ie,{variant:"primary",size:"sm",disabled:T||!c||c$===0,onClick:()=>ec(we?{group:we}:{}),testId:"suite-run-button"},T?"Starting\u2026":Cre))),(p||I)&&ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},p||I),pe&&ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},ye.default.createElement("textarea",{value:se,onChange:ce=>xe(ce.target.value),rows:Math.min(Math.max(m.length+4,6),24),style:{...g3,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},ye.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",ye.default.createElement("code",{style:{fontFamily:U}},"# Heading")," starts a group; ",ye.default.createElement("code",{style:{fontFamily:U}},"| tools: a, b"),", ",ye.default.createElement("code",{style:{fontFamily:U}},"| contains: x"),", ",ye.default.createElement("code",{style:{fontFamily:U}},"| not_contains: y")," set expectations. Keep a scenario's ",ye.default.createElement("code",{style:{fontFamily:U}},"key")," to keep its history."),ye.default.createElement(ie,{variant:"primary",size:"sm",onClick:jb},"Save scenarios")),ue&&ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},ue)),Xe&&ye.default.createElement(GD,{run:Xe,runNumber:s$,latestNumber:u$,isLatest:kre,runningElsewhere:_re,agentName:u,scenarioCount:ly,groupCount:zb,columns:pa,judgedBy:ct,bars:l$,delta:Hl?.delta??null,version:Hl?.version??null,totals:Wl,settledCount:dy,settledFailed:py,expectedResults:GA,running:Ha,loading:Na,spend:zi(Xe),fixSummary:{items:Bt.length,faults:Math.max(Wl.total-Wl.passed,0),scenarios:le},selectionLabel:ED(Xe,m),sandboxLabel:X0(Xe),reportPath:Bb,rerun:On,evaluationId:l,onSelectLatest:m$,onWatchLatest:m$,onJumpToFix:jre,onRerunFailed:()=>ec({keys:On.keys}),onRunAgain:()=>ec(DJ(Xe,m))}),!it&&ye.default.createElement(KD,{layout:"strip",limit:hJ,...h$}),ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ye.default.createElement(je,{style:{marginRight:4}},"Scenarios"),Nre.map(ce=>ye.default.createElement(In,{key:ce.label,selected:we===ce.value,onClick:()=>Ce(ce.value)},ce.label)),ye.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ye.default.createElement(In,{square:!0,mono:!0,selected:Hr==="tools",onClick:()=>Mre(Hr==="tools"?"steps":"tools"),style:{background:"transparent"},title:"Show the tools each replay called and what each cell cost",testId:"suite-detail-toggle"},Hr==="tools"?"[x] tools":"[ ] tools"),ye.default.createElement(In,{square:!0,mono:!0,selected:z,onClick:()=>ee(!z),style:{background:"transparent"},title:"Hide scenarios that passed on every model",testId:"suite-failed-only"},`${z?"[x]":"[ ]"} failed only${!Na&&$b?` \xB7 ${$b}`:""}`),Wf&&ye.default.createElement(In,{square:!0,mono:!0,selected:ae,onClick:()=>E(!ae),style:{background:"transparent"},title:`Show only scenarios that passed or failed differently from run #${YA}: \u25B2 now passes, \u25BC now fails, \u25CB errored this time`,testId:"suite-changed-only"},`${ae?"[x]":"[ ]"} changed vs #${YA}${xJ(Uf)}`),Xe&&Xe.status!=="failed"&&(ol?ye.default.createElement(In,{square:!0,mono:!0,selected:Se==="failed-first",onClick:()=>tt(Se==="failed-first"?"suite":"failed-first"),style:{background:"transparent"},title:"Groups with the most failures first, and failed scenarios first within each",testId:"suite-order-toggle"},Se==="failed-first"?"[x] failed first":"[ ] failed first"):ye.default.createElement(In,{square:!0,mono:!0,disabled:!0,style:{background:"transparent"},title:"applies once the run completes",testId:"suite-order-toggle"},"[ ] failed first")),Ha&&ye.default.createElement(In,{square:!0,mono:!0,selected:B,onClick:()=>Ee(ce=>!ce),style:{background:"transparent"},title:"Keep the step being replayed in view as the run goes",testId:"suite-follow"},B?"[x] follow":"[ ] follow"),fy.length>1&&(Tre?ye.default.createElement(Jr,{onClick:()=>p$(!1),title:"Fold every group",testId:"suite-collapse-all"},"collapse all"):ye.default.createElement(Jr,{onClick:()=>p$(!0),title:"Unfold every group",testId:"suite-collapse-all"},"expand all")))),it?ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:`${ND}px minmax(0, 1fr)`,gap:TD,alignItems:"start"}},ye.default.createElement(KD,{layout:"rail",maxHeight:OD,...h$}),g$):g$),Xe&&Xe.status!=="failed"&&ye.default.createElement(gR,{run:Xe,columns:pa,results:Ao,scenarioCount:ly,judgedBy:ct,verdict:$e,evaluation:e,onJudgeChanged:r,markdownUrl:JA}),Xe&&Xe.status!=="failed"&&ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},ye.default.createElement("div",{ref:Gr,tabIndex:-1,style:{display:"flex",alignItems:"baseline",gap:10,outline:"none"},"data-testid":"suite-fix-heading"},ye.default.createElement(je,null,"What to fix"),ye.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},Na?"loading\u2026":`${St(Bt.length,"item")} \xB7 ${St(Math.max(Wl.total-Wl.passed,0),"fault")} across ${St(le,"scenario")}`)),Na?ye.default.createElement(tn,{style:{...Af,padding:"14px 12px"}},"[ ] loading\u2026"):Bt.length>0?ye.default.createElement(bR,{items:Bt,columns:pa,agentName:u,onNavigate:st,onOpenScenario:RA,run:Xe,results:Ao,evaluation:e,runNumber:s$,scenarios:m,onRerun:ce=>ec({keys:gf(ce.scenario_keys||[],m).keys}),runnableFor:ce=>gf(ce.scenario_keys||[],m),markdownUrl:JA}):ye.default.createElement(tn,{style:{...Af,padding:"14px 12px"}},Ha?"[ ] scoring\u2026":"[+] nothing to fix")),ye.default.createElement(Sf,{evaluation:e,run:Xe,keys:qa.length?qa:null,spend:zi(Xe),spendTotal:!0,reportPath:Bb,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var at=X(J());var y3=[{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}}],_R=[{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}}],Zu={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)"},CR={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},e2e={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function v3({agents:e,agentId:t,judgeProvider:r,judgeProviderError:n=!1,modelProviders:o,onCreated:a,onCancel:i}){let[s,l]=(0,at.useState)({agent_id:t?String(t):"",name:"",sample_size:20,criteria:y3.map(C=>C.key),containsPattern:"",llmJudgePrompt:"",judgeKind:"manual",judgeModel:"",compareModels:"",scenariosText:"",compareRestore:new Map}),[u,c]=(0,at.useState)(null),[d,p]=(0,at.useState)(!1),f=(0,at.useId)(),m=(0,at.useMemo)(()=>o===void 0?[]:o??kw,[o]),g=Mc(r&&!m.includes(r)?[...m,r]:m),b=r2e(s.agent_id),h=(0,at.useMemo)(()=>Q0(g,{providers:m.length?m:r?[r]:[]}),[g,m,r]),y=!!s.scenariosText.trim(),x=(0,at.useMemo)(()=>y?Q0(g,{providers:m}):b,[g,m,y,b]),v=C=>l(O=>({...O,...C})),k=C=>l(O=>{let D=!!C.trim();if(D===!!O.scenariosText.trim())return{...O,scenariosText:C};let{models:H,restore:$}=sQ(wd(O.compareModels),g,{providers:m,qualify:D,restore:O.compareRestore});return{...O,scenariosText:C,compareModels:R0(H),compareRestore:$}}),S=(C,O)=>v({criteria:O?[...s.criteria,C]:s.criteria.filter(D=>D!==C)}),w=()=>{let C=[...y3,..._R].filter(O=>s.criteria.includes(O.key)).map(({key:O,type:D,config:H})=>({key:O,type:D,config:H}));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},_=async C=>{C.preventDefault(),p(!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:wd(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:w(),scenarios_text:s.scenariosText.trim()||void 0}})}),D=await O.json().catch(()=>({}));if(!O.ok)throw new Error((D.errors||[D.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${O.status})`);a?.(D.evaluation)}catch(O){c(O.message)}finally{p(!1)}},A=C=>at.default.createElement("label",{key:C.key,style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--color-text-primary)"}},at.default.createElement("input",{type:"checkbox",checked:s.criteria.includes(C.key),onChange:O=>S(C.key,O.target.checked),style:{accentColor:"var(--color-accent-ui)"}}),C.label);return at.default.createElement(Le,{testId:"new-evaluation-form"},at.default.createElement("form",{onSubmit:_,style:{display:"flex",flexDirection:"column",gap:16}},at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),at.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>v({agent_id:C.target.value}),style:{...Zu,width:"100%",opacity:t?.7:1}},!t&&at.default.createElement("option",{value:""},"Select agent\u2026"),e.map(C=>at.default.createElement("option",{key:C.id,value:C.id},C.name)))),at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"Name"),at.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>v({name:C.target.value}),placeholder:"Response Quality",style:{...Zu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"Sample size"),at.default.createElement("input",{type:"number",min:"1",max:"100",value:s.sample_size,onChange:C=>v({sample_size:C.target.value}),style:{...Zu,width:"100%",fontFamily:U}}))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),at.default.createElement("select",{value:s.judgeKind,onChange:C=>v({judgeKind:C.target.value}),style:{...Zu,width:"100%"}},at.default.createElement("option",{value:"manual"},"Manual criteria"),at.default.createElement("option",{value:"judge_defined"},"Judge defines KPIs from agent goals"))),at.default.createElement("div",null,at.default.createElement(je,{as:"label",htmlFor:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),at.default.createElement(pu,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>v({judgeModel:C}),style:{...Zu,width:"100%",fontFamily:U,fontSize:12}}),r!==void 0&&at.default.createElement("p",{id:`${f}-judge-provider`,style:CR},t2e(r,n))),at.default.createElement("div",null,at.default.createElement(je,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),at.default.createElement(eb,{inputId:`${f}-compare`,describedBy:`${f}-compare-hint`,value:s.compareModels,onChange:C=>v({compareModels:C}),models:x,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Zu,width:"100%",fontFamily:U,fontSize:12}}),at.default.createElement("p",{id:`${f}-compare-hint`,style:CR},y?"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."))),at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"Scenarios (optional) \u2014 paste user messages to replay, one per line"),at.default.createElement("textarea",{value:s.scenariosText,onChange:C=>k(C.target.value),rows:s.scenariosText?8:3,placeholder:`# Open tickets +`};var Cd=e=>[...new Set(e)],x3=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},Gh=e=>String(e||"").replace(/_/g," "),Il=e=>e?.status==="passed",$l=e=>!!e&&e.status!=="pending",Ad=e=>!!e&&["pending","running"].includes(e.status);function Af(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=FJ(e);if(o.length)return o;let a=Cd(t.map(s=>Dl(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function Dl(e,t){let n=(gf(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 w3(e,t){let r=e?.scores?._models?.[t],n=(gf(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return Kn(t,r?.provider||n?.provider||"")}function Yh(e,t=[],r=[]){let n=eb(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 gR(e,t,r=[],n=0){let o=e?.scores?._models?.[t];if(o&&o.scenarios!=null){let i=o.passed||0,s=o.scenarios||0;return{passed:i,failed:Math.max(s-i,0),total:s}}let a=r.filter(i=>Dl(e,i)===t);return{passed:a.filter(Il).length,failed:a.filter(i=>$l(i)&&!Il(i)).length,total:n||a.length}}function hR(e,t=[],r=null,n=[]){let o=Af(e,t,r),a=Yh(e,o,n);return o.map(i=>{let s={label:i,short:Kn(i).short};return e?.scores?._models?.[i]?.scenarios!=null||Ad(e)||t.some(u=>Dl(e,u)===i)?{...s,...gR(e,i,t,a)}:{...s,passed:null,failed:null,total:null}})}function yR(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=Yh(e,r,n)*Math.max(r.length,1);return{passed:t.filter(Il).length,total:o}}function vR(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 WCe=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},h3=e=>e?.diagnosis?.judge?.instruction_change;function xR(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(h3);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>UCe(a,t)),o=new Set;return t.forEach(a=>{let i=h3(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>h3(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:Cd(s.map(l=>l.scenario_key)),models:Cd(s.map(l=>Dl(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 UCe(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=Cd(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=Cd(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:WCe(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=Cd(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||Cd(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 gb=e=>e?.cost_source==="estimated",vA=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},mA=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[kr(e.cost,{estimated:gb(e)})];return t!=null&&r.push(`judge ${kr(t,{estimated:vA(e)})}`),r.join(" \xB7 ")},bR=e=>{if(!gb(e))return;let t=e.cost_rate||null;return Fm({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},HCe=(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($l),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=>gb(u)||vA(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 wR({entry:e,compact:t=!1,testId:r,tokens:n=null}){let o={display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4,minWidth:0,textAlign:"right"},a=n&&(n.input!=null||n.output!=null)?ne.default.createElement(jo,{size:"mini",testId:r?`${r}-tokens`:void 0,title:"input\u2192output tokens across the models"},U2(n.input,n.output)):null;if(!e)return ne.default.createElement("span",{style:o,"data-testid":r},ne.default.createElement("span",{style:En(12)},"\u2014"),a);if(t){let i=e.total??(e.cost!=null||e.judgeCost!=null?(e.cost||0)+(e.judgeCost||0):null),s=[];return e.cost!=null&&s.push(`agent ${kr(e.cost,{estimated:e.estimated})}`),e.judgeCost!=null&&s.push(`judge ${kr(e.judgeCost,{estimated:e.estimated})}`),ne.default.createElement("span",{style:o,"data-testid":r},ne.default.createElement(jo,{size:"mini",title:s.join(" \xB7 ")||void 0},kr(i,{estimated:e.estimated})),a)}return ne.default.createElement("span",{style:o,"data-testid":r},ne.default.createElement(jo,{size:"mini"},kr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&ne.default.createElement("span",{style:{...En(10.5),whiteSpace:"nowrap"}},`judge ${kr(e.judgeCost,{estimated:e.estimated})}`),a)}var En=(e,t="var(--color-text-muted)",r={})=>({fontFamily:U,fontSize:e,color:t,...r});function SR({calls:e,empty:t,style:r}){return ne.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:U,fontSize:11,...r}},e.map(n=>ne.default.createElement("span",{key:n.name,style:{color:n.color,fontWeight:n.weight}},n.label)),e.length===0&&ne.default.createElement("span",{style:{color:"var(--color-text-muted)"}},t))}function kR({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a,evaluation:i=null,onJudgeChanged:s,markdownUrl:l=null}){let u=e?.scores?._models||{},c=Bi(e)?.judge?.estimated??!0;return ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"suite-models-panel"},ne.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},ne.default.createElement($e,null,"Models"),ne.default.createElement(l3,{evaluation:i,run:e,label:o,onChanged:s,testId:"suite-judge"}),ne.default.createElement(Cs,{url:K2(l,{part:"verdict"}),testId:"copy-verdict-markdown",title:"Copy the verdict and the model comparison as Markdown",style:{marginLeft:"auto"}})),t.length===0&&ne.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&ne.default.createElement(lb,{rows:J2(e,{results:r,scenarioCount:n,columns:t,labelFor:d=>Dl(e,d)}),unit:"scenario",judgedBy:o,judgeEstimated:c}),t.length>1&&ne.default.createElement(s3,{plot:DJ(e)}),t.length>0&&ne.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(260px, 100%), 1fr))",gap:12}},t.map(d=>{let{short:p,provider:f}=w3(e,d),m=u[d],{passed:g,total:b}=gR(e,d,r,n),h=Object.entries(m?.faults||{}),y=Mh(m,m?.scenarios),x=m&&h.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!m&&Ad(e)?{text:"scoring\u2026"}:null;return ne.default.createElement(cb,{key:d,label:d,short:p,provider:f,winner:a?.winner===d,passed:g,total:b,avgScore:m?.avg_score,latencyMs:m?.avg_duration_ms,p50Ms:m?.p50_duration_ms??null,p95Ms:m?.p95_duration_ms??null,inputTokens:m?.input_tokens,outputTokens:m?.output_tokens,cost:m?.cost,perInteraction:ff(m?.cost,y),estimated:Y2(m,m?.scenarios),judgeCost:m?.judge_cost,judgeCalls:m?.judge_calls||0,judgeEstimated:c,unit:"scenario",badges:h.map(([v,k])=>({tone:"error",text:`${Gh(v)} \xD7${k}`})),note:x})})),a?.rationale&&ne.default.createElement(je,{padding:"12px 16px",testId:"suite-verdict",style:{display:"flex",flexDirection:"column",gap:6}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ne.default.createElement($e,null,"Verdict"),a.judge&&ne.default.createElement("span",{style:En(11)},`judged by ${a.judge}`)),ne.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},ne.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:U,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var KCe=(e,t)=>e==="tools"?["minmax(220px, 1.6fr)","130px",...Array(t).fill("minmax(160px, 1fr)"),"110px"].join(" "):["minmax(200px, 1fr)",...Array(t).fill("minmax(96px, max-content)"),"max-content","max-content"].join(" "),b3={tools:10,steps:14},VCe="max-lg:sticky max-lg:left-0 max-lg:z-[1] max-lg:self-stretch max-lg:-ml-3 max-lg:pl-3",cR={steps:"max-lg:-mr-2 max-lg:pr-2",tools:"max-lg:-mr-2.5 max-lg:pr-2.5"},y3={row:"max-lg:bg-[var(--color-surface)]",open:"max-lg:bg-[var(--color-surface)] max-lg:[background-image:linear-gradient(var(--color-muted),var(--color-muted))]",group:"max-lg:bg-[var(--color-background)]"},gA=(e,t)=>{let r=t==="header"?"max-lg:-my-2 max-lg:py-2 max-lg:content-end":t==="group"?"max-lg:-my-[7px] max-lg:py-[7px]":e==="steps"?"max-lg:-my-1.5 max-lg:py-1.5 max-lg:items-center!":"max-lg:-my-2.5 max-lg:py-2.5",n=t==="group"?y3.group:t==="row"?y3.row:y3.open;return`${VCe} ${cR[e]||cR.steps} ${r} ${n}`},v3=[],dR={},pR=new Set,hA=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),GCe=600,fR=e=>typeof e=="number"?`${e}px`:e,YCe=e=>["INPUT","TEXTAREA","SELECT"].includes(e?.tagName),XCe={improved:{text:"\u25B2",color:"var(--color-success)",verb:"now passes"},regressed:{text:"\u25BC",color:"var(--color-error)",verb:"now fails"},errored:{text:"\u25CB",color:"var(--color-warning-text)",verb:"errored this time"}};function mR({change:e,comparedNumber:t}){let r=e&&XCe[e.kind];if(!r)return null;let n=e.was,o=`${n.status==="passed"?"passed":n.status} ${oa(n.score)}`,a=`${r.verb} \xB7 ${o} in run #${t??"?"}`;return ne.default.createElement("span",{"data-testid":"scenario-cell-change","data-change":e.kind,title:a,"aria-label":a,style:{fontWeight:700,color:r.color,flexShrink:0}},r.text)}function ZCe({result:e,expects:t,pending:r,compact:n=!1,change:o=null,comparedNumber:a=null}){if(!e)return ne.default.createElement("span",{style:{...En(12),fontWeight:600}},r?"\u2026":"\u2014");if(!$l(e))return ne.default.createElement("span",{style:{...En(12),fontWeight:600}},"\u2026");let i=Il(e),s=vR(e.tool_calls,t);if(n){let l=e.fault?Gh(e.fault):e.status==="errored"?"errored":null,u=mA(e),c=s.map(p=>p.label).join(" ")||"no tools called",d=[l,_R(eA(e)),u].filter(Boolean).join(" \xB7 ");return ne.default.createElement("span",{title:`${c}${d?` +${d}`:""}`,style:{display:"inline-flex",alignItems:"center",gap:6,minWidth:0}},ne.default.createElement(jo,{rank:i?"good":"poor",size:"mini",testId:"scenario-cell-score"},`${i?"[+]":"[!]"} ${oa(e.score)}`),ne.default.createElement(mR,{change:o,comparedNumber:a}))}return ne.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",fontFamily:U,fontSize:12}},ne.default.createElement(jo,{rank:i?"good":"poor",size:"compact",testId:"scenario-cell-score"},`${i?"[+]":"[!]"} ${oa(e.score)}`),ne.default.createElement(mR,{change:o,comparedNumber:a}),e.fault&&ne.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},Gh(e.fault))),ne.default.createElement(SR,{calls:s,empty:"no tools called"}),ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:4}},ne.default.createElement(CR,{metrics:eA(e),testId:"scenario-cell-metrics",style:{display:"contents"}}),mA(e)&&ne.default.createElement("span",{"data-testid":"scenario-cell-cost",title:bR(e)||mA(e),style:{display:"grid",gap:2,justifyItems:"start"}},e.cost!=null&&ne.default.createElement(jo,{size:"mini"},kr(e.cost,{estimated:gb(e)})),e.judge_usage?.cost!=null&&ne.default.createElement("span",{style:{...En(10.5),whiteSpace:"nowrap"}},`judge ${kr(e.judge_usage.cost,{estimated:vA(e)})}`))))}var _R=e=>{if(!e)return null;let t=[];e.durationMs!=null&&t.push(tb(e.durationMs));let r=U2(e.inputTokens,e.outputTokens);return r!=="\u2014"&&t.push(r),t.length?t.join(" \xB7 "):null};function CR({metrics:e,testId:t,title:r="time to answer \xB7 input\u2192output tokens",align:n="flex-start",style:o}){if(!e)return null;let a=e.durationMs==null?null:tb(e.durationMs),i=U2(e.inputTokens,e.outputTokens);return a==null&&i==="\u2014"?null:ne.default.createElement("div",{"data-testid":t,title:r,style:{display:"flex",flexWrap:"wrap",gap:4,justifyContent:n,minWidth:0,...o}},a!=null&&ne.default.createElement(jo,{size:"mini"},a),i!=="\u2014"&&ne.default.createElement(jo,{size:"mini"},i))}function JCe({metrics:e,testId:t="scenario-cell-metrics",title:r="time to answer \xB7 input\u2192output tokens",style:n}){let o=_R(e);return o?ne.default.createElement("span",{"data-testid":t,title:r,style:{...En(10.5),whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,...n}},o):null}var yA={passed:{text:"[+]",color:"var(--color-success)",title:"passed on every model"},failed:{text:"[!]",color:"var(--color-error)",title:"failed on at least one model"},running:{text:"[~]",color:"var(--color-warning-text)",title:"running"},queued:{text:"[ ]",color:"var(--color-text-muted)",title:"queued"},missing:{text:"[?]",color:"var(--color-text-muted)",title:"the run ended without its results"},skipped:{text:"[-]",color:"var(--color-text-muted)",title:"not in this run"},none:{text:"[ ]",color:"var(--color-text-muted)",title:"not run yet"},loading:{text:"[ ]",color:"var(--color-text-muted)",title:"loading results\u2026"}},QCe=(e,t)=>e===t||!!e&&!!t&&e.cost===t.cost&&e.judgeCost===t.judgeCost&&e.total===t.total&&e.estimated===t.estimated,RCe=(e,t)=>e===t||!!e&&!!t&&e.input===t.input&&e.output===t.output,e2e=(e,t)=>{if(e===t)return!0;if(!e||!t)return!1;let r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(n=>e[n].kind===t[n]?.kind&&e[n].was===t[n]?.was)},t2e=(e,t)=>e.scenario===t.scenario&&e.results===t.results&&e.columns===t.columns&&e.step===t.step&&e.current===t.current&&e.open===t.open&&e.detail===t.detail&&e.showKey===t.showKey&&e.grid===t.grid&&e.inSelection===t.inSelection&&e.running===t.running&&e.loading===t.loading&&e.tabIndex===t.tabIndex&&QCe(e.costEntry,t.costEntry)&&RCe(e.tokens,t.tokens)&&e.timeMs===t.timeMs&&e2e(e.changes,t.changes)&&e.comparedNumber===t.comparedNumber,r2e=ne.default.memo(function({scenario:t,results:r,columns:n,step:o,current:a,open:i,detail:s,showKey:l,grid:u,inSelection:c,running:d,loading:p,costEntry:f,tokens:m=null,timeMs:g,tabIndex:b,changes:h=null,comparedNumber:y=null,onToggle:x,onFocus:v}){let k=t.key,S=s==="steps",w=x3(t,"tools"),_=t.enabled===!1,A=yA[o]||yA.none,C=`${k}${_?" \xB7 disabled":""}`,O=ne.default.createElement("span",{"data-testid":"scenario-step",title:A.title,style:{...En(11,A.color),fontWeight:700,flexShrink:0}},A.text),D={fontFamily:U,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"};return ne.default.createElement("div",{"data-testid":"scenario-row","data-scenario-key":k,"data-step":o,"data-nav":k,"data-current":a?"true":void 0,role:"button","aria-expanded":i,tabIndex:b,title:S&&!l?`${C} \xB7 ${t.prompt||""}`:void 0,onClick:()=>x(k),onKeyDown:H=>{(H.key==="Enter"||H.key===" ")&&(H.preventDefault(),x(k))},onFocus:H=>v(k,H),className:i?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:u,gap:b3[s]??b3.steps,padding:S?"8px 12px":"10px 12px",alignItems:S?"center":void 0,borderTop:"1px solid var(--color-border-light)",cursor:"pointer",background:i?"var(--color-muted)":void 0,boxShadow:a?"inset 2px 0 0 var(--color-warning)":void 0,opacity:_?.5:1}},S?ne.default.createElement("div",{className:gA(s,i?"open":"row"),style:{display:"flex",alignItems:"flex-start",gap:8,minWidth:0}},ne.default.createElement("span",{style:{paddingTop:l?1:2}},O),ne.default.createElement("span",{style:{display:"grid",gap:2,minWidth:0,flex:1}},l&&ne.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:700,color:t.orphan?"var(--color-text-muted)":"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},C),ne.default.createElement("span",{title:l?t.prompt:void 0,style:{minWidth:0,fontSize:l?12:13,color:l?"var(--color-text-secondary)":t.orphan?"var(--color-text-muted)":"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},t.prompt))):ne.default.createElement(ne.default.Fragment,null,ne.default.createElement("div",{className:gA(s,i?"open":"row"),style:{minWidth:0}},ne.default.createElement("div",{style:{...En(12,"var(--color-text-primary)",{fontWeight:700}),marginBottom:2,display:"flex",gap:6}},O,ne.default.createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},C)),ne.default.createElement("div",{style:{fontSize:13,lineHeight:"18px",color:"var(--color-text-primary)",textWrap:"pretty"}},t.prompt)),ne.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignContent:"flex-start",minWidth:0}},w.map(H=>ne.default.createElement("span",{key:H,style:D},H)),w.length===0&&x3(t,"contains").map(H=>ne.default.createElement("span",{key:`contains-${H}`,style:D,title:"the answer must contain this"},`contains: ${H}`)))),n.map(H=>ne.default.createElement(ZCe,{key:H,result:r?.[H],expects:w,pending:(d||p)&&c,compact:S,change:h?.[H]??null,comparedNumber:y})),ne.default.createElement(wR,{entry:f,compact:S,testId:"scenario-row-cost",tokens:S?null:m}),S&&ne.default.createElement("span",{style:{display:"flex",justifyContent:"flex-end"}},ne.default.createElement(jo,{size:"mini",testId:"scenario-row-time",title:"the slowest answer across the models"},tb(g))))},t2e);function AR({rows:e=v3,columns:t=v3,run:r=null,resultsByKey:n=dR,changesByKey:o=dR,comparedNumber:a=null,runKeys:i=pR,running:s=!1,loading:l=!1,stepsByKey:u=null,currentKey:c=null,bars:d=v3,detail:p="steps",showKey:f=!0,collapsedGroups:m=pR,onToggleGroup:g,openKey:b=null,onToggleRow:h,following:y=!1,onStopFollowing:x,emptyLabel:v,maxHeight:k=null,renderDetail:S,boxRef:w=null,testId:_="scenario-matrix"}){let A=t.length===0?"tools":p,C=A==="steps",O=KCe(A,t.length),D=b3[A],H=C?YJ(t.length):XJ(t.length),j=Se=>i.has(Se.key)||!!n[Se.key],Z=Se=>r?l?j(Se)?"loading":"skipped":X2(n[Se.key],t,{inRun:j(Se),running:s}):"none",N=Se=>u?.[Se.key]??Z(Se),P=new Map(e.map(Se=>[Se.key,HCe(r,Se.key,n[Se.key])])),M=[...P.values()].some(Se=>Se?.estimated),I=new Map(e.map(Se=>[Se.key,rQ(n[Se.key],t)])),$=BD(n,t),T=e.some(Se=>Se.group),q=[];e.forEach(Se=>{let tt=Se.group||"",dt=q.find(zt=>zt.name===tt);dt||(dt={name:tt,rows:[]},q.push(dt)),dt.rows.push(Se)});let G=Se=>(Se||T)&&m.has(Se),[L,Y]=(0,ne.useState)(null),K=[];q.forEach(Se=>{(Se.name||T)&&K.push(`group:${Se.name}`),G(Se.name)||Se.rows.forEach(tt=>K.push(tt.key))});let pe=new Set(K),De=[L,b,c].find(Se=>Se!=null&&pe.has(Se))??K[0]??null,se=(0,ne.useRef)(null),be=(0,ne.useRef)(null),ue=yf(se),R=ue>0&&ue{ae.current=we,E.current={onToggleRow:h,onStopFollowing:x}});let W=(0,ne.useCallback)(Se=>{se.current=Se,w&&(w.current=Se)},[w]),F=(0,ne.useCallback)(Se=>E.current.onToggleRow?.(Se),[]),B=(0,ne.useCallback)((Se,tt)=>{Y(Se);let dt=se.current;dt&&!dt.contains(tt.relatedTarget)&&E.current.onStopFollowing?.()},[]),Ee=()=>x?.();Rs(()=>{let Se=be.current;if(!Se)return;let tt=()=>{let zt=Se.offsetHeight;zt&&Ce(Gr=>Gr===zt?Gr:zt)};if(tt(),typeof ResizeObserver>"u")return;let dt=new ResizeObserver(tt);return dt.observe(Se),()=>dt.disconnect()},[]);let Ve=(0,ne.useCallback)(Se=>{if(!Se){ee(0);return}let tt=()=>ee(Se.offsetHeight);tt();let dt=typeof ResizeObserver>"u"?null:new ResizeObserver(tt);dt?.observe(Se);let zt=se.current,Gr=Se.previousElementSibling;if(zt&&Gr?.hasAttribute("data-scenario-key")){let yo=Gr.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]');zt.scrollTo({top:pQ({rowTop:Gr.offsetTop,headerHeight:ae.current,groupRowHeight:yo?.offsetHeight??0}),behavior:"smooth"})}return()=>{dt?.disconnect(),ee(0)}},[]),fe=(0,ne.useRef)(null),ze=(0,ne.useRef)(null),Vt=(0,ne.useRef)(0);Rs(()=>{let Se=se.current;if(!Se||!y||!c){fe.current=c;return}let tt=Se.querySelector(`[data-scenario-key="${hA(c)}"]`);if(!tt)return;let dt=dQ({rowTop:tt.offsetTop,headerHeight:we,boxHeight:Se.clientHeight});if(Math.abs(dt-Se.scrollTop)>4){let zt=Date.now(){let tt=se.current;if(!tt||!Se)return;let dt=Se.hasAttribute("data-scenario-key")?Se.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]'):null,zt=ae.current+(dt?.offsetHeight??0);Se.offsetTop-zttt.scrollTop+tt.clientHeight&&(tt.scrollTop=Se.offsetTop+Se.offsetHeight-tt.clientHeight)};return ne.default.createElement("div",{ref:W,"data-testid":_,"data-detail":A,onWheel:Ee,onTouchMove:Ee,onKeyDown:Se=>{if(YCe(Se.target))return;let tt=se.current;if(tt){if(Se.key==="ArrowDown"||Se.key==="ArrowUp"){let dt=[...tt.querySelectorAll("[data-nav]")];if(!dt.length)return;let zt=dt.indexOf(Se.target);zt<0&&(zt=dt.findIndex(yo=>yo.hasAttribute("data-scenario-key")&&yo.parentElement?.contains(Se.target)));let Gr=zt<0?dt[0]:dt[Math.min(Math.max(zt+(Se.key==="ArrowDown"?1:-1),0),dt.length-1)];Se.preventDefault(),x?.(),Gr&&Gr!==Se.target&&(Gr.focus({preventScroll:!0}),Ot(Gr));return}Se.key==="Escape"&&b&&(h?.(b),tt.querySelector(`[data-scenario-key="${hA(b)}"]`)?.focus({preventScroll:!0}))}},style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"auto",position:"relative",scrollbarGutter:"stable",maxHeight:k?z?`calc(${fR(k)} + ${z}px)`:fR(k):void 0}},ne.default.createElement("div",{style:{minWidth:H}},ne.default.createElement("div",{ref:be,style:{display:"grid",gridTemplateColumns:O,gap:D,padding:"8px 12px",alignItems:"end",position:"sticky",top:0,zIndex:2,backgroundColor:"var(--color-surface)",backgroundImage:"linear-gradient(var(--color-muted), var(--color-muted))"}},ne.default.createElement("span",{className:gA(C?"steps":"tools","header"),style:{minWidth:0}},ne.default.createElement($e,{size:10,color:"var(--color-text-muted)"},C?"Step":"Scenario")),!C&&ne.default.createElement($e,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(Se=>{let{short:tt,provider:dt}=w3(r,Se),zt=d.find(Gr=>Gr.label===Se);return ne.default.createElement("span",{key:Se,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:Se},ne.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},tt),ne.default.createElement("span",{style:En(10)},dt||" "),zt&&zt.passed!=null&&zt.total!=null&&ne.default.createElement(pu,{passed:zt.passed,total:zt.total,height:4,valueWidth:48,style:{marginTop:3}}),ne.default.createElement(JCe,{metrics:$[Se],testId:"scenario-column-totals",title:"this model's answers' time added up, and its input\u2192output tokens, over the results in",style:{marginTop:2}}))}),ne.default.createElement("span",{style:{textAlign:"right",display:"grid",gap:1,justifyItems:"end"},title:"What the scenario cost across every model, and what judging it cost; under it, its input\u2192output tokens"},ne.default.createElement($e,{size:10,color:"var(--color-text-primary)",style:{fontWeight:700}},"Cost"),ne.default.createElement($e,{size:9,color:"var(--color-text-muted)"},"per scenario")),C&&ne.default.createElement("span",{style:{textAlign:"right",display:"grid",gap:1,justifyItems:"end"},title:"The slowest answer across the run's models; a group's add up"},ne.default.createElement($e,{size:10,color:"var(--color-text-primary)",style:{fontWeight:700}},"Time"),ne.default.createElement($e,{size:9,color:"var(--color-text-muted)"},"slowest"))),q.map(Se=>{let tt=Se.name,dt=G(tt),zt=`group:${tt}`,Gr=Se.rows.filter(j),yo=yA[RJ(Se.rows.map(N))]||yA.none,Hi=BD(n,t,Se.rows.map(kt=>kt.key)),fi=t.map(kt=>{let ge=Hi[kt];if(!Gr.length)return{label:kt,text:"not in this run",color:"var(--color-text-muted)",weight:400,metrics:ge};if(l)return{label:kt,text:"loading\u2026",color:"var(--color-text-muted)",weight:400,metrics:ge};let nt=Gr.filter(ao=>$l(n[ao.key]?.[kt]));if(s&&!nt.length)return{label:kt,text:"queued",color:"var(--color-text-muted)",weight:400,metrics:ge};let it=nt.filter(ao=>Il(n[ao.key][kt])).length,Yt=Gr.length,Hr=Yt&&it===Yt?"var(--color-success-text)":it===0?"var(--color-error-text)":"var(--color-text-cell)",Fo=Yt&&it===Yt?"good":it===0?"poor":"mid";return{label:kt,text:`${Dn(it,Yt)} passed`,color:Hr,weight:600,metrics:ge,rank:Fo}}),Ea=qCe(Se.rows.map(kt=>P.get(kt.key))),Fl=nQ(Se.rows.map(kt=>I.get(kt.key)));return ne.default.createElement("div",{key:tt||"__ungrouped","data-group":tt},(tt||T)&&ne.default.createElement("div",{"data-testid":"scenario-group-row","data-group":tt,"data-collapsed":dt?"true":"false","data-nav":zt,role:"button","aria-expanded":!dt,tabIndex:De===zt?0:-1,onClick:()=>g?.(tt),onKeyDown:kt=>{(kt.key==="Enter"||kt.key===" "||kt.key==="ArrowLeft"&&!dt||kt.key==="ArrowRight"&&dt)&&(kt.preventDefault(),g?.(tt))},onFocus:kt=>B(zt,kt),style:{display:"grid",gridTemplateColumns:O,gap:D,padding:"7px 12px",alignItems:"center",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",cursor:"pointer",position:"sticky",top:we,zIndex:1}},ne.default.createElement("div",{className:gA(C?"steps":"tools","group"),style:{display:"flex",alignItems:"center",gap:8,minWidth:0}},ne.default.createElement($a,{kind:"chevron",open:!dt}),ne.default.createElement("span",{"data-testid":"scenario-group-step",title:yo.title,style:{...En(11,yo.color),fontWeight:700,flexShrink:0}},yo.text),ne.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},tt||"ungrouped"),C&&ne.default.createElement("span",{style:{...En(11),whiteSpace:"nowrap"}},`\xB7 ${St(Se.rows.length,"scenario")}`)),!C&&ne.default.createElement("span",{style:En(11)},St(Se.rows.length,"scenario")),fi.map(kt=>ne.default.createElement("span",{key:kt.label,style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},kt.rank?ne.default.createElement(jo,{rank:kt.rank,size:"mini",style:{alignSelf:"flex-start"}},kt.text):ne.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:kt.weight,color:kt.color,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},kt.text),!C&&ne.default.createElement(CR,{metrics:kt.metrics,testId:"scenario-group-metrics",title:"the group's answers' time added up, and their input\u2192output tokens, on this model"}))),ne.default.createElement(wR,{entry:Ea,compact:C,testId:"scenario-group-cost",tokens:C?null:Fl}),C&&ne.default.createElement("span",{style:{display:"flex",justifyContent:"flex-end"}},ne.default.createElement(jo,{size:"mini",testId:"scenario-group-time",title:"the group's scenarios' times added up"},tb(oQ(Se.rows,n,t))))),!dt&&Se.rows.map(kt=>{let ge=b===kt.key;return ne.default.createElement("div",{key:kt.key},ne.default.createElement(r2e,{scenario:kt,results:n[kt.key],columns:t,step:N(kt),current:kt.key===c,open:ge,detail:A,showKey:f,grid:O,inSelection:j(kt),running:s,loading:l,costEntry:P.get(kt.key)??null,tokens:I.get(kt.key)??null,timeMs:zD(n[kt.key],t),changes:o[kt.key]??null,comparedNumber:a,tabIndex:De===kt.key?0:-1,onToggle:F,onFocus:B}),ge&&ne.default.createElement("div",{ref:Ve,style:R},S?.(kt)))}))}),e.length===0&&ne.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)"}},v||"[+] nothing failed in this group"),M&&ne.default.createElement("div",{style:{...En(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},gl)))}function n2e(e){let t=[];e.duration_ms!=null&&t.push(Bn(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${sn((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=mA(e);return r&&t.push(r),t.join(" \xB7 ")}function o2e({label:e,run:t,result:r,expects:n,running:o,evaluationId:a=null,linked:i=!1}){let{short:s}=w3(t,e),l=ne.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:e},s),u=(k,S)=>ne.default.createElement("div",{"data-testid":"scenario-result-detail","data-result-id":r?.id??void 0,"data-linked":i?"true":void 0,style:{background:"var(--color-card)",border:`1px solid ${i?"var(--color-info)":"var(--color-border-light)"}`,borderRadius:10,overflow:"hidden",minWidth:0,boxShadow:i?"0 0 0 1px var(--color-info)":void 0}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},l,S),ne.default.createElement("div",{style:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:10}},k));if(!r||!$l(r))return u(ne.default.createElement("span",{style:En(11)},o?"waiting for this replay\u2026":"not part of this run"),ne.default.createElement(ve,{tone:"muted"},o?"pending":"no result"));let c=Il(r),d=c?"success":"error",p=vR(r.tool_calls,n),f=r.diagnosis||{},m=f.judge||{},g=r.fault||(r.status==="errored"?"run_error":null),b=[f.summary,f.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",h=Object.entries(r.scores||{}),y=n2e(r),x=r.input_tokens!=null||r.output_tokens!=null?(r.input_tokens||0)+(r.output_tokens||0):null,v=[{key:"score",label:"Score",unit:c?"passed":"failed",value:r.score==null?null:oa(r.score),rank:c?"good":"poor"},{key:"time",label:"Time",unit:"to answer",value:r.duration_ms==null?null:Bn(r.duration_ms)},{key:"tokens",label:"Tokens",unit:x==null?null:`${sn(r.input_tokens||0)}\u2192${sn(r.output_tokens||0)}`,value:x==null?null:sn(x)},{key:"cost",label:"Cost",unit:r.judge_usage?.cost!=null?`judge ${kr(r.judge_usage.cost,{estimated:vA(r)})}`:"agent",value:r.cost==null?null:kr(r.cost,{estimated:gb(r)}),title:bR(r)}];return u(ne.default.createElement(ne.default.Fragment,null,ne.default.createElement(p3,{items:v,testId:"scenario-result-metrics"}),ne.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:U,fontSize:11}},ne.default.createElement($e,{size:10,color:"var(--color-text-muted)"},"tools"),ne.default.createElement(SR,{calls:p,empty:"none called",style:{display:"contents"}})),g&&ne.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"}},ne.default.createElement("span",{style:{fontFamily:U,fontWeight:700}},`[!] ${Gh(g)}`),b?` \u2014 ${b}`:"",m.suggested_tool?.name&&ne.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11}},`suggested tool: ${m.suggested_tool.name}${m.suggested_tool.description?` \u2014 ${m.suggested_tool.description}`:""}`),m.instruction_change&&ne.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${m.instruction_change}\u201D`)),r.output?ne.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):ne.default.createElement("div",{style:En(11)},"answer not retained for this run"),h.length>0&&ne.default.createElement("div",{style:{...En(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},h.map(([k,S])=>ne.default.createElement("span",{key:k},Gh(k)," ",ne.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},S==null?"skipped":oa(S)))))),ne.default.createElement(ne.default.Fragment,null,ne.default.createElement(ve,{tone:d,title:y||void 0},r.status),r.agent_run_id&&ne.default.createElement(bd,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:{marginLeft:"auto"}}),ne.default.createElement(Zu,{evaluationId:a,runId:t?.id,resultId:r.id,label:"copy link",testId:"scenario-result-copy-link",title:"Copy a link that opens this result, for a teammate in your organization",style:{padding:"0 4px",fontFamily:U,fontSize:11,...y||r.agent_run_id?{}:{marginLeft:"auto"}}})))}function ER({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0,markdownUrl:u=null,evaluationId:c=null,linkedResultId:d=null}){let p=x3(e,"tools"),f=n[e.key]||{},m=r.some(b=>f[b]),g=a||m;return ne.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"12px 12px 14px"},"data-testid":"scenario-drilldown"},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10,flexWrap:"wrap"}},ne.default.createElement("span",{style:En(11)},e.key),ne.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),ne.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},p.join(" or ")||"\u2014"),t&&m&&ne.default.createElement(Cs,{url:K2(u,{part:"scenario",scenario:e.key}),testId:"copy-scenario-markdown",title:"Copy this scenario \u2014 the prompt, expectations and each model's result \u2014 as Markdown",style:{marginLeft:"auto"}}),l&&ne.default.createElement("span",{style:{marginLeft:t&&m&&u?0:"auto",display:"flex",alignItems:"center",gap:14}},ne.default.createElement("button",{type:"button",onClick:b=>{b.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:U,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),ne.default.createElement(Jr,{onClick:()=>i?.(e),title:"Run only this scenario under the selected models"},"re-run scenario"))),e.notes&&ne.default.createElement("div",{style:{fontSize:12,fontStyle:"italic",color:"var(--color-text-secondary)",marginBottom:10}},e.notes),e.catalogChanged&&ne.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?g?ne.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(300px, 100%), 1fr))",gap:12}},r.map(b=>ne.default.createElement(o2e,{key:b,label:b,run:t,result:f[b],expects:p,running:o,evaluationId:c,linked:d!=null&&f[b]?.id===d}))):ne.default.createElement("div",{style:En(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):ne.default.createElement("div",{style:En(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function NR({items:e,columns:t=[],agentName:r,onNavigate:n,onOpenScenario:o,run:a=null,results:i=[],evaluation:s=null,runNumber:l=null,scenarios:u=[],onRerun:c=null,runnableFor:d=null,markdownUrl:p=null}){let f=w=>d?d(w):hf(w.scenario_keys||[],u),[m,g]=(0,ne.useState)("all"),b=t.length>1,h=b?m:"all",y=b?jJ(e,i,w=>Dl(a,w)):e,x=MD(y,h),v=b?LJ(y,t):{},k=w=>lR({item:w,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:iA(),labelFor:_=>Dl(a,_)}),S=w=>{let _=St((w.scenario_keys||[]).length,"scenario");if(w.kind==="instruction")return`${(w.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let A=Cd(w.models||[]);if(t.length<=1||A.length===0)return _;let O=A.length>=t.length?t.length===2?"both models":"all models":A.map(D=>Kn(D).short).join(", ");return`${_} \xB7 ${O}`};return ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},ne.default.createElement(Cs,{url:K2(p,{part:"fix_items",model:h}),label:h==="all"?"Copy What to fix as Markdown":`Copy What to fix for ${Kn(h).short} as Markdown`,testId:"copy-fixes-markdown",title:"Copy What to fix as Markdown, for the model the filter shows",style:{alignSelf:"flex-end"}}),b&&ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},ne.default.createElement("span",{style:En(11)},"for"),ne.default.createElement(In,{square:!0,mono:!0,selected:h==="all",onClick:()=>g("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(w=>ne.default.createElement(In,{key:w,square:!0,mono:!0,selected:h===w,onClick:()=>g(w),title:`Only what ${w} needs fixed`,testId:"fix-filter-model"},`${Kn(w).short} ${v[w]??0}`))),x.length===0&&ne.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${Kn(h).short}`),ne.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(320px, 100%), 1fr))",gap:12}},x.map((w,_)=>{let A=w.kind==="instruction",C=A?"info":"error",O=[],D=new Set;(w.tools||[]).forEach(P=>{let M=typeof P=="string"?P:P?.name;!M||D.has(M)||(D.add(M),O.push({name:M,note:typeof P=="object"&&(P.note||P.server?.name)||null}))});let H=w.server,j=H?.status==="enabled",Z=r||"the agent",N=c?f(w):null;return ne.default.createElement("div",{key:`${w.fault}-${_}`,"data-testid":"scenario-recommendation",style:{border:"1px solid var(--color-border)",borderRadius:10,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10,minWidth:0}},ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ne.default.createElement($a,{kind:A?"info":"fault"}),ne.default.createElement(ve,{tone:C},`${Gh(w.fault)}${w.count>1?` \xD7${w.count}`:""}`),o&&(w.scenario_keys||[]).length>0?ne.default.createElement("button",{type:"button",onClick:()=>o(w.scenario_keys),title:`Show ${(w.scenario_keys||[]).join(", ")} \u2014 the question, the answer and the tools it called`,style:{...En(11),background:"none",border:0,padding:0,cursor:"pointer",color:"var(--color-text-link, var(--color-text-primary))",textDecoration:"underline",textUnderlineOffset:2}},S(w)):ne.default.createElement("span",{style:En(11)},S(w))),w.recommendation&&ne.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},w.recommendation),w.quote&&ne.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",w.quote,"\u201D"),O.length>0&&ne.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},ne.default.createElement($e,{size:10,color:"var(--color-text-muted)"},w.tools_label||"tools"),ne.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},O.map(P=>ne.default.createElement("span",{key:P.name,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",fontFamily:U,fontSize:11,maxWidth:"100%"}},ne.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},P.name),P.note&&ne.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:P.note},P.note))))),H&&ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:12,color:"var(--color-text-cell)"}},ne.default.createElement("span",null,"served by"),ne.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},H.name||H.key),ne.default.createElement(ve,{tone:j?"success":"warning",size:10,style:{padding:"1px 6px"}},j?`enabled for ${Z}`:`${H.status||"unknown"} \xB7 not enabled for ${Z}`)),w.note&&ne.default.createElement("div",{style:{fontSize:12,lineHeight:"18px",color:"var(--color-text-secondary)",textWrap:"pretty"}},w.note),ne.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",paddingTop:2,flexWrap:"wrap"}},w.action?.path&&ne.default.createElement(ie,{size:"sm",onClick:()=>n?.(w.action.path)},w.action.label),w.action?.hint&&ne.default.createElement("span",{style:{...En(11),whiteSpace:"nowrap"}},w.action.hint),N&&(N.keys.length?ne.default.createElement(Jr,{onClick:()=>c(w,N),title:"Replay these scenarios under the models in the picker",testId:"fix-item-rerun"},`re-run ${St(N.keys.length,"scenario")}`):ne.default.createElement("span",{style:{...En(11),whiteSpace:"nowrap"},title:`${N.dropped.join(", ")} \xB7 disabled or no longer in the suite`,"data-testid":"fix-item-rerun-none"},"re-run \xB7 none enabled")),ne.default.createElement(db,{build:()=>k(w),style:{marginLeft:"auto"}}),ne.default.createElement(Cs,{text:w.markdown,testId:"copy-fix-markdown",title:"Copy this fix as Markdown, for an issue or a pull request"}),ne.default.createElement(d3,{item:w,evaluation:s,run:a})))})))}var TR=e=>{let{results:t,fix_items:r,...n}=e;return n},a2e={keys:[],dropped:[]},i2e={byKey:{},improved:0,regressed:0,errored:0},S3={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:U,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},Ef={border:"1px solid var(--color-border-light)",borderRadius:10},s2e=(e,t)=>e.size===t.size&&[...e].every(r=>t.has(r)),OR=()=>typeof localStorage<"u"?localStorage:null,PR=()=>typeof document<"u"&&document.visibilityState==="hidden";function k3({evaluation:e,modelProviders:t,onChanged:r,onDelete:n,deleting:o=!1,initialRunId:a=null,initialResultId:i=null,onRunSelected:s}){let l=e.id,u=e.agent?.name||"Agent",[c,d]=(0,ye.useState)(!1),[p,f]=(0,ye.useState)(null),[m,g]=(0,ye.useState)(e.scenarios||[]),[b,h]=(0,ye.useState)(e.scenario_groups||[]),[y,x]=(0,ye.useState)(e.latest_run?[e.latest_run]:[]),[v,k]=(0,ye.useState)(null),[S,w]=(0,ye.useState)(a??e.latest_run?.id??null),[_,A]=(0,ye.useState)({}),[C,O]=(0,ye.useState)({}),[D,H]=(0,ye.useState)(null),[j,Z]=(0,ye.useState)((e.compare_models||[]).join(", ")),N=(0,ye.useMemo)(()=>t===void 0?[]:t??Tw,[t]),P=Ic(N),M=(0,ye.useMemo)(()=>rb(P,{providers:N}),[P,N]),[I,$]=(0,ye.useState)(null),[T,q]=(0,ye.useState)(!1),[G,L]=(0,ye.useState)([]),[Y,K]=(0,ye.useState)(""),[pe,De]=(0,ye.useState)(!1),[se,be]=(0,ye.useState)(""),[ue,R]=(0,ye.useState)(null),[we,Ce]=(0,ye.useState)(null),[z,ee]=(0,ye.useState)(!1),[ae,E]=(0,ye.useState)(!1),[W,F]=(0,ye.useState)(null),[B,Ee]=(0,ye.useState)(!0),[Ve,fe]=(0,ye.useState)(()=>{let ce=e.scenarios||[],et=(a==null||a===e.latest_run?.id)&&e.latest_run||null;return LD(ce,new Set(eb(et,ce)))}),[ze,Vt]=(0,ye.useState)(()=>new Map),[Ot,Gt]=(0,ye.useState)(()=>ZJ(OR())),[Se,tt]=(0,ye.useState)("suite"),dt=(0,ye.useRef)(null),zt=(0,ye.useRef)(null),Gr=(0,ye.useRef)(null),yo=(0,ye.useRef)(new Map),Hi=(0,ye.useRef)(new Map),fi=(0,ye.useRef)({}),Ea=(0,ye.useRef)(_),Fl=(0,ye.useRef)(S),kt=(0,ye.useRef)(null),ge=yf(dt),nt=ge-HJ,it=ge===0||nt>=qJ,Yt=ge===0?0:nt-(it?DD+$D:0),Hr=Ot??"steps",Fo=Yt===0||Yt>=GJ,ao=(0,ye.useCallback)(async()=>{let ce=await fetch(`/api/evaluations/${l}/scenarios`);if(!ce.ok)return;let et=await ce.json();g(et.scenarios||[]),h(et.groups||[])},[l]),da=(0,ye.useCallback)(async()=>{try{let ce=await fetch(`/api/evaluations/${l}`);if(!ce.ok)return f(`Could not load this suite (HTTP ${ce.status})`),null;let xt=(await ce.json()).evaluation||{};return g(xt.scenarios||[]),h(xt.scenario_groups||[]),x(xt.runs||[]),k(Number.isFinite(xt.run_count)?xt.run_count:null),f(null),xt}catch(ce){return f(`Could not load this suite: ${ce.message}`),null}finally{d(!0)}},[l]);Rs(()=>{Ea.current=_,Fl.current=S});let io=(0,ye.useCallback)(ce=>{if(!ce)return Promise.resolve(null);if(yo.current.has(ce))return yo.current.get(ce);let et=(async()=>{try{let xt=await fetch(`/api/evaluations/${l}/runs/${ce}`);if(!xt.ok)return O(il=>({...il,[ce]:`HTTP ${xt.status}`})),null;let lr=(await xt.json()).run;if(!lr)return O(il=>({...il,[ce]:"no run in the response"})),null;O(il=>{if(!(ce in il))return il;let{[ce]:Ps,...$d}=il;return $d});let Wo=Ea.current[lr.id],{results:qf,changed:nc}=uQ(Wo?.results,lr.results);if(!(!!Wo&&!nc&&Wo.status===lr.status&&Wo.completed_at===lr.completed_at&&(Wo.fix_items?.length??0)===(lr.fix_items?.length??0))){let il=TR(lr);A(Ps=>({...Ps,[lr.id]:{...lr,results:qf}})),x(Ps=>Ps.some($d=>$d.id===lr.id)?Ps.map($d=>$d.id===lr.id?{...$d,...il}:$d):Ps),H(Ps=>Ps&&Ps.id===lr.id?{...Ps,...il}:Ps)}return lr}catch(xt){return O(Xt=>({...Xt,[ce]:xt.message})),null}finally{yo.current.delete(ce)}})();return yo.current.set(ce,et),et},[l]),pa=ce=>{H(TR(ce)),w(ce.id),F(null)};(0,ye.useEffect)(()=>{let ce=!1;return(async()=>{let et=await da();if(ce)return;let xt=et?.runs?.[0]?.id??null,Xt=!!(a&&et?.runs?.some(nc=>nc.id===a));if(a&&!Xt){let nc=await io(a);if(ce)return;if(nc){pa(nc);return}}let lr=Xt?a:null,Wo=Fl.current,qf=lr||(Wo&&et?.runs?.some(nc=>nc.id===Wo)?Wo:xt);w(qf),qf&&io(qf)})(),()=>{ce=!0}},[da,io]);let ec=e.latest_run?.id??null;(0,ye.useEffect)(()=>{!ec||y.some(ce=>ce.id===ec)||da()},[ec,y,da]);let Wl=_[S]||y.find(ce=>ce.id===S)||(D?.id===S?D:null),Na=y[0]||null,Id=ce=>{let et=y.findIndex(Xt=>Xt.id===ce);if(et<0)return null;let xt=new Set(Af(y[et],[],e));return y.slice(et+1).find(Xt=>Xt.status==="complete"&&Af(Xt,[],e).some(lr=>xt.has(lr)))||null},hn=Ad(Wl)?Wl.id:Ad(Na)?Na.id:null;(0,ye.useEffect)(()=>{if(!hn)return;let ce=!1,et=()=>lQ(Ea.current[hn]?.results?.length??0),xt=lr=>{clearTimeout(kt.current),kt.current=setTimeout(async()=>{if(ce||PR())return;let Wo=null;try{Wo=await io(hn)}catch{Wo=null}if(!ce){if(Wo&&!Ad(Wo)){await da(),r?.();return}xt(et())}},lr)},Xt=()=>{document.visibilityState==="visible"&&xt(0)};return PR()||xt(et()),typeof document<"u"&&document.addEventListener("visibilitychange",Xt),()=>{ce=!0,clearTimeout(kt.current),typeof document<"u"&&document.removeEventListener("visibilitychange",Xt)}},[hn,io,da,r]);let zf=(0,ye.useCallback)(async()=>{try{let ce=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!ce.ok)return;let et=await ce.json(),xt=Q2(et.sandboxes);L(xt),K(Xt=>R2(Xt,xt))}catch{}},[]);(0,ye.useEffect)(()=>{zf()},[zf]);let ly=Sd(j),tc=async ce=>{q(!0),$(null);try{let et=await fetch(`/api/evaluations/${l}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(BJ(ce,ly,Y))}),xt=await et.json().catch(()=>({}));if(!et.ok)throw xt.code==="sandbox_refused"&&zf(),new Error((xt.errors||[xt.error]).filter(Boolean).join(", ")||"Run failed to start");let Xt=xt.run;x(lr=>[Xt,...lr.filter(Wo=>Wo.id!==Xt.id)]),k(lr=>lr==null?null:lr+1),A(lr=>({...lr,[Xt.id]:{...Xt,results:[]}})),w(Xt.id),F(null),Ee(!0),tt("suite"),r?.()}catch(et){$(et.message)}finally{q(!1)}},Bb=ce=>[ce,Id(ce)?.id,Na?.id,S].slice(0,VJ),uy=ce=>{w(ce),F(null),A(et=>UD(et,Bb(ce))),_[ce]||io(ce)},Bf=ce=>{uy(ce.id),s?.(ce.id)};(0,ye.useEffect)(()=>{if(!a||a===S)return;if(y.some(et=>et.id===a)||D?.id===a){uy(a);return}if(!c)return;let ce=!1;return(async()=>{let et=await io(a);ce||!et||(A(xt=>UD(xt,Bb(et.id))),pa(et))})(),()=>{ce=!0}},[a]);let Fb=async ce=>{ce.id&&(await fetch(`/api/evaluations/${l}/scenarios/${ce.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:ce.enabled===!1}})}),await ao())},Wb=async()=>{R(null);let ce=await fetch(`/api/evaluations/${l}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:se})}),et=await ce.json().catch(()=>({}));if(!ce.ok){R((et.errors||[et.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}g(et.scenarios||[]),h(et.groups||[]),De(!1),r?.()},Ye=Wl,Ta=!!Ye&&!Array.isArray(Ye.results),cy=Ye?C[Ye.id]:null,Eo=(0,ye.useMemo)(()=>(Ye?.results||[]).filter(ce=>ce&&ce.scenario_key),[Ye]),Ff=Af(Ye,Eo,e).join("\0"),fa=(0,ye.useMemo)(()=>Ff?Ff.split("\0"):[],[Ff]),Oa=(0,ye.useMemo)(()=>WD(Eo,ce=>Dl(Ye,ce),fi.current),[Eo,Ye]);Rs(()=>{fi.current=Oa});let Wf=(0,ye.useMemo)(()=>new Set(eb(Ye,m)),[Ye,m]),ol=Ye&&Ye.status!=="failed"?Id(Ye.id):null,rc=ol?_[ol.id]?.results:null;(0,ye.useEffect)(()=>{ol&&!rc&&io(ol.id)},[ol,rc,io]);let Uf=(0,ye.useMemo)(()=>rc?WD(rc,ce=>Dl(ol,ce)):null,[rc,ol]),Hf=(0,ye.useMemo)(()=>Uf&&!Ta?AJ(Oa,Uf,fa):i2e,[Uf,Ta,Oa,fa]),Pa=Ad(Ye),dy=Yh(Ye,fa,m),Ul=yR(Ye,Eo,fa,m),Hl=(0,ye.useCallback)(ce=>Wf.has(ce.key)||!!Oa[ce.key],[Wf,Oa]),vo=(0,ye.useMemo)(()=>pJ(m,Oa,Hi.current),[m,Oa]),Ts=(0,ye.useMemo)(()=>{let ce={};return vo.forEach(et=>{let xt=Hl(et);ce[et.key]=Ta?xt?"loading":"skipped":Ye?X2(Oa[et.key],fa,{inRun:xt,running:Pa}):"none"}),ce},[vo,Hl,Oa,fa,Ye,Ta,Pa]),py=(0,ye.useCallback)(ce=>Ts[ce.key],[Ts]),fy=(0,ye.useMemo)(()=>Pa?QJ(vo.map(ce=>({key:ce.key,step:Ts[ce.key]}))):null,[Pa,vo,Ts]),Dd=(0,ye.useCallback)(ce=>fa.some(et=>{let xt=Oa[ce.key]?.[et];return $l(xt)&&!Il(xt)}),[fa,Oa]),Ub=(0,ye.useMemo)(()=>vo.filter(Dd).length,[vo,Dd]),al=!!Ye&&Ye.status==="complete"&&!Ta,Hb=(0,ye.useMemo)(()=>eQ(vo.filter(ce=>!we||(ce.group||"")===we).filter(ce=>!z||Dd(ce)).filter(ce=>!ae||Hf.byKey[ce.key]),py,al?Se:"suite"),[vo,we,z,Dd,ae,Hf,py,al,Se]),qb=new Set(vo.filter(Hl).map(ce=>ce.group).filter(Boolean)).size,my=Eo.filter($l).length,gy=Eo.filter(ce=>$l(ce)&&!Il(ce)).length,eE=dy*Math.max(fa.length,1),le=new Set(Eo.filter(ce=>$l(ce)&&!Il(ce)).map(ce=>ce.scenario_key)).size,Le=Ye?.scores?._verdict||null,ct=Object.prototype.hasOwnProperty.call(Ye?.scores||{},"_judge_label")?Ye.scores._judge_label||"rules":Le?.judge&&Le.judge!=="pass rate"?Le.judge:e.judge_model||"rules",Bt=(0,ye.useMemo)(()=>Ye?xR(Ye,Eo):[],[Ye,Eo]),On=(0,ye.useMemo)(()=>Ta?a2e:WJ(Eo,m),[Ta,Eo,m]),Ka=Object.keys(Ye?.scores||{}).filter(ce=>!ce.startsWith("_")),so=(0,ye.useCallback)(ce=>hR(ce,ce.id===Ye?.id?Eo:(_[ce.id]?.results||[]).filter(et=>et&&et.scenario_key),e,m),[Ye,Eo,_,e,m]),mi=(0,ye.useCallback)((ce,et,xt)=>{if(!et||et.status!=="complete"||ce.status!=="complete")return Z0(ce,et,{olderNumber:xt});let Xt=Af(ce,ce.id===Ye?.id?Eo:[],e),lr=Af(et,[],e),Wo=Yh(et,lr,m)===Yh(ce,Xt,m)&&lr.length===Xt.length;return Z0(ce,et,{olderNumber:xt,comparable:Wo})},[Ye,Eo,e,m]),Os=(0,ye.useMemo)(()=>oA({runs:y,runCount:v,evaluation:e,agentName:u,selectedId:Ye?.id??null,previousRun:e.previous_run,barsFor:so,deltaFor:mi}),[y,v,e,u,Ye?.id,so,mi]),ql=Os.find(ce=>ce.run.id===Ye?.id)||null,tE=Os.find(ce=>ce.run.id===ol?.id)?.number??null,mj=ql?.number??(Number.isFinite(Ye?.number)?Ye.number:null),gj=ql?.bars??(Ye?so(Ye):[]),hj=mf(y,v),Pre=!!Ye&&Na?.id===Ye.id,Mre=Ad(Na)&&Na.id!==Ye?.id?Na:null,rE=c||m.length>0,nE=rE?m.length:e.scenario_count??0,yj=rE?m.filter(ce=>ce.enabled!==!1&&(!we||(ce.group||"")===we)).length:nE,Ire=`Run ${St(yj,"scenario")}${ly.length?` \xD7 ${St(ly.length,"model")}`:""}`,Dre=`@${u} \xB7 ${St(nE,"scenario")}${b.length?` in ${St(b.length,"group")}`:""} \xB7 ${p?"not loaded":c?y.length?St(hj,"run"):"no runs yet":"loading\u2026"}`,Kb=Ye&&Ye.status==="complete"?`/evaluations/${l}/runs/${Ye.id}/report`:null,oE=Kb?rt(Th(Kb).markdown):null,$re=[...new Set([...b,...vo.map(ce=>ce.group).filter(Boolean)])],jre=[{label:`All ${vo.length||nE}`,value:null}].concat($re.map(ce=>({label:rE?`${ce} ${vo.filter(et=>et.group===ce).length}`:ce,value:ce}))),hy=(0,ye.useMemo)(()=>{let ce=[...new Set(vo.map(et=>et.group||""))];return ce.some(Boolean)?ce:[]},[vo]),Lre=hy.some(ce=>!Ve.has(ce)),aE=vo.length===0,zre=ae?"[ ] nothing changed in this group":z?"[+] nothing failed in this group":"[ ] no scenarios";(0,ye.useEffect)(()=>{Ee(!0),Vt(new Map),tt("suite"),F(null)},[Ye?.id]),(0,ye.useEffect)(()=>{fe(LD(m,Wf))},[Ye?.id,c]);let vj=(0,ye.useRef)(Ye?.id??null);(0,ye.useEffect)(()=>{if(vj.current!==(Ye?.id??null)){vj.current=Ye?.id??null;return}!Pa||!B||fe(ce=>{let et=new Set(ce);return hy.forEach(xt=>{if(ze.has(xt))return;let Xt=vo.filter(lr=>(lr.group||"")===xt&&Hl(lr));Xt.length&&(Xt.every(lr=>Ts[lr.key]==="passed")&&et.add(xt),Xt.some(lr=>lr.key===fy)&&et.delete(xt))}),s2e(et,ce)?ce:et})},[Ye?.id,fy,my,B,Pa]);let Bre=ce=>{let et=Ve.has(ce);fe(xt=>{let Xt=new Set(xt);return et?Xt.delete(ce):Xt.add(ce),Xt}),Vt(xt=>new Map(xt).set(ce,et))},xj=ce=>{fe(new Set(ce?[]:hy)),Vt(new Map(hy.map(et=>[et,ce])))},Fre=ce=>{Gt(ce),JJ(OR(),ce)},Wre=(0,ye.useCallback)(ce=>{F(et=>et===ce?null:ce),Ee(!1)},[]),Ure=(0,ye.useCallback)(()=>Ee(!1),[]),iE=(0,ye.useCallback)(ce=>{let et=Array.isArray(ce)?ce[0]:ce;if(!et)return;let xt=vo.find(Xt=>Xt.key===et)?.group||"";Ce(null),ee(!1),E(!1),fe(Xt=>{if(!Xt.has(xt))return Xt;let lr=new Set(Xt);return lr.delete(xt),lr}),Vt(Xt=>new Map(Xt).set(xt,!0)),F(et),Ee(!1),requestAnimationFrame(()=>{let Xt=zt.current;Xt&&(Xt.scrollIntoView({behavior:"smooth",block:"start"}),Xt.querySelector(`[data-scenario-key="${hA(et)}"]`)?.focus({preventScroll:!0}))})},[vo]),bj=(0,ye.useRef)(null);(0,ye.useEffect)(()=>{if(!i||!c||!Ye||Ye.id!==a||!Array.isArray(Ye.results))return;let ce=`${Ye.id}:${i}`;if(bj.current===ce)return;let et=Ye.results.find(xt=>xt?.id===i);et?.scenario_key&&(bj.current=ce,iE(et.scenario_key))},[i,a,c,Ye,iE]);let Hre=()=>{Gr.current?.scrollIntoView({behavior:"smooth",block:"start"}),Gr.current?.focus({preventScroll:!0})},qre=()=>{Ye&&(O(ce=>{let{[Ye.id]:et,...xt}=ce;return xt}),io(Ye.id))},wj=()=>{Na&&Bf(Na)},Sj=aE&&p?ye.default.createElement(tn,{style:Ef},"[!] suite not loaded"):aE&&!c?ye.default.createElement(tn,{style:Ef},"loading\u2026"):aE?ye.default.createElement(tn,{style:Ef},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):S!=null&&!Ye?ye.default.createElement(tn,{style:Ef},"loading\u2026"):cy&&!Array.isArray(Ye.results)?ye.default.createElement(tn,{style:Ef},`[!] results not loaded (${cy}) \xB7 `,ye.default.createElement(Jr,{onClick:qre,title:"Fetch this run's results again",testId:"suite-detail-retry"},"retry")):ye.default.createElement(AR,{rows:Hb,columns:Ye?fa:[],run:Ye,resultsByKey:Oa,changesByKey:Hf.byKey,comparedNumber:tE,runKeys:Wf,running:Pa,loading:Ta,stepsByKey:Ts,currentKey:fy,bars:gj,detail:Hr,showKey:Fo,collapsedGroups:Ve,onToggleGroup:Bre,openKey:W,onToggleRow:Wre,following:B,onStopFollowing:Ure,emptyLabel:zre,maxHeight:jD,boxRef:zt,renderDetail:ce=>ye.default.createElement(ER,{scenario:ce,run:Ye,columns:Ye?fa:[],resultsByKey:Oa,running:Pa,inRun:Hl(ce),canMutate:!ce.orphan,onRerun:et=>tc({keys:[et.key]}),onToggleEnabled:Fb,markdownUrl:oE,evaluationId:l,linkedResultId:Ye&&Ye.id===a?i:null})}),kj={rows:Os,runs:y,runCount:v,evaluation:e,agentName:u,selectedId:Ye?.id??null,onOpen:Bf,noteFor:ce=>ID(ce,m),linkedRun:D,linkedBars:D&&so(D)};return ye.default.createElement("div",{ref:dt,style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel","data-layout":it?"rail":"strip"},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Dre),ye.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement(ie,{size:"sm",onClick:()=>{be(LQ(m)),R(null),De(!pe)}},pe?"Cancel":"Edit scenarios"),ye.default.createElement(ob,{value:j,onChange:Z,models:M,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:{...S3,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),G.length>0&&ye.default.createElement("select",{value:Y,onChange:ce=>K(ce.target.value),style:{...S3,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"},ye.default.createElement("option",{value:""},"Run against: agent's own tools"),G.map(ce=>ye.default.createElement("option",{key:ce.value,value:ce.value},`Run against sandbox ${ce.label}`))),ye.default.createElement(ie,{variant:"primary",size:"sm",disabled:T||!c||yj===0,onClick:()=>tc(we?{group:we}:{}),testId:"suite-run-button"},T?"Starting\u2026":Ire))),(p||I)&&ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},p||I),pe&&ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},ye.default.createElement("textarea",{value:se,onChange:ce=>be(ce.target.value),rows:Math.min(Math.max(m.length+4,6),24),style:{...S3,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},ye.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",ye.default.createElement("code",{style:{fontFamily:U}},"# Heading")," starts a group; ",ye.default.createElement("code",{style:{fontFamily:U}},"| tools: a, b"),", ",ye.default.createElement("code",{style:{fontFamily:U}},"| contains: x"),", ",ye.default.createElement("code",{style:{fontFamily:U}},"| not_contains: y")," set expectations. Keep a scenario's ",ye.default.createElement("code",{style:{fontFamily:U}},"key")," to keep its history."),ye.default.createElement(ie,{variant:"primary",size:"sm",onClick:Wb},"Save scenarios")),ue&&ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},ue)),Ye&&ye.default.createElement(RD,{run:Ye,runNumber:mj,latestNumber:hj,isLatest:Pre,runningElsewhere:Mre,agentName:u,scenarioCount:dy,groupCount:qb,columns:fa,judgedBy:ct,bars:gj,delta:ql?.delta??null,version:ql?.version??null,totals:Ul,settledCount:my,settledFailed:gy,expectedResults:eE,running:Pa,loading:Ta,spend:Bi(Ye),fixSummary:{items:Bt.length,faults:Math.max(Ul.total-Ul.passed,0),scenarios:le},selectionLabel:ID(Ye,m),sandboxLabel:R0(Ye),reportPath:Kb,rerun:On,evaluationId:l,onSelectLatest:wj,onWatchLatest:wj,onJumpToFix:Hre,onRerunFailed:()=>tc({keys:On.keys}),onRunAgain:()=>tc(UJ(Ye,m))}),Ye&&!Pa&&ye.default.createElement(a3,{run:Ye}),!it&&ye.default.createElement(JD,{layout:"strip",limit:_J,...kj}),ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ye.default.createElement($e,{style:{marginRight:4}},"Scenarios"),jre.map(ce=>ye.default.createElement(In,{key:ce.label,selected:we===ce.value,onClick:()=>Ce(ce.value)},ce.label)),ye.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ye.default.createElement(In,{square:!0,mono:!0,selected:Hr==="tools",onClick:()=>Fre(Hr==="tools"?"steps":"tools"),style:{background:"transparent"},title:"Show the tools each replay called and what each cell cost",testId:"suite-detail-toggle"},Hr==="tools"?"[x] tools":"[ ] tools"),ye.default.createElement(In,{square:!0,mono:!0,selected:z,onClick:()=>ee(!z),style:{background:"transparent"},title:"Hide scenarios that passed on every model",testId:"suite-failed-only"},`${z?"[x]":"[ ]"} failed only${!Ta&&Ub?` \xB7 ${Ub}`:""}`),Uf&&ye.default.createElement(In,{square:!0,mono:!0,selected:ae,onClick:()=>E(!ae),style:{background:"transparent"},title:`Show only scenarios that passed or failed differently from run #${tE}: \u25B2 now passes, \u25BC now fails, \u25CB errored this time`,testId:"suite-changed-only"},`${ae?"[x]":"[ ]"} changed vs #${tE}${EJ(Hf)}`),Ye&&Ye.status!=="failed"&&(al?ye.default.createElement(In,{square:!0,mono:!0,selected:Se==="failed-first",onClick:()=>tt(Se==="failed-first"?"suite":"failed-first"),style:{background:"transparent"},title:"Groups with the most failures first, and failed scenarios first within each",testId:"suite-order-toggle"},Se==="failed-first"?"[x] failed first":"[ ] failed first"):ye.default.createElement(In,{square:!0,mono:!0,disabled:!0,style:{background:"transparent"},title:"applies once the run completes",testId:"suite-order-toggle"},"[ ] failed first")),Pa&&ye.default.createElement(In,{square:!0,mono:!0,selected:B,onClick:()=>Ee(ce=>!ce),style:{background:"transparent"},title:"Keep the step being replayed in view as the run goes",testId:"suite-follow"},B?"[x] follow":"[ ] follow"),hy.length>1&&(Lre?ye.default.createElement(Jr,{onClick:()=>xj(!1),title:"Fold every group",testId:"suite-collapse-all"},"collapse all"):ye.default.createElement(Jr,{onClick:()=>xj(!0),title:"Unfold every group",testId:"suite-collapse-all"},"expand all")))),it?ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:`${DD}px minmax(0, 1fr)`,gap:$D,alignItems:"start"}},ye.default.createElement(JD,{layout:"rail",maxHeight:jD,...kj}),Sj):Sj),Ye&&Ye.status!=="failed"&&ye.default.createElement(kR,{run:Ye,columns:fa,results:Eo,scenarioCount:dy,judgedBy:ct,verdict:Le,evaluation:e,onJudgeChanged:r,markdownUrl:oE}),Ye&&Ye.status!=="failed"&&ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},ye.default.createElement("div",{ref:Gr,tabIndex:-1,style:{display:"flex",alignItems:"baseline",gap:10,outline:"none"},"data-testid":"suite-fix-heading"},ye.default.createElement($e,null,"What to fix"),ye.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},Ta?"loading\u2026":`${St(Bt.length,"item")} \xB7 ${St(Math.max(Ul.total-Ul.passed,0),"fault")} across ${St(le,"scenario")}`)),Ta?ye.default.createElement(tn,{style:{...Ef,padding:"14px 12px"}},"[ ] loading\u2026"):Bt.length>0?ye.default.createElement(NR,{items:Bt,columns:fa,agentName:u,onNavigate:st,onOpenScenario:iE,run:Ye,results:Eo,evaluation:e,runNumber:mj,scenarios:m,onRerun:ce=>tc({keys:hf(ce.scenario_keys||[],m).keys}),runnableFor:ce=>hf(ce.scenario_keys||[],m),markdownUrl:oE}):ye.default.createElement(tn,{style:{...Ef,padding:"14px 12px"}},Pa?"[ ] scoring\u2026":"[+] nothing to fix")),ye.default.createElement(_f,{evaluation:e,run:Ye,keys:Ka.length?Ka:null,spend:Bi(Ye),spendTotal:!0,reportPath:Kb,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var at=X(J());var _3=[{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}}],MR=[{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}}],Ju={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)"},IR={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},l2e={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function C3({agents:e,agentId:t,judgeProvider:r,judgeProviderError:n=!1,modelProviders:o,onCreated:a,onCancel:i}){let[s,l]=(0,at.useState)({agent_id:t?String(t):"",name:"",sample_size:20,criteria:_3.map(C=>C.key),containsPattern:"",llmJudgePrompt:"",judgeKind:"manual",judgeModel:"",compareModels:"",scenariosText:"",compareRestore:new Map}),[u,c]=(0,at.useState)(null),[d,p]=(0,at.useState)(!1),f=(0,at.useId)(),m=(0,at.useMemo)(()=>o===void 0?[]:o??Tw,[o]),g=Ic(r&&!m.includes(r)?[...m,r]:m),b=c2e(s.agent_id),h=(0,at.useMemo)(()=>rb(g,{providers:m.length?m:r?[r]:[]}),[g,m,r]),y=!!s.scenariosText.trim(),x=(0,at.useMemo)(()=>y?rb(g,{providers:m}):b,[g,m,y,b]),v=C=>l(O=>({...O,...C})),k=C=>l(O=>{let D=!!C.trim();if(D===!!O.scenariosText.trim())return{...O,scenariosText:C};let{models:H,restore:j}=gQ(Sd(O.compareModels),g,{providers:m,qualify:D,restore:O.compareRestore});return{...O,scenariosText:C,compareModels:nb(H),compareRestore:j}}),S=(C,O)=>v({criteria:O?[...s.criteria,C]:s.criteria.filter(D=>D!==C)}),w=()=>{let C=[..._3,...MR].filter(O=>s.criteria.includes(O.key)).map(({key:O,type:D,config:H})=>({key:O,type:D,config:H}));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},_=async C=>{C.preventDefault(),p(!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:Sd(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:w(),scenarios_text:s.scenariosText.trim()||void 0}})}),D=await O.json().catch(()=>({}));if(!O.ok)throw new Error((D.errors||[D.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${O.status})`);a?.(D.evaluation)}catch(O){c(O.message)}finally{p(!1)}},A=C=>at.default.createElement("label",{key:C.key,style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--color-text-primary)"}},at.default.createElement("input",{type:"checkbox",checked:s.criteria.includes(C.key),onChange:O=>S(C.key,O.target.checked),style:{accentColor:"var(--color-accent-ui)"}}),C.label);return at.default.createElement(je,{testId:"new-evaluation-form"},at.default.createElement("form",{onSubmit:_,style:{display:"flex",flexDirection:"column",gap:16}},at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),at.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>v({agent_id:C.target.value}),style:{...Ju,width:"100%",opacity:t?.7:1}},!t&&at.default.createElement("option",{value:""},"Select agent\u2026"),e.map(C=>at.default.createElement("option",{key:C.id,value:C.id},C.name)))),at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"Name"),at.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>v({name:C.target.value}),placeholder:"Response Quality",style:{...Ju,width:"100%"}})),at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"Sample size"),at.default.createElement("input",{type:"number",min:"1",max:"100",value:s.sample_size,onChange:C=>v({sample_size:C.target.value}),style:{...Ju,width:"100%",fontFamily:U}}))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),at.default.createElement("select",{value:s.judgeKind,onChange:C=>v({judgeKind:C.target.value}),style:{...Ju,width:"100%"}},at.default.createElement("option",{value:"manual"},"Manual criteria"),at.default.createElement("option",{value:"judge_defined"},"Judge defines KPIs from agent goals"))),at.default.createElement("div",null,at.default.createElement($e,{as:"label",htmlFor:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),at.default.createElement(fu,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>v({judgeModel:C}),style:{...Ju,width:"100%",fontFamily:U,fontSize:12}}),r!==void 0&&at.default.createElement("p",{id:`${f}-judge-provider`,style:IR},u2e(r,n))),at.default.createElement("div",null,at.default.createElement($e,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),at.default.createElement(ob,{inputId:`${f}-compare`,describedBy:`${f}-compare-hint`,value:s.compareModels,onChange:C=>v({compareModels:C}),models:x,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Ju,width:"100%",fontFamily:U,fontSize:12}}),at.default.createElement("p",{id:`${f}-compare-hint`,style:IR},y?"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."))),at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"Scenarios (optional) \u2014 paste user messages to replay, one per line"),at.default.createElement("textarea",{value:s.scenariosText,onChange:C=>k(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:{...Zu,width:"100%",fontFamily:U,fontSize:12,lineHeight:"18px"}}),at.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. ",at.default.createElement("code",{style:{fontFamily:U}},"# Heading")," lines group related tasks so they can be run together; ",at.default.createElement("code",{style:{fontFamily:U}},"| tools: a, b")," names the tool a task should call.")),s.judgeKind==="judge_defined"?at.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."):at.default.createElement(at.default.Fragment,null,at.default.createElement("div",null,at.default.createElement(je,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},y3.map(A))),at.default.createElement("div",null,at.default.createElement(je,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},_R.map(A))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),at.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>v({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Zu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(je,{as:"label",style:{display:"block",marginBottom:6}},"LLM judge criterion (optional, needs provider credentials)"),at.default.createElement("input",{type:"text",value:s.llmJudgePrompt,onChange:C=>v({llmJudgePrompt:C.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Zu,width:"100%"}})))),u&&at.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},u),at.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},at.default.createElement(ie,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&at.default.createElement(ie,{onClick:i},"Cancel"))))}function t2e(e,t){return e?`An unpinned judge defaults to ${e2e[e]||e}. Pinning a model selects its provider.`: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 r2e(e){let[t,r]=(0,at.useState)([]);return(0,at.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 Ae=X(J());var n2e={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:U,fontSize:12,color:"var(--color-info)"},Co=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:U,fontSize:e,color:t,...r});function o2e({stats:e}){if(!e)return Ae.default.createElement("span",{style:Co()},"\u2014");if(e.skipped)return Ae.default.createElement("div",null,Ae.default.createElement("span",{style:Co(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Ae.default.createElement("div",{style:{...Co(),marginTop:2,textWrap:"pretty"},title:e.reason},U0(e.reason,90)));let t=Number(e.score),r=Fn[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${Jn(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${na(e.min)} \xB7 max ${na(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 ${zn(o.avg_duration_ms)}`)}return Ae.default.createElement("div",null,Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6}},Ae.default.createElement("span",{style:Co(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",na(t)),e.source==="telemetry"&&Ae.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:Co(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Ae.default.createElement("div",{style:{...Co(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function a2e({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>tR({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:R2()});return Ae.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}},Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ae.default.createElement(Ia,{kind:"fault"}),Ae.default.createElement(be,{tone:"error"},e.label),Ae.default.createElement("span",{style:Co()},e.scope)),Ae.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},e.text),e.chips?.length>0&&Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},Ae.default.createElement(je,{size:10,color:"var(--color-text-muted)"},e.chipsLabel),Ae.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},e.chips.map(a=>Ae.default.createElement("span",{key:a,style:{fontFamily:U,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&&Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:3}},e.details.map(a=>Ae.default.createElement("span",{key:a,style:Co(11,"var(--color-text-cell)",{textWrap:"pretty"})},a))),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",flexWrap:"wrap"}},e.action?.path&&Ae.default.createElement(ie,{size:"sm",onClick:()=>st(e.action.path)},e.action.label),e.action?.hint&&Ae.default.createElement("span",{style:{...Co(),whiteSpace:"nowrap"}},e.action.hint),Ae.default.createElement(ab,{build:o,style:{marginLeft:"auto"}})))}function x3({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,Ae.useState)("all"),[m,g]=(0,Ae.useState)(!1),b=(L,Y)=>Ae.default.createElement("button",{type:"button",onClick:Y,style:n2e},L),h=t.findIndex(L=>L.id===n),y=h>=0?t[h]:t[0],x=y?jh(y,Math.max(h,0),t,r):null,v=Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},b("Evaluations",l),Ae.default.createElement("span",{style:Co(12)},"/"),b(e?.name||"Evaluation",u),Ae.default.createElement("span",{style:Co(12)},"/"),Ae.default.createElement("span",{style:Co(12,"var(--color-text-primary)",{fontWeight:700})},y?`Run #${x}`:"Runs"));if(!e)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Ae.default.createElement("div",null,b("Evaluations",l)),Ae.default.createElement(Le,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!y)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},v,o?Ae.default.createElement("div",{className:"flex items-center justify-center h-64"},Ae.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):Ae.default.createElement(Le,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let k=q0(y),S=k.length?k:[null],w=Dh(y),_=L=>w.find(Y=>Y.label===L)||(L==null?w[0]:null),A=y.scores?._verdict,C=Array.isArray(y.scores?._missing_models)?y.scores._missing_models:[],O=Ih(y).map(([L,Y])=>({key:L,value:Y,criterion:H0(e,L)})),D=L=>O.filter(Y=>Ol(Y.criterion)===L).length,H=SD.filter(L=>D(L.id)>0),$=L=>S.some(Y=>{let K=df(L.value,Y);return K&&(K.skipped||K.score!=null&&K.score<.7)}),Z=O.filter(L=>(p==="all"||Ol(L.criterion)===p)&&(!m||$(L))),N=SD.map(L=>({...L,rows:Z.filter(Y=>Ol(Y.criterion)===L.id)})).filter(L=>L.rows.length),P=H2(e,{...y,number:x}),M=zi(y),I=_o(y.completed_at||y.created_at),j=y.status==="complete"&&y.samples_evaluated?` \xB7 ${Jn(y.samples_passed||0,y.samples_evaluated)} passed`:"",T={fontFamily:U,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"},G={padding:"7px 12px",verticalAlign:"middle"};return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},v,Ae.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Ae.default.createElement("div",{style:{minWidth:0}},Ae.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},`Run #${x}`),Ae.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},`${e.name} \xB7 ${I} \xB7 @${e.agent?.name||"agent"} \xB7 ${cf(e,y)}${j}`)),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((L,Y)=>Ae.default.createElement(In,{key:L.id,square:!0,mono:!0,selected:L.id===y.id,onClick:()=>i?.(L),title:`${L.status} \xB7 ${_o(L.completed_at||L.created_at)}`},`#${jh(L,Y,t,r)}`)),Ae.default.createElement(Xu,{evaluationId:e.id,runId:y.id,testId:"run-copy-link",title:"Copy a link that opens this run, for a teammate in your organization"}),Ae.default.createElement(ie,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Ae.default.createElement(FD,{spend:M,judgedBy:Mh(e,y)}),y.status==="failed"?Ae.default.createElement(Le,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Ae.default.createElement("span",{style:Co(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},y.error_message)):y.status!=="complete"?Ae.default.createElement(Le,{"data-testid":"run-pending",padding:"14px 16px"},Ae.default.createElement("span",{style:Co(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${y.status}`),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6}},"Scores appear once the run completes.")):Ae.default.createElement(Ae.default.Fragment,null,k.length>1&&Ae.default.createElement(ob,{rows:q2(y,{columns:k}),unit:"interaction",judgedBy:A?.judge||null,judgeEstimated:M?.judge?.estimated??!0}),Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(260px, 100%), 1fr))",gap:12}},S.map(L=>{let Y=mJ(y,L),K=_(L),pe=K?.samples??(L==null?y.samples_evaluated:null),De=K?.passed??(L==null?y.samples_passed:null),se=[];return Y.below>0&&se.push({tone:"error",text:`below pass mark \xD7${Y.below}`}),Y.skipped>0&&se.push({tone:"warning",text:`skipped \xD7${Y.skipped}`}),Ae.default.createElement(nb,{key:L||"all",label:L,short:L?qn(L).short:"all samples",provider:K?.provider||(L?qn(L).provider:null)||null,winner:!!A?.winner&&A.winner===L,passed:De,total:pe,avgScore:Y.avg,criteria:{cleared:Y.cleared,scored:Y.scored},latencyMs:K?.avg_duration_ms,inputTokens:K?.input_tokens,outputTokens:K?.output_tokens,cost:K?.cost,perInteraction:pf(K?.cost,K?.priced),estimated:K?.estimated??!1,unit:"interaction",badges:se})}))),(A||C.length>0)&&Ae.default.createElement(Le,{padding:"12px 16px",style:{display:"flex",flexDirection:"column",gap:6},"data-testid":"run-verdict"},A&&Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ae.default.createElement(je,null,"Verdict"),A.judge&&Ae.default.createElement("span",{style:Co()},`judged by ${A.judge}`)),Ae.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},Ae.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:U,fontSize:12}},A.winner),A.rationale?` \xB7 ${A.rationale}`:"")),C.length>0&&Ae.default.createElement("span",{style:Co(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${C.join(", ")}`)),Ae.default.createElement(Le,{padding:0,style:{overflow:"hidden"},testId:"criteria-matrix"},Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",flexWrap:"wrap"}},Ae.default.createElement(je,{style:{marginRight:4}},"Criteria"),Ae.default.createElement(In,{selected:p==="all",onClick:()=>f("all")},`All ${O.length}`),H.map(L=>Ae.default.createElement(In,{key:L.id,selected:p===L.id,onClick:()=>f(L.id)},`${L.label} ${D(L.id)}`)),Ae.default.createElement(In,{square:!0,mono:!0,selected:m,onClick:()=>g(L=>!L),style:{marginLeft:"auto",background:"transparent"},title:"Hide criteria every model cleared"},m?"[x] failed only":"[ ] failed only")),Ae.default.createElement("div",{style:{overflowX:"auto"}},Ae.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ae.default.createElement("thead",null,Ae.default.createElement("tr",{style:{background:"var(--color-muted)"}},Ae.default.createElement("th",{style:{...T,width:"34%"}},"Criterion"),Ae.default.createElement("th",{style:T},"Expects"),S.map(L=>Ae.default.createElement("th",{key:L||"score",style:T},L?Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},qn(L).short),(_(L)?.provider||qn(L).provider)&&Ae.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},_(L)?.provider||qn(L).provider)):"Score")))),Ae.default.createElement("tbody",null,N.map(L=>Ae.default.createElement(Ae.default.Fragment,{key:L.id},Ae.default.createElement("tr",{style:{background:"var(--color-background)",borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{style:G},Ae.default.createElement("span",{style:{fontWeight:600,fontSize:13,color:"var(--color-text-primary)"}},L.label)),Ae.default.createElement("td",{style:G},Ae.default.createElement("span",{style:Co()},`${L.rows.length} ${L.rows.length===1?"criterion":"criteria"}`)),S.map(Y=>{let K=L.rows.filter(se=>{let xe=df(se.value,Y);return xe&&xe.score!=null}),pe=K.filter(se=>df(se.value,Y).score>=.7).length,De=K.length&&pe===K.length?"var(--color-success-text)":pe===0&&K.length?"var(--color-error-text)":"var(--color-text-cell)";return Ae.default.createElement("td",{key:Y||"score",style:G},Ae.default.createElement("span",{style:Co(11,De,{fontWeight:600})},K.length?`${Jn(pe,K.length)} passed`:"\u2014"))})),L.rows.map(Y=>Ae.default.createElement("tr",{key:Y.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{style:q},Ae.default.createElement("div",{style:Co()},Y.key),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},F2(Y.criterion))),Ae.default.createElement("td",{style:q},Ae.default.createElement("span",{style:{fontFamily:U,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:Ph(Y.criterion)},U0(Ph(Y.criterion),40))),S.map(K=>Ae.default.createElement("td",{key:K||"score",style:q},Ae.default.createElement(o2e,{stats:df(Y.value,K)}))))))),N.length===0&&Ae.default.createElement("tr",{style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{colSpan:2+S.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.")))))),Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Ae.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Ae.default.createElement(je,null,"What to fix"),Ae.default.createElement("span",{style:Co()},P.length?St(P.length,"item"):"nothing")),P.length?Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(320px, 100%), 1fr))",gap:12}},P.map(L=>Ae.default.createElement(a2e,{key:L.kind,item:L,evaluation:e,run:y,number:x}))):Ae.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${Sw(.7)}) and nothing was skipped.`)),Ae.default.createElement(Sf,{evaluation:e,run:y,spend:M,onDelete:c,deleting:d}))}var jl=X(J());function b3({rows:e=[],columns:t=[],testId:r="model-leaderboard"}){if(e.length<2)return null;let n=t.length>1?t.filter(a=>e.some(i=>i.byEvaluation?.[a.id]?.total>0)):[],o=[{key:"passed",label:"Passed",unit:"Pooled",better:"higher",band:"none",align:"left",width:180,sortable:!0,cell:a=>jl.default.createElement(du,{passed:a.passed,total:a.total,color:TQ(a.ratio),valueWidth:56})},{key:"ratio",label:"Rate",unit:"Pass",better:"higher",band:"threshold",thresholds:Fh,format:a=>Ds(a)},...n.map(a=>({key:`eval:${a.id}`,label:a.name,unit:"Pass rate",title:a.name,better:"higher",band:"threshold",thresholds:Fh,value:i=>{let s=i.byEvaluation?.[a.id];return s?.total?s.passed/s.total:null},format:i=>Ds(i),cellTitle:i=>{let s=i.byEvaluation?.[a.id];return s?.total?`${a.name}: ${Jn(s.passed,s.total)}`:`${a.name}: not run on this model`}}))];return jl.default.createElement(Le,{padding:0,style:{overflow:"hidden"},testId:r},jl.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 14px",flexWrap:"wrap"}},jl.default.createElement(je,null,"Model leaderboard"),jl.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},`${St(e.length,"model")} \xB7 ${St(t.length,"evaluation")} \xB7 ranked by the low end of each pass rate`)),jl.default.createElement(kf,{identity:{key:"rank",label:"Model",unit:"Rank \xB7 low end",kind:"number",better:"lower",value:a=>a.rank,render:a=>jl.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:10}},jl.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-muted)",width:18,textAlign:"right"}},a.rank),jl.default.createElement(QD,{label:a.label}))},defaultSort:{key:"rank",direction:"ascending"},columns:o,rows:e,rowKey:a=>a.label,rowProps:a=>({"data-testid":"model-leaderboard-row",title:`${a.label}: at least ${Ds(a.lower)} at 95% confidence`})}))}var Ad=null,w3=new Set,AR=()=>w3.forEach(e=>e(Ad));function i2e(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 $r(e){return Ad&&Ad.resolve(!1),new Promise(t=>{Ad={...i2e(e),resolve:t},AR()})}function ER(e){if(!Ad)return;let{resolve:t}=Ad;Ad=null,AR(),t(!!e)}function NR(){return Ad}function TR(e){return w3.add(e),()=>w3.delete(e)}function OR(e,t){return e?.requireText?t===e.requireText:!0}var PR=()=>{let e=Zn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=gD(window.location.search);return t?.runId?t:null},cb=()=>sJ(Zn()),MR=()=>gD(window.location.search)?.evaluationId||(cb()?String(cb().evaluationId):null),pA=(e=11,t="var(--color-text-muted)")=>({fontFamily:U,fontSize:e,color:t}),s2e=e=>{let t=$h(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:H2(e,t).length+r:r},l2e={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 db({embedded:e=!1,agentId:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Te.useState)(()=>e?null:PR()),a=(0,Te.useRef)(null),[i,s]=(0,Te.useState)(0),[l,u]=(0,Te.useState)(null);(0,Te.useEffect)(()=>{let ge=a.current?.contentDocument?.body;if(!ge)return;let nt=()=>u(ge.scrollHeight);if(nt(),typeof ResizeObserver>"u")return window.addEventListener("resize",nt),()=>window.removeEventListener("resize",nt);let it=new ResizeObserver(nt);return it.observe(ge),()=>it.disconnect()},[i,n]),(0,Te.useEffect)(()=>u(null),[n]);let[c,d]=(0,Te.useState)([]),[p,f]=(0,Te.useState)([]),[m,g]=(0,Te.useState)(void 0),[b,h]=(0,Te.useState)(!1),[y,x]=(0,Te.useState)(void 0),[v,k]=(0,Te.useState)(!0),[S,w]=(0,Te.useState)(null),[_,A]=(0,Te.useState)(null),[C,O]=(0,Te.useState)(()=>{if(e)return null;let ge=cb();return ge?.runId?ge:null}),[D,H]=(0,Te.useState)(()=>e?null:MR()),[$,Z]=(0,Te.useState)({}),[N,P]=(0,Te.useState)(!1),[M,I]=(0,Te.useState)(null),[j,T]=(0,Te.useState)(null),[q,G]=(0,Te.useState)(null),[L,Y]=(0,Te.useState)(!1),[K,pe]=(0,Te.useState)(!1),[De,se]=(0,Te.useState)(0);(0,Te.useEffect)(()=>{if(e)return;let ge=()=>{o(PR());let nt=cb();O(nt?.runId?nt:null);let it=MR();H(it),it&&A(Yt=>new Set([...Yt||[],Number(it)]))};return window.addEventListener("popstate",ge),window.addEventListener("dashboard:navigate",ge),()=>{window.removeEventListener("popstate",ge),window.removeEventListener("dashboard:navigate",ge)}},[e]);let xe=(0,Te.useCallback)(async()=>{try{let ge=new URLSearchParams;t&&ge.set("agent_id",t),L&&ge.set("archived","1");let nt=ge.toString(),it=await fetch(`/api/evaluations${nt?`?${nt}`:""}`);if(!it.ok)throw new Error(`Request failed (${it.status})`);let Yt=await it.json();se(Number(Yt.archived_count)||0),g(Yt.judge_provider??null),h(Yt.judge_provider_error===!0),x(Array.isArray(Yt.model_providers)?Yt.model_providers:null);let Hr=Yt.evaluations||[],Bo=null;try{Hr=await iJ(Hr,D,fetch)}catch(oo){Bo=oo.message}d(Hr),A(oo=>{if(oo)return oo;let ca=D?Hr.find(ao=>String(ao.id)===D):Hr.find(ao=>ao.scenario_suite)||Hr[0];return new Set(ca?[ca.id]:[])}),w(Bo)}catch(ge){w(ge.message),x(nt=>nt===void 0?null:nt)}finally{k(!1)}},[t,D,L]),ue=(0,Te.useCallback)(async ge=>{try{let nt=await fetch(`/api/evaluations/${ge}`);if(!nt.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${nt.status})`);let it=await nt.json();Z(Yt=>({...Yt,[ge]:{runs:it.evaluation?.runs||[],runCount:it.evaluation?.run_count??null}}))}catch(nt){Z(it=>({...it,[ge]:{runs:null,runCount:null,error:nt.message}})),w(nt.message)}},[]);(0,Te.useEffect)(()=>{xe(),fetch("/api/agents").then(ge=>ge.ok?ge.json():{agents:[]}).then(ge=>f(ge.agents||[])).catch(()=>f([]))},[xe]),(0,Te.useEffect)(()=>{new Set([..._||[],...C?[C.evaluationId]:[]]).forEach(nt=>{let it=c.find(Yt=>Yt.id===nt);it&&!it.scenario_suite&&!$[nt]&&ue(nt)})},[_,C,c,$,ue]);let R=(0,Te.useRef)(null);(0,Te.useEffect)(()=>{if(e||v||!D||R.current===D||cb()?.resultId)return;let ge=typeof document<"u"?document.querySelector(`[data-evaluation-id="${CSS.escape(String(D))}"]`):null;ge&&(R.current=D,ge.scrollIntoView({behavior:"smooth",block:"start"}))},[e,v,D,c]);let we=ge=>{!e&&Zn()!==ge&&Pc(ge)},Ce=ge=>!!_?.has(ge),z=ge=>{let nt=!Ce(ge.id);A(it=>{let Yt=new Set(it||[]);return nt?Yt.add(ge.id):Yt.delete(ge.id),Yt}),we(nt?`/evaluations/${ge.id}`:"/evaluations")},ee=(ge,nt)=>{A(it=>new Set([...it||[],ge.id])),O({evaluationId:ge.id,runId:nt.id}),we(W0({evaluationId:ge.id,runId:nt.id}))},ae=ge=>{O(null),we(ge?`/evaluations/${ge}`:"/evaluations")},E=async ge=>{I(ge.id),w(null);try{let nt=await fetch(`/api/evaluations/${ge.id}/run`,{method:"POST"}),it=await nt.json().catch(()=>({}));if(!nt.ok){w((it.errors||[it.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${nt.status})`);return}await Promise.all([xe(),ue(ge.id)]),it.run&&C?.evaluationId===ge.id&&ee(ge,it.run)}finally{I(null)}},W=async(ge,nt)=>{G(ge.id),w(null);try{let it=await fetch(`/api/evaluations/${ge.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:nt}})}),Yt=await it.json().catch(()=>({}));if(!it.ok){w((Yt.errors||[Yt.error]).filter(Boolean).join(", ")||`${nt?"Archive":"Unarchive"} failed (HTTP ${it.status})`);return}await xe()}finally{G(null)}},F=async ge=>{if(await $r({title:`Delete ${ge.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:ge.name})){T(ge.id),w(null);try{let nt=await fetch(`/api/evaluations/${ge.id}`,{method:"DELETE"});nt.ok||nt.status===404?(d(it=>it.filter(Yt=>Yt.id!==ge.id)),A(it=>{let Yt=new Set(it||[]);return Yt.delete(ge.id),Yt}),C?.evaluationId===ge.id&&ae(null)):w(`Delete failed (HTTP ${nt.status})`)}finally{T(null)}}};if(v)return Te.default.createElement("div",{className:"flex items-center justify-center h-64"},Te.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let B=t?c.filter(ge=>String(ge.agent?.id)===String(t)):c,Ee=ge=>{let nt=$[ge.id];return nt?.runs?{runs:nt.runs,runCount:ge.run_count??nt.runCount??null,loaded:!0}:{runs:ge.latest_run?[ge.latest_run]:[],runCount:ge.run_count??null,loaded:!1}};if(n){let ge=Nh(`/evaluations/${n.evaluationId}/runs/${n.runId}/report`),nt=rt(ge.report),it={padding:"6px 12px",borderRadius:8,fontSize:13,fontWeight:500,color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)",textDecoration:"none",whiteSpace:"nowrap"},Yt=`${nt}?theme=${r?"dark":"light"}`;return Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Te.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Te.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Te.default.createElement(ie,{size:"sm",onClick:()=>{Pc("/evaluations"),o(null)}},Te.default.createElement("span",{style:{fontFamily:U}},"<-")," Evaluations"),Te.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),Te.default.createElement("span",{style:pA(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),Te.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},"data-testid":"run-report-exports"},Te.default.createElement(_s,{url:rt(ge.markdown),title:"Copy the whole report as GitHub-flavored Markdown, for a pull request or an issue",testId:"run-report-copy-markdown"}),[["html","Download HTML","The report as one self-contained page"],["json","Download JSON","The run as the evaluation report envelope \u2014 POST it to another install\u2019s /api/evaluation_reports to import it"],["md","Download Markdown","The report as GitHub-flavored Markdown"]].map(([Hr,Bo,oo])=>Te.default.createElement("a",{key:Hr,href:rt(ge[Hr]),download:!0,title:oo,"data-testid":`run-report-download-${Hr}`,style:it},Bo)),Te.default.createElement("a",{href:nt,target:"_blank",rel:"noopener noreferrer",title:"The report as one self-contained page, outside the dashboard",style:it},"Open standalone ",Te.default.createElement("span",{style:{fontFamily:U}},"->")))),Te.default.createElement("iframe",{ref:a,src:Yt,title:"Evaluation run report",allow:"clipboard-write",onLoad:()=>s(Hr=>Hr+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 ge=B.find(nt=>nt.id===C.evaluationId);if(!ge||!ge.scenario_suite){let{runs:nt,runCount:it,loaded:Yt}=ge?Ee(ge):{runs:[],runCount:null,loaded:!0};return Te.default.createElement(x3,{evaluation:ge,runs:nt,runCount:it,runId:C.runId,loading:!Yt,running:M===C.evaluationId,onSelectRun:Hr=>ee(ge,Hr),onRun:()=>E(ge),onBack:()=>ae(null),onOpenEvaluation:()=>ae(C.evaluationId),onDelete:ge?()=>F(ge):void 0,deleting:j===C.evaluationId})}}let Ve=kJ(B,{focusId:D}),{samplesScored:fe,samplesPassed:ze,passRatio:Vt,spend:Ot}=Ve,Gt=CJ(Ve),Se=[...new Set(B.map(ge=>ge.agent?.name).filter(Boolean))],tt=B.reduce((ge,nt)=>Math.max(ge,kD(nt,$h(nt)||nt.latest_run)),0),dt=B.map(s2e),zt=dt.reduce((ge,nt)=>ge+nt,0),Gr=dt.filter(Boolean).length,ho=B.length?[`${St(Se.length,"agent")} \xB7 ${tt>1?`${tt} models compared`:"no model comparisons"}`,Gt].filter(Boolean).join(" \xB7 "):"none defined yet",Ui=Ve.focused?"headline run of this evaluation":`headline run of ${St(Ve.counted,"current evaluation")}${Gt?` \xB7 ${Gt}`:""}`,pi=_J(Ve),Aa=pi.length>1?pi[0]:null,Bl=Ot.agentCost!=null&&Ot.estimated||Ot.judgeCost!=null&&Ot.judgeEstimated,kt=Ot.agentCost!=null?Te.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:4}},Te.default.createElement("span",{"data-testid":"stat-agent-cost-scope"},`over ${St(Ot.interactions,"interaction")}`),Te.default.createElement("span",{style:{display:"grid",gridTemplateColumns:"max-content minmax(0, 1fr)",columnGap:10,rowGap:2,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},Te.default.createElement("span",null,"agent"),Te.default.createElement("span",{"data-testid":"stat-agent-cost-agent",style:{color:"var(--color-text-cell)"}},kr(Ot.agentCost,{estimated:Ot.estimated})),Te.default.createElement("span",null,"judge"),Te.default.createElement("span",{"data-testid":"stat-agent-cost-judge",style:{color:"var(--color-text-cell)"},title:"The judge's spend is the evaluation's own, outside the interactions, so it is not in the figure above"},Ot.judgeCost!=null?`${kr(Ot.judgeCost,{estimated:Ot.judgeEstimated})} \xB7 offline`:"none")),Bl&&Te.default.createElement("span",{title:ml,style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"~ estimated")):"no priced runs yet";return Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},Te.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&Te.default.createElement("div",{style:{flex:1,minWidth:260}},Te.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),Te.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.")),Te.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(De>0||L)&&Te.default.createElement(ie,{size:"sm",onClick:()=>Y(ge=>!ge),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},L?"Hide archived":`Show archived (${De})`),Te.default.createElement(ie,{variant:"primary",onClick:()=>P(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),S&&Te.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: ",S),N&&Te.default.createElement(v3,{agents:p,agentId:t,judgeProvider:m,judgeProviderError:b,modelProviders:y,onCancel:()=>P(!1),onCreated:async ge=>{P(!1),await xe(),ge?.id!=null&&(A(nt=>new Set([...nt||[],ge.id])),we(`/evaluations/${ge.id}`))}}),Te.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(190px, 100%), 1fr))",gap:16}},Te.default.createElement(zm,{label:"Evaluations",value:B.length,sub:ho,testId:"stat-evaluations"}),Te.default.createElement(zm,{label:"Samples scored",value:fe,sub:Ui,testId:"stat-samples-scored"}),Te.default.createElement(zm,{label:"Pass rate",value:Ds(Vt),valueColor:Vt==null?"var(--color-text-muted)":Fn[cu(Vt)].strong,sub:Vt==null?Gt||"no completed runs yet":Te.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},Te.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${ze}/${fe} passed`),Aa&&Te.default.createElement(Te.default.Fragment,null,Te.default.createElement("span",{"data-testid":"stat-pass-rate-leader",title:`${Aa.label} ${Jn(Aa.passed,Aa.total)}: best of ${pi.length} models by the low end of its pass rate`,style:{display:"flex",gap:6,minWidth:0,fontFamily:U,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Te.default.createElement("span",null,"best"),Te.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",minWidth:0,color:"var(--color-text-cell)"}},qn(Aa.label).short),Te.default.createElement("span",{style:{flexShrink:0}},Ds(Aa.ratio))),Te.default.createElement("button",{type:"button",onClick:()=>pe(ge=>!ge),"aria-expanded":K,"data-testid":"stat-pass-rate-leaderboard-toggle",style:{alignSelf:"flex-start",background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"}},Te.default.createElement(Ia,{kind:"chevron",open:K})," ",`${K?"hide":"compare"} ${pi.length} models`))),testId:"stat-pass-rate"}),Te.default.createElement(zm,{label:"To fix",value:zt,valueColor:zt?"var(--color-error)":void 0,sub:zt?`across ${St(Gr,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Te.default.createElement(zm,{label:"Cost / interaction",value:Yu(Ot.perInteraction,Ot.estimated),valueColor:Ot.perInteraction==null?"var(--color-text-muted)":void 0,sub:kt,testId:"stat-agent-cost"})),K&&Te.default.createElement(b3,{rows:pi,columns:Ve.columns}),Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},B.map((ge,nt)=>{let it=ge.latest_run,Yt=$h(ge),Hr=it&&Yt&&it.id!==Yt.id?it:null,Bo=CD(ge),oo=l2e[Bo],ca=Bo==="archived",ao=Ce(ge.id),da=!!ge.scenario_suite,Ru=dt[nt],Fl=(ge.criteria||[]).some(hn=>Ol(hn)==="telemetry"),{runs:Ea,runCount:Md}=Ee(ge);return Te.default.createElement(Le,{key:ge.id,padding:0,testId:"evaluation-card","data-telemetry":Fl?"true":"false","data-kind":da?"suite":"sampling","data-open":ao?"true":"false","data-standing":Bo,"data-evaluation-id":ge.id,style:{overflow:"hidden",opacity:ca?.75:1}},Te.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":ao,onClick:()=>z(ge),onKeyDown:hn=>{(hn.key==="Enter"||hn.key===" ")&&(hn.preventDefault(),z(ge))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},Te.default.createElement(Ia,{kind:"chevron",open:ao}),Te.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:U,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:da?"scenario suite":"sampling evaluation"},da?"=":"~"),Te.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},ge.name),Te.default.createElement("span",{style:pA(11)},`@${ge.agent?.name||"agent"} \xB7 ${cf(ge)}`),Te.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,rowGap:6,flexShrink:0,flexWrap:"wrap",maxWidth:"100%"}},Te.default.createElement("span",{style:pA(11)},_o(it?.completed_at||it?.created_at||ge.created_at)),Ru>0&&Te.default.createElement("span",{style:pA(11,"var(--color-error)")},`${Ru} to fix`),oo&&Te.default.createElement(be,{tone:oo.tone,size:10,style:{padding:"1px 6px"},title:oo.title,testId:"evaluation-standing"},oo.text),Hr&&Te.default.createElement(bf,{run:Hr,testId:"evaluation-newer-run-badge"}),Te.default.createElement(bf,{run:Yt||it,testId:da?"suite-pass-badge":"evaluation-pass-badge"}),Te.default.createElement(Xu,{evaluationId:ge.id,label:"copy link",testId:"evaluation-copy-link",title:"Copy a link that opens this evaluation, for a teammate in your organization",style:{padding:"0 4px",fontFamily:U,fontSize:11}}),Te.default.createElement("button",{type:"button",onClick:hn=>{hn.stopPropagation(),W(ge,!ca)},disabled:q===ge.id,title:ca?"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===ge.id?"not-allowed":"pointer",fontFamily:U,fontSize:11,color:"var(--color-text-muted)",opacity:q===ge.id?.5:1}},q===ge.id?"\u2026":ca?"unarchive":"archive"))),ao&&Te.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},da?Te.default.createElement(h3,{evaluation:ge,modelProviders:y,onChanged:xe,onDelete:()=>F(ge),deleting:j===ge.id,initialRunId:C?.evaluationId===ge.id?C.runId:null,initialResultId:C?.evaluationId===ge.id?C.resultId:null,onRunSelected:hn=>we(W0({evaluationId:ge.id,runId:hn}))}):Te.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},Te.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Te.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Ea.length?yQ(Ea,Md):`@${ge.agent?.name||"agent"} \xB7 no runs yet`),Te.default.createElement(ie,{variant:"primary",size:"sm",disabled:M===ge.id,onClick:hn=>{hn.stopPropagation(),E(ge)},testId:"evaluation-run-button"},M===ge.id?"Running\u2026":`Run ${cf(ge)}`)),Te.default.createElement(qD,{runs:Ea,runCount:Md,evaluation:ge,agentName:ge.agent?.name,previousRun:ge.previous_run,onOpen:hn=>ee(ge,hn),testId:"evaluation-runs-panel"}),Te.default.createElement(Sf,{evaluation:ge,run:it,spend:zi(it),onDelete:()=>F(ge),deleting:j===ge.id}))))})),B.length===0&&!N&&Te.default.createElement(Le,{style:{textAlign:"center",padding:"48px 20px"}},Te.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),Te.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 Ke=X(J());var u2e=e=>new Date(`${e}T00:00:00`),c2e=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function S3({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=ut(),o=es(n),[a,i]=(0,Ke.useState)(null),[s,l]=(0,Ke.useState)(!0),{timeWindow:u,days:c}=El(),[d,p]=(0,Ke.useState)("overview");(0,Ke.useEffect)(()=>{f()},[e?.id,c]);let f=async()=>{if(e?.id){l(!0);try{let v=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(v)}catch(x){console.error("Failed to load analytics:",x)}finally{l(!1)}}},m=x=>x?x<1e3?`${x}ms`:`${(x/1e3).toFixed(2)}s`:"-",g=x=>x?x>=1e6?`${(x/1e6).toFixed(1)}M`:x>=1e3?`${(x/1e3).toFixed(1)}K`:x.toString():"0",b=x=>{switch(x){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 Ke.default.createElement("div",{className:"flex items-center justify-center h-64"},Ke.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(x=>x.count)):1,y=r?"overview":d;return Ke.default.createElement("div",{className:"space-y-6"},r?Ke.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&Ke.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ke.default.createElement(Ks,null)):Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",{className:"flex items-center space-x-4"},Ke.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},Ke.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),Ke.default.createElement("div",null,Ke.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),Ke.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&Ke.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ke.default.createElement(Ks,null))),!r&&Ke.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},c2e.map(x=>Ke.default.createElement("button",{key:x.id,onClick:()=>p(x.id),className:`px-4 py-1.5 text-sm rounded-md transition-colors ${d===x.id?"shadow":""}`,style:d===x.id?{background:o.cardBg,color:o.textPrimary}:{color:o.textSecondary}},x.label))),y==="traces"&&Ke.default.createElement(nf,{agentId:e.id,embedded:!0}),y==="interactions"&&Ke.default.createElement(Gu,{agentId:e.id,embedded:!0}),y==="overview"&&Ke.default.createElement(Ke.default.Fragment,null,Ke.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ke.default.createElement(fA,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),Ke.default.createElement(fA,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.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}),Ke.default.createElement(fA,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.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}),Ke.default.createElement(fA,{title:"Total Tokens",value:g(a?.summary?.total_tokens),icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.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})),Ke.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ke.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?Ke.default.createElement("div",{className:"h-48"},Ke.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((x,v)=>Ke.default.createElement("div",{key:x.date,className:"flex-1 flex flex-col items-center group"},Ke.default.createElement("div",{className:"relative w-full"},Ke.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${x.count/h*150}px`,minHeight:x.count>0?"4px":"0"}}),Ke.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"},x.count," runs")),(v===0||v===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&Ke.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},u2e(x.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):Ke.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),Ke.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?Ke.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([x,v])=>{let k=a?.summary?.total_runs||1,S=(v/k*100).toFixed(1);return Ke.default.createElement("div",{key:x},Ke.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ke.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},x),Ke.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},v," (",S,"%)")),Ke.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},Ke.default.createElement("div",{className:`h-full ${b(x)} rounded-full transition-all`,style:{width:`${S}%`}})))})):Ke.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&Ke.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),Ke.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(x=>Ke.default.createElement("div",{key:x.id,className:"flex items-start space-x-3 p-3 rounded-lg",style:{background:n?"rgba(220,38,38,0.12)":"#fef2f2"}},Ke.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"},Ke.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"})),Ke.default.createElement("div",{className:"flex-1 min-w-0"},Ke.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},x.error||"Unknown error"),Ke.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(x.created_at).toLocaleString())))))),Ke.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},g(a?.summary?.avg_tokens_per_run))),Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var IR={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 fA({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=IR[n]||IR.rose;return Ke.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),Ke.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),Ke.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var de=X(J());var d2e={active:"success",configured:"info",available:"warning",idle:"muted"},p2e={agent_defined:"success",dashboard:"success",mcp:"info"},DR="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",jR="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",f2e=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],$R={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:U,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},$l={fontFamily:U,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},mA={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function BR({on:e,onClick:t,title:r}){return de.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"}},de.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 LR({on:e,dim:t=!1}){return de.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:U,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 m2e({tool:e,state:t,onToggle:r}){if(!t)return de.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.`),de.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"}},de.default.createElement(BR,{on:n,title:o,onClick:()=>r(e)}))}function gA({children:e,onClick:t,disabled:r,title:n}){return de.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:U,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 zR({children:e}){return de.default.createElement("div",{style:{overflowX:"auto"}},de.default.createElement("div",{style:{minWidth:800}},e))}function k3({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,de.useState)(null),[l,u]=(0,de.useState)(null),[c,d]=(0,de.useState)("7d"),[p,f]=(0,de.useState)(""),[m,g]=(0,de.useState)(null),[b,h]=(0,de.useState)(null),[y,x]=(0,de.useState)(!1),[v,k]=(0,de.useState)(null),[S,w]=(0,de.useState)({}),_=(Aw.find(z=>z.value===c)||Aw[1]).hours;(0,de.useEffect)(()=>{let z=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${_}`).then(ee=>{if(!ee.ok)throw new Error(`Request failed (${ee.status})`);return ee.json()}).then(ee=>{z||s(ee)}).catch(ee=>{z||u(ee.message)}),()=>{z=!0}},[e.id,_]);let A=(0,de.useMemo)(()=>({services:[],tools:[]}),[]),C=i||A,O=(0,de.useMemo)(()=>t.tools||[],[t.tools]),D=(0,de.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),H=(0,de.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),$=(0,de.useMemo)(()=>Cw(C,D),[C,D]),Z=(0,de.useMemo)(()=>$6(C,$,{query:p,filter:m}),[C,$,p,m]),N=(0,de.useMemo)(()=>z6(C,$,O,{query:p,source:b,enabledOnly:y}),[C,$,O,p,b,y]),P=(0,de.useMemo)(()=>B6(C,$,O,{range:c}),[C,$,O,c]),M=(0,de.useMemo)(()=>U6(C,{tools:O,mcpServers:D,approvalRequiredTools:H},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[C,O,D,H,e]),I=C.usage_available!==!1,j=z=>I?z:"\u2014",T=(0,de.useCallback)(z=>{r("mcp_servers",H6(C,z,D))},[C,D,r]),q=(0,de.useCallback)(z=>{let ee=$[z.key];T({...$,[z.key]:{...ee,on:!ee.on}})},[$,T]),G=(0,de.useCallback)((z,ee)=>{let ae=$[z.key];ae.on&&T({...$,[z.key]:{...ae,tools:{...ae.tools,[ee.name]:!ae.tools[ee.name]}}})},[$,T]),L=(0,de.useCallback)((z,ee)=>{let ae=$[z.key],E=Object.fromEntries((z.tools||[]).map(W=>[W.name,ee]));T({...$,[z.key]:{on:ee||ae.on,tools:E}})},[$,T]),Y=(0,de.useCallback)(z=>{r("tools",q6(C,z));let ee=Um(z.filter(ae=>!O.includes(ae)));ee.length>0&&r("approval_required_tools",ZT(H,ee,!0))},[C,O,H,r]),K=(0,de.useCallback)(z=>{z.editable&&Y(z.on?O.filter(ee=>ee!==z.key):[...O,z.key])},[O,Y]),pe=(0,de.useCallback)((z,ee)=>{z.editable&&Y(ee?[...O,...z.keys.filter(ae=>!O.includes(ae))]:O.filter(ae=>!z.keys.includes(ae)))},[O,Y]),De=(0,de.useCallback)(z=>{r("approval_required_tools",W6(H,z,e.approval_required_tools||[]))},[H,e,r]),se=(0,de.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),xe=(C.services||[]).filter(z=>$[z.key]?.on),ue=N.find(z=>z.source==="mcp"),we=N.filter(z=>z.source!=="mcp").reduce((z,ee)=>z+ee.enabledCount,0)+(ue?ue.total:0),Ce=N.reduce((z,ee)=>z+ee.total,0);return l?de.default.createElement(Le,null,de.default.createElement(je,null,"Tools & MCP services"),de.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?de.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},de.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},de.default.createElement("div",{style:{flex:1,minWidth:260}},de.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),de.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.")),de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.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)"}},de.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},"?"),de.default.createElement("input",{value:p,onChange:z=>f(z.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}})),de.default.createElement(To,{options:Aw,value:c,onChange:d}))),de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},P.map(z=>de.default.createElement(Le,{key:z.key,padding:"14px 16px",testId:`roster-stat-${z.key}`},de.default.createElement(je,{size:11,spacing:"0.05em"},z.label),de.default.createElement("div",{style:{marginTop:6,fontFamily:U,fontSize:26,fontWeight:700,lineHeight:1.1,color:z.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},z.value),de.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},z.sub)))),de.default.createElement(Le,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},de.default.createElement(je,null,"MCP services"),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},xe.length," of ",(C.services||[]).length," enabled \xB7 ",ue?ue.total:0," tools offered"),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},de.default.createElement(In,{selected:!m,onClick:()=>g(null)},"All ",(C.services||[]).length),f2e.map(z=>de.default.createElement(In,{key:z.value,selected:m===z.value,onClick:()=>g(m===z.value?null:z.value)},z.label,z.value==="enabled"?` ${xe.length}`:"")),de.default.createElement(Jr,{href:rt("/mcp"),onClick:()=>st("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),de.default.createElement(zR,null,de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:DR,...$R}},de.default.createElement("span",null,"On"),de.default.createElement("span",null,"Service"),de.default.createElement("span",null,"Status"),de.default.createElement("span",{style:{textAlign:"right"}},"Tools"),de.default.createElement("span",{style:{textAlign:"right"}},"Calls"),de.default.createElement("span",{style:{textAlign:"right"}},"Errors"),de.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),de.default.createElement("span",null)),Z.map(z=>{let ee=v===z.key;return de.default.createElement("div",{key:z.key},de.default.createElement("div",{className:"aa-roster-row","data-on":z.on?"true":"false","data-testid":`service-row-${z.key}`,style:{display:"grid",gridTemplateColumns:DR,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},de.default.createElement(BR,{on:z.on,onClick:()=>q(z),title:`${z.on?"Disable":"Enable"} ${z.name} for this agent`}),de.default.createElement("div",{onClick:()=>k(ee?null:z.key),style:{minWidth:0,cursor:"pointer"}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},z.name),z.first_party&&de.default.createElement(be,{tone:"accent",size:10},"first-party"),rp(z)&&de.default.createElement(be,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Sv(z)&&de.default.createElement(be,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),Dc(z)&&de.default.createElement(be,{tone:"info",size:10,title:"A server you added by URL on the MCP Services page"},"your server"),kv(z)&&de.default.createElement(be,{tone:"warning",size:10,title:"This server was deleted from MCP Services; the agent still names it"},"removed"),Ew(z)&&de.default.createElement(be,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),z.partial&&de.default.createElement(be,{tone:"warning",size:10},z.partialLabel)),de.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...mA}},z.description)),de.default.createElement("span",null,de.default.createElement(be,{tone:d2e[z.status]||"muted"},z.status)),de.default.createElement("span",{style:{...$l,color:z.on?"var(--color-text-primary)":"var(--color-text-muted)"}},z.toolsLabel),de.default.createElement("span",{style:$l},j(z.calls)),de.default.createElement("span",{style:{...$l,color:z.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},j(z.errors)),de.default.createElement("span",{style:{...$l,color:"var(--color-text-muted)"}},j(wv(z.last_seen))),de.default.createElement("span",{onClick:()=>k(ee?null:z.key),style:{cursor:"pointer",textAlign:"center"}},de.default.createElement(Ia,{kind:"chevron",open:ee}))),ee&&de.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},de.default.createElement(je,{size:10,color:"var(--color-text-muted)"},"Tools offered"),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},z.transport),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},de.default.createElement(gA,{onClick:()=>L(z,!0),title:`Offer every tool ${z.name} serves`},"all"),de.default.createElement(gA,{onClick:()=>L(z,!1),disabled:!z.on,title:`Offer none of ${z.name}'s tools`},"none"))),z.tools.length===0?de.default.createElement(tn,{style:{padding:"10px 0"}},D6(z)):de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},z.tools.map(ae=>de.default.createElement("div",{key:ae.name,className:"aa-roster-row",onClick:()=>G(z,ae),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:z.on?"pointer":"default",opacity:z.on?1:.55}},de.default.createElement(LR,{on:ae.on,dim:!z.on}),de.default.createElement("span",{style:{minWidth:0}},de.default.createElement("span",{style:{display:"block",fontFamily:U,fontSize:12,fontWeight:600,color:ae.on?"var(--color-text-primary)":"var(--color-text-secondary)",...mA}},ae.name),de.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...mA}},ae.description)),de.default.createElement("span",{style:{...$l,color:"var(--color-text-secondary)"}},j(ae.calls)),de.default.createElement("span",{style:{...$l,color:ae.errors?"var(--color-error-text)":"var(--color-text-muted)"}},j(ae.errors?`${ae.errors} err`:YT(ae.avg_duration_ms)))))),!z.on&&de.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",z.name," on offers these ",z.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),Z.length===0&&de.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"no MCP services yet"))),de.default.createElement(Le,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},de.default.createElement(je,null,"Tools"),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},we," enabled of ",Ce," available"),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},de.default.createElement(In,{selected:!b,onClick:()=>h(null)},"All ",Ce),N.map(z=>de.default.createElement(In,{key:z.source,selected:b===z.source,onClick:()=>h(b===z.source?null:z.source)},z.name," ",z.total)),de.default.createElement(In,{square:!0,mono:!0,selected:y,onClick:()=>x(!y),style:{marginLeft:4}},y?"[x] enabled only":"[ ] enabled only"))),de.default.createElement(zR,null,de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:jR,...$R}},de.default.createElement("span",null),de.default.createElement("span",null,"Tool"),de.default.createElement("span",null,"Source"),de.default.createElement("span",{style:{textAlign:"right"}},"Calls"),de.default.createElement("span",{style:{textAlign:"right"}},"Errors"),de.default.createElement("span",{style:{textAlign:"right"}},"Avg"),de.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),de.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(z=>{let ee=S[z.source]!==!0;return de.default.createElement("div",{key:z.source},de.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"}},de.default.createElement("span",{onClick:()=>w({...S,[z.source]:ee}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},de.default.createElement(Ia,{kind:"chevron",open:ee}),de.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},z.name)),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},z.meta),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-cell)"}},z.countLabel),z.editable&&de.default.createElement(de.default.Fragment,null,de.default.createElement(gA,{onClick:()=>pe(z,!0)},"all"),de.default.createElement(gA,{onClick:()=>pe(z,!1)},"none")))),ee&&z.rows.map(ae=>de.default.createElement("div",{key:ae.key,className:"aa-roster-row","data-on":ae.on?"true":"false","data-testid":`tool-row-${ae.key}`,onClick:()=>K(ae),style:{display:"grid",gridTemplateColumns:jR,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:ae.editable?"pointer":"default",opacity:ae.editable?1:.75}},de.default.createElement(LR,{on:ae.on,dim:!ae.editable}),de.default.createElement("div",{style:{minWidth:0}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:ae.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},ae.name),ae.source==="mcp"&&de.default.createElement(be,{size:10},"via ",ae.server),ae.source==="agent_defined"&&(ae.editable?de.default.createElement(be,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):de.default.createElement(be,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),I&&ae.on&&!ae.calls&&de.default.createElement(be,{size:10},"unused")),de.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...mA}},ae.description)),de.default.createElement("span",null,de.default.createElement(be,{tone:p2e[ae.source]||"muted"},GT[ae.source])),de.default.createElement("span",{style:$l},j(ae.calls)),de.default.createElement("span",{style:{...$l,color:ae.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},j(ae.errors)),de.default.createElement("span",{style:{...$l,color:"var(--color-text-secondary)"}},j(YT(ae.avg_duration_ms))),de.default.createElement("span",{style:{...$l,color:"var(--color-text-muted)"}},j(wv(ae.last_seen))),de.default.createElement(m2e,{tool:ae,state:XT(ae,H),onToggle:De}))))}),N.every(z=>z.rows.length===0)&&de.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"nothing enabled yet"))),de.default.createElement(Le,{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"},de.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},de.default.createElement(je,{size:11,spacing:"0.05em"},we," tools \xB7 ",xe.length," services"),de.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.")),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},M>0&&de.default.createElement(de.default.Fragment,null,de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-warning-text)"}},M," change",M===1?"":"s"," pending"),de.default.createElement(ie,{variant:"secondary",onClick:se},"Discard")),de.default.createElement(ie,{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")))):de.default.createElement(Le,null,de.default.createElement(tn,null,"loading the roster\u2026"))}var nr=X(J());function _3({agentId:e,colors:t}){let[r,n]=(0,nr.useState)(""),[o,a]=(0,nr.useState)(""),[i,s]=(0,nr.useState)(""),[l,u]=(0,nr.useState)(1),[c,d]=(0,nr.useState)(null),[p,f]=(0,nr.useState)(null),[m,g]=(0,nr.useState)(0);(0,nr.useEffect)(()=>{let h=new AbortController;d(null),f(null);let y=new URLSearchParams({agent_id:e,rating:r,from:o,to:i,page:l});return fetch(rt(`/api/feedback?${y}`),{signal:h.signal}).then(async x=>{if(!x.ok)throw new Error("Could not load feedback.");return x.json()}).then(d).catch(x=>{x.name!=="AbortError"&&f(x.message)}),()=>h.abort()},[e,r,o,i,l,m]);let b=h=>y=>{h(y.target.value),u(1)};return nr.default.createElement("section",{"aria-label":"User feedback",style:{color:t.textPrimary,background:t.cardBg,border:`1px solid ${t.cardBorder}`,borderRadius:12,padding:20}},nr.default.createElement("div",{className:"flex flex-wrap items-center gap-4 mb-4"},nr.default.createElement("label",null,"Rating ",nr.default.createElement("select",{value:r,onChange:b(n),style:{color:t.textPrimary,background:t.cardBg}},nr.default.createElement("option",{value:""},"All ratings"),nr.default.createElement("option",{value:"positive"},"Thumbs up"),nr.default.createElement("option",{value:"negative"},"Thumbs down"))),nr.default.createElement("label",null,"From ",nr.default.createElement("input",{type:"date",value:o,onChange:b(a),style:{color:t.textPrimary,background:t.cardBg}})),nr.default.createElement("label",null,"To ",nr.default.createElement("input",{type:"date",value:i,onChange:b(s),style:{color:t.textPrimary,background:t.cardBg}})),nr.default.createElement("button",{type:"button",onClick:()=>g(h=>h+1)},"Refresh")),p&&nr.default.createElement("p",{role:"alert"},p),!c&&!p&&nr.default.createElement("p",{role:"status"},"Loading feedback\u2026"),c&&nr.default.createElement(nr.default.Fragment,null,nr.default.createElement("p",{className:"mb-4"},c.positive," thumbs up \xB7 ",c.negative," thumbs down \xB7 ",c.positive_percentage==null?"No ratings":`${c.positive_percentage}% positive`," (",c.total," ratings matching filters)"),c.total===0&&nr.default.createElement("p",null,"No feedback recorded for these filters. Submit feedback from your application after the trace is ingested."),nr.default.createElement("ul",null,c.feedback.map(h=>nr.default.createElement("li",{key:h.id,className:"py-4",style:{borderTop:`1px solid ${t.cardBorder}`}},nr.default.createElement("strong",null,h.rating==="positive"?"\u{1F44D} Thumbs up":"\u{1F44E} Thumbs down"),nr.default.createElement("span",null," \xB7 ",new Date(h.created_at).toLocaleString()),h.user_reference&&nr.default.createElement("span",null," \xB7 ",h.user_reference),h.comment&&nr.default.createElement("p",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},h.comment),nr.default.createElement("a",{className:"underline",href:rt(`/traces?trace=${encodeURIComponent(h.trace_id)}`)},"Open interaction trace"),h.span_id&&nr.default.createElement("p",null,"Response span: ",nr.default.createElement("code",null,h.span_id))))),nr.default.createElement("div",{className:"flex gap-4 mt-4"},nr.default.createElement("button",{disabled:l===1,onClick:()=>u(h=>h-1)},"Previous"),nr.default.createElement("span",null,"Page ",l),nr.default.createElement("button",{disabled:l*50>=c.total,onClick:()=>u(h=>h+1)},"Next"))))}var g2e=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],UR=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],h2e=UR.map(e=>e.id),FR={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"]}},y2e={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function Ed({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(FR[e]||FR.neutral)[r?"dark":"light"];return _e.default.createElement("span",{style:{background:o,color:a,borderRadius:"999px",padding:"2px 8px",fontSize:"11px",fontWeight:600,fontFamily:t?It.mono:void 0,whiteSpace:"nowrap"}},n)}function Sa({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:oa,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 _e.default.createElement("button",{type:"button",onClick:r,disabled:n,title:a,"data-testid":i,style:{...u,...c[e]||c.secondary}},s)}function WR({tabs:e,active:t,onChange:r,colors:n}){return _e.default.createElement("div",{style:{display:"flex",alignItems:"center",flexShrink:0}},e.map(o=>{let a=t===o.id;return _e.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?oa:"transparent"}`,color:a?oa:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function hA({agent:e,meta:t,onSave:r,onDelete:n,onRun:o,onDuplicate:a,onRunReport:i,onBack:s,isLoading:l,initialTab:u}){let{darkMode:c}=ut(),d=es(c),[p,f]=(0,_e.useState)(u||"config"),[m,g]=(0,_e.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,_e.useState)([]),[y,x]=(0,_e.useState)(!1),[v,k]=(0,_e.useState)(""),S=Mc([m.provider]);(0,_e.useEffect)(()=>{let $=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"});x($)},[m,e]),(0,_e.useEffect)(()=>{p==="versions"?w():p==="code"&&_()},[p]);let w=async()=>{try{let Z=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(Z.versions)}catch($){console.error("Failed to load versions:",$)}},_=async()=>{try{let Z=await(await fetch(`/api/agents/${e.id}/export`)).json();k(Z.code)}catch($){console.error("Failed to load code preview:",$)}},A=($,Z)=>{g(N=>({...N,[$]:Z}))},C=($,Z)=>{g(N=>{let P=N[$]||[],M=P.includes(Z)?P.filter(I=>I!==Z):[...P,Z];return{...N,[$]:M}})},O=()=>{r(m)},D=h2e.includes(p),H=p==="tools";return _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},_e.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:"12px",flexWrap:"wrap"}},_e.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:It.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),_e.default.createElement(wn,{size:44}),_e.default.createElement("div",{style:{flex:1,minWidth:0}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},_e.default.createElement("h1",{style:{fontSize:"20px",fontWeight:700,color:d.textPrimary,margin:0}},m.name||"Untitled agent"),_e.default.createElement(Ed,{tone:y2e[m.status]||"neutral",darkMode:c},m.status),y&&_e.default.createElement(Ed,{tone:"info",darkMode:c},"unsaved")),_e.default.createElement("p",{style:{fontSize:"13px",color:d.textSecondary,margin:"4px 0 0"}},m.description||"No description")),_e.default.createElement("div",{className:"max-md:w-full max-md:justify-end",style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&_e.default.createElement(Sa,{variant:"secondary",colors:d,onClick:a},"Duplicate"),_e.default.createElement(Sa,{variant:"primary",colors:d,onClick:o},"Run Agent"))),_e.default.createElement("div",{className:"max-md:-mx-4 max-md:px-4","data-testid":"agent-tabs",style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto",scrollbarWidth:"none"}},_e.default.createElement(WR,{tabs:g2e,active:p,onChange:f,colors:d}),_e.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),_e.default.createElement(WR,{tabs:UR,active:p,onChange:f,colors:d})),H?_e.default.createElement(k3,{agent:e,formData:m,updateField:A,onSave:O,hasChanges:y,isLoading:l}):D?_e.default.createElement("div",null,p==="traces"&&_e.default.createElement(nf,{agentId:e.id,embedded:!0}),p==="metrics"&&_e.default.createElement(S3,{agent:e,embedded:!0}),p==="interactions"&&_e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},i&&_e.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},_e.default.createElement("button",{type:"button",onClick:i,style:{background:"none",border:"none",cursor:"pointer",fontFamily:It.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),_e.default.createElement(Gu,{agentId:e.id,embedded:!0})),p==="evals"&&_e.default.createElement(db,{embedded:!0,agentId:e.id}),p==="feedback"&&_e.default.createElement(_3,{agentId:e.id,colors:d})):_e.default.createElement("div",{style:{background:d.cardBg,border:`1px solid ${d.cardBorder}`,borderRadius:"12px",padding:"20px"}},p==="config"&&_e.default.createElement(x2e,{formData:m,updateField:A,providerModels:S,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&_e.default.createElement(b2e,{formData:m,updateField:A,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&_e.default.createElement(w2e,{versions:b,agentId:e.id,onRestore:w,colors:d,darkMode:c}),p==="code"&&_e.default.createElement(S2e,{code:v,colors:d})),y&&!H&&_e.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)"}},_e.default.createElement("span",{style:{fontSize:"13px",color:d.textSecondary}},"Unsaved changes"),_e.default.createElement("div",{style:{display:"flex",gap:"8px"}},_e.default.createElement(Sa,{variant:"primary",size:"sm",colors:d,onClick:O,disabled:l},l?"Saving\u2026":"Save Changes"))))}var Ll=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Ju=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),v2e=e=>({fontFamily:It.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function x2e({formData:e,updateField:t,providerModels:r,colors:n,darkMode:o,onDelete:a}){return _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},_e.default.createElement("div",{className:"max-md:grid-cols-1!",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Agent Name"),_e.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Ju(n)})),_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Preset Type"),_e.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Ju(n)},Object.keys($m).map(i=>_e.default.createElement("option",{key:i,value:i},i))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Description"),_e.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Ju(n),resize:"vertical"}})),_e.default.createElement("div",{className:"max-md:grid-cols-1!",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Provider"),_e.default.createElement("select",{value:e.provider,onChange:i=>{t("provider",i.target.value),t("model",r[i.target.value][0])},className:"aa-field",style:Ju(n)},Object.keys(r).map(i=>_e.default.createElement("option",{key:i,value:i},i.charAt(0).toUpperCase()+i.slice(1))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Model"),_e.default.createElement(pu,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Ju(n),fontFamily:It.mono}}))),_e.default.createElement("div",{className:"max-md:grid-cols-1!",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Temperature"," ",_e.default.createElement("span",{style:{fontFamily:It.mono,color:n.textSecondary}},e.model_config.temperature)),_e.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:oa}})),_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(n)},"Status"),_e.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Ju(n)},_e.default.createElement("option",{value:"draft"},"Draft"),_e.default.createElement("option",{value:"active"},"Active"),_e.default.createElement("option",{value:"archived"},"Archived")))),a&&_e.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",borderTop:`1px solid ${n.cardBorder}`,paddingTop:"16px"}},_e.default.createElement("div",null,_e.default.createElement("div",{style:v2e(n)},"Danger zone"),_e.default.createElement("p",{style:{fontSize:"13px",color:n.textMuted,margin:"4px 0 0"}},"Deleting an agent removes its configuration and version history.")),_e.default.createElement(Sa,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function b2e({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 _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(o)},"System Instructions"),_e.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:{...Ju(o),fontFamily:It.mono,resize:"vertical"}})),_e.default.createElement("div",null,_e.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}},_e.default.createElement("label",{style:{...Ll(o),marginBottom:0}},"Action Prompts"),_e.default.createElement(Sa,{variant:"secondary",size:"sm",colors:o,onClick:s},"+ Add action")),_e.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 ",_e.default.createElement("span",{style:{fontFamily:It.mono}},"#ask")," action uses the system instructions alone."),a.length>0&&_e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},a.map((u,c)=>_e.default.createElement("div",{key:c,style:{border:`1px solid ${o.cardBorder}`,borderRadius:"10px",padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},_e.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"13px",color:o.textMuted}},"#"),_e.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:{...Ju(o),flex:1,padding:"6px 10px",fontFamily:It.mono}}),_e.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:o.textSecondary,whiteSpace:"nowrap"}},_e.default.createElement("input",{type:"checkbox",checked:!!u.expose_as_tool,onChange:d=>i(c,{expose_as_tool:d.target.checked}),style:{accentColor:oa}}),"Expose as tool"),_e.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:It.mono,fontSize:"12px",color:o.textMuted,background:"none",border:"none",cursor:"pointer",padding:"4px"}},"[x]")),_e.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:{...Ju(o),fontFamily:It.mono,resize:"vertical"}}))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:Ll(o)},"Instruction Sets"),_e.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},r.instructionSets?.map(u=>{let c=e.instruction_sets.includes(u);return _e.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?oa:o.inputBorder}`,background:c?oa:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function w2e({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await $r({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 _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},_e.default.createElement("p",{style:{fontSize:"13px",color:n.textSecondary,margin:0}},"View and restore previous versions of this agent."),e.length>0?_e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"10px"}},e.map(i=>{let s=i.is_latest||i.isLatest;return _e.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?oa:n.cardBorder}`,background:s?"rgba(239,68,68,0.06)":"transparent"}},_e.default.createElement("div",{style:{minWidth:0}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},_e.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&_e.default.createElement(Ed,{tone:"error",darkMode:o},"current")),_e.default.createElement("p",{style:{fontSize:"13px",color:n.textCell,margin:"4px 0 0"}},i.change_summary||i.changeSummary),_e.default.createElement("p",{style:{fontFamily:It.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&_e.default.createElement(Sa,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):_e.default.createElement(k2e,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function S2e({code:e,colors:t}){let r=()=>{navigator.clipboard.writeText(e)};return _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},_e.default.createElement("p",{style:{fontSize:"13px",color:t.textSecondary,margin:0}},"Generated Ruby code for this agent."),_e.default.createElement(Sa,{variant:"secondary",size:"sm",colors:t,onClick:r},"Copy")),_e.default.createElement("pre",{style:{padding:"16px",background:"#111827",color:"#e5e7eb",borderRadius:"10px",overflowX:"auto",fontFamily:It.mono,fontSize:"12px",lineHeight:1.6,margin:0}},_e.default.createElement("code",null,e||"Loading...")))}function k2e({colors:e,glyph:t,title:r,hint:n}){return _e.default.createElement("div",{style:{textAlign:"center",padding:"40px 20px"}},_e.default.createElement("div",{style:{fontFamily:It.mono,fontSize:"20px",color:e.textMuted}},t),_e.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:e.textPrimary,marginTop:"10px"}},r),_e.default.createElement("p",{style:{fontSize:"13px",color:e.textMuted,margin:"6px auto 0",maxWidth:"420px"}},n))}var Q=X(J());async function Vh(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var yA=X(J());var _2e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var qR=Object.freeze({events:500,chars:262144}),C2e=16*1024,A2e=3;function E2e(e){return{emit:e,maskAllInputs:!0,blockSelector:_2e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function N2e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function T2e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function O2e(e,t=qR){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 HR(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function KR({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=qR,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",p=null,f=null,m=null,g=null,b=!1,h=!1,y=null,x=0;function v(Z){d!==Z&&(d=Z,i(Z))}function k(){u.length=0,c=0}function S(){f&&f(),f=null,m=null,g!==null&&o.clearInterval(g),g=null,a?.removeEventListener?.("pagehide",D)}function w(Z){h=!0,k(),S(),v(Z)}function _(Z){if(b||h)return;let N=N2e(Z);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&O()}async function A(Z,N){let P=T2e(Z,n());try{let M=await r(`/api/session_recordings/${encodeURIComponent(p)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:P,keepalive:N&&P.length<=C2e});return HR(M.status)}catch{return"retry"}}async function C(Z){for(;u.length>0&&!h;){let N=u.splice(0,O2e(u,s)),P=N.reduce((I,j)=>I+j.length+1,0);c-=P;let M=await A(N,Z);if(M==="sent"){x=0;continue}if(M!=="retry"){w(M);return}if(x+=1,Z||x>=A2e){x=0,k(),m&&m();return}u.unshift(...N),c+=P;return}}function O({final:Z=!1}={}){return p===null||h?Promise.resolve():(y||(y=C(Z).finally(()=>{y=null})),y)}function D(){O({final:!0})}async function H(){if(d!=="idle"||b)return;v("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||w("failed");return}if(b)return;if(!Z.ok){w(HR(Z.status)==="off"?"off":"failed");return}let N=await Z.json().catch(()=>null);if(b)return;if(p=N?.recording?.id??null,p===null){w("failed");return}let P;try{({record:P}=await t())}catch{b||w("failed");return}if(b)return;let M=null;try{M=typeof P=="function"?P(E2e(_)):null}catch{M=null}if(typeof M!="function"){w("failed");return}f=M,m=()=>P.takeFullSnapshot?.(),g=o.setInterval(()=>O(),l),a?.addEventListener?.("pagehide",D),v("recording")}async function $(){b||(b=!0,S(),!h&&(v("stopped"),y&&await y,await O({final:!0})))}return{start:H,stop:$,flush:O,get state(){return d}}}function C3(e,t){let[r,n]=(0,yA.useState)("idle");return(0,yA.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=KR({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 P2e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},M2e=(e,t)=>{let r=P2e[e]||{role:e,label:e};return{...Un(r.role,t),label:r.label}},A3={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},I2e=["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"],D2e=["user","assistant","tool"],j2e=1200,$2e=600*1e3,vA=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",VR=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},E3=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()]},As=e=>e?.context_id??e?.output_metadata?.context_id??null,pb=e=>e.json().catch(()=>({})),YR=({open:e,color:t})=>Q.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}},Q.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})),L2e=e=>typeof e=="string"?e:e?.name||e?.key||"?";function GR({label:e,names:t,colors:r}){return Q.default.createElement("div",{className:"flex justify-between gap-3"},Q.default.createElement("dt",{className:"shrink-0",style:{color:r.textSecondary}},e),Q.default.createElement("dd",{className:"text-right font-mono text-xs break-words min-w-0",style:{color:t.length?r.textPrimary:r.textMuted}},t.length?t.join(", "):"none"))}function z2e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=E3(e),i=f2(t);return Q.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=M2e(s.kind,t);return Q.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},Q.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)"}:{}},Q.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),Q.default.createElement("div",{className:"min-w-0 flex-1"},Q.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&Q.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),Q.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"?Q.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?Q.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):Q.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${vA(s.duration_ms)}`),s.at&&Q.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&Q.default.createElement(YR,{open:l,color:r.textMuted})),l&&Q.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&&Q.default.createElement("div",null,Q.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),Q.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},VR(s.input))),s.output&&Q.default.createElement("div",null,Q.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),Q.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"}:{}}},VR(s.output)))))}))}function B2e({run:e,darkMode:t,colors:r}){return e?Q.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},Q.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},Q.default.createElement(Ed,{tone:A3[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&Q.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?Q.default.createElement("span",null,vA(e.duration_ms)):null,e.total_tokens?Q.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&Q.default.createElement("a",{href:rt(`/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 N3({agent:e,onBack:t,recorderUrl:r=null,freshConversation:n=!1}){let{darkMode:o}=ut(),a=es(o),i=e.action_prompts||e.actionPrompts||[],s=["ask",...i.map(le=>le.name).filter(Boolean)],[l,u]=(0,Q.useState)("ask"),[c,d]=(0,Q.useState)(""),[p,f]=(0,Q.useState)([]),[m,g]=(0,Q.useState)(!1),[b,h]=(0,Q.useState)([]),[y,x]=(0,Q.useState)(null),[v,k]=(0,Q.useState)(null),[S,w]=(0,Q.useState)(null),[_,A]=(0,Q.useState)([]),[C,O]=(0,Q.useState)(!1),[D,H]=(0,Q.useState)(null),[$,Z]=(0,Q.useState)(null),[N,P]=(0,Q.useState)(null),[M,I]=(0,Q.useState)(null),[j,T]=(0,Q.useState)({}),[q,G]=(0,Q.useState)([]),[L,Y]=(0,Q.useState)([]),[K,pe]=(0,Q.useState)(""),De=(0,Q.useCallback)(async()=>{try{let le=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!le.ok)return;let $e=await le.json(),ct=K2($e.sandboxes);Y(ct),pe(Bt=>V2(Bt,ct)||(ct.length===1?ct[0].value:""))}catch{}},[]);(0,Q.useEffect)(()=>{De()},[De]);let se=Nw(e.tools||[]),[xe,ue]=(0,Q.useState)(null),[R,we]=(0,Q.useState)(!1),[Ce,z]=(0,Q.useState)(null),[ee,ae]=(0,Q.useState)(!1),[E,W]=(0,Q.useState)(!1),[F,B]=(0,Q.useState)(null),[Ee,Ve]=(0,Q.useState)(""),[fe,ze]=(0,Q.useState)(!1),[Vt,Ot]=(0,Q.useState)(null),Gt=(0,Q.useRef)(null),Se=(0,Q.useRef)(!n),tt=(0,Q.useRef)(null),dt=(0,Q.useRef)(0),zt=(0,Q.useRef)(null),Gr=(0,Q.useRef)(!1),ho=(0,Q.useRef)(!0),Ui=(0,Q.useRef)(null),pi=(0,Q.useRef)([]),Aa=(0,Q.useRef)(null),Bl=(0,Q.useRef)(null),kt=(0,Q.useRef)(null),ge=(0,Q.useRef)(null),nt=C3(y,r),it=(v?.messages||[]).filter(le=>D2e.includes(le.role));(0,Q.useEffect)(()=>{Ui.current=$},[$]),(0,Q.useEffect)(()=>{pi.current=p},[p]),(0,Q.useEffect)(()=>{ho.current=!0,Yt();let le=PX(window.location.search);return le&&Ao(le),()=>{ho.current=!1,dt.current+=1,hn(Ui.current),hn({attachments:pi.current}),Z(null),f([])}},[e.id]),(0,Q.useEffect)(()=>{Hr(l)},[e.id,l]),(0,Q.useEffect)(()=>{tt.current=y,y?Bo(y):(k(null),w(null))},[y]),(0,Q.useEffect)(()=>{let le=Bl.current;le&&(le.scrollTop=le.scrollHeight)},[it.length,$,D?.logs?.length,D?.input_requests?.length,F,N]),(0,Q.useEffect)(()=>{if(!E)return;let le=$e=>{ge.current&&!ge.current.contains($e.target)&&W(!1)};return document.addEventListener("mousedown",le),()=>document.removeEventListener("mousedown",le)},[E]);let Yt=async()=>{try{let $e=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();A($e.runs||[])}catch(le){console.error("Failed to load runs:",le)}},Hr=async le=>{try{let $e=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(le)}`);if(!$e.ok)throw new Error(`HTTP ${$e.status}`);let Bt=(await $e.json()).conversations||[];h(Bt),x(On=>On&&(Gt.current===On||Bt.some(qa=>qa.id===On))?On:Se.current?Bt[0]?.id??null:null)}catch($e){console.error("Failed to load conversations:",$e),h([])}},Bo=async le=>{try{let $e=await fetch(`/api/interactions/${le}`);if(!$e.ok)throw new Error($e.status===404?"Conversation not found":`HTTP ${$e.status}`);let ct=await $e.json();if(tt.current!==le)return;k(ct.interaction),w(null)}catch($e){if(tt.current!==le)return;k(null),w($e.message)}},oo=async()=>{let le=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:l})}),$e=await pb(le);if(!le.ok||!$e.conversation)throw new Error($e.error||`Could not start a conversation (HTTP ${le.status})`);let ct=$e.conversation;return h(Bt=>[ct,...Bt.filter(On=>On.id!==ct.id)]),Gt.current=ct.id,x(ct.id),ct.id},ca=()=>tt.current?Promise.resolve(tt.current):oo(),ao=le=>{Gt.current=null,u(le)},da=le=>{Gr.current=le,O(le)},Ru=()=>{zt.current?.waiting&&(zt.current=null,da(!1))},Fl=()=>{Ru(),H(null),I(null),T({}),G([])},Ea=le=>{let $e=le?Number(le):null;$e!==tt.current&&Fl(),Gt.current=$e,x($e),P(null)},Md=async()=>{if(!C)try{await oo(),w(null),P(null),Fl(),hn(Ui.current),Z(null),B(null)}catch(le){w(le.message)}},hn=le=>{(le?.attachments||[]).forEach($e=>{$e.url&&$e.url.startsWith("blob:")&&URL.revokeObjectURL($e.url)})},Lf=le=>{let $e=Array.from(le||[]).filter(Boolean);$e.length!==0&&f(ct=>[...ct,...$e.map(Bt=>({file:Bt,filename:Bt.name,content_type:Bt.type||"application/octet-stream",byte_size:Bt.size,kind:VY(Bt),url:Bt.type&&Bt.type.startsWith("image/")?URL.createObjectURL(Bt):null}))])},ay=le=>{f($e=>{let ct=$e[le];return ct?.url&&URL.revokeObjectURL(ct.url),$e.filter((Bt,On)=>On!==le)})},ec=(le,$e)=>{hn(Ui.current),Z(null),Yt();let ct=As(le)??$e;ct&&(ct!==tt.current?(Gt.current=ct,x(ct)):Bo(ct),Hr(l))},Ib=(le,$e)=>{zt.current=null,da(!1),G([]),ec(le,$e)},iy=(le,$e)=>{zt.current={id:le.id,contextId:As(le)??$e,waiting:!0},ec(le,$e),w2()},zf=(le,$e)=>{if(!ho.current)return;let ct=++dt.current,Bt=Date.now(),On=async()=>{if(dt.current===ct){try{let qa=await fetch(`/api/runs/${le}`);if(qa.ok){let io=await qa.json();if(dt.current!==ct)return;H(io.run);let fi=VI(io.run);if(fi==="finished"){Ib(io.run,$e);return}if(fi==="awaiting"){iy(io.run,$e);return}}}catch{}Date.now()-Bt<$2e?setTimeout(On,j2e):(zt.current=null,da(!1),hn(Ui.current),Z(null),H(qa=>qa&&{...qa,status:"failed",error_message:"Timed out waiting for the run to finish."}),I("Timed out waiting for the run to finish."))}};On()},Db=async({text:le,files:$e,fromComposer:ct=!1})=>{let Bt=(le||"").trim();if(!Bt&&$e.length===0||C)return;I(null),P(null),B(null),da(!0),T({}),G([]),H({status:"pending",input_prompt:Bt,output:"",logs:[],started_at:new Date().toISOString()}),hn(Ui.current),Z({content:Bt||"(see attached files)",attachments:$e.map(({file:io,...fi})=>fi)}),ct&&(d(""),f([]));let On=tt.current;if(!On)try{On=await oo()}catch(io){I(`${io.message} \u2014 running without a pinned conversation.`)}let qa=()=>{ct&&(d(Bt),f($e)),Z(null)};try{let io=new FormData;io.append("prompt",Bt),io.append("action_name",l),On&&io.append("params[context_id]",String(On)),K&&io.append("sandbox_id",K),$e.forEach(({file:Hl})=>io.append("attachments[]",Hl,Hl.name));let fi=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:io}),Ts=await pb(fi);if(Ts.code==="sandbox_refused"&&De(),fi.status===402&&Ts.upgrade_required){ue(Ts.usage),H(Hl=>({...Hl,status:"failed",error_message:Ts.message||"Plan limit reached"})),da(!1),qa();return}if(!fi.ok)throw new Error(Ts.error||"Run failed");zf(Ts.run.id,As(Ts.run)??On)}catch(io){H(fi=>({...fi,status:"failed",error_message:io.message})),da(!1),qa()}},jb=()=>Db({text:c,files:p,fromComposer:!0}),Xe=(le,$e)=>{let ct=zt.current;!ct||String(ct.id)!==String(le.run_id)||(G(Bt=>[...Bt.filter(On=>On.request.id!==le.id),{request:le,outcome:$e}]),zt.current={...ct,waiting:!1},zf(ct.id,ct.contextId))},Na=le=>{let $e=VI(le);$e==="finished"||Gr.current||(I(null),T({}),G([]),H(le),da(!0),$e==="awaiting"?iy(le,As(le)):zf(le.id,As(le)))},sy=(le,$e)=>{Gt.current=le,$e&&s.includes($e)&&$e!==l&&u($e),x(le)},Ao=async le=>{try{let $e=await fetch(`/api/runs/${le}`);if(!$e.ok)return;let ct=await $e.json();if(!ho.current||!ct.run||String(ct.agent?.id)!==String(e.id))return;let Bt=As(ct.run);Bt&&sy(Bt,ct.run.action_name),Na(ct.run)}catch($e){console.error("Failed to open the linked run:",$e)}},Bf=le=>{!le||!le.text||Db({text:le.text,files:[]})},pa=le=>{le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&(le.preventDefault(),jb())},Ta=async(le,$e)=>{let ct=tt.current,Bt=await fetch(`/api/interactions/${ct}/messages/${le.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:$e})}),On=await pb(Bt);if(!Bt.ok)throw new Error(On.error||`Could not save the message (HTTP ${Bt.status})`);await Bo(ct)},Ff=async le=>{let $e=tt.current;try{let ct=await fetch(`/api/interactions/${$e}/messages/${le.id}`,{method:"DELETE"});if(!ct.ok){let Bt=await pb(ct);throw new Error(Bt.error||`Could not delete the message (HTTP ${ct.status})`)}w(null),await Bo($e),Hr(l)}catch(ct){w(ct.message)}},nl=le=>{W(!1),B(le),Ve(""),Ot(null)},tc=async()=>{let le=Ee.trim();if(!(!le||fe)){ze(!0),Ot(null);try{let $e=await ca(),ct=await fetch(`/api/interactions/${$e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:F,content:le})}),Bt=await pb(ct);if(!ct.ok)throw new Error(Bt.error||`Could not add the message (HTTP ${ct.status})`);Ve(""),B(null),await Bo($e),Hr(l)}catch($e){Ot($e.message)}finally{ze(!1)}}},Wf=async le=>{let $e=le;if(As(le)==null||le.status==="awaiting_input")try{let Bt=await fetch(`/api/runs/${le.id}`);Bt.ok&&($e=(await Bt.json()).run)}catch(Bt){console.error("Failed to load run details:",Bt)}let ct=As($e);ct?(P(null),ct!==tt.current&&Fl(),sy(ct,$e.action_name||le.action_name),Na($e)):P({...$e,output:$e.output??$e.output_preview,error_message:$e.error_message??$e.error}),Aa.current?.scrollIntoView({behavior:"smooth",block:"start"})},Uf=async()=>{we(!0),z(null);try{await Vh({planSlug:"pro"})}catch(le){z(le.message),we(!1)}},Ha=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,ly=i.find(le=>le.name===l)?.prompt,Wl=[e.instructions,l==="ask"?null:ly].map(le=>(le||"").trim()).filter(Boolean).join(` +Who changed the shipping policy last week?`,style:{...Ju,width:"100%",fontFamily:U,fontSize:12,lineHeight:"18px"}}),at.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. ",at.default.createElement("code",{style:{fontFamily:U}},"# Heading")," lines group related tasks so they can be run together; ",at.default.createElement("code",{style:{fontFamily:U}},"| tools: a, b")," names the tool a task should call.")),s.judgeKind==="judge_defined"?at.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."):at.default.createElement(at.default.Fragment,null,at.default.createElement("div",null,at.default.createElement($e,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},_3.map(A))),at.default.createElement("div",null,at.default.createElement($e,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},MR.map(A))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),at.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>v({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Ju,width:"100%"}})),at.default.createElement("div",null,at.default.createElement($e,{as:"label",style:{display:"block",marginBottom:6}},"LLM judge criterion (optional, needs provider credentials)"),at.default.createElement("input",{type:"text",value:s.llmJudgePrompt,onChange:C=>v({llmJudgePrompt:C.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Ju,width:"100%"}})))),u&&at.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},u),at.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},at.default.createElement(ie,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&at.default.createElement(ie,{onClick:i},"Cancel"))))}function u2e(e,t){return e?`An unpinned judge defaults to ${l2e[e]||e}. Pinning a model selects its provider.`: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 c2e(e){let[t,r]=(0,at.useState)([]);return(0,at.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 Ae=X(J());var d2e={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:U,fontSize:12,color:"var(--color-info)"},Ao=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:U,fontSize:e,color:t,...r});function p2e({stats:e}){if(!e)return Ae.default.createElement("span",{style:Ao()},"\u2014");if(e.skipped)return Ae.default.createElement("div",null,Ae.default.createElement("span",{style:Ao(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Ae.default.createElement("div",{style:{...Ao(),marginTop:2,textWrap:"pretty"},title:e.reason},K0(e.reason,90)));let t=Number(e.score),r=Wn[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${Dn(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${oa(e.min)} \xB7 max ${oa(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 ${Bn(o.avg_duration_ms)}`)}return Ae.default.createElement("div",null,Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6}},Ae.default.createElement("span",{style:Ao(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",oa(t)),e.source==="telemetry"&&Ae.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:Ao(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Ae.default.createElement("div",{style:{...Ao(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function f2e({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>uR({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:iA()});return Ae.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}},Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ae.default.createElement($a,{kind:"fault"}),Ae.default.createElement(ve,{tone:"error"},e.label),Ae.default.createElement("span",{style:Ao()},e.scope)),Ae.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},e.text),e.chips?.length>0&&Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},Ae.default.createElement($e,{size:10,color:"var(--color-text-muted)"},e.chipsLabel),Ae.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},e.chips.map(a=>Ae.default.createElement("span",{key:a,style:{fontFamily:U,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&&Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:3}},e.details.map(a=>Ae.default.createElement("span",{key:a,style:Ao(11,"var(--color-text-cell)",{textWrap:"pretty"})},a))),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",flexWrap:"wrap"}},e.action?.path&&Ae.default.createElement(ie,{size:"sm",onClick:()=>st(e.action.path)},e.action.label),e.action?.hint&&Ae.default.createElement("span",{style:{...Ao(),whiteSpace:"nowrap"}},e.action.hint),Ae.default.createElement(db,{build:o,style:{marginLeft:"auto"}})))}function A3({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,Ae.useState)("all"),[m,g]=(0,Ae.useState)(!1),b=(L,Y)=>Ae.default.createElement("button",{type:"button",onClick:Y,style:d2e},L),h=t.findIndex(L=>L.id===n),y=h>=0?t[h]:t[0],x=y?Lh(y,Math.max(h,0),t,r):null,v=Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},b("Evaluations",l),Ae.default.createElement("span",{style:Ao(12)},"/"),b(e?.name||"Evaluation",u),Ae.default.createElement("span",{style:Ao(12)},"/"),Ae.default.createElement("span",{style:Ao(12,"var(--color-text-primary)",{fontWeight:700})},y?`Run #${x}`:"Runs"));if(!e)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Ae.default.createElement("div",null,b("Evaluations",l)),Ae.default.createElement(je,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!y)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},v,o?Ae.default.createElement("div",{className:"flex items-center justify-center h-64"},Ae.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):Ae.default.createElement(je,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let k=G0(y),S=k.length?k:[null],w=jh(y),_=L=>w.find(Y=>Y.label===L)||(L==null?w[0]:null),A=y.scores?._verdict,C=Array.isArray(y.scores?._missing_models)?y.scores._missing_models:[],O=$h(y).map(([L,Y])=>({key:L,value:Y,criterion:V0(e,L)})),D=L=>O.filter(Y=>Pl(Y.criterion)===L).length,H=ND.filter(L=>D(L.id)>0),j=L=>S.some(Y=>{let K=pf(L.value,Y);return K&&(K.skipped||K.score!=null&&K.score<.7)}),Z=O.filter(L=>(p==="all"||Pl(L.criterion)===p)&&(!m||j(L))),N=ND.map(L=>({...L,rows:Z.filter(Y=>Pl(Y.criterion)===L.id)})).filter(L=>L.rows.length),P=Z2(e,{...y,number:x}),M=Bi(y),I=Co(y.completed_at||y.created_at),$=y.status==="complete"&&y.samples_evaluated?` \xB7 ${Dn(y.samples_passed||0,y.samples_evaluated)} passed`:"",T={fontFamily:U,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"},G={padding:"7px 12px",verticalAlign:"middle"};return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},v,Ae.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Ae.default.createElement("div",{style:{minWidth:0}},Ae.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},`Run #${x}`),Ae.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},`${e.name} \xB7 ${I} \xB7 @${e.agent?.name||"agent"} \xB7 ${df(e,y)}${$}`)),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((L,Y)=>Ae.default.createElement(In,{key:L.id,square:!0,mono:!0,selected:L.id===y.id,onClick:()=>i?.(L),title:`${L.status} \xB7 ${Co(L.completed_at||L.created_at)}`},`#${Lh(L,Y,t,r)}`)),Ae.default.createElement(Zu,{evaluationId:e.id,runId:y.id,testId:"run-copy-link",title:"Copy a link that opens this run, for a teammate in your organization"}),Ae.default.createElement(ie,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Ae.default.createElement(VD,{spend:M,judgedBy:Dh(e,y)}),y.status==="failed"?Ae.default.createElement(je,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Ae.default.createElement("span",{style:Ao(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},y.error_message)):y.status!=="complete"?Ae.default.createElement(je,{"data-testid":"run-pending",padding:"14px 16px"},Ae.default.createElement("span",{style:Ao(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${y.status}`),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6}},"Scores appear once the run completes.")):Ae.default.createElement(Ae.default.Fragment,null,k.length>1&&Ae.default.createElement(lb,{rows:J2(y,{columns:k}),unit:"interaction",judgedBy:A?.judge||null,judgeEstimated:M?.judge?.estimated??!0}),Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(260px, 100%), 1fr))",gap:12}},S.map(L=>{let Y=SJ(y,L),K=_(L),pe=K?.samples??(L==null?y.samples_evaluated:null),De=K?.passed??(L==null?y.samples_passed:null),se=[];return Y.below>0&&se.push({tone:"error",text:`below pass mark \xD7${Y.below}`}),Y.skipped>0&&se.push({tone:"warning",text:`skipped \xD7${Y.skipped}`}),Ae.default.createElement(cb,{key:L||"all",label:L,short:L?Kn(L).short:"all samples",provider:K?.provider||(L?Kn(L).provider:null)||null,winner:!!A?.winner&&A.winner===L,passed:De,total:pe,avgScore:Y.avg,criteria:{cleared:Y.cleared,scored:Y.scored},latencyMs:K?.avg_duration_ms,inputTokens:K?.input_tokens,outputTokens:K?.output_tokens,cost:K?.cost,perInteraction:ff(K?.cost,K?.priced),estimated:K?.estimated??!1,unit:"interaction",badges:se})}))),(A||C.length>0)&&Ae.default.createElement(je,{padding:"12px 16px",style:{display:"flex",flexDirection:"column",gap:6},"data-testid":"run-verdict"},A&&Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ae.default.createElement($e,null,"Verdict"),A.judge&&Ae.default.createElement("span",{style:Ao()},`judged by ${A.judge}`)),Ae.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},Ae.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:U,fontSize:12}},A.winner),A.rationale?` \xB7 ${A.rationale}`:"")),C.length>0&&Ae.default.createElement("span",{style:Ao(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${C.join(", ")}`)),Ae.default.createElement(je,{padding:0,style:{overflow:"hidden"},testId:"criteria-matrix"},Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",flexWrap:"wrap"}},Ae.default.createElement($e,{style:{marginRight:4}},"Criteria"),Ae.default.createElement(In,{selected:p==="all",onClick:()=>f("all")},`All ${O.length}`),H.map(L=>Ae.default.createElement(In,{key:L.id,selected:p===L.id,onClick:()=>f(L.id)},`${L.label} ${D(L.id)}`)),Ae.default.createElement(In,{square:!0,mono:!0,selected:m,onClick:()=>g(L=>!L),style:{marginLeft:"auto",background:"transparent"},title:"Hide criteria every model cleared"},m?"[x] failed only":"[ ] failed only")),Ae.default.createElement("div",{style:{overflowX:"auto"}},Ae.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ae.default.createElement("thead",null,Ae.default.createElement("tr",{style:{background:"var(--color-muted)"}},Ae.default.createElement("th",{style:{...T,width:"34%"}},"Criterion"),Ae.default.createElement("th",{style:T},"Expects"),S.map(L=>Ae.default.createElement("th",{key:L||"score",style:T},L?Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},Kn(L).short),(_(L)?.provider||Kn(L).provider)&&Ae.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},_(L)?.provider||Kn(L).provider)):"Score")))),Ae.default.createElement("tbody",null,N.map(L=>Ae.default.createElement(Ae.default.Fragment,{key:L.id},Ae.default.createElement("tr",{style:{background:"var(--color-background)",borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{style:G},Ae.default.createElement("span",{style:{fontWeight:600,fontSize:13,color:"var(--color-text-primary)"}},L.label)),Ae.default.createElement("td",{style:G},Ae.default.createElement("span",{style:Ao()},`${L.rows.length} ${L.rows.length===1?"criterion":"criteria"}`)),S.map(Y=>{let K=L.rows.filter(se=>{let be=pf(se.value,Y);return be&&be.score!=null}),pe=K.filter(se=>pf(se.value,Y).score>=.7).length,De=K.length&&pe===K.length?"var(--color-success-text)":pe===0&&K.length?"var(--color-error-text)":"var(--color-text-cell)";return Ae.default.createElement("td",{key:Y||"score",style:G},Ae.default.createElement("span",{style:Ao(11,De,{fontWeight:600})},K.length?`${Dn(pe,K.length)} passed`:"\u2014"))})),L.rows.map(Y=>Ae.default.createElement("tr",{key:Y.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{style:q},Ae.default.createElement("div",{style:Ao()},Y.key),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},V2(Y.criterion))),Ae.default.createElement("td",{style:q},Ae.default.createElement("span",{style:{fontFamily:U,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:Ih(Y.criterion)},K0(Ih(Y.criterion),40))),S.map(K=>Ae.default.createElement("td",{key:K||"score",style:q},Ae.default.createElement(p2e,{stats:pf(Y.value,K)}))))))),N.length===0&&Ae.default.createElement("tr",{style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{colSpan:2+S.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.")))))),Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Ae.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Ae.default.createElement($e,null,"What to fix"),Ae.default.createElement("span",{style:Ao()},P.length?St(P.length,"item"):"nothing")),P.length?Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(320px, 100%), 1fr))",gap:12}},P.map(L=>Ae.default.createElement(f2e,{key:L.kind,item:L,evaluation:e,run:y,number:x}))):Ae.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${Nw(.7)}) and nothing was skipped.`)),Ae.default.createElement(_f,{evaluation:e,run:y,spend:M,onDelete:c,deleting:d}))}var jl=X(J());function E3({rows:e=[],columns:t=[],testId:r="model-leaderboard"}){if(e.length<2)return null;let n=t.length>1?t.filter(a=>e.some(i=>i.byEvaluation?.[a.id]?.total>0)):[],o=[{key:"passed",label:"Passed",unit:"Pooled",better:"higher",band:"none",align:"left",width:180,sortable:!0,cell:a=>jl.default.createElement(pu,{passed:a.passed,total:a.total,color:jQ(a.ratio),valueWidth:56})},{key:"ratio",label:"Rate",unit:"Pass",better:"higher",band:"threshold",thresholds:Wh,format:a=>$s(a)},...n.map(a=>({key:`eval:${a.id}`,label:a.name,unit:"Pass rate",title:a.name,better:"higher",band:"threshold",thresholds:Wh,value:i=>{let s=i.byEvaluation?.[a.id];return s?.total?s.passed/s.total:null},format:i=>$s(i),cellTitle:i=>{let s=i.byEvaluation?.[a.id];return s?.total?`${a.name}: ${Dn(s.passed,s.total)}`:`${a.name}: not run on this model`}}))];return jl.default.createElement(je,{padding:0,style:{overflow:"hidden"},testId:r},jl.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 14px",flexWrap:"wrap"}},jl.default.createElement($e,null,"Model leaderboard"),jl.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},`${St(e.length,"model")} \xB7 ${St(t.length,"evaluation")} \xB7 ranked by the low end of each pass rate`)),jl.default.createElement(Sf,{identity:{key:"rank",label:"Model",unit:"Rank \xB7 low end",kind:"number",better:"lower",value:a=>a.rank,render:a=>jl.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:10}},jl.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-muted)",width:18,textAlign:"right"}},a.rank),jl.default.createElement(sb,{label:a.label}))},defaultSort:{key:"rank",direction:"ascending"},columns:o,rows:e,rowKey:a=>a.label,rowProps:a=>({"data-testid":"model-leaderboard-row",title:`${a.label}: at least ${$s(a.lower)} at 95% confidence`})}))}var Ed=null,N3=new Set,DR=()=>N3.forEach(e=>e(Ed));function m2e(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 jr(e){return Ed&&Ed.resolve(!1),new Promise(t=>{Ed={...m2e(e),resolve:t},DR()})}function $R(e){if(!Ed)return;let{resolve:t}=Ed;Ed=null,DR(),t(!!e)}function jR(){return Ed}function LR(e){return N3.add(e),()=>N3.delete(e)}function zR(e,t){return e?.requireText?t===e.requireText:!0}var BR=()=>{let e=Qn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=SD(window.location.search);return t?.runId?t:null},hb=()=>mJ(Qn()),FR=()=>SD(window.location.search)?.evaluationId||(hb()?String(hb().evaluationId):null),xA=(e=11,t="var(--color-text-muted)")=>({fontFamily:U,fontSize:e,color:t}),g2e=e=>{let t=zh(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:Z2(e,t).length+r:r},h2e={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 yb({embedded:e=!1,agentId:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Te.useState)(()=>e?null:BR()),a=(0,Te.useRef)(null),[i,s]=(0,Te.useState)(0),[l,u]=(0,Te.useState)(null);(0,Te.useEffect)(()=>{let ge=a.current?.contentDocument?.body;if(!ge)return;let nt=()=>u(ge.scrollHeight);if(nt(),typeof ResizeObserver>"u")return window.addEventListener("resize",nt),()=>window.removeEventListener("resize",nt);let it=new ResizeObserver(nt);return it.observe(ge),()=>it.disconnect()},[i,n]),(0,Te.useEffect)(()=>u(null),[n]);let[c,d]=(0,Te.useState)([]),[p,f]=(0,Te.useState)([]),[m,g]=(0,Te.useState)(void 0),[b,h]=(0,Te.useState)(!1),[y,x]=(0,Te.useState)(void 0),[v,k]=(0,Te.useState)(!0),[S,w]=(0,Te.useState)(null),[_,A]=(0,Te.useState)(null),[C,O]=(0,Te.useState)(()=>{if(e)return null;let ge=hb();return ge?.runId?ge:null}),[D,H]=(0,Te.useState)(()=>e?null:FR()),[j,Z]=(0,Te.useState)({}),[N,P]=(0,Te.useState)(!1),[M,I]=(0,Te.useState)(null),[$,T]=(0,Te.useState)(null),[q,G]=(0,Te.useState)(null),[L,Y]=(0,Te.useState)(!1),[K,pe]=(0,Te.useState)(!1),[De,se]=(0,Te.useState)(0);(0,Te.useEffect)(()=>{if(e)return;let ge=()=>{o(BR());let nt=hb();O(nt?.runId?nt:null);let it=FR();H(it),it&&A(Yt=>new Set([...Yt||[],Number(it)]))};return window.addEventListener("popstate",ge),window.addEventListener("dashboard:navigate",ge),()=>{window.removeEventListener("popstate",ge),window.removeEventListener("dashboard:navigate",ge)}},[e]);let be=(0,Te.useCallback)(async()=>{try{let ge=new URLSearchParams;t&&ge.set("agent_id",t),L&&ge.set("archived","1");let nt=ge.toString(),it=await fetch(`/api/evaluations${nt?`?${nt}`:""}`);if(!it.ok)throw new Error(`Request failed (${it.status})`);let Yt=await it.json();se(Number(Yt.archived_count)||0),g(Yt.judge_provider??null),h(Yt.judge_provider_error===!0),x(Array.isArray(Yt.model_providers)?Yt.model_providers:null);let Hr=Yt.evaluations||[],Fo=null;try{Hr=await fJ(Hr,D,fetch)}catch(ao){Fo=ao.message}d(Hr),A(ao=>{if(ao)return ao;let da=D?Hr.find(io=>String(io.id)===D):Hr.find(io=>io.scenario_suite)||Hr[0];return new Set(da?[da.id]:[])}),w(Fo)}catch(ge){w(ge.message),x(nt=>nt===void 0?null:nt)}finally{k(!1)}},[t,D,L]),ue=(0,Te.useCallback)(async ge=>{try{let nt=await fetch(`/api/evaluations/${ge}`);if(!nt.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${nt.status})`);let it=await nt.json();Z(Yt=>({...Yt,[ge]:{runs:it.evaluation?.runs||[],runCount:it.evaluation?.run_count??null}}))}catch(nt){Z(it=>({...it,[ge]:{runs:null,runCount:null,error:nt.message}})),w(nt.message)}},[]);(0,Te.useEffect)(()=>{be(),fetch("/api/agents").then(ge=>ge.ok?ge.json():{agents:[]}).then(ge=>f(ge.agents||[])).catch(()=>f([]))},[be]),(0,Te.useEffect)(()=>{new Set([..._||[],...C?[C.evaluationId]:[]]).forEach(nt=>{let it=c.find(Yt=>Yt.id===nt);it&&!it.scenario_suite&&!j[nt]&&ue(nt)})},[_,C,c,j,ue]);let R=(0,Te.useRef)(null);(0,Te.useEffect)(()=>{if(e||v||!D||R.current===D||hb()?.resultId)return;let ge=typeof document<"u"?document.querySelector(`[data-evaluation-id="${CSS.escape(String(D))}"]`):null;ge&&(R.current=D,ge.scrollIntoView({behavior:"smooth",block:"start"}))},[e,v,D,c]);let we=ge=>{!e&&Qn()!==ge&&Mc(ge)},Ce=ge=>!!_?.has(ge),z=ge=>{let nt=!Ce(ge.id);A(it=>{let Yt=new Set(it||[]);return nt?Yt.add(ge.id):Yt.delete(ge.id),Yt}),we(nt?`/evaluations/${ge.id}`:"/evaluations")},ee=(ge,nt)=>{A(it=>new Set([...it||[],ge.id])),O({evaluationId:ge.id,runId:nt.id}),we(q0({evaluationId:ge.id,runId:nt.id}))},ae=ge=>{O(null),we(ge?`/evaluations/${ge}`:"/evaluations")},E=async ge=>{I(ge.id),w(null);try{let nt=await fetch(`/api/evaluations/${ge.id}/run`,{method:"POST"}),it=await nt.json().catch(()=>({}));if(!nt.ok){w((it.errors||[it.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${nt.status})`);return}await Promise.all([be(),ue(ge.id)]),it.run&&C?.evaluationId===ge.id&&ee(ge,it.run)}finally{I(null)}},W=async(ge,nt)=>{G(ge.id),w(null);try{let it=await fetch(`/api/evaluations/${ge.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:nt}})}),Yt=await it.json().catch(()=>({}));if(!it.ok){w((Yt.errors||[Yt.error]).filter(Boolean).join(", ")||`${nt?"Archive":"Unarchive"} failed (HTTP ${it.status})`);return}await be()}finally{G(null)}},F=async ge=>{if(await jr({title:`Delete ${ge.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:ge.name})){T(ge.id),w(null);try{let nt=await fetch(`/api/evaluations/${ge.id}`,{method:"DELETE"});nt.ok||nt.status===404?(d(it=>it.filter(Yt=>Yt.id!==ge.id)),A(it=>{let Yt=new Set(it||[]);return Yt.delete(ge.id),Yt}),C?.evaluationId===ge.id&&ae(null)):w(`Delete failed (HTTP ${nt.status})`)}finally{T(null)}}};if(v)return Te.default.createElement("div",{className:"flex items-center justify-center h-64"},Te.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let B=t?c.filter(ge=>String(ge.agent?.id)===String(t)):c,Ee=ge=>{let nt=j[ge.id];return nt?.runs?{runs:nt.runs,runCount:ge.run_count??nt.runCount??null,loaded:!0}:{runs:ge.latest_run?[ge.latest_run]:[],runCount:ge.run_count??null,loaded:!1}};if(n){let ge=Th(`/evaluations/${n.evaluationId}/runs/${n.runId}/report`),nt=rt(ge.report),it={padding:"6px 12px",borderRadius:8,fontSize:13,fontWeight:500,color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)",textDecoration:"none",whiteSpace:"nowrap"},Yt=`${nt}?theme=${r?"dark":"light"}`;return Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Te.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Te.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Te.default.createElement(ie,{size:"sm",onClick:()=>{Mc("/evaluations"),o(null)}},Te.default.createElement("span",{style:{fontFamily:U}},"<-")," Evaluations"),Te.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),Te.default.createElement("span",{style:xA(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),Te.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},"data-testid":"run-report-exports"},Te.default.createElement(Cs,{url:rt(ge.markdown),title:"Copy the whole report as GitHub-flavored Markdown, for a pull request or an issue",testId:"run-report-copy-markdown"}),[["html","Download HTML","The report as one self-contained page"],["json","Download JSON","The run as the evaluation report envelope \u2014 POST it to another install\u2019s /api/evaluation_reports to import it"],["md","Download Markdown","The report as GitHub-flavored Markdown"]].map(([Hr,Fo,ao])=>Te.default.createElement("a",{key:Hr,href:rt(ge[Hr]),download:!0,title:ao,"data-testid":`run-report-download-${Hr}`,style:it},Fo)),Te.default.createElement("a",{href:nt,target:"_blank",rel:"noopener noreferrer",title:"The report as one self-contained page, outside the dashboard",style:it},"Open standalone ",Te.default.createElement("span",{style:{fontFamily:U}},"->")))),Te.default.createElement("iframe",{ref:a,src:Yt,title:"Evaluation run report",allow:"clipboard-write",onLoad:()=>s(Hr=>Hr+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 ge=B.find(nt=>nt.id===C.evaluationId);if(!ge||!ge.scenario_suite){let{runs:nt,runCount:it,loaded:Yt}=ge?Ee(ge):{runs:[],runCount:null,loaded:!0};return Te.default.createElement(A3,{evaluation:ge,runs:nt,runCount:it,runId:C.runId,loading:!Yt,running:M===C.evaluationId,onSelectRun:Hr=>ee(ge,Hr),onRun:()=>E(ge),onBack:()=>ae(null),onOpenEvaluation:()=>ae(C.evaluationId),onDelete:ge?()=>F(ge):void 0,deleting:$===C.evaluationId})}}let Ve=PJ(B,{focusId:D}),{samplesScored:fe,samplesPassed:ze,passRatio:Vt,spend:Ot}=Ve,Gt=IJ(Ve),Se=[...new Set(B.map(ge=>ge.agent?.name).filter(Boolean))],tt=B.reduce((ge,nt)=>Math.max(ge,TD(nt,zh(nt)||nt.latest_run)),0),dt=B.map(g2e),zt=dt.reduce((ge,nt)=>ge+nt,0),Gr=dt.filter(Boolean).length,yo=B.length?[`${St(Se.length,"agent")} \xB7 ${tt>1?`${tt} models compared`:"no model comparisons"}`,Gt].filter(Boolean).join(" \xB7 "):"none defined yet",Hi=Ve.focused?"headline run of this evaluation":`headline run of ${St(Ve.counted,"current evaluation")}${Gt?` \xB7 ${Gt}`:""}`,fi=MJ(Ve),Ea=fi.length>1?fi[0]:null,Fl=Ot.agentCost!=null&&Ot.estimated||Ot.judgeCost!=null&&Ot.judgeEstimated,kt=Ot.agentCost!=null?Te.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:4}},Te.default.createElement("span",{"data-testid":"stat-agent-cost-scope"},`over ${St(Ot.interactions,"interaction")}`),Te.default.createElement("span",{style:{display:"grid",gridTemplateColumns:"max-content minmax(0, 1fr)",columnGap:10,rowGap:2,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},Te.default.createElement("span",null,"agent"),Te.default.createElement("span",{"data-testid":"stat-agent-cost-agent",style:{color:"var(--color-text-cell)"}},kr(Ot.agentCost,{estimated:Ot.estimated})),Te.default.createElement("span",null,"judge"),Te.default.createElement("span",{"data-testid":"stat-agent-cost-judge",style:{color:"var(--color-text-cell)"},title:"The judge's spend is the evaluation's own, outside the interactions, so it is not in the figure above"},Ot.judgeCost!=null?`${kr(Ot.judgeCost,{estimated:Ot.judgeEstimated})} \xB7 offline`:"none")),Fl&&Te.default.createElement("span",{title:gl,style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"~ estimated")):"no priced runs yet";return Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},Te.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&Te.default.createElement("div",{style:{flex:1,minWidth:260}},Te.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),Te.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.")),Te.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(De>0||L)&&Te.default.createElement(ie,{size:"sm",onClick:()=>Y(ge=>!ge),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},L?"Hide archived":`Show archived (${De})`),Te.default.createElement(ie,{variant:"primary",onClick:()=>P(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),S&&Te.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: ",S),N&&Te.default.createElement(C3,{agents:p,agentId:t,judgeProvider:m,judgeProviderError:b,modelProviders:y,onCancel:()=>P(!1),onCreated:async ge=>{P(!1),await be(),ge?.id!=null&&(A(nt=>new Set([...nt||[],ge.id])),we(`/evaluations/${ge.id}`))}}),Te.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(min(190px, 100%), 1fr))",gap:16}},Te.default.createElement(Bm,{label:"Evaluations",value:B.length,sub:yo,testId:"stat-evaluations"}),Te.default.createElement(Bm,{label:"Samples scored",value:fe,sub:Hi,testId:"stat-samples-scored"}),Te.default.createElement(Bm,{label:"Pass rate",value:$s(Vt),valueColor:Vt==null?"var(--color-text-muted)":Wn[du(Vt)].strong,sub:Vt==null?Gt||"no completed runs yet":Te.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},Te.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${ze}/${fe} passed`),Ea&&Te.default.createElement(Te.default.Fragment,null,Te.default.createElement("span",{"data-testid":"stat-pass-rate-leader",title:`${Ea.label} ${Dn(Ea.passed,Ea.total)}: best of ${fi.length} models by the low end of its pass rate`,style:{display:"flex",gap:6,minWidth:0,fontFamily:U,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Te.default.createElement("span",null,"best"),Te.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",minWidth:0,color:"var(--color-text-cell)"}},Kn(Ea.label).short),Te.default.createElement("span",{style:{flexShrink:0}},$s(Ea.ratio))),Te.default.createElement("button",{type:"button",onClick:()=>pe(ge=>!ge),"aria-expanded":K,"data-testid":"stat-pass-rate-leaderboard-toggle",style:{alignSelf:"flex-start",background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"}},Te.default.createElement($a,{kind:"chevron",open:K})," ",`${K?"hide":"compare"} ${fi.length} models`))),testId:"stat-pass-rate"}),Te.default.createElement(Bm,{label:"To fix",value:zt,valueColor:zt?"var(--color-error)":void 0,sub:zt?`across ${St(Gr,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Te.default.createElement(Bm,{label:"Cost / interaction",value:Xu(Ot.perInteraction,Ot.estimated),valueColor:Ot.perInteraction==null?"var(--color-text-muted)":void 0,sub:kt,testId:"stat-agent-cost"})),K&&Te.default.createElement(E3,{rows:fi,columns:Ve.columns}),Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},B.map((ge,nt)=>{let it=ge.latest_run,Yt=zh(ge),Hr=it&&Yt&&it.id!==Yt.id?it:null,Fo=PD(ge),ao=h2e[Fo],da=Fo==="archived",io=Ce(ge.id),pa=!!ge.scenario_suite,ec=dt[nt],Wl=(ge.criteria||[]).some(hn=>Pl(hn)==="telemetry"),{runs:Na,runCount:Id}=Ee(ge);return Te.default.createElement(je,{key:ge.id,padding:0,testId:"evaluation-card","data-telemetry":Wl?"true":"false","data-kind":pa?"suite":"sampling","data-open":io?"true":"false","data-standing":Fo,"data-evaluation-id":ge.id,style:{overflow:"hidden",opacity:da?.75:1}},Te.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":io,onClick:()=>z(ge),onKeyDown:hn=>{(hn.key==="Enter"||hn.key===" ")&&(hn.preventDefault(),z(ge))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},Te.default.createElement($a,{kind:"chevron",open:io}),Te.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:U,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:pa?"scenario suite":"sampling evaluation"},pa?"=":"~"),Te.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},ge.name),Te.default.createElement("span",{style:xA(11)},`@${ge.agent?.name||"agent"} \xB7 ${df(ge)}`),Te.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,rowGap:6,flexShrink:0,flexWrap:"wrap",maxWidth:"100%"}},Te.default.createElement("span",{style:xA(11)},Co(it?.completed_at||it?.created_at||ge.created_at)),ec>0&&Te.default.createElement("span",{style:xA(11,"var(--color-error)")},`${ec} to fix`),ao&&Te.default.createElement(ve,{tone:ao.tone,size:10,style:{padding:"1px 6px"},title:ao.title,testId:"evaluation-standing"},ao.text),Hr&&Te.default.createElement(wf,{run:Hr,testId:"evaluation-newer-run-badge"}),Te.default.createElement(wf,{run:Yt||it,testId:pa?"suite-pass-badge":"evaluation-pass-badge"}),Te.default.createElement(Zu,{evaluationId:ge.id,label:"copy link",testId:"evaluation-copy-link",title:"Copy a link that opens this evaluation, for a teammate in your organization",style:{padding:"0 4px",fontFamily:U,fontSize:11}}),Te.default.createElement("button",{type:"button",onClick:hn=>{hn.stopPropagation(),W(ge,!da)},disabled:q===ge.id,title:da?"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===ge.id?"not-allowed":"pointer",fontFamily:U,fontSize:11,color:"var(--color-text-muted)",opacity:q===ge.id?.5:1}},q===ge.id?"\u2026":da?"unarchive":"archive"))),io&&Te.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},pa?Te.default.createElement(k3,{evaluation:ge,modelProviders:y,onChanged:be,onDelete:()=>F(ge),deleting:$===ge.id,initialRunId:C?.evaluationId===ge.id?C.runId:null,initialResultId:C?.evaluationId===ge.id?C.resultId:null,onRunSelected:hn=>we(q0({evaluationId:ge.id,runId:hn}))}):Te.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},Te.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Te.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Na.length?CQ(Na,Id):`@${ge.agent?.name||"agent"} \xB7 no runs yet`),Te.default.createElement(ie,{variant:"primary",size:"sm",disabled:M===ge.id,onClick:hn=>{hn.stopPropagation(),E(ge)},testId:"evaluation-run-button"},M===ge.id?"Running\u2026":`Run ${df(ge)}`)),Te.default.createElement(ZD,{runs:Na,runCount:Id,evaluation:ge,agentName:ge.agent?.name,previousRun:ge.previous_run,onOpen:hn=>ee(ge,hn),testId:"evaluation-runs-panel"}),Te.default.createElement(_f,{evaluation:ge,run:it,spend:Bi(it),onDelete:()=>F(ge),deleting:$===ge.id}))))})),B.length===0&&!N&&Te.default.createElement(je,{style:{textAlign:"center",padding:"48px 20px"}},Te.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),Te.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 Ke=X(J());var y2e=e=>new Date(`${e}T00:00:00`),v2e=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function T3({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=ut(),o=ts(n),[a,i]=(0,Ke.useState)(null),[s,l]=(0,Ke.useState)(!0),{timeWindow:u,days:c}=Nl(),[d,p]=(0,Ke.useState)("overview");(0,Ke.useEffect)(()=>{f()},[e?.id,c]);let f=async()=>{if(e?.id){l(!0);try{let v=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(v)}catch(x){console.error("Failed to load analytics:",x)}finally{l(!1)}}},m=x=>x?x<1e3?`${x}ms`:`${(x/1e3).toFixed(2)}s`:"-",g=x=>x?x>=1e6?`${(x/1e6).toFixed(1)}M`:x>=1e3?`${(x/1e3).toFixed(1)}K`:x.toString():"0",b=x=>{switch(x){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 Ke.default.createElement("div",{className:"flex items-center justify-center h-64"},Ke.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(x=>x.count)):1,y=r?"overview":d;return Ke.default.createElement("div",{className:"space-y-6"},r?Ke.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&Ke.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ke.default.createElement(Vs,null)):Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",{className:"flex items-center space-x-4"},Ke.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},Ke.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),Ke.default.createElement("div",null,Ke.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),Ke.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&Ke.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ke.default.createElement(Vs,null))),!r&&Ke.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},v2e.map(x=>Ke.default.createElement("button",{key:x.id,onClick:()=>p(x.id),className:`px-4 py-1.5 text-sm rounded-md transition-colors ${d===x.id?"shadow":""}`,style:d===x.id?{background:o.cardBg,color:o.textPrimary}:{color:o.textSecondary}},x.label))),y==="traces"&&Ke.default.createElement(of,{agentId:e.id,embedded:!0}),y==="interactions"&&Ke.default.createElement(Yu,{agentId:e.id,embedded:!0}),y==="overview"&&Ke.default.createElement(Ke.default.Fragment,null,Ke.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ke.default.createElement(bA,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),Ke.default.createElement(bA,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.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}),Ke.default.createElement(bA,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.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}),Ke.default.createElement(bA,{title:"Total Tokens",value:g(a?.summary?.total_tokens),icon:Ke.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ke.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})),Ke.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ke.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?Ke.default.createElement("div",{className:"h-48"},Ke.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((x,v)=>Ke.default.createElement("div",{key:x.date,className:"flex-1 flex flex-col items-center group"},Ke.default.createElement("div",{className:"relative w-full"},Ke.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${x.count/h*150}px`,minHeight:x.count>0?"4px":"0"}}),Ke.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"},x.count," runs")),(v===0||v===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&Ke.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},y2e(x.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):Ke.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),Ke.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?Ke.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([x,v])=>{let k=a?.summary?.total_runs||1,S=(v/k*100).toFixed(1);return Ke.default.createElement("div",{key:x},Ke.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ke.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},x),Ke.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},v," (",S,"%)")),Ke.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},Ke.default.createElement("div",{className:`h-full ${b(x)} rounded-full transition-all`,style:{width:`${S}%`}})))})):Ke.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&Ke.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),Ke.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(x=>Ke.default.createElement("div",{key:x.id,className:"flex items-start space-x-3 p-3 rounded-lg",style:{background:n?"rgba(220,38,38,0.12)":"#fef2f2"}},Ke.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"},Ke.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"})),Ke.default.createElement("div",{className:"flex-1 min-w-0"},Ke.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},x.error||"Unknown error"),Ke.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(x.created_at).toLocaleString())))))),Ke.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},g(a?.summary?.avg_tokens_per_run))),Ke.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),Ke.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var WR={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 bA({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=WR[n]||WR.rose;return Ke.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),Ke.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),Ke.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var de=X(J());var x2e={active:"success",configured:"info",available:"warning",idle:"muted"},b2e={agent_defined:"success",dashboard:"success",mcp:"info"},UR="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",HR="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",w2e=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],qR={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:U,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},Ll={fontFamily:U,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},wA={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function GR({on:e,onClick:t,title:r}){return de.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"}},de.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 KR({on:e,dim:t=!1}){return de.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:U,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 S2e({tool:e,state:t,onToggle:r}){if(!t)return de.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.`),de.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"}},de.default.createElement(GR,{on:n,title:o,onClick:()=>r(e)}))}function SA({children:e,onClick:t,disabled:r,title:n}){return de.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:U,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 VR({children:e}){return de.default.createElement("div",{style:{overflowX:"auto"}},de.default.createElement("div",{style:{minWidth:800}},e))}function O3({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,de.useState)(null),[l,u]=(0,de.useState)(null),[c,d]=(0,de.useState)("7d"),[p,f]=(0,de.useState)(""),[m,g]=(0,de.useState)(null),[b,h]=(0,de.useState)(null),[y,x]=(0,de.useState)(!1),[v,k]=(0,de.useState)(null),[S,w]=(0,de.useState)({}),_=(Mw.find(z=>z.value===c)||Mw[1]).hours;(0,de.useEffect)(()=>{let z=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${_}`).then(ee=>{if(!ee.ok)throw new Error(`Request failed (${ee.status})`);return ee.json()}).then(ee=>{z||s(ee)}).catch(ee=>{z||u(ee.message)}),()=>{z=!0}},[e.id,_]);let A=(0,de.useMemo)(()=>({services:[],tools:[]}),[]),C=i||A,O=(0,de.useMemo)(()=>t.tools||[],[t.tools]),D=(0,de.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),H=(0,de.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),j=(0,de.useMemo)(()=>Pw(C,D),[C,D]),Z=(0,de.useMemo)(()=>H6(C,j,{query:p,filter:m}),[C,j,p,m]),N=(0,de.useMemo)(()=>K6(C,j,O,{query:p,source:b,enabledOnly:y}),[C,j,O,p,b,y]),P=(0,de.useMemo)(()=>V6(C,j,O,{range:c}),[C,j,O,c]),M=(0,de.useMemo)(()=>X6(C,{tools:O,mcpServers:D,approvalRequiredTools:H},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[C,O,D,H,e]),I=C.usage_available!==!1,$=z=>I?z:"\u2014",T=(0,de.useCallback)(z=>{r("mcp_servers",Z6(C,z,D))},[C,D,r]),q=(0,de.useCallback)(z=>{let ee=j[z.key];T({...j,[z.key]:{...ee,on:!ee.on}})},[j,T]),G=(0,de.useCallback)((z,ee)=>{let ae=j[z.key];ae.on&&T({...j,[z.key]:{...ae,tools:{...ae.tools,[ee.name]:!ae.tools[ee.name]}}})},[j,T]),L=(0,de.useCallback)((z,ee)=>{let ae=j[z.key],E=Object.fromEntries((z.tools||[]).map(W=>[W.name,ee]));T({...j,[z.key]:{on:ee||ae.on,tools:E}})},[j,T]),Y=(0,de.useCallback)(z=>{r("tools",J6(C,z));let ee=Hm(z.filter(ae=>!O.includes(ae)));ee.length>0&&r("approval_required_tools",nO(H,ee,!0))},[C,O,H,r]),K=(0,de.useCallback)(z=>{z.editable&&Y(z.on?O.filter(ee=>ee!==z.key):[...O,z.key])},[O,Y]),pe=(0,de.useCallback)((z,ee)=>{z.editable&&Y(ee?[...O,...z.keys.filter(ae=>!O.includes(ae))]:O.filter(ae=>!z.keys.includes(ae)))},[O,Y]),De=(0,de.useCallback)(z=>{r("approval_required_tools",Y6(H,z,e.approval_required_tools||[]))},[H,e,r]),se=(0,de.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),be=(C.services||[]).filter(z=>j[z.key]?.on),ue=N.find(z=>z.source==="mcp"),we=N.filter(z=>z.source!=="mcp").reduce((z,ee)=>z+ee.enabledCount,0)+(ue?ue.total:0),Ce=N.reduce((z,ee)=>z+ee.total,0);return l?de.default.createElement(je,null,de.default.createElement($e,null,"Tools & MCP services"),de.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?de.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},de.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},de.default.createElement("div",{style:{flex:1,minWidth:260}},de.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),de.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.")),de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.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)"}},de.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},"?"),de.default.createElement("input",{value:p,onChange:z=>f(z.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}})),de.default.createElement(Oo,{options:Mw,value:c,onChange:d}))),de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},P.map(z=>de.default.createElement(je,{key:z.key,padding:"14px 16px",testId:`roster-stat-${z.key}`},de.default.createElement($e,{size:11,spacing:"0.05em"},z.label),de.default.createElement("div",{style:{marginTop:6,fontFamily:U,fontSize:26,fontWeight:700,lineHeight:1.1,color:z.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},z.value),de.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},z.sub)))),de.default.createElement(je,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},de.default.createElement($e,null,"MCP services"),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},be.length," of ",(C.services||[]).length," enabled \xB7 ",ue?ue.total:0," tools offered"),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},de.default.createElement(In,{selected:!m,onClick:()=>g(null)},"All ",(C.services||[]).length),w2e.map(z=>de.default.createElement(In,{key:z.value,selected:m===z.value,onClick:()=>g(m===z.value?null:z.value)},z.label,z.value==="enabled"?` ${be.length}`:"")),de.default.createElement(Jr,{href:rt("/mcp"),onClick:()=>st("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),de.default.createElement(VR,null,de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:UR,...qR}},de.default.createElement("span",null,"On"),de.default.createElement("span",null,"Service"),de.default.createElement("span",null,"Status"),de.default.createElement("span",{style:{textAlign:"right"}},"Tools"),de.default.createElement("span",{style:{textAlign:"right"}},"Calls"),de.default.createElement("span",{style:{textAlign:"right"}},"Errors"),de.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),de.default.createElement("span",null)),Z.map(z=>{let ee=v===z.key;return de.default.createElement("div",{key:z.key},de.default.createElement("div",{className:"aa-roster-row","data-on":z.on?"true":"false","data-testid":`service-row-${z.key}`,style:{display:"grid",gridTemplateColumns:UR,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},de.default.createElement(GR,{on:z.on,onClick:()=>q(z),title:`${z.on?"Disable":"Enable"} ${z.name} for this agent`}),de.default.createElement("div",{onClick:()=>k(ee?null:z.key),style:{minWidth:0,cursor:"pointer"}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},z.name),z.first_party&&de.default.createElement(ve,{tone:"accent",size:10},"first-party"),np(z)&&de.default.createElement(ve,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Cv(z)&&de.default.createElement(ve,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),$c(z)&&de.default.createElement(ve,{tone:"info",size:10,title:"A server you added by URL on the MCP Services page"},"your server"),Av(z)&&de.default.createElement(ve,{tone:"warning",size:10,title:"This server was deleted from MCP Services; the agent still names it"},"removed"),Iw(z)&&de.default.createElement(ve,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),z.partial&&de.default.createElement(ve,{tone:"warning",size:10},z.partialLabel)),de.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...wA}},z.description)),de.default.createElement("span",null,de.default.createElement(ve,{tone:x2e[z.status]||"muted"},z.status)),de.default.createElement("span",{style:{...Ll,color:z.on?"var(--color-text-primary)":"var(--color-text-muted)"}},z.toolsLabel),de.default.createElement("span",{style:Ll},$(z.calls)),de.default.createElement("span",{style:{...Ll,color:z.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},$(z.errors)),de.default.createElement("span",{style:{...Ll,color:"var(--color-text-muted)"}},$(_v(z.last_seen))),de.default.createElement("span",{onClick:()=>k(ee?null:z.key),style:{cursor:"pointer",textAlign:"center"}},de.default.createElement($a,{kind:"chevron",open:ee}))),ee&&de.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},de.default.createElement($e,{size:10,color:"var(--color-text-muted)"},"Tools offered"),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},z.transport),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},de.default.createElement(SA,{onClick:()=>L(z,!0),title:`Offer every tool ${z.name} serves`},"all"),de.default.createElement(SA,{onClick:()=>L(z,!1),disabled:!z.on,title:`Offer none of ${z.name}'s tools`},"none"))),z.tools.length===0?de.default.createElement(tn,{style:{padding:"10px 0"}},W6(z)):de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},z.tools.map(ae=>de.default.createElement("div",{key:ae.name,className:"aa-roster-row",onClick:()=>G(z,ae),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:z.on?"pointer":"default",opacity:z.on?1:.55}},de.default.createElement(KR,{on:ae.on,dim:!z.on}),de.default.createElement("span",{style:{minWidth:0}},de.default.createElement("span",{style:{display:"block",fontFamily:U,fontSize:12,fontWeight:600,color:ae.on?"var(--color-text-primary)":"var(--color-text-secondary)",...wA}},ae.name),de.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...wA}},ae.description)),de.default.createElement("span",{style:{...Ll,color:"var(--color-text-secondary)"}},$(ae.calls)),de.default.createElement("span",{style:{...Ll,color:ae.errors?"var(--color-error-text)":"var(--color-text-muted)"}},$(ae.errors?`${ae.errors} err`:tO(ae.avg_duration_ms)))))),!z.on&&de.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",z.name," on offers these ",z.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),Z.length===0&&de.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"no MCP services yet"))),de.default.createElement(je,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},de.default.createElement($e,null,"Tools"),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},we," enabled of ",Ce," available"),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},de.default.createElement(In,{selected:!b,onClick:()=>h(null)},"All ",Ce),N.map(z=>de.default.createElement(In,{key:z.source,selected:b===z.source,onClick:()=>h(b===z.source?null:z.source)},z.name," ",z.total)),de.default.createElement(In,{square:!0,mono:!0,selected:y,onClick:()=>x(!y),style:{marginLeft:4}},y?"[x] enabled only":"[ ] enabled only"))),de.default.createElement(VR,null,de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:HR,...qR}},de.default.createElement("span",null),de.default.createElement("span",null,"Tool"),de.default.createElement("span",null,"Source"),de.default.createElement("span",{style:{textAlign:"right"}},"Calls"),de.default.createElement("span",{style:{textAlign:"right"}},"Errors"),de.default.createElement("span",{style:{textAlign:"right"}},"Avg"),de.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),de.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(z=>{let ee=S[z.source]!==!0;return de.default.createElement("div",{key:z.source},de.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"}},de.default.createElement("span",{onClick:()=>w({...S,[z.source]:ee}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},de.default.createElement($a,{kind:"chevron",open:ee}),de.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},z.name)),de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},z.meta),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-cell)"}},z.countLabel),z.editable&&de.default.createElement(de.default.Fragment,null,de.default.createElement(SA,{onClick:()=>pe(z,!0)},"all"),de.default.createElement(SA,{onClick:()=>pe(z,!1)},"none")))),ee&&z.rows.map(ae=>de.default.createElement("div",{key:ae.key,className:"aa-roster-row","data-on":ae.on?"true":"false","data-testid":`tool-row-${ae.key}`,onClick:()=>K(ae),style:{display:"grid",gridTemplateColumns:HR,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:ae.editable?"pointer":"default",opacity:ae.editable?1:.75}},de.default.createElement(KR,{on:ae.on,dim:!ae.editable}),de.default.createElement("div",{style:{minWidth:0}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:ae.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},ae.name),ae.source==="mcp"&&de.default.createElement(ve,{size:10},"via ",ae.server),ae.source==="agent_defined"&&(ae.editable?de.default.createElement(ve,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):de.default.createElement(ve,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),I&&ae.on&&!ae.calls&&de.default.createElement(ve,{size:10},"unused")),de.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...wA}},ae.description)),de.default.createElement("span",null,de.default.createElement(ve,{tone:b2e[ae.source]||"muted"},eO[ae.source])),de.default.createElement("span",{style:Ll},$(ae.calls)),de.default.createElement("span",{style:{...Ll,color:ae.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},$(ae.errors)),de.default.createElement("span",{style:{...Ll,color:"var(--color-text-secondary)"}},$(tO(ae.avg_duration_ms))),de.default.createElement("span",{style:{...Ll,color:"var(--color-text-muted)"}},$(_v(ae.last_seen))),de.default.createElement(S2e,{tool:ae,state:rO(ae,H),onToggle:De}))))}),N.every(z=>z.rows.length===0)&&de.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"nothing enabled yet"))),de.default.createElement(je,{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"},de.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},de.default.createElement($e,{size:11,spacing:"0.05em"},we," tools \xB7 ",be.length," services"),de.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.")),de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},M>0&&de.default.createElement(de.default.Fragment,null,de.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-warning-text)"}},M," change",M===1?"":"s"," pending"),de.default.createElement(ie,{variant:"secondary",onClick:se},"Discard")),de.default.createElement(ie,{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")))):de.default.createElement(je,null,de.default.createElement(tn,null,"loading the roster\u2026"))}var nr=X(J());function P3({agentId:e,colors:t}){let[r,n]=(0,nr.useState)(""),[o,a]=(0,nr.useState)(""),[i,s]=(0,nr.useState)(""),[l,u]=(0,nr.useState)(1),[c,d]=(0,nr.useState)(null),[p,f]=(0,nr.useState)(null),[m,g]=(0,nr.useState)(0);(0,nr.useEffect)(()=>{let h=new AbortController;d(null),f(null);let y=new URLSearchParams({agent_id:e,rating:r,from:o,to:i,page:l});return fetch(rt(`/api/feedback?${y}`),{signal:h.signal}).then(async x=>{if(!x.ok)throw new Error("Could not load feedback.");return x.json()}).then(d).catch(x=>{x.name!=="AbortError"&&f(x.message)}),()=>h.abort()},[e,r,o,i,l,m]);let b=h=>y=>{h(y.target.value),u(1)};return nr.default.createElement("section",{"aria-label":"User feedback",style:{color:t.textPrimary,background:t.cardBg,border:`1px solid ${t.cardBorder}`,borderRadius:12,padding:20}},nr.default.createElement("div",{className:"flex flex-wrap items-center gap-4 mb-4"},nr.default.createElement("label",null,"Rating ",nr.default.createElement("select",{value:r,onChange:b(n),style:{color:t.textPrimary,background:t.cardBg}},nr.default.createElement("option",{value:""},"All ratings"),nr.default.createElement("option",{value:"positive"},"Thumbs up"),nr.default.createElement("option",{value:"negative"},"Thumbs down"))),nr.default.createElement("label",null,"From ",nr.default.createElement("input",{type:"date",value:o,onChange:b(a),style:{color:t.textPrimary,background:t.cardBg}})),nr.default.createElement("label",null,"To ",nr.default.createElement("input",{type:"date",value:i,onChange:b(s),style:{color:t.textPrimary,background:t.cardBg}})),nr.default.createElement("button",{type:"button",onClick:()=>g(h=>h+1)},"Refresh")),p&&nr.default.createElement("p",{role:"alert"},p),!c&&!p&&nr.default.createElement("p",{role:"status"},"Loading feedback\u2026"),c&&nr.default.createElement(nr.default.Fragment,null,nr.default.createElement("p",{className:"mb-4"},c.positive," thumbs up \xB7 ",c.negative," thumbs down \xB7 ",c.positive_percentage==null?"No ratings":`${c.positive_percentage}% positive`," (",c.total," ratings matching filters)"),c.total===0&&nr.default.createElement("p",null,"No feedback recorded for these filters. Submit feedback from your application after the trace is ingested."),nr.default.createElement("ul",null,c.feedback.map(h=>nr.default.createElement("li",{key:h.id,className:"py-4",style:{borderTop:`1px solid ${t.cardBorder}`}},nr.default.createElement("strong",null,h.rating==="positive"?"\u{1F44D} Thumbs up":"\u{1F44E} Thumbs down"),nr.default.createElement("span",null," \xB7 ",new Date(h.created_at).toLocaleString()),h.user_reference&&nr.default.createElement("span",null," \xB7 ",h.user_reference),h.comment&&nr.default.createElement("p",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},h.comment),nr.default.createElement("a",{className:"underline",href:rt(`/traces?trace=${encodeURIComponent(h.trace_id)}`)},"Open interaction trace"),h.span_id&&nr.default.createElement("p",null,"Response span: ",nr.default.createElement("code",null,h.span_id))))),nr.default.createElement("div",{className:"flex gap-4 mt-4"},nr.default.createElement("button",{disabled:l===1,onClick:()=>u(h=>h-1)},"Previous"),nr.default.createElement("span",null,"Page ",l),nr.default.createElement("button",{disabled:l*50>=c.total,onClick:()=>u(h=>h+1)},"Next"))))}var k2e=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],ZR=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],_2e=ZR.map(e=>e.id),YR={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"]}},C2e={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function Nd({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(YR[e]||YR.neutral)[r?"dark":"light"];return _e.default.createElement("span",{style:{background:o,color:a,borderRadius:"999px",padding:"2px 8px",fontSize:"11px",fontWeight:600,fontFamily:t?It.mono:void 0,whiteSpace:"nowrap"}},n)}function ka({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:aa,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 _e.default.createElement("button",{type:"button",onClick:r,disabled:n,title:a,"data-testid":i,style:{...u,...c[e]||c.secondary}},s)}function XR({tabs:e,active:t,onChange:r,colors:n}){return _e.default.createElement("div",{style:{display:"flex",alignItems:"center",flexShrink:0}},e.map(o=>{let a=t===o.id;return _e.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?aa:"transparent"}`,color:a?aa:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function kA({agent:e,meta:t,onSave:r,onDelete:n,onRun:o,onDuplicate:a,onRunReport:i,onBack:s,isLoading:l,initialTab:u}){let{darkMode:c}=ut(),d=ts(c),[p,f]=(0,_e.useState)(u||"config"),[m,g]=(0,_e.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,_e.useState)([]),[y,x]=(0,_e.useState)(!1),[v,k]=(0,_e.useState)(""),S=Ic([m.provider]);(0,_e.useEffect)(()=>{let j=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"});x(j)},[m,e]),(0,_e.useEffect)(()=>{p==="versions"?w():p==="code"&&_()},[p]);let w=async()=>{try{let Z=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(Z.versions)}catch(j){console.error("Failed to load versions:",j)}},_=async()=>{try{let Z=await(await fetch(`/api/agents/${e.id}/export`)).json();k(Z.code)}catch(j){console.error("Failed to load code preview:",j)}},A=(j,Z)=>{g(N=>({...N,[j]:Z}))},C=(j,Z)=>{g(N=>{let P=N[j]||[],M=P.includes(Z)?P.filter(I=>I!==Z):[...P,Z];return{...N,[j]:M}})},O=()=>{r(m)},D=_2e.includes(p),H=p==="tools";return _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},_e.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:"12px",flexWrap:"wrap"}},_e.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:It.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),_e.default.createElement(wn,{size:44}),_e.default.createElement("div",{style:{flex:1,minWidth:0}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},_e.default.createElement("h1",{style:{fontSize:"20px",fontWeight:700,color:d.textPrimary,margin:0}},m.name||"Untitled agent"),_e.default.createElement(Nd,{tone:C2e[m.status]||"neutral",darkMode:c},m.status),y&&_e.default.createElement(Nd,{tone:"info",darkMode:c},"unsaved")),_e.default.createElement("p",{style:{fontSize:"13px",color:d.textSecondary,margin:"4px 0 0"}},m.description||"No description")),_e.default.createElement("div",{className:"max-md:w-full max-md:justify-end",style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&_e.default.createElement(ka,{variant:"secondary",colors:d,onClick:a},"Duplicate"),_e.default.createElement(ka,{variant:"primary",colors:d,onClick:o},"Run Agent"))),_e.default.createElement("div",{className:"max-md:-mx-4 max-md:px-4","data-testid":"agent-tabs",style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto",scrollbarWidth:"none"}},_e.default.createElement(XR,{tabs:k2e,active:p,onChange:f,colors:d}),_e.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),_e.default.createElement(XR,{tabs:ZR,active:p,onChange:f,colors:d})),H?_e.default.createElement(O3,{agent:e,formData:m,updateField:A,onSave:O,hasChanges:y,isLoading:l}):D?_e.default.createElement("div",null,p==="traces"&&_e.default.createElement(of,{agentId:e.id,embedded:!0}),p==="metrics"&&_e.default.createElement(T3,{agent:e,embedded:!0}),p==="interactions"&&_e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},i&&_e.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},_e.default.createElement("button",{type:"button",onClick:i,style:{background:"none",border:"none",cursor:"pointer",fontFamily:It.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),_e.default.createElement(Yu,{agentId:e.id,embedded:!0})),p==="evals"&&_e.default.createElement(yb,{embedded:!0,agentId:e.id}),p==="feedback"&&_e.default.createElement(P3,{agentId:e.id,colors:d})):_e.default.createElement("div",{style:{background:d.cardBg,border:`1px solid ${d.cardBorder}`,borderRadius:"12px",padding:"20px"}},p==="config"&&_e.default.createElement(E2e,{formData:m,updateField:A,providerModels:S,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&_e.default.createElement(N2e,{formData:m,updateField:A,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&_e.default.createElement(T2e,{versions:b,agentId:e.id,onRestore:w,colors:d,darkMode:c}),p==="code"&&_e.default.createElement(O2e,{code:v,colors:d})),y&&!H&&_e.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)"}},_e.default.createElement("span",{style:{fontSize:"13px",color:d.textSecondary}},"Unsaved changes"),_e.default.createElement("div",{style:{display:"flex",gap:"8px"}},_e.default.createElement(ka,{variant:"primary",size:"sm",colors:d,onClick:O,disabled:l},l?"Saving\u2026":"Save Changes"))))}var zl=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Qu=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),A2e=e=>({fontFamily:It.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function E2e({formData:e,updateField:t,providerModels:r,colors:n,darkMode:o,onDelete:a}){return _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},_e.default.createElement("div",{className:"max-md:grid-cols-1!",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Agent Name"),_e.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Qu(n)})),_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Preset Type"),_e.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Qu(n)},Object.keys(Lm).map(i=>_e.default.createElement("option",{key:i,value:i},i))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Description"),_e.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Qu(n),resize:"vertical"}})),_e.default.createElement("div",{className:"max-md:grid-cols-1!",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Provider"),_e.default.createElement("select",{value:e.provider,onChange:i=>{t("provider",i.target.value),t("model",r[i.target.value][0])},className:"aa-field",style:Qu(n)},Object.keys(r).map(i=>_e.default.createElement("option",{key:i,value:i},i.charAt(0).toUpperCase()+i.slice(1))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Model"),_e.default.createElement(fu,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Qu(n),fontFamily:It.mono}}))),_e.default.createElement("div",{className:"max-md:grid-cols-1!",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Temperature"," ",_e.default.createElement("span",{style:{fontFamily:It.mono,color:n.textSecondary}},e.model_config.temperature)),_e.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:aa}})),_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(n)},"Status"),_e.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Qu(n)},_e.default.createElement("option",{value:"draft"},"Draft"),_e.default.createElement("option",{value:"active"},"Active"),_e.default.createElement("option",{value:"archived"},"Archived")))),a&&_e.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",borderTop:`1px solid ${n.cardBorder}`,paddingTop:"16px"}},_e.default.createElement("div",null,_e.default.createElement("div",{style:A2e(n)},"Danger zone"),_e.default.createElement("p",{style:{fontSize:"13px",color:n.textMuted,margin:"4px 0 0"}},"Deleting an agent removes its configuration and version history.")),_e.default.createElement(ka,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function N2e({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 _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(o)},"System Instructions"),_e.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:{...Qu(o),fontFamily:It.mono,resize:"vertical"}})),_e.default.createElement("div",null,_e.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}},_e.default.createElement("label",{style:{...zl(o),marginBottom:0}},"Action Prompts"),_e.default.createElement(ka,{variant:"secondary",size:"sm",colors:o,onClick:s},"+ Add action")),_e.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 ",_e.default.createElement("span",{style:{fontFamily:It.mono}},"#ask")," action uses the system instructions alone."),a.length>0&&_e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},a.map((u,c)=>_e.default.createElement("div",{key:c,style:{border:`1px solid ${o.cardBorder}`,borderRadius:"10px",padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},_e.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"13px",color:o.textMuted}},"#"),_e.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:{...Qu(o),flex:1,padding:"6px 10px",fontFamily:It.mono}}),_e.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:o.textSecondary,whiteSpace:"nowrap"}},_e.default.createElement("input",{type:"checkbox",checked:!!u.expose_as_tool,onChange:d=>i(c,{expose_as_tool:d.target.checked}),style:{accentColor:aa}}),"Expose as tool"),_e.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:It.mono,fontSize:"12px",color:o.textMuted,background:"none",border:"none",cursor:"pointer",padding:"4px"}},"[x]")),_e.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:{...Qu(o),fontFamily:It.mono,resize:"vertical"}}))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:zl(o)},"Instruction Sets"),_e.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},r.instructionSets?.map(u=>{let c=e.instruction_sets.includes(u);return _e.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?aa:o.inputBorder}`,background:c?aa:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function T2e({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await jr({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 _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},_e.default.createElement("p",{style:{fontSize:"13px",color:n.textSecondary,margin:0}},"View and restore previous versions of this agent."),e.length>0?_e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"10px"}},e.map(i=>{let s=i.is_latest||i.isLatest;return _e.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?aa:n.cardBorder}`,background:s?"rgba(239,68,68,0.06)":"transparent"}},_e.default.createElement("div",{style:{minWidth:0}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},_e.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&_e.default.createElement(Nd,{tone:"error",darkMode:o},"current")),_e.default.createElement("p",{style:{fontSize:"13px",color:n.textCell,margin:"4px 0 0"}},i.change_summary||i.changeSummary),_e.default.createElement("p",{style:{fontFamily:It.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&_e.default.createElement(ka,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):_e.default.createElement(P2e,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function O2e({code:e,colors:t}){let r=()=>{navigator.clipboard.writeText(e)};return _e.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},_e.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},_e.default.createElement("p",{style:{fontSize:"13px",color:t.textSecondary,margin:0}},"Generated Ruby code for this agent."),_e.default.createElement(ka,{variant:"secondary",size:"sm",colors:t,onClick:r},"Copy")),_e.default.createElement("pre",{style:{padding:"16px",background:"#111827",color:"#e5e7eb",borderRadius:"10px",overflowX:"auto",fontFamily:It.mono,fontSize:"12px",lineHeight:1.6,margin:0}},_e.default.createElement("code",null,e||"Loading...")))}function P2e({colors:e,glyph:t,title:r,hint:n}){return _e.default.createElement("div",{style:{textAlign:"center",padding:"40px 20px"}},_e.default.createElement("div",{style:{fontFamily:It.mono,fontSize:"20px",color:e.textMuted}},t),_e.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:e.textPrimary,marginTop:"10px"}},r),_e.default.createElement("p",{style:{fontSize:"13px",color:e.textMuted,margin:"6px auto 0",maxWidth:"420px"}},n))}var Q=X(J());async function Xh(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var _A=X(J());var M2e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var QR=Object.freeze({events:500,chars:262144}),I2e=16*1024,D2e=3;function $2e(e){return{emit:e,maskAllInputs:!0,blockSelector:M2e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function j2e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function L2e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function z2e(e,t=QR){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 JR(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function RR({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=QR,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",p=null,f=null,m=null,g=null,b=!1,h=!1,y=null,x=0;function v(Z){d!==Z&&(d=Z,i(Z))}function k(){u.length=0,c=0}function S(){f&&f(),f=null,m=null,g!==null&&o.clearInterval(g),g=null,a?.removeEventListener?.("pagehide",D)}function w(Z){h=!0,k(),S(),v(Z)}function _(Z){if(b||h)return;let N=j2e(Z);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&O()}async function A(Z,N){let P=L2e(Z,n());try{let M=await r(`/api/session_recordings/${encodeURIComponent(p)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:P,keepalive:N&&P.length<=I2e});return JR(M.status)}catch{return"retry"}}async function C(Z){for(;u.length>0&&!h;){let N=u.splice(0,z2e(u,s)),P=N.reduce((I,$)=>I+$.length+1,0);c-=P;let M=await A(N,Z);if(M==="sent"){x=0;continue}if(M!=="retry"){w(M);return}if(x+=1,Z||x>=D2e){x=0,k(),m&&m();return}u.unshift(...N),c+=P;return}}function O({final:Z=!1}={}){return p===null||h?Promise.resolve():(y||(y=C(Z).finally(()=>{y=null})),y)}function D(){O({final:!0})}async function H(){if(d!=="idle"||b)return;v("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||w("failed");return}if(b)return;if(!Z.ok){w(JR(Z.status)==="off"?"off":"failed");return}let N=await Z.json().catch(()=>null);if(b)return;if(p=N?.recording?.id??null,p===null){w("failed");return}let P;try{({record:P}=await t())}catch{b||w("failed");return}if(b)return;let M=null;try{M=typeof P=="function"?P($2e(_)):null}catch{M=null}if(typeof M!="function"){w("failed");return}f=M,m=()=>P.takeFullSnapshot?.(),g=o.setInterval(()=>O(),l),a?.addEventListener?.("pagehide",D),v("recording")}async function j(){b||(b=!0,S(),!h&&(v("stopped"),y&&await y,await O({final:!0})))}return{start:H,stop:j,flush:O,get state(){return d}}}function M3(e,t){let[r,n]=(0,_A.useState)("idle");return(0,_A.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=RR({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 B2e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},F2e=(e,t)=>{let r=B2e[e]||{role:e,label:e};return{...Hn(r.role,t),label:r.label}},I3={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},W2e=["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"],U2e=["user","assistant","tool"],H2e=1200,q2e=600*1e3,CA=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",eee=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},D3=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()]},Es=e=>e?.context_id??e?.output_metadata?.context_id??null,vb=e=>e.json().catch(()=>({})),ree=({open:e,color:t})=>Q.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}},Q.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})),K2e=e=>typeof e=="string"?e:e?.name||e?.key||"?";function tee({label:e,names:t,colors:r}){return Q.default.createElement("div",{className:"flex justify-between gap-3"},Q.default.createElement("dt",{className:"shrink-0",style:{color:r.textSecondary}},e),Q.default.createElement("dd",{className:"text-right font-mono text-xs break-words min-w-0",style:{color:t.length?r.textPrimary:r.textMuted}},t.length?t.join(", "):"none"))}function V2e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=D3(e),i=x2(t);return Q.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=F2e(s.kind,t);return Q.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},Q.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)"}:{}},Q.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),Q.default.createElement("div",{className:"min-w-0 flex-1"},Q.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&Q.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),Q.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"?Q.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?Q.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):Q.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${CA(s.duration_ms)}`),s.at&&Q.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&Q.default.createElement(ree,{open:l,color:r.textMuted})),l&&Q.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&&Q.default.createElement("div",null,Q.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),Q.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},eee(s.input))),s.output&&Q.default.createElement("div",null,Q.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),Q.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"}:{}}},eee(s.output)))))}))}function G2e({run:e,darkMode:t,colors:r}){return e?Q.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},Q.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},Q.default.createElement(Nd,{tone:I3[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&Q.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?Q.default.createElement("span",null,CA(e.duration_ms)):null,e.total_tokens?Q.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&Q.default.createElement("a",{href:rt(`/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 $3({agent:e,onBack:t,recorderUrl:r=null,freshConversation:n=!1}){let{darkMode:o}=ut(),a=ts(o),i=e.action_prompts||e.actionPrompts||[],s=["ask",...i.map(le=>le.name).filter(Boolean)],[l,u]=(0,Q.useState)("ask"),[c,d]=(0,Q.useState)(""),[p,f]=(0,Q.useState)([]),[m,g]=(0,Q.useState)(!1),[b,h]=(0,Q.useState)([]),[y,x]=(0,Q.useState)(null),[v,k]=(0,Q.useState)(null),[S,w]=(0,Q.useState)(null),[_,A]=(0,Q.useState)([]),[C,O]=(0,Q.useState)(!1),[D,H]=(0,Q.useState)(null),[j,Z]=(0,Q.useState)(null),[N,P]=(0,Q.useState)(null),[M,I]=(0,Q.useState)(null),[$,T]=(0,Q.useState)({}),[q,G]=(0,Q.useState)([]),[L,Y]=(0,Q.useState)([]),[K,pe]=(0,Q.useState)(""),De=(0,Q.useCallback)(async()=>{try{let le=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!le.ok)return;let Le=await le.json(),ct=Q2(Le.sandboxes);Y(ct),pe(Bt=>R2(Bt,ct)||(ct.length===1?ct[0].value:""))}catch{}},[]);(0,Q.useEffect)(()=>{De()},[De]);let se=Dw(e.tools||[]),[be,ue]=(0,Q.useState)(null),[R,we]=(0,Q.useState)(!1),[Ce,z]=(0,Q.useState)(null),[ee,ae]=(0,Q.useState)(!1),[E,W]=(0,Q.useState)(!1),[F,B]=(0,Q.useState)(null),[Ee,Ve]=(0,Q.useState)(""),[fe,ze]=(0,Q.useState)(!1),[Vt,Ot]=(0,Q.useState)(null),Gt=(0,Q.useRef)(null),Se=(0,Q.useRef)(!n),tt=(0,Q.useRef)(null),dt=(0,Q.useRef)(0),zt=(0,Q.useRef)(null),Gr=(0,Q.useRef)(!1),yo=(0,Q.useRef)(!0),Hi=(0,Q.useRef)(null),fi=(0,Q.useRef)([]),Ea=(0,Q.useRef)(null),Fl=(0,Q.useRef)(null),kt=(0,Q.useRef)(null),ge=(0,Q.useRef)(null),nt=M3(y,r),it=(v?.messages||[]).filter(le=>U2e.includes(le.role));(0,Q.useEffect)(()=>{Hi.current=j},[j]),(0,Q.useEffect)(()=>{fi.current=p},[p]),(0,Q.useEffect)(()=>{yo.current=!0,Yt();let le=zX(window.location.search);return le&&Eo(le),()=>{yo.current=!1,dt.current+=1,hn(Hi.current),hn({attachments:fi.current}),Z(null),f([])}},[e.id]),(0,Q.useEffect)(()=>{Hr(l)},[e.id,l]),(0,Q.useEffect)(()=>{tt.current=y,y?Fo(y):(k(null),w(null))},[y]),(0,Q.useEffect)(()=>{let le=Fl.current;le&&(le.scrollTop=le.scrollHeight)},[it.length,j,D?.logs?.length,D?.input_requests?.length,F,N]),(0,Q.useEffect)(()=>{if(!E)return;let le=Le=>{ge.current&&!ge.current.contains(Le.target)&&W(!1)};return document.addEventListener("mousedown",le),()=>document.removeEventListener("mousedown",le)},[E]);let Yt=async()=>{try{let Le=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();A(Le.runs||[])}catch(le){console.error("Failed to load runs:",le)}},Hr=async le=>{try{let Le=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(le)}`);if(!Le.ok)throw new Error(`HTTP ${Le.status}`);let Bt=(await Le.json()).conversations||[];h(Bt),x(On=>On&&(Gt.current===On||Bt.some(Ka=>Ka.id===On))?On:Se.current?Bt[0]?.id??null:null)}catch(Le){console.error("Failed to load conversations:",Le),h([])}},Fo=async le=>{try{let Le=await fetch(`/api/interactions/${le}`);if(!Le.ok)throw new Error(Le.status===404?"Conversation not found":`HTTP ${Le.status}`);let ct=await Le.json();if(tt.current!==le)return;k(ct.interaction),w(null)}catch(Le){if(tt.current!==le)return;k(null),w(Le.message)}},ao=async()=>{let le=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:l})}),Le=await vb(le);if(!le.ok||!Le.conversation)throw new Error(Le.error||`Could not start a conversation (HTTP ${le.status})`);let ct=Le.conversation;return h(Bt=>[ct,...Bt.filter(On=>On.id!==ct.id)]),Gt.current=ct.id,x(ct.id),ct.id},da=()=>tt.current?Promise.resolve(tt.current):ao(),io=le=>{Gt.current=null,u(le)},pa=le=>{Gr.current=le,O(le)},ec=()=>{zt.current?.waiting&&(zt.current=null,pa(!1))},Wl=()=>{ec(),H(null),I(null),T({}),G([])},Na=le=>{let Le=le?Number(le):null;Le!==tt.current&&Wl(),Gt.current=Le,x(Le),P(null)},Id=async()=>{if(!C)try{await ao(),w(null),P(null),Wl(),hn(Hi.current),Z(null),B(null)}catch(le){w(le.message)}},hn=le=>{(le?.attachments||[]).forEach(Le=>{Le.url&&Le.url.startsWith("blob:")&&URL.revokeObjectURL(Le.url)})},zf=le=>{let Le=Array.from(le||[]).filter(Boolean);Le.length!==0&&f(ct=>[...ct,...Le.map(Bt=>({file:Bt,filename:Bt.name,content_type:Bt.type||"application/octet-stream",byte_size:Bt.size,kind:RY(Bt),url:Bt.type&&Bt.type.startsWith("image/")?URL.createObjectURL(Bt):null}))])},ly=le=>{f(Le=>{let ct=Le[le];return ct?.url&&URL.revokeObjectURL(ct.url),Le.filter((Bt,On)=>On!==le)})},tc=(le,Le)=>{hn(Hi.current),Z(null),Yt();let ct=Es(le)??Le;ct&&(ct!==tt.current?(Gt.current=ct,x(ct)):Fo(ct),Hr(l))},Bb=(le,Le)=>{zt.current=null,pa(!1),G([]),tc(le,Le)},uy=(le,Le)=>{zt.current={id:le.id,contextId:Es(le)??Le,waiting:!0},tc(le,Le),E2()},Bf=(le,Le)=>{if(!yo.current)return;let ct=++dt.current,Bt=Date.now(),On=async()=>{if(dt.current===ct){try{let Ka=await fetch(`/api/runs/${le}`);if(Ka.ok){let so=await Ka.json();if(dt.current!==ct)return;H(so.run);let mi=RI(so.run);if(mi==="finished"){Bb(so.run,Le);return}if(mi==="awaiting"){uy(so.run,Le);return}}}catch{}Date.now()-BtKa&&{...Ka,status:"failed",error_message:"Timed out waiting for the run to finish."}),I("Timed out waiting for the run to finish."))}};On()},Fb=async({text:le,files:Le,fromComposer:ct=!1})=>{let Bt=(le||"").trim();if(!Bt&&Le.length===0||C)return;I(null),P(null),B(null),pa(!0),T({}),G([]),H({status:"pending",input_prompt:Bt,output:"",logs:[],started_at:new Date().toISOString()}),hn(Hi.current),Z({content:Bt||"(see attached files)",attachments:Le.map(({file:so,...mi})=>mi)}),ct&&(d(""),f([]));let On=tt.current;if(!On)try{On=await ao()}catch(so){I(`${so.message} \u2014 running without a pinned conversation.`)}let Ka=()=>{ct&&(d(Bt),f(Le)),Z(null)};try{let so=new FormData;so.append("prompt",Bt),so.append("action_name",l),On&&so.append("params[context_id]",String(On)),K&&so.append("sandbox_id",K),Le.forEach(({file:ql})=>so.append("attachments[]",ql,ql.name));let mi=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:so}),Os=await vb(mi);if(Os.code==="sandbox_refused"&&De(),mi.status===402&&Os.upgrade_required){ue(Os.usage),H(ql=>({...ql,status:"failed",error_message:Os.message||"Plan limit reached"})),pa(!1),Ka();return}if(!mi.ok)throw new Error(Os.error||"Run failed");Bf(Os.run.id,Es(Os.run)??On)}catch(so){H(mi=>({...mi,status:"failed",error_message:so.message})),pa(!1),Ka()}},Wb=()=>Fb({text:c,files:p,fromComposer:!0}),Ye=(le,Le)=>{let ct=zt.current;!ct||String(ct.id)!==String(le.run_id)||(G(Bt=>[...Bt.filter(On=>On.request.id!==le.id),{request:le,outcome:Le}]),zt.current={...ct,waiting:!1},Bf(ct.id,ct.contextId))},Ta=le=>{let Le=RI(le);Le==="finished"||Gr.current||(I(null),T({}),G([]),H(le),pa(!0),Le==="awaiting"?uy(le,Es(le)):Bf(le.id,Es(le)))},cy=(le,Le)=>{Gt.current=le,Le&&s.includes(Le)&&Le!==l&&u(Le),x(le)},Eo=async le=>{try{let Le=await fetch(`/api/runs/${le}`);if(!Le.ok)return;let ct=await Le.json();if(!yo.current||!ct.run||String(ct.agent?.id)!==String(e.id))return;let Bt=Es(ct.run);Bt&&cy(Bt,ct.run.action_name),Ta(ct.run)}catch(Le){console.error("Failed to open the linked run:",Le)}},Ff=le=>{!le||!le.text||Fb({text:le.text,files:[]})},fa=le=>{le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&(le.preventDefault(),Wb())},Oa=async(le,Le)=>{let ct=tt.current,Bt=await fetch(`/api/interactions/${ct}/messages/${le.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:Le})}),On=await vb(Bt);if(!Bt.ok)throw new Error(On.error||`Could not save the message (HTTP ${Bt.status})`);await Fo(ct)},Wf=async le=>{let Le=tt.current;try{let ct=await fetch(`/api/interactions/${Le}/messages/${le.id}`,{method:"DELETE"});if(!ct.ok){let Bt=await vb(ct);throw new Error(Bt.error||`Could not delete the message (HTTP ${ct.status})`)}w(null),await Fo(Le),Hr(l)}catch(ct){w(ct.message)}},ol=le=>{W(!1),B(le),Ve(""),Ot(null)},rc=async()=>{let le=Ee.trim();if(!(!le||fe)){ze(!0),Ot(null);try{let Le=await da(),ct=await fetch(`/api/interactions/${Le}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:F,content:le})}),Bt=await vb(ct);if(!ct.ok)throw new Error(Bt.error||`Could not add the message (HTTP ${ct.status})`);Ve(""),B(null),await Fo(Le),Hr(l)}catch(Le){Ot(Le.message)}finally{ze(!1)}}},Uf=async le=>{let Le=le;if(Es(le)==null||le.status==="awaiting_input")try{let Bt=await fetch(`/api/runs/${le.id}`);Bt.ok&&(Le=(await Bt.json()).run)}catch(Bt){console.error("Failed to load run details:",Bt)}let ct=Es(Le);ct?(P(null),ct!==tt.current&&Wl(),cy(ct,Le.action_name||le.action_name),Ta(Le)):P({...Le,output:Le.output??Le.output_preview,error_message:Le.error_message??Le.error}),Ea.current?.scrollIntoView({behavior:"smooth",block:"start"})},Hf=async()=>{we(!0),z(null);try{await Xh({planSlug:"pro"})}catch(le){z(le.message),we(!1)}},Pa=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,dy=i.find(le=>le.name===l)?.prompt,Ul=[e.instructions,l==="ask"?null:dy].map(le=>(le||"").trim()).filter(Boolean).join(` -`)||v?.instructions||"",Ul=b.slice();y&&!Ul.some(le=>le.id===y)&&Ul.unshift({id:y,message_count:it.length});let yo=(c.trim().length>0||p.length>0)&&!C,Ns=D?.status==="awaiting_input",uy=Ns?Ch(D.input_requests):[],cy=new Set(q.map(({request:le})=>le.id)),Id=D&&!C&&D.status==="failed",$b=D&&!C&&D.status==="complete"&&!As(D)&&!y,ol={background:a.cardBg,border:`1px solid ${a.cardBorder}`,borderRadius:"12px"},Lb={borderBottom:`1px solid ${a.cardBorder}`},zb={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontSize:"13px",fontFamily:It.mono,maxWidth:"260px"},dy={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${m?oa:a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},py=Un("system",o),GA=f2(o);return Q.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},Q.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},xe&&Q.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},Q.default.createElement("div",null,Q.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),Q.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",xe.runs_used," of ",xe.runs_limit," runs on the"," ",xe.plan||"free"," plan. Upgrade to keep running agents."),Ce&&Q.default.createElement("p",{className:"text-sm text-red-600 mt-1"},Ce)),Q.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},Ha&&Q.default.createElement("a",{href:Ha,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),Q.default.createElement("button",{onClick:Uf,disabled:R,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},R?"Redirecting\u2026":"Upgrade to Pro"))),Q.default.createElement("div",{"data-testid":"runner-toolbar",style:ol,className:"p-4 flex items-center gap-3 flex-wrap"},Q.default.createElement(wn,{size:40}),Q.default.createElement("div",{className:"min-w-0"},Q.default.createElement("div",{className:"font-semibold truncate",style:{color:a.textPrimary}},e.name),Q.default.createElement("div",{className:"text-xs font-mono",style:{color:a.textSecondary}},e.provider," / ",e.model)),Q.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},Q.default.createElement("select",{"data-testid":"runner-action-select",value:l,onChange:le=>ao(le.target.value),disabled:C,className:"aa-field",style:zb,title:"Agent action to invoke"},s.map(le=>Q.default.createElement("option",{key:le,value:le},"#",le))),Q.default.createElement("select",{"data-testid":"runner-conversation-select",value:y??"",onChange:le=>Ea(le.target.value),disabled:C,className:"aa-field",style:zb,title:"Conversation to continue"},Q.default.createElement("option",{value:""},"New conversation on first run"),Ul.map(le=>Q.default.createElement("option",{key:le.id,value:le.id},"Conversation #",le.id," \xB7 ",le.message_count??0," message",le.message_count===1?"":"s"))),Q.default.createElement(Sa,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:a,onClick:Md,disabled:C,title:"Start an empty conversation for this action"},"+ New conversation"),Q.default.createElement(Sa,{testId:"runner-back",variant:"secondary",size:"sm",colors:a,onClick:t},"\u2190 Back to editor"))),Q.default.createElement("div",{"data-testid":"runner-context",ref:Aa,style:ol,className:"flex flex-col overflow-hidden"},Q.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:Lb},Q.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Q.default.createElement("h3",{className:"font-medium",style:{color:a.textPrimary}},"Context"),v&&Q.default.createElement("span",{className:"text-xs font-mono",style:{color:a.textMuted}},"#",v.id," \xB7 ",it.length," message",it.length===1?"":"s"),nt==="recording"&&Q.default.createElement("span",{"data-testid":"runner-recording-notice",className:"text-xs inline-flex items-center gap-1",style:{color:a.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."},Q.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),nt==="limit"&&Q.default.createElement("span",{"data-testid":"runner-recording-stopped",className:"text-xs",style:{color:a.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")),Q.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},Q.default.createElement(B2e,{run:D,darkMode:o,colors:a}),v&&Q.default.createElement(Sa,{testId:"runner-replay",variant:"secondary",size:"sm",colors:a,onClick:()=>st(_h("context",v.id)),disabled:C,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),Q.default.createElement("div",{className:"relative",ref:ge},Q.default.createElement(Sa,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:a,onClick:()=>W(le=>!le),disabled:C,title:"Insert a message into the context without running"},"+ Add message"),E&&Q.default.createElement("div",{className:"absolute right-0 mt-1 z-10 py-1 rounded-lg shadow-lg",style:{background:a.cardBg,border:`1px solid ${a.borderStrong}`,minWidth:"180px"}},[["user","runner-add-user-message","User message"],["assistant","runner-add-assistant-message","Assistant message"]].map(([le,$e,ct])=>Q.default.createElement("button",{key:le,type:"button","data-testid":$e,onClick:()=>nl(le),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-black/5",style:{color:a.textCell,background:"none",border:"none",cursor:"pointer"}},ct)))))),Q.default.createElement("div",{ref:Bl,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},Q.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:()=>ae(le=>!le),title:ee?"Collapse system instructions":"Show system instructions"},Q.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},Q.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:py.background,color:py.color,textAlign:"center"}},py.label)),Q.default.createElement("div",{className:"min-w-0 flex-1"},Wl?ee?Q.default.createElement("pre",{style:{...GA,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},Wl):Q.default.createElement("div",{className:"text-sm truncate",style:{color:a.textSecondary}},Wl.split(` -`).find(le=>le.trim())||""):Q.default.createElement("div",{className:"text-sm",style:{color:a.textMuted}},"No system instructions"),Q.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:a.textMuted}},"read-only \xB7 Edit in the Instructions tab")),Q.default.createElement(YR,{open:ee,color:a.textMuted})),S&&Q.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},S),it.length>0?Q.default.createElement("div",{className:"mt-3"},Q.default.createElement(ws,{messages:it,darkMode:o,testIdPrefix:"runner-message",onUiAction:Bf,onEditMessage:Ta,onDeleteMessage:Ff})):!$&&!N&&!Id&&Q.default.createElement("div",{"data-testid":"runner-context-empty",className:"text-sm text-center py-8",style:{color:a.textMuted}},"No messages yet \u2014 say something below to test the agent as a user."),$&&Q.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},Q.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},Q.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Un("user",o).background,color:Un("user",o).color,textAlign:"center"}},"User")),Q.default.createElement("div",{className:"min-w-0 flex-1"},Q.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:a.textPrimary}},$.content),Q.default.createElement(m2,{attachments:$.attachments,darkMode:o}))),D&&(C||E3(D).length>0)&&Q.default.createElement("div",{className:"mt-3 space-y-2"},Q.default.createElement(z2e,{run:D,darkMode:o,colors:a,expanded:j,onToggle:le=>T($e=>({...$e,[le]:!$e[le]}))}),C&&!Ns&&Q.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:a.textSecondary}},Q.default.createElement("span",{className:"animate-pulse"},"\u25CF"),Q.default.createElement("span",null,E3(D).length>0?"Working\u2026":"Starting run\u2026"))),(uy.length>0||q.length>0)&&Q.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},Ns&&Q.default.createElement("div",{className:"text-sm",style:{color:a.textSecondary}},"Paused for input: answer to continue this run."),uy.filter(le=>!cy.has(le.id)).map(le=>Q.default.createElement(of,{key:le.id,request:le,showRunLink:!1,onSettled:Xe})),q.map(({request:le,outcome:$e})=>Q.default.createElement(of,{key:le.id,request:le,initialOutcome:$e,showRunLink:!1}))),M&&Q.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},M),Id&&D.error_message&&Q.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:o?"rgba(239,68,68,0.12)":"#fef2f2",color:o?"#fca5a5":"#b91c1c"}},Q.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),Q.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},D.error_message)),$b&&Q.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:a.innerBg,color:a.textPrimary}},Q.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:a.textMuted}},"Output"),Q.default.createElement(Gs,{text:D.output||"No output",darkMode:o,onUiAction:Bf})),N&&Q.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:a.innerBg,border:`1px solid ${a.cardBorder}`}},Q.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},Q.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:a.textMuted}},Q.default.createElement("span",{style:{color:a.textPrimary}},"Run #",N.id),Q.default.createElement(Ed,{tone:A3[N.status]||"neutral",darkMode:o},N.status),N.output_metadata?.model&&Q.default.createElement("span",null,N.output_metadata.provider,"/",N.output_metadata.model),N.duration_ms?Q.default.createElement("span",null,vA(N.duration_ms)):null,N.trace_id&&Q.default.createElement("a",{href:rt(`/traces?trace=${N.trace_id}`),className:"hover:underline",style:{color:a.textSecondary}},"trace:",N.trace_id.slice(0,8)," \u2192"),Q.default.createElement("span",null,"\xB7 no conversation attached")),Q.default.createElement("button",{type:"button",onClick:()=>P(null),className:"text-xs font-mono",style:{color:a.textMuted,background:"none",border:"none",cursor:"pointer"},title:"Close"},"[x]")),(N.input_prompt||N.input_preview)&&Q.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:a.textSecondary}},N.input_prompt||N.input_preview),N.error_message?Q.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:o?"#fca5a5":"#b91c1c"}},N.error_message):Q.default.createElement("div",{className:"text-sm",style:{color:a.textPrimary}},Q.default.createElement(Gs,{text:N.output||"No output",darkMode:o}))),F&&Q.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${a.borderStrong}`}},Q.default.createElement("div",{className:"flex items-center gap-2 mb-2"},Q.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Un(F,o).background,color:Un(F,o).color}},Un(F,o).label),Q.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Added to the context without running the agent")),Q.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:Ee,onChange:le=>Ve(le.target.value),onKeyDown:le=>{le.key==="Escape"&&B(null),le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&tc()},placeholder:F==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...dy,border:`1px solid ${a.inputBorder}`}}),Q.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},Q.default.createElement(Sa,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:a,onClick:tc,disabled:fe||!Ee.trim()},fe?"Adding\u2026":`Add ${F} message`),Q.default.createElement(Sa,{variant:"secondary",size:"sm",colors:a,onClick:()=>B(null),disabled:fe},"Cancel"),Vt&&Q.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},Vt))))),Q.default.createElement("div",{style:ol,className:"p-4"},Q.default.createElement("div",{onDragOver:le=>{le.preventDefault(),m||g(!0)},onDragLeave:()=>g(!1),onDrop:le=>{le.preventDefault(),g(!1),C||Lf(le.dataTransfer?.files)}},Q.default.createElement("textarea",{"data-testid":"runner-prompt",value:c,onChange:le=>d(le.target.value),onKeyDown:pa,placeholder:"Message the agent as a user\u2026 (\u2318/Ctrl+Enter to run \xB7 drop files here to attach)",rows:3,disabled:C,className:"aa-field",style:dy})),Q.default.createElement(m2,{attachments:p,darkMode:o,testId:"runner-attachment-chip",onRemove:(le,$e)=>ay($e),removeTestId:"runner-attachment-remove"}),Q.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},Q.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},Q.default.createElement("input",{ref:kt,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:le=>{Lf(le.target.files),le.target.value=""}}),Q.default.createElement(Sa,{testId:"runner-attach",variant:"secondary",size:"sm",colors:a,onClick:()=>kt.current?.click(),disabled:C,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),Q.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Press ",Q.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"\u2318")," + ",Q.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"Enter")," to run")),Q.default.createElement(Sa,{testId:"runner-run",variant:"primary",colors:a,onClick:jb,disabled:!yo},C&&Ns?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("span",{style:{fontFamily:It.mono}},"[?]")," Waiting for input"):C?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:It.mono}},"[~]")," Running\u2026"):Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("span",{style:{fontFamily:It.mono}},"[>]")," Run"))))),Q.default.createElement("div",{className:"space-y-4 min-w-0"},Q.default.createElement("div",{style:ol,className:"p-4"},Q.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Configuration"),Q.default.createElement("dl",{className:"space-y-2 text-sm"},Q.default.createElement("div",{className:"flex justify-between"},Q.default.createElement("dt",{style:{color:a.textSecondary}},"Temperature"),Q.default.createElement("dd",{style:{color:a.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),Q.default.createElement(GR,{label:"Tools",names:e.tools||[],colors:a}),Q.default.createElement(GR,{label:"MCP",names:(e.mcp_servers||e.mcpServers||[]).map(L2e),colors:a}),Q.default.createElement("div",{className:"flex justify-between items-center gap-3"},Q.default.createElement("dt",{className:"shrink-0",style:{color:a.textSecondary}},"Checkout"),Q.default.createElement("dd",{className:"min-w-0"},Q.default.createElement("select",{"data-testid":"runner-checkout",value:K,onChange:le=>pe(le.target.value),onFocus:De,className:"text-xs rounded border px-1 py-0.5 max-w-[12rem]",style:{background:a.cardBg,borderColor:a.cardBorder,color:a.textPrimary}},Q.default.createElement("option",{value:""},"None"),L.map(le=>Q.default.createElement("option",{key:le.value,value:le.value},le.label))))),se&&!K&&Q.default.createElement("p",{className:"text-xs","data-testid":"runner-checkout-hint",style:{color:a.textMuted}},L.length?"Choose a checkout: the terminal, filesystem, edit and database tools act in it.":"The terminal, filesystem, edit and database tools act in a checkout. Boot one from a project's page, then choose it here."),Q.default.createElement("div",{className:"flex justify-between items-center"},Q.default.createElement("dt",{style:{color:a.textSecondary}},"Status"),Q.default.createElement("dd",null,Q.default.createElement(Ed,{tone:e.status==="active"?"success":"neutral",darkMode:o},e.status)))),e.instructions&&Q.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${a.cardBorder}`}},Q.default.createElement("div",{className:"text-xs mb-1.5",style:{color:a.textSecondary}},"System Instructions"),Q.default.createElement("p",{className:"text-xs whitespace-pre-wrap max-h-44 overflow-y-auto font-mono leading-relaxed",style:{color:a.textCell}},e.instructions))),Q.default.createElement("div",{style:ol,className:"overflow-hidden"},Q.default.createElement("div",{className:"px-4 py-3",style:Lb},Q.default.createElement("h4",{className:"font-medium",style:{color:a.textPrimary}},"Recent Runs")),Q.default.createElement("div",{className:"max-h-64 overflow-auto"},_.length>0?Q.default.createElement("div",null,_.map(le=>Q.default.createElement("div",{key:le.id,"data-testid":"runner-recent-run",className:"px-4 py-3 cursor-pointer hover:bg-black/5",style:{borderBottom:`1px solid ${a.cardBorder}`},onClick:()=>Wf(le),title:As(le)?"Open this run\u2019s conversation":"Show this run\u2019s output"},Q.default.createElement("div",{className:"flex items-center justify-between mb-1"},Q.default.createElement(Ed,{tone:A3[le.status]||"neutral",darkMode:o},le.status),Q.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},vA(le.duration_ms))),Q.default.createElement("p",{className:"text-sm truncate",style:{color:a.textCell}},le.input_preview||le.input_prompt?.substring(0,50)),Q.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:a.textMuted}},le.model&&Q.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:a.mutedBg,color:a.textSecondary}},le.model),As(le)&&Q.default.createElement("span",{className:"font-mono"},"#",As(le)),Q.default.createElement("span",null,new Date(le.created_at).toLocaleString()))))):Q.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:a.textMuted}},"No runs yet"))),Q.default.createElement("div",{style:ol,className:"p-4"},Q.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Example Prompts"),Q.default.createElement("div",{className:"space-y-2"},I2e.map(le=>Q.default.createElement("button",{key:le,type:"button","data-testid":"runner-example-prompt",onClick:()=>d(le),className:"w-full text-left px-3 py-2 text-sm rounded-lg transition-colors hover:bg-black/5",style:{color:a.textCell,border:`1px solid ${a.cardBorder}`,background:"transparent",cursor:"pointer"}},le))))))}var Re=X(J());var xA=e=>new Date(`${e}T00:00:00`),F2e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function T3({onSelectAgent:e}){let[t,r]=(0,Re.useState)(null),[n,o]=(0,Re.useState)(!0),[a,i]=(0,Re.useState)(30);(0,Re.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 Re.default.createElement("div",{className:"flex items-center justify-center h-64"},Re.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 Re.default.createElement("div",{className:"space-y-6"},Re.default.createElement("div",{className:"flex items-center justify-between"},Re.default.createElement("div",null,Re.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Re.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Re.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"},F2e.map(p=>Re.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Re.default.createElement(fb,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Re.default.createElement(fb,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Re.default.createElement(fb,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Re.default.createElement(fb,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Re.default.createElement(fb,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Re.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Re.default.createElement("div",{className:"h-48"},Re.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((p,f)=>Re.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Re.default.createElement("div",{className:"relative w-full"},Re.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"}}),Re.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"))))),Re.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Re.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&xA(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Re.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&xA(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Re.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Re.default.createElement("div",{className:"h-48"},Re.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((p,f)=>Re.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Re.default.createElement("div",{className:"relative w-full"},Re.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"}}),Re.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"))))),Re.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Re.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&xA(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Re.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&xA(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Re.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Re.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Re.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 overflow-hidden"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 px-6 pt-6 pb-2"},"Top Agents"),t?.top_agents?.length>0?Re.default.createElement(kf,{testId:"top-agents",identity:{key:"name",label:"Agent",unit:"By runs",render:p=>Re.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:10,minWidth:0}},Re.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-muted)",width:18,textAlign:"right"}},t.top_agents.indexOf(p)+1),Re.default.createElement("span",{className:"truncate"},p.name))},columns:[{key:"run_count",label:"Runs",unit:"In period",better:"higher",format:p=>l(p)},{key:"total_tokens",label:"Tokens",unit:"Total",better:"lower",band:"none",format:p=>l(p)},{key:"tokens_per_run",label:"Tokens",unit:"Per run",better:"lower",band:"none",value:p=>p.run_count?p.total_tokens/p.run_count:null,format:p=>p==null?"\u2014":l(Math.round(p))}],rows:t.top_agents,rowKey:p=>p.id,rowProps:p=>({onClick:()=>e?.(p),style:{cursor:"pointer"},"data-testid":"top-agent-row"}),defaultSort:"run_count"}):Re.default.createElement("div",{className:"py-8 px-6 text-center text-gray-400"},"No agent activity yet")),Re.default.createElement("div",{className:"space-y-6"},Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Re.default.createElement("div",{className:"space-y-3"},Object.entries(t.provider_breakdown).map(([p,f])=>{let m=t?.summary?.total_runs||1,g=(f/m*100).toFixed(1);return Re.default.createElement("div",{key:p},Re.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Re.default.createElement("span",{className:"capitalize text-gray-600"},p),Re.default.createElement("span",{className:"text-gray-900 font-medium"},f)),Re.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Re.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${g}%`}})))})):Re.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Re.default.createElement("div",{className:"space-y-4"},Re.default.createElement("div",{className:"flex justify-between items-center"},Re.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Re.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Re.default.createElement("div",{className:"flex justify-between items-center"},Re.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Re.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Re.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Re.default.createElement("div",{className:"flex justify-between items-center"},Re.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Re.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function fb({title:e,value:t,subtitle:r,color:n}){return Re.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`},Re.default.createElement("p",{className:"text-sm text-gray-500"},e),Re.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Re.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var re=X(J());var W2e=[{value:"",label:"All",title:"Every execution, however it started"},{value:"dashboard",label:"Dashboard",title:"Executions started from this dashboard"},{value:"reported",label:"Reported",title:"Executions reported by your app via telemetry"}],U2e=[{value:"run",label:"Selected run"},{value:"all",label:"Sessions"}];function O3({agent:e,onBack:t}){let{timeWindow:r}=El(),{darkMode:n}=ut(),[o,a]=(0,re.useState)([]),[i,s]=(0,re.useState)([]),[l,u]=(0,re.useState)(null),[c,d]=(0,re.useState)(null),[p,f]=(0,re.useState)([]),[m,g]=(0,re.useState)("run"),[b,h]=(0,re.useState)(!1),[y,x]=(0,re.useState)(!1),v=(0,re.useRef)(!1),k=(0,re.useRef)(!1),[S,w]=(0,re.useState)("recent"),[_,A]=(0,re.useState)({}),[C,O]=(0,re.useState)(!0),[D,H]=(0,re.useState)(1),[$,Z]=(0,re.useState)(!0),[N,P]=(0,re.useState)(""),[M,I]=(0,re.useState)(""),[j,T]=(0,re.useState)("recent"),q=(0,re.useRef)(null),[G,L]=(0,re.useState)("detail"),Y=rt(`/agents/${e.id}/interactions`);(0,re.useEffect)(()=>{K()},[e.id,D,N,M,j,r.minutes]),(0,re.useEffect)(()=>{H(1)},[r.minutes]),(0,re.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(E=>E.json()).then(E=>s(E.interactions||[])).catch(()=>{}).finally(()=>x(!0))},[e.id]),(0,re.useEffect)(()=>{let E=()=>{let W=Zn(),F=W.match(/\/interactions\/runs\/(\d+)/),B=W.match(/\/interactions\/sessions\/(\d+)/);if(F)g("run"),d(null),De(parseInt(F[1],10),{updateUrl:!1});else if(B)g("all"),d({id:parseInt(B[1],10)});else if(W.endsWith("/interactions/sessions")||W.endsWith("/interactions/all"))W.endsWith("/all")&&window.history.replaceState({},"",W.replace(/\/all$/,"/sessions")),g("all"),d(null);else{v.current=!1,u(null),d(null),f([]);return}v.current=!0};return E(),window.addEventListener("popstate",E),()=>window.removeEventListener("popstate",E)},[e.id]),(0,re.useEffect)(()=>{v.current||k.current||!b||!y||g(o.length===0&&i.length>0?"all":"run")},[b,y,o.length,i.length]);let K=async()=>{O(!0);try{let E=new URLSearchParams({page:D.toString(),per_page:"20",minutes:String(r.minutes)});N&&E.append("status",N),M&&E.append("source",M),j!=="recent"&&E.append("sort",j);let F=await(await fetch(`/api/agents/${e.id}/runs?${E}`)).json();a(D===1?F.runs:B=>[...B,...F.runs]),Z(F.runs.length===20)}catch(E){console.error("Failed to load runs:",E)}finally{O(!1),h(!0)}},pe=E=>{window.location.pathname!==E&&window.history.pushState({},"",E)},De=async(E,{updateUrl:W=!0}={})=>{try{let B=await(await fetch(`/api/runs/${E}`)).json();u(B.run),f(B.messages||[]),g("run"),d(null),L("detail"),W&&pe(`${Y}/runs/${E}`)}catch(F){console.error("Failed to load run details:",F)}},se=E=>{if(E.source==="reported"){let W=E.trace_id||String(E.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",rt(`/traces/${W}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:rt(`/traces/${W}`)}}));return}De(E.record_id||E.id)},xe=()=>{u(null),d(null),f([]),g("run"),pe(Y)},ue=E=>{g("all"),L("detail"),E?(d({id:E.id,name:E.display_name}),pe(`${Y}/sessions/${E.id}`)):(d(null),pe(`${Y}/sessions`))},R=E=>{k.current=!0,g(E),pe(E==="all"?c?`${Y}/sessions/${c.id}`:`${Y}/sessions`:l?`${Y}/runs/${l.id}`:Y)},we=c?c.name||i.find(E=>E.id===c.id)?.display_name||`Session #${c.id}`:null,Ce=()=>{let E=new Map;o.forEach(B=>{let Ee=`${B.model||"unknown"}|${B.instructions_digest||"none"}`;E.has(Ee)||E.set(Ee,{key:Ee,model:B.model,instructionsDigest:B.instructions_digest,instructionsVersion:B.instructions_version,instructionsCodename:B.instructions_codename,instructionsPreview:B.instructions_preview,runs:[]}),E.get(Ee).runs.push(B)});let W=[...E.values()].map(B=>({...B,count:B.runs.length,completed:B.runs.filter(Ee=>Ee.status==="complete").length,failed:B.runs.filter(Ee=>Ee.status==="failed").length,totalTokens:B.runs.reduce((Ee,Ve)=>Ee+(Ve.tokens||0),0),avgTokens:B.runs.reduce((Ee,Ve)=>Ee+(Ve.tokens||0),0)/B.runs.length,avgDuration:B.runs.reduce((Ee,Ve)=>Ee+(Ve.duration_ms||0),0)/B.runs.length,latest:B.runs[0],sortedRuns:[...B.runs].sort((Ee,Ve)=>(Ve.duration_ms||0)-(Ee.duration_ms||0))}));W.sort((B,Ee)=>S==="longest"?Ee.avgDuration-B.avgDuration:new Date(Ee.latest.created_at)-new Date(B.latest.created_at));let F={runs:o.length,completed:o.filter(B=>B.status==="complete").length,tokens:o.reduce((B,Ee)=>B+(Ee.tokens||0),0),avgDuration:o.length?o.reduce((B,Ee)=>B+(Ee.duration_ms||0),0)/o.length:0,models:[...new Set(o.map(B=>B.model).filter(Boolean))]};return{cohorts:W,totals:F}},z=E=>E?E<1e3?`${E}ms`:E<6e4?`${(E/1e3).toFixed(1)}s`:`${Math.floor(E/6e4)}m ${Math.floor(E%6e4/1e3)}s`:"-",ee=E=>E==null?"\u2014":E===0?"$0":E<.01?`$${E.toFixed(4)}`:`$${E.toFixed(2)}`,ae=E=>{let W=new Date(E),B=new Date-W,Ee=Math.floor(B/6e4),Ve=Math.floor(B/36e5),fe=Math.floor(B/864e5);return Ee<1?"Just now":Ee<60?`${Ee}m ago`:Ve<24?`${Ve}h ago`:fe<7?`${fe}d ago`:W.toLocaleDateString()};return re.default.createElement("div",{className:"flex h-full"},re.default.createElement("div",{className:`${G==="list"?"flex":"hidden"} lg:flex w-full lg:w-80 lg:border-r aa-border flex-col aa-bg-card`,"data-testid":"agent-runs-pane"},re.default.createElement("div",{className:"p-4 border-b aa-border"},re.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},re.default.createElement("button",{onClick:t,className:"p-1 aa-text-muted hover:aa-text-secondary transition-colors"},re.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),re.default.createElement("div",{className:"min-w-0"},re.default.createElement("h2",{className:"font-semibold aa-text-primary"},"Agent Interactions"),re.default.createElement("p",{className:"text-sm aa-text-secondary truncate"},e.name)),re.default.createElement("button",{type:"button",onClick:()=>L("detail"),className:"lg:hidden ml-auto px-2 py-1 text-xs rounded-md aa-text-secondary hover:aa-text-primary hover:aa-bg-hover transition-colors whitespace-nowrap","data-testid":"agent-runs-show-detail"},l&&m==="run"?`Run #${l.id} \u2192`:"Report \u2192")),re.default.createElement("div",{className:"mb-2"},re.default.createElement(Ks,{compact:!0})),re.default.createElement(To,{options:W2e,value:M,onChange:E=>{I(E),H(1)},style:{marginBottom:8}}),re.default.createElement("select",{value:N,onChange:E=>{P(E.target.value),H(1)},className:"w-full px-3 py-2 border aa-border aa-bg-card aa-text-primary rounded-lg text-sm focus:ring-2 focus:ring-red-500"},re.default.createElement("option",{value:""},"All statuses"),re.default.createElement("option",{value:"complete"},"Completed"),re.default.createElement("option",{value:"failed"},"Failed"),re.default.createElement("option",{value:"running"},"Running"),re.default.createElement("option",{value:"cancelled"},"Cancelled")),re.default.createElement("select",{value:j,onChange:E=>{T(E.target.value),H(1)},className:"w-full mt-2 px-3 py-2 border aa-border aa-bg-card aa-text-primary rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},re.default.createElement("option",{value:"recent"},"Most recent"),re.default.createElement("option",{value:"longest"},"Longest running"),re.default.createElement("option",{value:"cost"},"Highest cost"),re.default.createElement("option",{value:"tokens"},"Most tokens"))),re.default.createElement("div",{className:"flex-1 overflow-auto"},C&&o.length===0?re.default.createElement("div",{className:"flex items-center justify-center h-32"},re.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):o.length>0?re.default.createElement(re.default.Fragment,null,o.map(E=>{let W=E.source==="reported";return re.default.createElement("div",{key:E.id,onClick:()=>se(E),title:W?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b aa-border-light cursor-pointer transition-colors ${!W&&l?.id===E.id?"aa-bg-accent-tint border-l-4 border-l-red-500":"hover:aa-bg-hover"}`},re.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},re.default.createElement(be,{tone:fl(E.status)},E.status),re.default.createElement("div",{className:"flex items-center gap-2"},re.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${W?"bg-blue-100 text-blue-700":"aa-bg-muted aa-text-secondary"}`},W?"reported":"dashboard"),re.default.createElement("span",{className:"text-xs aa-text-muted"},ae(E.created_at||E.occurred_at)),!W&&re.default.createElement(xd,{kind:"run",id:E.id,title:"Replay this run"}))),re.default.createElement("p",{className:"text-sm aa-text-cell truncate"},E.input_preview||E.input_prompt?.substring(0,60)||(W?`${E.action_name||"execution"} \xB7 trace ${String(E.trace_id||"").slice(0,8)}`:"No input")),re.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs aa-text-muted flex-wrap gap-y-1"},E.model&&re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},E.model),re.default.createElement("span",{className:j==="longest"?"aa-text-cell font-medium":void 0},z(E.duration_ms)),!!E.tokens&&re.default.createElement("span",{className:j==="tokens"?"aa-text-cell font-medium":void 0},E.tokens," tokens"),E.cost!=null&&re.default.createElement("span",{className:j==="cost"?"aa-text-cell font-medium":void 0,title:"Estimated from token counts at this model's published rates"},ee(E.cost))))}),$&&re.default.createElement("button",{onClick:()=>H(E=>E+1),disabled:C,className:"w-full py-3 text-sm text-red-600 hover:aa-bg-hover transition-colors"},C?"Loading...":"Load More")):re.default.createElement("div",{className:"p-8 text-center aa-text-muted"},re.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 aa-text-muted",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.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"})),re.default.createElement("p",null,"No conversations yet")))),re.default.createElement("div",{className:`${G==="detail"?"flex":"hidden"} lg:flex flex-1 min-w-0 flex-col aa-bg-background`,"data-testid":"agent-runs-detail"},re.default.createElement("div",{className:"px-4 py-2 aa-bg-card border-b aa-border-light flex items-center gap-1.5 text-xs aa-text-secondary flex-wrap"},re.default.createElement("button",{type:"button",onClick:()=>L("list"),className:"lg:hidden mr-1 px-2 py-1 rounded-md aa-text-secondary hover:aa-text-primary hover:aa-bg-hover transition-colors whitespace-nowrap","data-testid":"agent-runs-show-list"},"\u2261 Runs"),re.default.createElement("button",{onClick:t,className:"hover:aa-text-primary hover:underline transition-colors"},e.name),re.default.createElement("span",{className:"aa-text-muted"},"/"),m==="all"||l?re.default.createElement(re.default.Fragment,null,re.default.createElement("button",{onClick:xe,className:"hover:aa-text-primary hover:underline transition-colors"},"Interactions"),re.default.createElement("span",{className:"aa-text-muted"},"/"),m==="all"?c?re.default.createElement(re.default.Fragment,null,re.default.createElement("button",{onClick:()=>ue(null),className:"hover:aa-text-primary hover:underline transition-colors"},"Sessions"),re.default.createElement("span",{className:"aa-text-muted"},"/"),re.default.createElement("span",{className:"aa-text-primary font-medium"},we)):re.default.createElement("span",{className:"aa-text-primary font-medium"},"Sessions"):re.default.createElement("span",{className:"aa-text-primary font-medium"},"Run #",l.id)):re.default.createElement("span",{className:"aa-text-primary font-medium"},"Interactions")),re.default.createElement("div",{className:"p-3 max-md:px-4 max-md:py-2 aa-bg-card border-b aa-border flex items-center justify-between gap-2 flex-wrap"},re.default.createElement(To,{options:U2e,value:m,onChange:R}),m==="run"&&l&&re.default.createElement(be,{tone:fl(l.status),size:12},l.status)),m==="all"?re.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:E}=Ce();return re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-4 space-y-3"},re.default.createElement("div",{className:"flex items-center gap-3"},re.default.createElement(wn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-semibold aa-text-primary"},e.name),re.default.createElement("p",{className:"text-xs aa-text-secondary"},c?`${we} \u2014 one persisted interaction stream`:"Sessions group this agent\u2019s runs into persisted interaction streams"))),re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Runs"),re.default.createElement("p",{className:`text-lg ${qu} font-bold aa-text-primary`},E.runs)),re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Success"),re.default.createElement("p",{className:`text-lg ${qu} font-bold aa-text-primary`},E.runs?Math.round(E.completed/E.runs*100):0,"%")),re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Avg Duration"),re.default.createElement("p",{className:`text-lg ${qu} font-bold aa-text-primary`},z(Math.round(E.avgDuration)))),re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Tokens"),re.default.createElement("p",{className:`text-lg ${qu} font-bold aa-text-primary`},E.tokens.toLocaleString()))))})(),re.default.createElement(Gu,{agentId:e.id,embedded:!0,selectedSessionId:c?.id??null,onSelectSession:ue})):l?re.default.createElement(re.default.Fragment,null,re.default.createElement("div",{className:"p-4 aa-bg-card border-b aa-border"},re.default.createElement("div",{className:"flex items-center space-x-3"},re.default.createElement(wn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-medium aa-text-primary"},e.name," \u2014 Run #",l.id),re.default.createElement("p",{className:"text-xs aa-text-secondary"},new Date(l.created_at).toLocaleString())))),re.default.createElement("div",{ref:q,className:"flex-1 overflow-auto p-4 md:p-6"},re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border shadow-sm p-4"},p.length>0?re.default.createElement(ws,{messages:p,darkMode:n}):re.default.createElement(ws,{darkMode:n,messages:[{id:`run-${l.id}-input`,role:"user",content:l.input_prompt||l.input_preview,created_at:l.created_at},{id:`run-${l.id}-output`,role:"assistant",content:l.error_message||l.output||l.output_preview||"No response",created_at:l.completed_at||l.created_at}]}))),re.default.createElement("div",{className:"p-4 aa-bg-card border-t aa-border"},re.default.createElement("div",{className:"flex flex-wrap items-center justify-center gap-x-8 gap-y-1 text-sm aa-text-secondary"},re.default.createElement("span",null,"Duration: ",z(l.duration_ms)),l.total_tokens&&re.default.createElement("span",null,"Tokens: ",l.total_tokens),l.input_tokens&&l.output_tokens&&re.default.createElement("span",null,"Input: ",l.input_tokens," / Output: ",l.output_tokens),l.trace_id&&re.default.createElement("a",{href:rt(`/traces?trace=${l.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${l.trace_id} \u2014 open in Traces`},"trace:",l.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:E,totals:W}=Ce();return E.length===0?re.default.createElement("div",{className:"flex-1 flex items-center justify-center"},re.default.createElement("div",{className:"text-center aa-text-muted"},re.default.createElement(wn,{size:100}),re.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):re.default.createElement("div",{className:"flex-1 overflow-auto p-4 md:p-6 space-y-5"},re.default.createElement("div",{className:"flex items-center gap-3"},re.default.createElement(wn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-semibold aa-text-primary max-md:text-sm"},"Agent Report"),re.default.createElement("p",{className:"text-xs aa-text-secondary"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Runs"),re.default.createElement("p",{className:`text-xl ${qu} font-bold aa-text-primary`},W.runs)),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Success"),re.default.createElement("p",{className:`text-xl ${qu} font-bold aa-text-primary`},W.runs?Math.round(W.completed/W.runs*100):0,"%")),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Avg Duration"),re.default.createElement("p",{className:`text-xl ${qu} font-bold aa-text-primary`},z(Math.round(W.avgDuration)))),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${mo}`},"Tokens"),re.default.createElement("p",{className:`text-xl ${qu} font-bold aa-text-primary`},W.tokens.toLocaleString()))),W.models.length>0&&re.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},re.default.createElement("span",{className:"aa-text-secondary"},"Models used:"),W.models.map(F=>re.default.createElement("span",{key:F,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},F))),i.length>0&&re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b aa-border-light max-md:px-3 max-md:py-2 max-md:aa-bg-muted"},re.default.createElement("span",{className:"text-xs uppercase tracking-wide aa-text-muted max-md:font-mono max-md:text-[11px] max-md:font-semibold max-md:tracking-[0.05em] max-md:aa-text-secondary"},"Sessions \u2014 grouped interaction streams")),re.default.createElement("div",{className:"divide-y aa-divide-light"},i.map(F=>re.default.createElement("div",{key:F.id,className:"px-4 py-3 hover:aa-bg-hover cursor-pointer flex flex-wrap items-center justify-between gap-3",onClick:()=>ue(F),title:"Open this session's interaction stream"},re.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:F.display_name},re.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),re.default.createElement("span",{className:"text-sm aa-text-primary truncate"},F.agent?.name||F.agent_name),F.action_name&&re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",F.action_name)),re.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs aa-text-muted flex-shrink-0"},re.default.createElement("span",null,F.message_count," messages"),re.default.createElement("span",null,(F.tokens?.total||0).toLocaleString()," tokens"),re.default.createElement("span",null,ae(F.last_activity_at)),re.default.createElement(xd,{kind:"context",id:F.id,title:"Replay this conversation"})))))),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b aa-border-light max-md:px-3 max-md:py-2 max-md:aa-bg-muted flex items-center justify-between max-md:flex-wrap max-md:gap-2"},re.default.createElement("span",{className:"text-xs uppercase tracking-wide aa-text-muted max-md:font-mono max-md:text-[11px] max-md:font-semibold max-md:tracking-[0.05em] max-md:aa-text-secondary"},"Interactions by instructions \xD7 model"),re.default.createElement("select",{value:S,onChange:F=>w(F.target.value),className:"text-xs border aa-border aa-bg-card rounded px-2 py-1 aa-text-secondary"},re.default.createElement("option",{value:"recent"},"Most recent"),re.default.createElement("option",{value:"longest"},"Longest interactions"))),re.default.createElement("div",{className:"divide-y aa-divide-light"},E.map(F=>re.default.createElement("div",{key:F.key},re.default.createElement("div",{className:"px-4 py-3 hover:aa-bg-hover cursor-pointer",onClick:()=>A(B=>({...B,[F.key]:!B[F.key]})),title:"Show this configuration's runs"},re.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},F.model||"unknown model"),re.default.createElement("span",{className:"text-xs aa-text-muted font-mono",title:F.instructionsDigest?`sha:${F.instructionsDigest}`:void 0},"instructions"," ",F.instructionsDigest?[F.instructionsVersion,F.instructionsCodename||F.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),F.instructionsPreview&&re.default.createElement("p",{className:"text-xs aa-text-secondary mt-1 truncate"},F.instructionsPreview),re.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs aa-text-muted flex-wrap gap-y-1"},re.default.createElement("span",null,F.count," run",F.count>1?"s":""),re.default.createElement("span",{className:F.failed>0?"text-red-500":"text-green-600"},F.count?Math.round(F.completed/F.count*100):0,"% success"),re.default.createElement("span",null,"avg ",z(Math.round(F.avgDuration))),re.default.createElement("span",null,"avg ",Math.round(F.avgTokens).toLocaleString()," tokens"),re.default.createElement("span",null,"last ",ae(F.latest.created_at)))),_[F.key]&&re.default.createElement("div",{className:"aa-bg-muted divide-y aa-divide-light border-t aa-border-light"},F.sortedRuns.map(B=>re.default.createElement("div",{key:B.id,className:"px-6 py-2 hover:aa-bg-hover cursor-pointer",onClick:()=>De(B.id),title:"Open this run's interaction"},re.default.createElement("p",{className:"text-xs aa-text-cell truncate"},B.input_preview||"No input"),re.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] aa-text-muted"},re.default.createElement("span",{className:B.status==="failed"?"text-red-500":""},B.status),re.default.createElement("span",null,z(B.duration_ms)),B.tokens&&re.default.createElement("span",null,B.tokens.toLocaleString()," tokens"),re.default.createElement("span",null,ae(B.created_at)))))))))))})()))}var pt=X(J());var H2e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function P3({onUseTemplate:e,onClose:t}){let[r,n]=(0,pt.useState)([]),[o,a]=(0,pt.useState)([]),[i,s]=(0,pt.useState)(""),[l,u]=(0,pt.useState)(null),[c,d]=(0,pt.useState)(!0),[p,f]=(0,pt.useState)(!1),[m,g]=(0,pt.useState)(null);(0,pt.useEffect)(()=>{b()},[i]);let b=async()=>{d(!0);try{let y=new URLSearchParams;i&&y.append("category",i);let v=await(await fetch(`/api/templates?${y}`)).json();n(v.templates),a(v.categories)}catch(y){console.error("Failed to load templates:",y)}finally{d(!1)}},h=async y=>{f(!0),g(null);try{let x=await fetch(`/api/templates/${y.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:y.name})});if(x.ok){let v=await x.json();e(v.agent)}else{let v=`Could not create the agent (HTTP ${x.status})`;try{let k=await x.json(),S=k.errors||k.error;S&&(v=Array.isArray(S)?S.join(", "):String(S))}catch{}g(v)}}catch(x){console.error("Failed to create agent from template:",x),g("Could not create the agent \u2014 check your connection and try again.")}finally{f(!1)}};return pt.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},pt.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},pt.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},pt.default.createElement("div",null,pt.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),pt.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),pt.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},pt.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),pt.default.createElement("div",{className:"flex-1 flex overflow-hidden"},pt.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},pt.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),pt.default.createElement("div",{className:"space-y-1"},pt.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(y=>pt.default.createElement("button",{key:y,onClick:()=>s(y),className:`w-full text-left px-3 py-2 rounded-lg text-sm flex items-center space-x-2 transition-colors ${i===y?"bg-red-50 text-red-600":"text-gray-600 hover:bg-gray-50"}`},pt.default.createElement("span",null,H2e[y]||"\u{1F4E6}"),pt.default.createElement("span",{className:"capitalize"},y))))),pt.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?pt.default.createElement("div",{className:"flex items-center justify-center h-full"},pt.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?pt.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(y=>pt.default.createElement("div",{key:y.id,onClick:()=>u(y),className:`bg-white rounded-xl border-2 p-4 cursor-pointer transition-all hover:shadow-lg ${l?.id===y.id?"border-red-500 ring-2 ring-red-100":"border-gray-200 hover:border-gray-300"}`},pt.default.createElement("div",{className:"flex items-start space-x-3"},pt.default.createElement("div",{className:"flex-shrink-0"},pt.default.createElement(wn,{size:60})),pt.default.createElement("div",{className:"flex-1 min-w-0"},pt.default.createElement("div",{className:"flex items-center space-x-2"},pt.default.createElement("span",{className:"text-lg"},y.icon),pt.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},y.name)),pt.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},y.description),pt.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},pt.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},y.category),y.featured&&pt.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):pt.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&pt.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},pt.default.createElement("div",{className:"flex justify-center mb-4"},pt.default.createElement(wn,{size:120})),pt.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),pt.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),pt.default.createElement("div",{className:"mt-6 space-y-4"},pt.default.createElement("div",null,pt.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),pt.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&pt.default.createElement("div",null,pt.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),pt.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(y=>pt.default.createElement("span",{key:y,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},y)))),pt.default.createElement("div",null,pt.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),pt.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),pt.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&&pt.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var lt=X(J());function M3({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={},open:l=!1,onClose:u}){let{darkMode:c}=ut(),[d,p]=(0,lt.useState)(!1),f=(0,lt.useRef)(null);(0,lt.useEffect)(()=>{function v(k){f.current&&!f.current.contains(k.target)&&p(!1)}return document.addEventListener("mousedown",v),()=>document.removeEventListener("mousedown",v)},[]);let m=o?.name||"My Workspace",g=a?.name||a?.email?.split("@")[0]||"User",b={agentCount:r,pendingInputCount:n},h=v=>{let k=v.badge?b[v.badge]:void 0;return v.badgeTone==="attention"&&!k?void 0:k},y=gX(s).map(v=>({...v,items:v.items.map(k=>({id:k.view,label:k.label,icon:k.glyph??Ko.nav[k.icon],badge:h(k),badgeTone:k.badgeTone,badgeTitle:k.badgeTitle}))})),x=({item:v})=>lt.default.createElement("button",{onClick:()=>t(v.id),className:`w-full flex items-center justify-between py-3 rounded-lg text-left transition-colors ${v.indent?"pl-10 pr-4":"px-4"}`,style:{backgroundColor:e===v.id?c?"rgba(239, 68, 68, 0.15)":"#fef2f2":"transparent",color:e===v.id?"#ef4444":c?"#d1d5db":"#374151"},onMouseEnter:k=>{e!==v.id&&(k.currentTarget.style.backgroundColor=c?"#252525":"#f3f4f6")},onMouseLeave:k=>{e!==v.id&&(k.currentTarget.style.backgroundColor="transparent")}},lt.default.createElement("div",{className:"flex items-center space-x-3"},lt.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"12px",width:"20px",textAlign:"center"}},v.icon),lt.default.createElement("span",{className:"font-medium"},v.label)),v.badge!==void 0&&v.badgeTone==="attention"&<.default.createElement("span",{"data-testid":`nav-badge-${v.id}`,className:"px-2 py-0.5 text-xs rounded-full font-semibold",title:`${v.badge} ${v.badgeTitle||""}`.trim(),"aria-label":`${v.badge} ${v.badgeTitle||""}`.trim(),style:{backgroundColor:"var(--color-warning-soft)",color:"var(--color-warning-text)"}},v.badge),v.badge!==void 0&&v.badgeTone!=="attention"&<.default.createElement("span",{className:"px-2 py-0.5 text-xs rounded-full",style:{backgroundColor:e===v.id?"#fee2e2":c?"#2a2a2a":"#f3f4f6",color:e===v.id?"#ef4444":c?"#d1d5db":"#4b5563"}},v.badge));return lt.default.createElement(lt.default.Fragment,null,l&<.default.createElement("div",{className:"fixed inset-0 z-40 bg-black/40 md:hidden","data-testid":"sidebar-backdrop","aria-hidden":"true",onClick:u}),lt.default.createElement("aside",{"data-testid":"sidebar","data-open":l?"true":"false",className:`w-64 border-r flex flex-col max-md:fixed max-md:inset-y-0 max-md:left-0 max-md:z-50 max-md:overflow-y-auto max-md:transition-[transform,visibility] max-md:duration-200 max-md:ease-out ${l?"max-md:translate-x-0 max-md:shadow-xl":"max-md:-translate-x-full max-md:invisible"}`,style:{backgroundColor:c?"#1a1a1a":"#ffffff",borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:c?"#2a2a2a":"#e5e7eb"},ref:f},lt.default.createElement("button",{type:"button",onClick:u,className:"md:hidden mr-1 p-2 -ml-2 rounded-lg flex-shrink-0",style:{color:c?"#9ca3af":"#6b7280"},"aria-label":"Close navigation","data-testid":"sidebar-close"},lt.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}))),lt.default.createElement("button",{onClick:()=>p(!d),className:"w-full flex items-center justify-between px-2 py-2 rounded-lg transition-colors",style:{backgroundColor:d?c?"#252525":"#f3f4f6":"transparent"}},lt.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},lt.default.createElement(wn,{size:28}),lt.default.createElement("span",{className:`font-semibold truncate ${c?"text-white":"text-gray-900"}`},m)),lt.default.createElement("svg",{className:`w-4 h-4 flex-shrink-0 transition-transform ${d?"rotate-180":""}`,style:{color:c?"#9ca3af":"#6b7280"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),d&<.default.createElement("div",{className:"absolute left-4 right-4 top-14 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:c?"#1a1a1a":"#ffffff",borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:"flex items-center space-x-3"},lt.default.createElement(wn,{size:32}),lt.default.createElement("div",{className:"min-w-0"},lt.default.createElement("div",{className:`font-medium truncate ${c?"text-white":"text-gray-900"}`},m)))),lt.default.createElement("div",{className:"py-1"},lt.default.createElement("button",{onClick:()=>{t("settings"),p(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${c?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},lt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.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"}),lt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),lt.default.createElement("span",null,"Settings")),lt.default.createElement("button",{onClick:()=>{t("organization"),p(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${c?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},lt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.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"})),lt.default.createElement("span",null,"Organization"))),lt.default.createElement("div",{className:"border-t py-1",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${c?"text-gray-300":"text-gray-700"}`},lt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.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"})),lt.default.createElement("span",{className:"text-sm"},g))))),lt.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},y.map(v=>{let k=lt.default.createElement("div",{className:"space-y-1"},v.items.map(S=>lt.default.createElement(x,{key:S.id,item:S})));return v.label?lt.default.createElement("div",{key:v.id,className:"pt-4"},lt.default.createElement("div",{className:"px-4 pb-2"},lt.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${c?"text-gray-500":"text-gray-400"}`},v.label)),k):lt.default.createElement(lt.default.Fragment,{key:v.id},k)})),lt.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${c?"text-gray-500":"text-gray-400"}`},"Resources"),lt.default.createElement("div",{className:"space-y-2"},lt.default.createElement("a",{href:"https://docs.activeagents.ai",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${c?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},lt.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Ko.nav.docs),lt.default.createElement("span",null,"Documentation")),lt.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 ${c?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},lt.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Ko.nav.github),lt.default.createElement("span",null,"GitHub")))),lt.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:`text-xs ${c?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:""))))}var or=X(J());function I3({user:e,account:t,onOpenNav:r}){let{darkMode:n,toggleDarkMode:o}=ut(),[a,i]=(0,or.useState)(!1),s=(0,or.useRef)(null);(0,or.useEffect)(()=>{function f(m){s.current&&!s.current.contains(m.target)&&i(!1)}return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[]);let l=window.ACTIVE_AGENT_DASHBOARD?.meta?.signOutPath,u=window.ACTIVE_AGENT_DASHBOARD?.meta?.userMenuLinks||[],c=()=>{if(!l)return;let f=document.querySelector('meta[name="csrf-token"]')?.content,m=document.createElement("form");m.method="POST",m.action=l;let g=document.createElement("input");g.type="hidden",g.name="_method",g.value="delete",m.appendChild(g);let b=document.createElement("input");b.type="hidden",b.name="authenticity_token",b.value=f,m.appendChild(b),document.body.appendChild(m),m.submit()},d=e?.name||e?.email?.split("@")[0]||"User",p=d.charAt(0).toUpperCase();return or.default.createElement("header",{className:"h-16 border-b flex items-center justify-between gap-3 px-4 md:px-6",style:{backgroundColor:n?"#1a1a1a":"#ffffff",borderColor:n?"#2a2a2a":"#e5e7eb"}},or.default.createElement("div",{className:"flex items-center space-x-4 min-w-0"},or.default.createElement("button",{type:"button",onClick:r,className:"md:hidden flex items-center gap-2 min-w-0 p-2 -ml-2 rounded-lg transition-colors",style:{color:n?"#d1d5db":"#374151"},"aria-label":"Open navigation","data-testid":"open-nav"},or.default.createElement("svg",{className:"w-5 h-5 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},or.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})),or.default.createElement("span",{className:`font-semibold truncate ${n?"text-white":"text-gray-900"}`},t?.name||"My Workspace"))),or.default.createElement("div",{className:"flex items-center space-x-4 flex-shrink-0"},or.default.createElement("button",{onClick:o,className:"p-2 rounded-lg transition-colors",style:{backgroundColor:n?"#252525":"#f3f4f6",color:n?"#fbbf24":"#4b5563"},title:n?"Switch to light mode":"Switch to dark mode"},n?or.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},or.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"})):or.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},or.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),or.default.createElement("div",{className:`hidden sm:flex items-center space-x-2 text-sm ${n?"text-gray-400":"text-gray-500"}`},or.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),or.default.createElement("span",null,"Connected")),or.default.createElement("div",{className:"relative",ref:s},or.default.createElement("button",{onClick:()=>i(!a),className:"flex items-center space-x-2 p-1 rounded-lg transition-colors",style:{backgroundColor:a?n?"#252525":"#f3f4f6":"transparent"}},or.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},or.default.createElement("span",{className:"text-red-600 font-medium text-sm"},p))),a&&or.default.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:n?"#1a1a1a":"#ffffff",borderColor:n?"#2a2a2a":"#e5e7eb"}},or.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:n?"#2a2a2a":"#e5e7eb"}},or.default.createElement("div",{className:"flex items-center space-x-3"},or.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},or.default.createElement("span",{className:"text-red-600 font-medium"},p)),or.default.createElement("div",null,or.default.createElement("div",{className:`font-medium ${n?"text-white":"text-gray-900"}`},d),or.default.createElement("div",{className:`text-sm ${n?"text-gray-400":"text-gray-500"}`},e?.email)))),u.length>0&&or.default.createElement("div",{className:"py-1 border-b",style:{borderColor:n?"#2a2a2a":"#e5e7eb"}},u.map(f=>or.default.createElement("a",{key:f.href,href:f.href,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${n?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},or.default.createElement("span",null,f.label)))),l&&or.default.createElement("div",{className:"py-1"},or.default.createElement("button",{onClick:c,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${n?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},or.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},or.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"})),or.default.createElement("span",null,"Sign out")))))))}var Ue=X(J());var At=X(J());var D3=150,q2e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),K2e=e=>e.length?q2e(e)/e.length:0,el=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),j3=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},Ef=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),V2e=4,Gh=e=>Math.max(V2e,j3(e)),XR=(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},G2e=5.5,Y2e=12,X2e=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*G2e+Y2e,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},Nf=(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(" ")},bA=(e,t)=>{let r=Nf(e,t);return r?`0,100 ${r} 100,100`:""},ZR=(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 K2e(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(" ")},mb=(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 JR({label:e,value:t,unit:r,sub:n,delta:o,deltaRank:a="none",deltaSub:i,spark:s,sparkColor:l}){return At.default.createElement(Le,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},At.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},At.default.createElement(je,{size:11,spacing:"0.05em"},e),o&&At.default.createElement($o,{rank:a,size:"compact",title:i,style:{marginLeft:"auto",fontSize:11,padding:"3px 9px",minWidth:0},testId:"signal-delta"},o)),At.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},At.default.createElement("span",{style:{fontFamily:U,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?At.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},r):null),At.default.createElement("div",{title:n,style:{fontFamily:U,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),At.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},At.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},At.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),At.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function QR({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=D3}){let p=(0,At.useRef)(null),f=hf(p),m="1px dashed var(--color-text-secondary)";return At.default.createElement(Le,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},At.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},At.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),At.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},t),At.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),At.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(g=>At.default.createElement("span",{key:g.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:U,fontSize:10,color:"var(--color-text-secondary)"}},At.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:g.color,flexShrink:0}}),g.label))),At.default.createElement("div",{ref:p,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(g=>At.default.createElement("div",{key:g.top,style:{position:"absolute",left:0,right:0,top:`${g.top}%`,borderTop:"1px solid var(--color-border-light)"}},At.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:U,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},g.label))),i.length>0&&At.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((g,b)=>At.default.createElement("div",{key:b,title:g.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},g.segs.map((h,y)=>At.default.createElement("div",{key:y,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&At.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((g,b)=>At.default.createElement("polygon",{key:b,points:g.points,fill:g.color,opacity:"0.16"})),s.map((g,b)=>At.default.createElement("polyline",{key:b,points:g.points,fill:"none",stroke:g.color,strokeWidth:g.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((g,b)=>{let h=X2e(g,f),y=`${Number(g.left).toFixed(2)}%`;return At.default.createElement("div",{key:b,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:y,borderRight:m}:{left:y,right:0,borderLeft:m}}},At.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:U,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},g.label))})),At.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},c.map((g,b)=>At.default.createElement("span",{key:b},g))))}function Yh({label:e,qualifier:t,meta:r,children:n}){return At.default.createElement(Le,{padding:0,style:{overflow:"hidden"}},At.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},At.default.createElement(je,null,e),t?At.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?At.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function $3({template:e,columns:t}){return At.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:U,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},At.default.createElement("span",null),t.map(r=>At.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function wA({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return At.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 L3({children:e,padding:t="8px 14px"}){return At.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function gb({children:e}){return At.default.createElement("div",{style:{padding:"12px 14px",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},e)}function z3({color:e}){return At.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function B3({pct:e,color:t}){return At.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},At.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function F3({pct:e,color:t,width:r=70}){return At.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},At.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function Es({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return At.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var ree=6e4,Z2e=1180,Zh={"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"}},J2e=Object.keys(Zh).map(e=>({value:e,label:e})),U3="24h",Xh=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],hb=[{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)"}],RR=e=>hb.find(t=>t.type===e)?.color||"var(--color-text-muted)",Q2e=3,kA="var(--color-text-primary)",R2e={success:"good",error:"poor",muted:"none"},eAe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],W3=e=>String(e).padStart(2,"0"),qt=e=>e==null||Number.isNaN(Number(e))?0:Number(e),tAe=e=>e.reduce((t,r)=>t+qt(r),0),eee=e=>`${qt(e).toFixed(1)}%`,SA=(e,t)=>`${e} ${t}${e===1?"":"s"}`,rAe=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,nAe=(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},oAe=e=>{let t=String(e.label||"incident"),r=hb.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},aAe=e=>{let t=qt(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},tee=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},iAe=(e,t,r=Date.now())=>{let n=Math.max(1,qt(t))*1e3,o=Math.max(1,Math.round(qt(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()}))},sAe=(e,t)=>{let r=e.summary||{},n=Zh[e.range]||Zh[t]||Zh[U3],o=qt(e.bucket_seconds)||n.seconds,a=qt(e.window_minutes)||(e.window_hours?qt(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:iAe(a,o),s=qt(e.totals?.requests??r.total_requests),l=qt(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:qt(r.errors),error_rate:qt(r.error_rate),tokens_in:qt(r.tokens_input),tokens_out:qt(r.tokens_output),tokens:qt(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:qt(f.requests),share_pct:s?qt(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?qt(f.errors)/qt(f.requests)*100:0,cost:qt(f.cost),tokens:qt(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:hb.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:[]}},nee=e=>{let t=Zh[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:aAe(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},lAe=e=>{let[t,r]=(0,Ue.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 H3(){let[e,t]=(0,Ue.useState)(U3),[r,n]=(0,Ue.useState)(""),[o,a]=(0,Ue.useState)(null),[i,s]=(0,Ue.useState)(!0),[l,u]=(0,Ue.useState)(null),[c,d]=(0,Ue.useState)(!1),p=(0,Ue.useRef)(0),f=lAe(Z2e),m=(0,Ue.useRef)(null),g=(0,Ue.useCallback)(async()=>{let k=++p.current;try{let S=new URLSearchParams({range:e});r&&S.set("agent",r);let[w,_]=await Promise.all([tee(S),r?tee(new URLSearchParams({range:e})).catch(()=>null):null]);if(k!==p.current)return;let A=r?_?.agents:w.agents;Array.isArray(A)&&(m.current=A),a({data:w,ranking:Array.isArray(A)?A:m.current}),u(null)}catch(S){if(k!==p.current)return;u(S.message)}finally{k===p.current&&s(!1)}},[e,r]);(0,Ue.useEffect)(()=>{let k=!1;d(!0),g().finally(()=>{k||d(!1)});let S=setInterval(g,ree);return()=>{k=!0,clearInterval(S)}},[g]);let b=(0,Ue.useMemo)(()=>o?sAe(o.data,e):null,[o,e]),h=(0,Ue.useMemo)(()=>b?b.agent?nAe(o.ranking,b.agents):b.agents:[],[b,o]),y=(0,Ue.useMemo)(()=>h.map(k=>k.name).filter(Boolean),[h]),x=(0,Ue.useMemo)(()=>{let k=Object.fromEntries(y.map((w,_)=>[w,Xh[_%Xh.length]])),S=y.length;return(b?b.agents:[]).forEach(w=>{w.name&&!k[w.name]&&(k[w.name]=Xh[S++%Xh.length])}),w=>k[w]||Xh[0]},[y,b]),v=(0,Ue.useMemo)(()=>b?cAe(b,x):null,[b,x]);return i?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",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!b?Ue.default.createElement("div",null,Ue.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:kA}},"Metrics"),Ue.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}`:"")):Ue.default.createElement(uAe,{m:b,view:v,railAgents:h,range:Zh[e]?e:U3,agent:r,agentOptions:r&&!y.includes(r)?[...y,r]:y,colorFor:x,narrow:f,pending:c,onRange:t,onAgent:n})}function uAe({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=nee(e),p=e.totals.requests===0,f=m=>c(o===m?"":m);return Ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:kA,fontSize:13}},Ue.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},Ue.default.createElement("div",{style:{flex:1,minWidth:240}},Ue.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),Ue.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}`:"")),Ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Ue.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:kA,cursor:"pointer"}},Ue.default.createElement("option",{value:""},"All agents"),a.map(m=>Ue.default.createElement("option",{key:m,value:m},m))),e.environment&&Ue.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:U,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},Ue.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),Ue.default.createElement(To,{options:J2e,value:n,onChange:u}),Ue.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${ree/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},Ue.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?Ue.default.createElement(Le,{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",Ue.default.createElement("div",{style:{marginTop:8,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):Ue.default.createElement(Ue.default.Fragment,null,Ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>Ue.default.createElement(JR,{key:m.label,...m,deltaSub:d.prev}))),Ue.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}},Ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>Ue.default.createElement(QR,{key:m.title,...m,xLabels:t.xLabels,height:D3}))),Ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},Ue.default.createElement(Yh,{label:"Agents",qualifier:"by requests \xB7 click to filter"},Ue.default.createElement($3,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&Ue.default.createElement(gb,null,"no agents in this window"),r.map(m=>Ue.default.createElement(wA,{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}`},Ue.default.createElement("div",{style:{minWidth:0}},Ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},Ue.default.createElement(z3,{color:i(m.name)}),Ue.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),Ue.default.createElement(B3,{pct:m.share_pct,color:i(m.name)})),Ue.default.createElement(Es,null,sn(m.requests)),Ue.default.createElement(Es,{color:"var(--color-text-secondary)"},zn(m.p95_ms)),Ue.default.createElement(Es,{color:qt(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},eee(m.error_rate)),Ue.default.createElement(Es,null,$0(m.cost))))),Ue.default.createElement(Yh,{label:"Models",qualifier:"by tokens"},e.models.length===0&&Ue.default.createElement(gb,null,"no model usage in this window"),e.models.map((m,g)=>Ue.default.createElement(wA,{key:`${m.model}-${m.provider}-${g}`,template:"minmax(0, 1fr) 52px 56px"},Ue.default.createElement("div",{style:{minWidth:0}},Ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},Ue.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&Ue.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),Ue.default.createElement(B3,{pct:m.share_pct,color:"var(--color-token-in)"})),Ue.default.createElement(Es,null,sn(m.tokens)),Ue.default.createElement(Es,{color:"var(--color-text-secondary)"},$0(m.cost))))),Ue.default.createElement(Yh,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&Ue.default.createElement(gb,null,"no actions in this window"),e.actions.map(m=>Ue.default.createElement(L3,{key:m.name},Ue.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:U,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ue.default.createElement(F3,{pct:t.slowestP95?qt(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),Ue.default.createElement(Es,{weight:600,width:40},zn(m.p95_ms))))),Ue.default.createElement(Yh,{label:"Tools",qualifier:"by calls"},Ue.default.createElement($3,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&Ue.default.createElement(gb,null,"no tool calls in this window"),e.tools.map(m=>Ue.default.createElement(wA,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},Ue.default.createElement("span",{title:m.name,style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ue.default.createElement(Es,null,sn(m.calls)),Ue.default.createElement(Es,{color:"var(--color-text-secondary)"},zn(m.avg_ms)),Ue.default.createElement(Es,{color:qt(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},eee(m.error_rate))))),Ue.default.createElement(Yh,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>Ue.default.createElement(L3,{key:m.type},Ue.default.createElement(z3,{color:RR(m.type)}),Ue.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),Ue.default.createElement(F3,{pct:t.errorTotal?qt(m.count)/t.errorTotal*100:0,color:RR(m.type)}),Ue.default.createElement(Es,{weight:600,width:32},Math.round(qt(m.count))))))))))}function cAe(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=nee(e),s=r.map(E=>new Date(E.ts)),l=e.windowMinutes>=2880,u=E=>Number.isNaN(E.getTime())?"":l?`${eAe[E.getDay()]} ${W3(E.getHours())}h`:`${W3(E.getHours())}:${W3(E.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(E=>E===6?"now":u(s[Math.round(E*(a-1)/6)])):[],d=E=>r.map(W=>qt(W[E])),p=d("requests"),f=d("errors"),m=d("tokens_in"),g=d("tokens_out"),b=d("cost"),h=d("tool_calls"),y=d("tool_errors"),x=E=>r.map(W=>W[E]==null?null:qt(W[E])),v=x("p50_ms"),k=x("p95_ms"),S=x("p99_ms"),w=r.map(E=>E.requests_by_agent||{}),_=e.agents.map(E=>E.name).filter(Boolean);w.forEach(E=>Object.keys(E).forEach(W=>{_.includes(W)||_.push(W)}));let A=_.length?_.map(E=>({label:E,color:t(E),data:w.map(W=>qt(W[E]))})):[{label:"requests",color:Xh[0],data:p}],C=hb.map(E=>({label:E.type,color:E.color,data:r.map(W=>qt((W.errors_by_type||{})[E.type]))})),O=(qt(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,D=(E,W)=>{if(!E||a<2||!O)return null;let F=new Date(E.ts).getTime();if(Number.isNaN(F))return null;let Ee=Math.min(a-1,Math.max(0,Math.floor((F-s[0].getTime())/O)))/(a-1);return{left:Ee*100,label:W,flip:Ee>.55}},H=e.markers.filter(E=>E.kind==="deploy").sort((E,W)=>new Date(E.ts)-new Date(W.ts)).slice(-Q2e).map(E=>D(E,E.label)).filter(Boolean),$=e.markers.find(E=>E.kind==="incident"),Z=$?D($,oAe($)):null,N=Z?[Z]:[],P=Gh(el(p)*1.1),M=Gh(el(f)*1.15),I=Gh(Math.max(el(S),el(k),el(v))*1.05),j=Gh(Math.max(el(m),el(g))*1.1),T=j3(el(b)*1.1),q=XR(T),G=Gh(el(h)*1.1),L=qt(n.requests),Y=qt(n.requests_per_minute),K=qt(n.errors),pe=qt(n.error_rate),De=qt(n.tokens)||qt(n.tokens_in)+qt(n.tokens_out),se=qt(n.cost),xe=n.cost_per_request!=null?qt(n.cost_per_request):L?se/L:0,ue=qt(n.tool_calls),R=n.tool_error_rate!=null?qt(n.tool_error_rate):ue?qt(n.tool_errors)/ue*100:0,we=qt(e.errorsByType.find(E=>E.type===hb[0].type)?.count),Ce=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${sn(L)} \xB7 ${Y.toFixed(1)}/min`,legend:A.map(E=>({label:E.label,color:E.color})),ticks:Ef(P,sn),buckets:mb(A,P,E=>`${u(s[E])} \xB7 ${Math.round(p[E])} req`),markers:H},{title:"Latency",sub:"generation percentiles",value:`p50 ${zn(n.p50_ms)}`,legend:[{label:`p50 ${zn(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${zn(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${zn(n.p99_ms)}`,color:"var(--color-error)"}],ticks:Ef(I,rAe),lines:[{points:Nf(S,I),color:"var(--color-error)",width:1.5},{points:Nf(k,I),color:"var(--color-warning)",width:1.5},{points:Nf(v,I),color:"var(--color-token-in)",width:2}],areas:[{points:bA(v,I),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${pe.toFixed(2)}% \xB7 ${SA(Math.round(K),"error")}`,valueColor:pe>1?"var(--color-error)":kA,legend:C.map(E=>({label:E.label,color:E.color})),ticks:Ef(M,E=>String(Math.round(E))),buckets:mb(C,M,E=>`${u(s[E])} \xB7 ${SA(Math.round(f[E]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${sn(De)} \xB7 in ${sn(n.tokens_in)} / out ${sn(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:Ef(j,sn),lines:[{points:Nf(m,j),color:"var(--color-token-in)",width:1.5},{points:Nf(g,j),color:"var(--color-token-out)",width:1.5}],areas:[{points:bA(m,j),color:"var(--color-token-in)"},{points:bA(g,j),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${$0(se)} \xB7 ${L0(xe)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:Ef(T,E=>L0(E,q)),buckets:mb([{color:"var(--color-text-secondary)",data:b}],T,E=>`${u(s[E])} \xB7 ${L0(b[E],q)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${sn(ue)} \xB7 ${R.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:Ef(G,sn),buckets:mb([{color:"var(--span-tool)",data:h.map((E,W)=>Math.max(0,E-y[W]))},{color:"var(--color-error)",data:y}],G,E=>`${u(s[E])} \xB7 ${SA(Math.round(h[E]),"call")}`)}],z=(E,W,F)=>{let B=E==null?null:qt(E);return B==null||B===0?"muted":W&&W(B)?"success":F&&F(B)?"error":"muted"},ee=(E,W,F,B,Ee,Ve,fe,ze)=>({label:E,value:W,unit:F,sub:B,delta:Ee,deltaRank:R2e[Ve]||"none",spark:ZR(fe),sparkColor:ze});return{signals:[ee("Requests",sn(L),"",`${Y.toFixed(1)} req/min`,Eh(o.requests_pct),z(o.requests_pct,E=>E>0,null),p,"var(--color-token-in)"),ee("Latency",zn(n.p50_ms),"p50",`p95 ${zn(n.p95_ms)} \xB7 p99 ${zn(n.p99_ms)}`,Eh(o.p50_pct),z(o.p50_pct,E=>E<0,E=>E>0),v,"var(--color-token-in)"),ee("Error rate",pe.toFixed(2),"%",`${SA(Math.round(K),"error")} \xB7 ${Math.round(we)} rate-limited`,Eh(o.error_rate_pt," pt",1),z(o.error_rate_pt,E=>E<0,E=>E>0),f,"var(--color-error)"),ee("Tokens",sn(De),"",`in ${sn(n.tokens_in)} \xB7 out ${sn(n.tokens_out)}`,Eh(o.tokens_pct),"muted",m.map((E,W)=>E+g[W]),"var(--color-token-in)"),ee("Cost",$0(se),"",`${L0(xe)} per request`,Eh(o.cost_pct),"muted",b,"var(--color-text-secondary)")],panels:Ce,xLabels:c,slowestP95:el(e.actions.map(E=>E.p95_ms)),errorTotal:tAe(e.errorsByType.map(E=>E.count))}}var He=X(J());var dAe=6e4,pAe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],oee={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)"}},yb=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),aee=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,fAe=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 q3({onOpenServer:e}){let{darkMode:t}=ut(),[r,n]=(0,He.useState)(null),[o,a]=(0,He.useState)(!0),[i,s]=(0,He.useState)(null),[l,u]=(0,He.useState)("all"),[c,d]=(0,He.useState)(""),[p,f]=(0,He.useState)(168),[m,g]=(0,He.useState)(null),b=(0,He.useCallback)(async()=>{try{let A=new URLSearchParams({hours:String(p)});l!=="all"&&A.set("origin",l),c.trim()&&A.set("q",c.trim());let C=await fetch(`/api/tools?${A}`);if(!C.ok)throw new Error(`Request failed (${C.status})`);n(await C.json()),s(null)}catch(A){s(A.message)}finally{a(!1)}},[l,c,p]);(0,He.useEffect)(()=>{let A=setTimeout(b,c?250:0);return()=>clearTimeout(A)},[b,c]),(0,He.useEffect)(()=>{let A=setInterval(b,dAe);return()=>clearInterval(A)},[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"},y=A=>{let C=oee[A]||oee.agent;return{fg:t?C.dark:C.light,bg:t?C.bgDark:C.bgLight}};if(o&&!r)return He.default.createElement("div",{className:"flex items-center justify-center h-64"},He.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return He.default.createElement("div",{style:{padding:"24px"}},He.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),He.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:x=[],summary:v={},origins:k={},sources:S={}}=r||{},w=!S.telemetry&&!S.generations&&!S.messages&&!S.declared,_=({label:A,value:C,hint:O,tone:D})=>He.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},He.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},A),He.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:D||h.textPrimary}},C),O&&He.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},O));return He.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},He.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},He.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},He.default.createElement("div",null,He.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),He.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")),He.default.createElement("div",{style:{display:"flex",gap:"4px"}},pAe.map(A=>He.default.createElement("button",{key:A.value,onClick:()=>f(A.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${p===A.value?"#ef4444":h.border}`,background:p===A.value?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:p===A.value?"#ef4444":h.textSecondary}},A.label))))),He.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},He.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},He.default.createElement(_,{label:"Tools Detected",value:yb(v.total_tools),hint:`${v.active_tools||0} called in this window`}),He.default.createElement(_,{label:"Tool Calls",value:yb(v.total_calls),hint:`${aee(v.avg_duration_ms)} average`}),He.default.createElement(_,{label:"Error Rate",value:`${v.error_rate||0}%`,tone:v.error_rate>5?h.error:h.textPrimary,hint:`${v.total_errors||0} failed call${v.total_errors===1?"":"s"}`}),He.default.createElement(_,{label:"From MCP",value:yb(v.mcp_tools),hint:`across ${v.mcp_servers_active||0} active server${v.mcp_servers_active===1?"":"s"}`}),He.default.createElement(_,{label:"Never Called",value:yb(v.unused_tools),hint:"offered or configured, unused"})),He.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(k).map(([A,C])=>He.default.createElement("button",{key:A,onClick:()=>u(A),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${l===A?"#ef4444":h.border}`,background:l===A?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:l===A?"#ef4444":h.textSecondary}},C)),He.default.createElement("input",{value:c,onChange:A=>d(A.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}})),He.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},x.length===0?He.default.createElement("div",{style:{textAlign:"center",padding:"48px 24px",color:h.textSecondary,fontSize:"14px"}},w?"No tool activity yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace":"No tools match these filters"):He.default.createElement("div",{style:{overflowX:"auto"}},He.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},He.default.createElement("thead",null,He.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),He.default.createElement("tbody",null,x.map((A,C)=>{let O=y(A.origin),D=m===A.name;return He.default.createElement(He.default.Fragment,{key:A.name},He.default.createElement("tr",{onClick:()=>g(D?null:A.name),style:{borderBottom:C{H.stopPropagation(),A.mcp_server&&e&&e(A.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:O.bg,color:O.fg,fontFamily:"monospace",cursor:A.mcp_server&&e?"pointer":"default"},title:A.mcp_server?`Open ${A.mcp_server} in MCP Services`:A.source_label},A.source_label)),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},yb(A.calls)),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:A.errors>0?h.error:h.textCell}},A.errors),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},aee(A.avg_duration_ms)),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},fAe(A.last_seen))),D&&He.default.createElement("tr",{style:{borderBottom:CHe.default.createElement("span",{key:A,style:{color:S[A]?h.textSecondary:h.textMuted,opacity:S[A]?1:.5}},S[A]?"\u25CF":"\u25CB"," ",C)))))}function mAe({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>He.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},He.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),He.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return He.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}`}},He.default.createElement(o,{label:"Full name"},He.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&He.default.createElement(o,{label:"Description"},e.description),He.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?He.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):He.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),He.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):He.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&He.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),He.default.createElement(o,{label:"Call breakdown"},He.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&He.default.createElement(o,{label:"Last arguments"},He.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&He.default.createElement(o,{label:"Last error"},He.default.createElement("span",{style:{color:t.error}},e.last_error)),He.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var qe=X(J());var ft=X(J());var vb={width:"100%",boxSizing:"border-box",padding:"8px 10px",borderRadius:8,fontSize:13,border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:"var(--color-text-primary)"};function K3({onChanged:e}){let[t,r]=(0,ft.useState)(null),[n,o]=(0,ft.useState)(null),[a,i]=(0,ft.useState)(null),[s,l]=(0,ft.useState)(null),[u,c]=(0,ft.useState)(!1),[d,p]=(0,ft.useState)(null),[f,m]=(0,ft.useState)(null),g=(0,ft.useCallback)(async()=>{try{let w=await fetch("/api/mcp_server_configs");if(!w.ok)throw new Error(`Request failed (${w.status})`);r(await w.json()),o(null)}catch(w){o(w.message)}},[]);(0,ft.useEffect)(()=>{g()},[g]);let b=()=>{g(),e&&e()},h=async()=>{let w=O6(a);if(P6(w)){l(Object.values(w).join(" "));return}c(!0),l(null);try{let _=a.id?`/api/mcp_server_configs/${a.id}`:"/api/mcp_server_configs",A=await fetch(_,{method:a.id?"PATCH":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M6(a))}),C=await A.json().catch(()=>({}));if(!A.ok)throw new Error(bv(C,"Could not save the server."));i(null),m({kind:"ok",text:`${C.mcp_server_config.name} saved. Test it to list the tools it serves.`}),b()}catch(_){l(_.message)}finally{c(!1)}},y=async w=>{p(w.id),m(null);try{let _=await fetch(`/api/mcp_server_configs/${w.id}/test`,{method:"POST"}),A=await _.json().catch(()=>({}));if(!_.ok)throw new Error(bv(A,"Could not test the server."));m(A.ok?{kind:"ok",text:`${w.name} answered with ${A.tools.length} tool${A.tools.length===1?"":"s"}.`}:{kind:"error",text:`${w.name}: ${A.error}`}),b()}catch(_){m({kind:"error",text:_.message})}finally{p(null)}},x=async w=>{try{let _=await fetch(`/api/mcp_server_configs/${w.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({mcp_server_config:{enabled:!w.enabled}})}),A=await _.json().catch(()=>({}));if(!_.ok)throw new Error(bv(A,"Could not change the server."));b()}catch(_){m({kind:"error",text:_.message})}},v=async w=>{if(await $r({title:`Delete ${w.name}?`,message:"Agents that enable it keep its entry, but can no longer call its tools until it is switched off or replaced.",confirmLabel:"Delete server",danger:!0}))try{let A=await fetch(`/api/mcp_server_configs/${w.id}`,{method:"DELETE"});if(!A.ok){let C=await A.json().catch(()=>({}));throw new Error(bv(C,"Could not delete the server."))}b()}catch(A){m({kind:"error",text:A.message})}},k=t?.mcp_server_configs||[],S=t?t.can_manage!==!1:!1;return ft.default.createElement(Le,{testId:"mcp-server-configs",style:{marginBottom:16}},ft.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},ft.default.createElement("div",null,ft.default.createElement("h3",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)",margin:0}},"Your MCP servers"),ft.default.createElement("p",{style:{fontSize:13,color:"var(--color-text-secondary)",margin:"4px 0 0 0"}},"Remote servers you connect by URL. Enable one on an agent from its Tools tab; runs and evaluations then call its tools.")),S&&!a&&ft.default.createElement(ie,{variant:"primary",size:"sm",testId:"mcp-server-config-add",onClick:()=>{i(A6()),l(null)}},"Add server")),n&&ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error)",fontSize:13}},"Failed to load your servers: ",n),f&&ft.default.createElement("p",{role:"status",style:{fontSize:13,margin:"12px 0 0 0",color:f.kind==="error"?"var(--color-error)":"var(--color-success-text)"}},f.text),a&&ft.default.createElement(gAe,{draft:a,setDraft:i,error:s,saving:u,allowPrivate:t?.allow_private_hosts,onSave:h,onCancel:()=>{i(null),l(null)}}),ft.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},t&&k.length===0&&!a&&ft.default.createElement("p",{style:{fontSize:13,color:"var(--color-text-muted)",margin:0}},"No servers added yet."),k.map(w=>{let _=I6(w);return ft.default.createElement("div",{key:w.id,"data-testid":`mcp-server-config-${w.id}`,style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"10px 12px",borderRadius:8,border:"1px solid var(--color-border)"}},ft.default.createElement("div",{style:{flex:1,minWidth:220}},ft.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ft.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},w.name),ft.default.createElement(be,{tone:_.tone,title:_.title},_.label),!w.enabled&&ft.default.createElement(be,{tone:"warning"},"switched off")),ft.default.createElement("div",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-secondary)",marginTop:2,wordBreak:"break-all"}},w.url),w.headers.length>0&&ft.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-muted)",marginTop:2}},"Headers: ",w.headers.map(A=>`${A.name}: ${A.hint}`).join(", ")),w.last_test_status==="failed"&&w.last_test_error&&ft.default.createElement("div",{style:{fontSize:12,color:"var(--color-error)",marginTop:2}},w.last_test_error)),S&&ft.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},ft.default.createElement(ie,{size:"sm",onClick:()=>y(w),disabled:d===w.id,testId:`mcp-server-config-test-${w.id}`},d===w.id?"Testing\u2026":"Test"),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>x(w)},w.enabled?"Switch off":"Switch on"),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{i(E6(w)),l(null)}},"Edit"),ft.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>v(w)},"Delete")))})))}function gAe({draft:e,setDraft:t,error:r,saving:n,allowPrivate:o,onSave:a,onCancel:i}){let s=l=>u=>t({...e,[l]:l==="enabled"?u.target.checked:u.target.value});return ft.default.createElement("div",{"data-testid":"mcp-server-config-form",style:{marginTop:12,padding:12,borderRadius:8,border:"1px solid var(--color-border-strong)",display:"grid",gap:10}},ft.default.createElement("label",{style:{display:"grid",gap:4}},ft.default.createElement(je,null,"Name"),ft.default.createElement("input",{style:vb,value:e.name,onChange:s("name"),placeholder:"Orders API","aria-label":"Server name"})),ft.default.createElement("label",{style:{display:"grid",gap:4}},ft.default.createElement(je,null,"URL"),ft.default.createElement("input",{style:{...vb,fontFamily:U},value:e.url,onChange:s("url"),placeholder:"https://app.example.com/mcp","aria-label":"Server URL"}),ft.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},"Streamable HTTP endpoint.",o?"":" Private, loopback and link-local addresses are not reachable from here.")),ft.default.createElement("label",{style:{display:"grid",gap:4}},ft.default.createElement(je,null,"Description"),ft.default.createElement("input",{style:vb,value:e.description,onChange:s("description"),placeholder:"Optional","aria-label":"Server description"})),ft.default.createElement("div",{style:{display:"grid",gap:6}},ft.default.createElement(je,null,"Headers"),e.headers.map((l,u)=>ft.default.createElement("div",{key:u,style:{display:"flex",gap:6,alignItems:"center"}},ft.default.createElement("input",{style:{...vb,flex:"0 0 35%",fontFamily:U},value:l.name,onChange:c=>t(VT(e,u,"name",c.target.value)),placeholder:"Authorization","aria-label":`Header ${u+1} name`}),ft.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",style:{...vb,flex:1,fontFamily:U},value:l.value,onChange:c=>t(VT(e,u,"value",c.target.value)),placeholder:l.stored?`stored ${l.hint} \u2014 leave blank to keep`:"Bearer \u2026","aria-label":`Header ${u+1} value`}),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>t(T6(e,u)),title:"Remove this header"},"Remove"))),ft.default.createElement("div",null,ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>t(N6(e))},"+ Add header"))),ft.default.createElement("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13,color:"var(--color-text-cell)"}},ft.default.createElement("input",{type:"checkbox",checked:e.enabled,onChange:s("enabled")}),"Agents that enable it may call it"),r&&ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error)",fontSize:13,margin:0}},r),ft.default.createElement("div",{style:{display:"flex",gap:8}},ft.default.createElement(ie,{variant:"primary",size:"sm",onClick:a,disabled:n,testId:"mcp-server-config-save"},n?"Saving\u2026":e.id?"Save changes":"Add server"),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:i},"Cancel")))}var hAe=6e4,yAe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],vAe=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],xAe=["http","streamable_http","sse"],iee={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)"}},xb=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function V3({focusServer:e,onOpenTools:t}){let{darkMode:r}=ut(),[n,o]=(0,qe.useState)(null),[a,i]=(0,qe.useState)(!0),[s,l]=(0,qe.useState)(null),[u,c]=(0,qe.useState)("all"),[d,p]=(0,qe.useState)(168),[f,m]=(0,qe.useState)(e||null),[g,b]=(0,qe.useState)(null),[h,y]=(0,qe.useState)(null),x=(0,qe.useCallback)(async()=>{try{let $=await fetch(`/api/mcp_servers?hours=${d}`);if(!$.ok)throw new Error(`Request failed (${$.status})`);o(await $.json()),l(null)}catch($){l($.message)}finally{i(!1)}},[d]);(0,qe.useEffect)(()=>{x();let $=setInterval(x,hAe);return()=>clearInterval($)},[x]),(0,qe.useEffect)(()=>{e&&m(e)},[e]);let v={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"},k=$=>{let Z=iee[$]||iee.available;return{fg:r?Z.dark:Z.light,bg:r?Z.bgDark:Z.bgLight}},S=async $=>{b($.key),y(null);try{let Z=await fetch(`/api/mcp_servers/${encodeURIComponent($.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})`);y({kind:"ok",text:`${$.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),x()}catch(Z){y({kind:"error",text:Z.message})}finally{b(null)}};if(a&&!n)return qe.default.createElement("div",{className:"flex items-center justify-center h-64"},qe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(s&&!n)return qe.default.createElement("div",{style:{padding:"24px"}},qe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:v.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:v.errorBg,borderRadius:"8px",color:v.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:w=[],summary:_={},sandboxes:A=[],statuses:C={}}=n||{},O=u==="all"?w:w.filter($=>$.status===u),D=new Set(A.flatMap($=>$.mcp_servers||[])),H=({label:$,value:Z,hint:N})=>qe.default.createElement("div",{style:{background:v.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${v.border}`}},qe.default.createElement("div",{style:{fontSize:"11px",color:v.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},$),qe.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:v.textPrimary}},Z),N&&qe.default.createElement("div",{style:{fontSize:"13px",color:v.textSecondary,marginTop:"8px"}},N));return qe.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:v.bg}},qe.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${v.border}`,marginBottom:"16px"}},qe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},qe.default.createElement("div",null,qe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:v.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("p",{style:{fontSize:"14px",color:v.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),qe.default.createElement("div",{style:{display:"flex",gap:"4px"}},yAe.map($=>qe.default.createElement("button",{key:$.value,onClick:()=>p($.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${d===$.value?"#ef4444":v.border}`,background:d===$.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===$.value?"#ef4444":v.textSecondary}},$.label))))),qe.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},qe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},qe.default.createElement(H,{label:"Active",value:xb(_.active),hint:"called in this window"}),qe.default.createElement(H,{label:"Configured",value:xb(_.configured),hint:"declared, no traffic yet"}),qe.default.createElement(H,{label:"Available",value:xb(_.available),hint:"defaults you can connect"}),qe.default.createElement(H,{label:"Tool Calls",value:xb(_.total_calls),hint:"through MCP servers"})),qe.default.createElement(K3,{onChanged:x}),h&&qe.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?v.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?v.error:r?"#86efac":"#15803d"}},h.text),qe.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},vAe.map($=>qe.default.createElement("button",{key:$.value,onClick:()=>c($.value),title:C[$.value]||"Every MCP service known to this workspace",style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${u===$.value?"#ef4444":v.border}`,background:u===$.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===$.value?"#ef4444":v.textSecondary}},$.label))),qe.default.createElement("div",{style:{display:"grid",gap:"12px"}},O.length===0?qe.default.createElement("div",{style:{background:v.cardBg,borderRadius:"12px",border:`1px solid ${v.border}`,textAlign:"center",padding:"48px 24px",color:v.textSecondary,fontSize:"14px"}},"No MCP services in this state"):O.map($=>{let Z=k($.status),N=f===$.key,P=D.has($.key);return qe.default.createElement("div",{key:$.key,style:{background:v.cardBg,borderRadius:"12px",border:`1px solid ${N?Z.fg:v.border}`,overflow:"hidden"}},qe.default.createElement("div",{onClick:()=>m(N?null:$.key),style:{padding:"16px 20px",cursor:"pointer",display:"flex",alignItems:"center",gap:"16px",flexWrap:"wrap"}},qe.default.createElement("div",{style:{flex:1,minWidth:"220px"}},qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontSize:"15px",fontWeight:"600",color:v.textPrimary}},$.name),qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:Z.bg,color:Z.fg,textTransform:"uppercase",letterSpacing:"0.04em"}},$.status),$.first_party&&qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(239,68,68,0.15)":"#fef2f2",color:"#ef4444"}},"first-party"),rp($)&&qe.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"),Sv($)&&qe.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"),Dc($)&&qe.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:"A server you added by URL under Your MCP servers"},"your server"),kv($)&&qe.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 server was deleted; agents may still name it"},"removed"),Ew($)&&qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:v.borderLight,color:v.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),P&&qe.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")),$.description&&qe.default.createElement("div",{style:{fontSize:"13px",color:v.textSecondary,marginTop:"4px"}},$.description)),qe.default.createElement("div",{style:{display:"flex",gap:"24px",alignItems:"center"}},qe.default.createElement("div",{style:{textAlign:"right"}},qe.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:v.textPrimary}},xb($.calls)),qe.default.createElement("div",{style:{fontSize:"11px",color:v.textMuted}},"calls")),qe.default.createElement("div",{style:{textAlign:"right"}},qe.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:$.errors>0?v.error:v.textPrimary}},$.errors||0),qe.default.createElement("div",{style:{fontSize:"11px",color:v.textMuted}},"errors")),$.launchable&&qe.default.createElement("button",{onClick:M=>{M.stopPropagation(),S($)},disabled:g===$.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:g===$.key?v.borderLight:"#ef4444",color:g===$.key?v.textMuted:"#ffffff",cursor:g===$.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${$.name} in a sandbox session`},g===$.key?"Starting\u2026":P?"Start another":"Start in sandbox"))),N&&qe.default.createElement(bAe,{server:$,colors:v,tone:Z,onOpenTools:t}))})),A.length>0&&qe.default.createElement("div",{style:{marginTop:"24px",background:v.cardBg,borderRadius:"12px",border:`1px solid ${v.border}`,padding:"20px"}},qe.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:v.textPrimary,margin:"0 0 12px 0"}},"Running sandboxes"),qe.default.createElement("div",{style:{display:"grid",gap:"8px"}},A.map($=>qe.default.createElement("div",{key:$.session_id,style:{display:"flex",justifyContent:"space-between",gap:"12px",fontSize:"13px",color:v.textCell,flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontFamily:"monospace"}},($.mcp_servers||[]).join(", ")||$.sandbox_type),qe.default.createElement("span",{style:{color:v.textMuted}},$.status," \xB7 ",$.runs_count,"/",$.max_runs," runs \xB7 expires ",new Date($.expires_at).toLocaleTimeString())))))))}function bAe({server:e,colors:t,tone:r,onOpenTools:n}){let o=({label:i,children:s})=>qe.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},qe.default.createElement("span",{style:{color:t.textMuted,minWidth:"120px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},i),qe.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},s)),a=e.command||e.url;return qe.default.createElement("div",{style:{padding:"0 20px 20px 20px",display:"grid",gap:"10px"}},qe.default.createElement("div",{style:{height:"1px",background:t.borderLight,marginBottom:"4px"}}),a&&qe.default.createElement(o,{label:xAe.includes(e.transport)?"Endpoint":"Command"},qe.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",background:t.codeBg,display:"inline-block"}},a)),e.transport&&qe.default.createElement(o,{label:"Transport"},e.transport),e.categories?.length>0&&qe.default.createElement(o,{label:"Categories"},e.categories.join(", ")),e.requires_credentials?.length>0&&qe.default.createElement(o,{label:"Requires"},e.requires_credentials.join(", ")),qe.default.createElement(o,{label:e.tool_count>0?"Tools used":"Tools offered"},e.tools?.length>0?qe.default.createElement("span",{style:{display:"flex",gap:"6px",flexWrap:"wrap"}},e.tools.map(i=>qe.default.createElement("code",{key:i,style:{fontFamily:"monospace",fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r.bg,color:r.fg}},i))):qe.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),e.agents?.length>0&&qe.default.createElement(o,{label:"Used by"},e.agents.join(", ")),e.configured_by?.length>0&&qe.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),e.last_seen&&qe.default.createElement(o,{label:"Last call"},new Date(e.last_seen).toLocaleString()),qe.default.createElement("div",{style:{display:"flex",gap:"12px",marginTop:"4px",flexWrap:"wrap"}},e.docs_url&&qe.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&&qe.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 te=X(J());var Nd=X(J());var CA={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},Kn={log(...e){this.enabled&&(e.push(Date.now()),CA.logger.log("[ActionCable]",...e))}},wb=()=>new Date().getTime(),_A=e=>(wb()-e)/1e3,Sb=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=wb(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),Kn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=wb(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),Kn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=wb()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,Kn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=wb(),Kn.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()&&(Kn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${_A(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?Kn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${_A(this.disconnectedAt)} s`):(Kn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return _A(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&_A(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(Kn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};Sb.staleThreshold=6;Sb.reconnectionBackoffRate=.15;var lee={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:bb,protocols:G3}=lee,wAe=G3.slice(0,G3.length-1),see=[].indexOf,kb=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new Sb(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return Kn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...G3,...this.consumer.subprotocols||[]];return Kn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new CA.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(Kn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){Kn.log("Failed to reopen WebSocket",t)}finally{Kn.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 see.call(wAe,this.getProtocol())>=0}isState(...t){return see.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in CA.WebSocket)if(CA.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(){}}};kb.reopenDelay=500;kb.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 bb.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case bb.disconnect:return Kn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case bb.ping:return null;case bb.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 bb.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(Kn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return Kn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(Kn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){Kn.log("WebSocket onerror event")}};var SAe=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},Y3=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),SAe(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)}},X3=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(Kn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):Kn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){Kn.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=>{Kn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},Z3=class{constructor(t){this.consumer=t,this.guarantor=new X3(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new Y3(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){Kn.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})}},J3=class{constructor(t){this._url=t,this.subscriptions=new Z3(this),this.connection=new kb(this),this.subprotocols=[]}get url(){return kAe(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 kAe(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 uee(e=_Ae("url")||lee.default_mount_path){return new J3(e)}function _Ae(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var AA=null;function CAe(){if(AA===null)try{AA=uee()}catch{AA=!1}return AA||null}function Jh(e,t,r,n=!0){let o=(0,Nd.useRef)(null),a=(0,Nd.useRef)(r);return(0,Nd.useEffect)(()=>{a.current=r},[r]),(0,Nd.useEffect)(()=>{if(!n||!e)return;let s=CAe();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,Nd.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function Qh(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var EA=[{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"}],AAe={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"}]},cee={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function Q3({initialType:e="playwright_mcp",onClose:t,showAgents:r=!1}){let[n,o]=(0,te.useState)(e),[a,i]=(0,te.useState)(null),[s,l]=(0,te.useState)(""),[u,c]=(0,te.useState)([]),[d,p]=(0,te.useState)(null),[f,m]=(0,te.useState)(!1),[g,b]=(0,te.useState)(!1),[h,y]=(0,te.useState)(null),[x,v]=(0,te.useState)(null),[k,S]=(0,te.useState)(!1),[w,_]=(0,te.useState)(null),[A,C]=(0,te.useState)(!1),O=(0,te.useRef)(null),[D,H]=(0,te.useState)(["anthropic"]),[$,Z]=(0,te.useState)(!1),[N,P]=(0,te.useState)({}),[M,I]=(0,te.useState)([]),j=(0,te.useCallback)(async z=>{try{let ee=await fetch(`/api/sandboxes/${z}`);if(!ee.ok)return;let ae=await ee.json();i(ae.sandbox),c(ae.sandbox.runs||[])}catch(ee){console.error("Could not refresh the sandbox session:",ee)}},[]),T=(0,te.useCallback)(z=>{!Qh(z)||!a?.session_id||j(a.session_id)},[j,a?.session_id]);Jh("SandboxChannel",{session_id:a?.session_id},T,!!a?.session_id),(0,te.useEffect)(()=>{G(),q()},[n]);let q=async()=>{try{let z=await fetch("/api/usage");if(z.ok){let ee=await z.json();_(ee.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,te.useEffect)(()=>{if(!a?.expires_at)return;let z=setInterval(()=>{let ee=new Date,ae=new Date(a.expires_at),E=Math.max(0,Math.floor((ae-ee)/1e3));v(E),E===0&&(i(W=>({...W,status:"expired"})),clearInterval(z))},1e3);return()=>clearInterval(z)},[a?.expires_at]),(0,te.useEffect)(()=>{O.current&&(O.current.scrollTop=O.current.scrollHeight)},[d?.result]);let G=async()=>{b(!0),y(null);try{let z=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:n})});if(!z.ok)throw new Error("Failed to create sandbox session");let ee=await z.json();i(ee.sandbox),c([]),p(null)}catch(z){y(z.message)}finally{b(!1)}},L=async()=>{!s.trim()||f||!a||($&&D.length>1?await K():await Y(D[0]||"anthropic"))},Y=async z=>{m(!0),p({status:"running",task:s,provider:z,result:"",started_at:new Date().toISOString()});try{let ee=await fetch(`/api/sandboxes/${a.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,provider:z})}),ae=await ee.json();if(ee.status===402&&ae.upgrade_required){_(ae.usage),S(!0),p(E=>({...E,status:"failed",error:ae.message||"Plan limit reached"})),m(!1);return}if(!ee.ok)throw new Error(ae.error||"Task execution failed");ae.usage&&_(ae.usage),xe(ae.run_id)}catch(ee){p(ae=>({...ae,status:"failed",error:ee.message})),m(!1)}},K=async()=>{m(!0),I([...D]),P({});let z={};D.forEach(ee=>{z[ee]={status:"running",result:"",started_at:new Date().toISOString()}}),P(z);try{let ee=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,providers:D,sandbox_id:a?.session_id,sandbox_type:n})});if(!ee.ok){let E=await ee.json();throw new Error(E.error||"Comparison failed")}let ae=await ee.json();ae.sandbox&&i(ae.sandbox),pe(D,ae.sandbox?.session_id||a?.session_id,ae.sandbox?.runs_count??a?.runs_count??0)}catch(ee){D.forEach(ae=>{P(E=>({...E,[ae]:{status:"failed",error:ee.message}}))}),m(!1),I([])}},pe=(z,ee,ae)=>{if(!ee)return;let E=async()=>{try{let W=await fetch(`/api/sandboxes/${ee}`);if(!W.ok)throw new Error(`HTTP ${W.status}`);let F=await W.json();i(F.sandbox);let B=F.sandbox.runs||[];c(B);let Ee=new Set;if(B.slice(ae).forEach(Ve=>{Ve.provider&&(P(fe=>({...fe,[Ve.provider]:{...Ve,provider:Ve.provider}})),(Ve.status==="completed"||Ve.status==="failed")&&Ee.add(Ve.provider))}),z.every(Ve=>Ee.has(Ve))){m(!1),I([]);return}setTimeout(E,1e3)}catch(W){console.error("Comparison polling failed:",W),m(!1),I([])}};setTimeout(E,1e3)},De=async()=>{if(a?.session_id)try{let ee=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(ee.sandbox),c(ee.sandbox.runs||[]),(ee.sandbox.runs||[]).forEach(W=>{W.provider&&P(F=>({...F,[W.provider]:{...W,provider:W.provider}}))}),D.every(W=>{let F=N[W];return F?.status==="completed"||F?.status==="failed"})&&(m(!1),I([]))}catch(z){console.error("Polling error:",z)}},se=z=>{H(ee=>ee.includes(z)?ee.length===1?ee:ee.filter(ae=>ae!==z):[...ee,z])},xe=async z=>{let ee=async()=>{try{let E=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(E.sandbox);let W=E.sandbox.runs||[],F=W[W.length-1];if(F&&(p(F),c(W),F.status==="completed"||F.status==="failed")){m(!1);return}setTimeout(ee,1e3)}catch{m(!1)}};ee()},ue=z=>{z.key==="Enter"&&(z.metaKey||z.ctrlKey)&&L()},R=z=>{if(!z)return"--:--";let ee=Math.floor(z/60),ae=z%60;return`${ee}:${ae.toString().padStart(2,"0")}`},we=a?.status==="ready"&&a?.runs_count{C(!0);try{await Vh({planSlug:"pro",billingInterval:z})}catch(ee){console.error("Checkout error:",ee),y(ee.message||"Failed to initiate checkout. Please try again."),C(!1)}};return te.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},r&&te.default.createElement("div",{className:"pb-6"},te.default.createElement(w0,{inline:!0})),te.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},te.default.createElement("div",{className:"flex items-center justify-between"},te.default.createElement("div",{className:"flex items-center space-x-4"},te.default.createElement(wn,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),te.default.createElement("div",null,te.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),te.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),te.default.createElement("div",{className:"flex items-center space-x-4"},a&&te.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},te.default.createElement(be,{tone:fl(a.status)},a.status),te.default.createElement("span",{className:"text-gray-500"},a.runs_count,"/",a.max_runs," runs"),te.default.createElement("span",{className:`font-mono ${x<60?"text-red-500":"text-gray-500"}`},R(x))),t&&te.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},te.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},te.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),te.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},te.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},te.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("textarea",{value:s,onChange:z=>l(z.target.value),onKeyDown:ue,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!we,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"}),te.default.createElement("div",{className:"flex items-center justify-between mt-3"},te.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",te.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",te.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),te.default.createElement("button",{onClick:L,disabled:!s.trim()||!we,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${s.trim()&&we?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},f?te.default.createElement(te.default.Fragment,null,te.default.createElement("span",{className:"animate-spin"},"\u25E0"),te.default.createElement("span",null,"Running...")):te.default.createElement(te.default.Fragment,null,te.default.createElement("span",null,"\u25B6"),te.default.createElement("span",null,"Run"))))),te.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},te.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},te.default.createElement("h3",{className:"font-medium text-gray-900"},$&&Object.keys(N).length>0?"Comparison Results":"Output"),d&&!$&&te.default.createElement(be,{tone:fl(d.status)},d.status),$&&M.length>0&&te.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",M.length," provider(s)...")),te.default.createElement("div",{ref:O,className:"flex-1 overflow-auto bg-gray-50"},g?te.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},te.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):h?te.default.createElement("div",{className:"text-red-600 p-4"},h):$&&Object.keys(N).length>0?te.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},D.map(z=>{let ee=EA.find(E=>E.id===z),ae=N[z];return te.default.createElement("div",{key:z,className:"p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-2"},te.default.createElement("div",{className:"flex items-center space-x-2"},te.default.createElement("div",{className:`w-3 h-3 rounded-full ${ee?.color||"bg-gray-400"}`}),te.default.createElement("span",{className:"font-medium text-gray-900"},ee?.name||z),te.default.createElement("span",{className:"text-xs text-gray-500"},ee?.model)),ae&&te.default.createElement("div",{className:"flex items-center space-x-2"},te.default.createElement(be,{tone:fl(ae.status)},ae.status),ae.tokens&&te.default.createElement("span",{className:"text-xs text-gray-500"},ae.tokens," tokens"),ae.duration_ms&&te.default.createElement("span",{className:"text-xs text-gray-500"},(ae.duration_ms/1e3).toFixed(1),"s"))),te.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},ae?.status==="running"?te.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},te.default.createElement("span",{className:"animate-pulse"},"\u25CF"),te.default.createElement("span",null,"Processing...")):ae?.error?te.default.createElement("div",{className:"text-red-600"},ae.error):ae?.result?te.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},ae.result):te.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):d?te.default.createElement("div",{className:"p-4 font-mono text-sm"},d.provider&&te.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},te.default.createElement("div",{className:`w-2 h-2 rounded-full ${EA.find(z=>z.id===d.provider)?.color||"bg-gray-400"}`}),te.default.createElement("span",{className:"text-sm text-gray-600"},EA.find(z=>z.id===d.provider)?.name||d.provider)),d.status==="running"?te.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},te.default.createElement("span",{className:"animate-pulse"},"\u25CF"),te.default.createElement("span",null,"Executing task...")):d.error?te.default.createElement("div",{className:"text-red-600"},te.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),te.default.createElement("pre",{className:"whitespace-pre-wrap"},d.error)):te.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},d.result||"Processing...")):te.default.createElement("div",{className:"text-gray-400 text-center py-12"},te.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),te.default.createElement("p",{className:"text-xs"},$?`Compare results across ${D.length} providers`:"Task will execute using the selected provider"))))),te.default.createElement("div",{className:"space-y-4 overflow-auto"},te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-3"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),te.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},te.default.createElement("input",{type:"checkbox",checked:$,onChange:z=>Z(z.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),te.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),te.default.createElement("div",{className:"space-y-2"},EA.map(z=>te.default.createElement("label",{key:z.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${D.includes(z.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},te.default.createElement("div",{className:"flex items-center space-x-3"},te.default.createElement("input",{type:"checkbox",checked:D.includes(z.id),onChange:()=>se(z.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),te.default.createElement("div",{className:`w-2 h-2 rounded-full ${z.color}`}),te.default.createElement("span",{className:"text-sm font-medium text-gray-900"},z.name)),te.default.createElement("span",{className:"text-xs text-gray-500"},z.model)))),$&&D.length>1&&te.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},te.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",D.length," providers simultaneously"))),te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-3"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),$&&te.default.createElement("button",{onClick:()=>o(n==="playwright_mcp"?"comparison":"playwright_mcp"),className:"text-xs text-rose-600 hover:text-rose-700"},n==="comparison"?"Browser Tasks":"Comparison Tasks")),te.default.createElement("div",{className:"space-y-2"},AAe[n]?.map((z,ee)=>te.default.createElement("button",{key:ee,onClick:()=>l(z.task),disabled:!we,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},te.default.createElement("div",{className:"font-medium text-sm text-gray-900"},z.name),te.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},z.description))))),te.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},te.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&&te.default.createElement("div",{className:"mb-4"},te.default.createElement("div",{className:"flex justify-between text-sm mb-1"},te.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),te.default.createElement("span",{className:`font-medium ${w.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},w.runs_used," / ",w.runs_limit)),te.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},te.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&&te.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},w.runs_remaining===0?"Limit reached!":"Almost at limit!")),te.default.createElement("dl",{className:"space-y-2 text-sm"},te.default.createElement("div",{className:"flex justify-between"},te.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),te.default.createElement("dd",{className:"text-gray-900"},a?.runs_count||0,"/",a?.max_runs||cee.max_runs)),te.default.createElement("div",{className:"flex justify-between"},te.default.createElement("dt",{className:"text-gray-500"},"Timeout"),te.default.createElement("dd",{className:"text-gray-900"},cee.timeout_seconds,"s per task"))),w?.plan==="free"&&te.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},te.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"))),u.length>0&&te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},te.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),te.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},u.slice().reverse().map((z,ee)=>te.default.createElement("div",{key:z.id||ee,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>p(z)},te.default.createElement("div",{className:"flex items-center justify-between mb-1"},te.default.createElement(be,{tone:fl(z.status||"completed")},z.status||"completed"),te.default.createElement("span",{className:"text-xs text-gray-400"},z.tokens||0," tokens")),te.default.createElement("p",{className:"text-sm text-gray-600 truncate"},z.task))))),a?.status==="expired"&&te.default.createElement("button",{onClick:G,className:"w-full px-4 py-3 bg-rose-500 text-white rounded-lg hover:bg-rose-600 transition-colors"},"Start New Session")))),k&&te.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},te.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},te.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},te.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),te.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.")),te.default.createElement("div",{className:"p-6"},te.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},te.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},te.default.createElement("div",{className:"text-center mb-4"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),te.default.createElement("span",{className:"text-gray-500"},"/mo"))),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),te.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")),te.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},te.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},te.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),te.default.createElement("div",{className:"text-center mb-4 mt-2"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),te.default.createElement("span",{className:"text-gray-500"},"/mo")),te.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),te.default.createElement("button",{onClick:()=>Ce("monthly"),disabled:A,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"},A?"Loading...":"Upgrade to Pro")),te.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},te.default.createElement("div",{className:"text-center mb-4"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),te.default.createElement("span",{className:"text-gray-500"},"/mo")),te.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),te.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")))),te.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},te.default.createElement("button",{onClick:()=>S(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ht=X(J());var zo=X(J());var R3=["message","llm","tool","browser"];function NA(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function dee(e={}){let t=[];return R3.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=NA(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 pee(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&NA(t.rrweb.first_at)!==null).map(t=>{let r=NA(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,NA(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function fee(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function mee(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 gee(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 hee(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 ej(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 vee(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 bee(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 Rh(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 TA(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 tj(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function EAe(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 wee(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=tj(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",EAe(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"}: ${tj(t.message??t.value)}`:e.kind==="marker"?`marker: ${tj(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function ey(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function NAe(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 TAe(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 See(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(TAe(e,a));if(o())return{count:i,truncated:!1};let l=NAe(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 Qu=[{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)"}],_b=18,OAe=76,Tf=(e,t)=>e.totalMs?t/e.totalMs*100:0,PAe=(0,zo.memo)(function({axis:t,entries:r,recordings:n}){let o=gee(t);return zo.default.createElement(zo.default.Fragment,null,o.map(a=>zo.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${TA(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${Tf(t,a.axisStart)}%`,width:`${Tf(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Qu.map((a,i)=>zo.default.createElement(zo.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=Td(t,s.startMs);return zo.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*_b+7,height:4,borderRadius:2,left:`${Tf(t,l)}%`,width:`${Math.max(Tf(t,Td(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=Td(t,s.startMs);return zo.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*_b+4,height:_b-8,borderRadius:2,left:`${Tf(t,l)}%`,width:`max(3px, ${Tf(t,Td(t,s.endMs)-l)}%)`,background:ey(s)?"var(--color-error)":a.color}})}))))});function rj({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,zo.useRef)(null),i=Qu.length*_b,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 zo.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},zo.default.createElement("div",{style:{width:OAe,flexShrink:0}},Qu.map(u=>zo.default.createElement("div",{key:u.lane,style:{height:_b,display:"flex",alignItems:"center",gap:6,fontFamily:U,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},zo.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),zo.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"}},zo.default.createElement(PAe,{axis:e,entries:t,recordings:r}),zo.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${Tf(e,n)}%`,background:"var(--color-text-primary)"}})))}var la=X(J());var MAe=Object.fromEntries(Qu.map(e=>[e.lane,e])),IAe=(0,la.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=MAe[t.lane],l=ey(t);return la.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"}},la.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},Rh(t.startMs-r)),la.default.createElement("span",{style:{fontFamily:U,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),la.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},wee(t)),t.duration_ms>0&&la.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),kee=(0,la.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,la.useRef)(null),l=(0,la.useRef)(null);return(0,la.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?la.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>la.default.createElement(IAe,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):la.default.createElement("div",{style:{padding:20,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var Wi=X(J());var DAe=Object.fromEntries(Qu.map(e=>[e.lane,e.label])),jAe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:U,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function $Ae(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function LAe({label:e,value:t}){let r=$Ae(t);return r==null?null:Wi.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},Wi.default.createElement(je,{size:10},e),Wi.default.createElement("pre",{style:jAe},r))}function zAe(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 nj({entry:e}){return e?Wi.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},Wi.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Wi.default.createElement(be,{tone:ey(e)?"error":"muted"},DAe[e.lane]),e.role&&Wi.default.createElement(be,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&Wi.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),Wi.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,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&&Wi.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),zAe(e).map(([t,r])=>Wi.default.createElement(LAe,{key:t,label:t,value:r}))):Wi.default.createElement("div",{style:{padding:16,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var go=X(J());var _ee="action-agent-session-player",Cee="/session_player",Aee="allow-scripts allow-same-origin";function Eee(e,t={}){return{...t,channel:_ee,type:e}}function Nee(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===_ee&&typeof e.data.type=="string"}async function FAe(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 WAe="the session player did not start",UAe={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 oj({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,go.useRef)(null),s=(0,go.useRef)(null),[l,u]=(0,go.useState)(!1),[c,d]=(0,go.useState)(!1),[p,f]=(0,go.useState)(null),[m,g]=(0,go.useState)({state:"loading"}),b=xee(e,t),h=b?.id,y=p!==null&&p===s.current,x=b?bee(b,t):null,v=(w,_)=>{i.current?.contentWindow?.postMessage(Eee(w,_),window.location.origin)};(0,go.useEffect)(()=>{let w=_=>{if(!Nee(_,i.current?.contentWindow,window.location.origin))return;let{type:A}=_.data;A==="ready"?d(!0):A==="loaded"?f(_.data.token):A==="error"&&g({state:"error",message:_.data.message})};return window.addEventListener("message",w),()=>window.removeEventListener("message",w)},[]),(0,go.useEffect)(()=>{if(!l||c)return;let w=setTimeout(()=>g({state:"error",message:WAe}),5e3);return()=>clearTimeout(w)},[l,c]),(0,go.useEffect)(()=>{if(!c||h==null)return;let w=!1,_=[],A=`${h}:${Date.now()}`;return s.current=A,f(null),g({state:"loading"}),See(h,{fetchPage:FAe,isCancelled:()=>w,onEvents:C=>{if(_===null){v("append",{events:C});return}_=_.concat(C),!(_.length<2)&&(v("load",{events:_,token:A}),_=null)}}).then(({truncated:C})=>{w||g(_!==null?{state:"empty"}:{state:C?"truncated":"ready"})}).catch(C=>{w||g({state:"error",message:C.message})}),()=>{w=!0}},[c,h]);let k=x?.phase;(0,go.useEffect)(()=>{!y||!x||v("seek",{offset:x.offsetMs,playing:n&&k==="during"})},[y,a,n,k]),(0,go.useEffect)(()=>{y&&v("speed",{speed:o})},[y,o]);let S=m.state==="error"?m.message:k==="before"?`the browser recording starts at ${Rh(b.startMs-r)}`:UAe[m.state];return go.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},go.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},go.default.createElement(je,null,"browser"),b&&go.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},b.name||`recording ${b.id}`,e.length>1?` \xB7 ${e.indexOf(b)+1} of ${e.length}`:""),S&&go.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},S)),go.default.createElement("iframe",{ref:i,title:"Browser recording",src:rt(Cee),sandbox:Aee,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:k==="before"?.4:1}}))}var Wa=X(J());function aj(e){let[t,r]=(0,Wa.useState)(0),[n,o]=(0,Wa.useState)(!1),[a,i]=(0,Wa.useState)(1),[s,l]=(0,Wa.useState)(0),u=(0,Wa.useRef)(0),c=(0,Wa.useRef)(0),d=(0,Wa.useCallback)((g,b)=>{let h=Math.min(Math.max(g,0),e.totalMs),y=yee(e,h);return u.current=h,r(h),(b||y!==c.current)&&l(x=>x+1),c.current=y,h},[e]);(0,Wa.useEffect)(()=>{if(!n)return;let g=null,b=performance.now(),h=y=>{let x=d(u.current+(y-b)*a,!1);if(b=y,x>=e.totalMs){o(!1);return}g=requestAnimationFrame(h)};return g=requestAnimationFrame(h),()=>cancelAnimationFrame(g)},[n,a,e,d]);let p=(0,Wa.useCallback)(g=>d(g,!0),[d]),f=(0,Wa.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,Wa.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var HAe=[.5,1,2,4,8,16],qAe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function KAe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function VAe(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function GAe({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ht.useMemo)(()=>dee(r.lanes),[r]),i=(0,ht.useMemo)(()=>pee(r.recordings),[r]),s=(0,ht.useMemo)(()=>mee(fee(a,i)),[a,i]),l=aj(s),{seek:u,pause:c}=l,[d,p]=(0,ht.useState)(()=>new Set(R3)),[f,m]=(0,ht.useState)(null),g=hee(s,l.position)??s.startMs,b=(0,ht.useMemo)(()=>a.filter(O=>d.has(O.lane)),[a,d]),h=a[ej(a,g)]||null,y=b[ej(b,g)]?.id??null,x=a.find(O=>O.id===f)||h,v=(0,ht.useMemo)(()=>VAe(a),[a]),k=(0,ht.useCallback)(O=>{c(),m(O.id),u(Td(s,O.startMs))},[s,c,u]),S=O=>{let D=vee(b,g,O);D!==null&&(c(),m(null),u(Td(s,D)))},w=()=>{m(null),l.togglePlay()},_=O=>p(D=>{let H=new Set(D);return H.has(O)?H.delete(O):H.add(O),H}),A=r.session||{},C=a.length===0&&i.length===0;return ht.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1400}},ht.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},ht.default.createElement("div",{style:{minWidth:0}},ht.default.createElement(ie,{variant:"ghost",size:"sm",onClick:n,style:{padding:"2px 0",marginBottom:6}},"<- Sessions"),ht.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},qAe[e]||"Session"," #",t),ht.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},A.started_at&&ht.default.createElement("span",{title:A.started_at},"started ",new Date(A.started_at).toLocaleString()),s.startMs!==null&&ht.default.createElement("span",null,TA(s.endMs-s.startMs)," long"),ht.default.createElement("span",null,v.message||0," messages \xB7 ",v.llm||0," model calls \xB7 ",v.tool||0," tool calls"),i.length>0&&ht.default.createElement("span",null,"browser recorded"))),ht.default.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},A.truncated&&ht.default.createElement(be,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?ht.default.createElement(Le,{testId:"replay-empty"},ht.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"Nothing to replay yet."),ht.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.")):ht.default.createElement(ht.default.Fragment,null,ht.default.createElement(Le,{padding:14,style:{display:"flex",flexDirection:"column",gap:12}},ht.default.createElement("div",{"data-testid":"replay-controls",style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ht.default.createElement(ie,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>S(-1)},"|<"),ht.default.createElement(ie,{size:"sm",variant:"primary",testId:"replay-play",onClick:w,style:{minWidth:72}},l.playing?"Pause":"Play"),ht.default.createElement(ie,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>S(1)},">|"),ht.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:U,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},HAe.map(O=>ht.default.createElement("option",{key:O,value:O},O,"x"))),ht.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:U,fontSize:12,color:"var(--color-text-primary)"}},Rh(g-s.startMs)),ht.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},title:"Idle stretches longer than 10 seconds play as one second"},Number.isFinite(g)?new Date(g).toLocaleTimeString():"")),ht.default.createElement(rj,{axis:s,entries:a,recordings:i,position:l.position,onSeek:u})),ht.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 3fr) minmax(0, 2fr)",gap:16,alignItems:"start"}},ht.default.createElement(Le,{padding:0,style:{overflow:"hidden"}},ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ht.default.createElement(je,{style:{marginRight:6}},"timeline"),Qu.map(O=>ht.default.createElement(In,{key:O.lane,mono:!0,selected:d.has(O.lane),onClick:()=>_(O.lane)},O.label," ",v[O.lane]||0))),ht.default.createElement(kee,{entries:b,startMs:s.startMs,currentId:y,selectedId:f,playing:l.playing,onChoose:k})),ht.default.createElement(Le,{padding:0},ht.default.createElement(nj,{entry:x}))),i.length>0&&ht.default.createElement(Le,{padding:14},ht.default.createElement(oj,{recordings:i,time:g,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function ij({kind:e,id:t,onBack:r,onHandoff:n}){let[o,a]=(0,ht.useState)({status:"loading"}),[i,s]=(0,ht.useState)(!1);(0,ht.useEffect)(()=>{let c=!1;return a({status:"loading"}),fetch(KAe(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 ht.default.createElement(GAe,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ht.default.createElement(ie,{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 ht.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:12,maxWidth:1400}},ht.default.createElement(ie,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ht.default.createElement(Le,{testId:`replay-${o.status}`},ht.default.createElement("div",{style:{fontSize:13,color:o.status==="loading"?"var(--color-text-muted)":"var(--color-text-primary)"}},u)))}var mt=X(J());function Tee(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var lj=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],uj=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],Cb=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),Pee={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},sj=/^(\d{4})-(\d{2})-(\d{2})$/,YAe={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>lj.some(t=>t.value&&t.value===e),outcome:e=>uj.some(t=>t.value&&t.value===e),from:e=>sj.test(e),to:e=>sj.test(e)};function OA(e={}){let t={...Cb};for(let r of Object.keys(Cb)){let n=String(e[r]??"");n&&YAe[r](n)&&(t[r]=n)}return t}function cj(e={}){return Object.values(OA(e)).some(Boolean)}function Mee(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(Pee))r[n]=t.get(o)||"";return OA(r)}function Iee(e={}){let t=new URLSearchParams,r=OA(e);for(let[o,a]of Object.entries(Pee))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function Oee(e,t=0){let[,r,n,o]=e.match(sj);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var Dee=Object.freeze({openedFromSessions:!0});function jee(e){return e?.openedFromSessions===!0}function $ee(e={},{before:t=null,perPage:r=25}={}){let n=OA(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",Oee(n.from)),n.to&&o.set("to",Oee(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var Lee={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},XAe={failed:"error",passed:"success"},ty={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 zee(e,t){let r=await fetch($ee(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 ZAe(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 JAe({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return mt.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},mt.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:ty},mt.default.createElement("option",{value:""},"Every agent"),r.map(a=>mt.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&&mt.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:ty},mt.default.createElement("option",{value:""},"Run by anyone"),mt.default.createElement("option",{value:"me"},"Run by me")),mt.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:ty},lj.map(a=>mt.default.createElement("option",{key:a.value,value:a.value},a.label))),mt.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:ty},uj.map(a=>mt.default.createElement("option",{key:a.value,value:a.value},a.label))),mt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",mt.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:ty})),mt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",mt.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:ty})),cj(e)&&mt.default.createElement(ie,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(Cb)},"Clear filters"))}function QAe({session:e}){let t=_h(e.kind,e.id),r=Lee[e.source]||Lee.agent,n=ZAe(e);return mt.default.createElement("a",{href:rt(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),st(t,Dee))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},mt.default.createElement(be,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),mt.default.createElement("div",{style:{minWidth:0,flex:1}},mt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},mt.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&&mt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&&mt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&&mt.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&mt.default.createElement(be,{tone:XAe[e.outcome]||"muted"},e.outcome),mt.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},_o(e.last_activity_at)),mt.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function dj({agents:e=[],user:t=null}){let[r,n]=(0,mt.useState)(()=>Mee(window.location.search)),[o,a]=(0,mt.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,mt.useState)("loading"),[l,u]=(0,mt.useState)(null),[c,d]=(0,mt.useState)(!1),[p,f]=(0,mt.useState)(null),[m,g]=(0,mt.useState)(0),[b]=(0,mt.useState)(Tee);(0,mt.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${Iee(r)}`);let x=b.next();return s("loading"),d(!1),f(null),zee(r,null).then(v=>{x()&&(a({sessions:v.sessions||[],total:v.total||0,nextBefore:v.next_before||null}),s("ready"))}).catch(v=>{x()&&(u(v.message),s("error"))}),()=>{b.next()}},[r,m]);let h=async()=>{let x=b.latest();d(!0),f(null);try{let v=await zee(r,o.nextBefore);if(!x())return;a(k=>({sessions:[...k.sessions,...v.sessions||[]],total:v.total??k.total,nextBefore:v.next_before||null}))}catch(v){x()&&f(v.message)}finally{x()&&d(!1)}},y=cj(r);return mt.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},mt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},mt.default.createElement("div",null,mt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),mt.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"&&mt.default.createElement(je,null,o.total," session",o.total===1?"":"s")),mt.default.createElement(JAe,{filters:r,onChange:n,agents:e,user:t}),mt.default.createElement(Le,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&mt.default.createElement(tn,null,"loading sessions\u2026"),i==="error"&&mt.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,mt.default.createElement(ie,{size:"sm",onClick:()=>g(x=>x+1)},"Retry")),i==="ready"&&o.sessions.length===0&&mt.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},y?mt.default.createElement(mt.default.Fragment,null,mt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),mt.default.createElement(ie,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(Cb)},"Clear filters")):mt.default.createElement(mt.default.Fragment,null,mt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),mt.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(x=>mt.default.createElement(QAe,{key:`${x.kind}-${x.id}`,session:x}))),i==="ready"&&o.nextBefore&&mt.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},p&&mt.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},p),mt.default.createElement(ie,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":p?"Try again":"Load more")))}var Pe=X(J());var Kt=X(J());var RAe={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function Bee(e){return RAe[e]||null}function PA(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function Fee({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 eEe="Setting your own host needs permission to manage the organization's keys.";function Wee({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?eEe:null}}var Hee={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"}},tEe=(e,t)=>!t||t.input==null||t.output==null?e:`${e} ($${t.input} / $${t.output} per 1M)`;function MA({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,Kt.useState)(null),[a,i]=(0,Kt.useState)(""),[s,l]=(0,Kt.useState)(""),[u,c]=(0,Kt.useState)(!1),[d,p]=(0,Kt.useState)({}),[f,m]=(0,Kt.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:f,saveProviderKey:async(y,{hostBased:x=!1,clearApiKey:v=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let k={provider:y,credential:a.trim()};r&&(k.scope=r),x&&(s.trim()||v)&&(k.api_key=v?"":s.trim());let S=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(k)});if(!S.ok){let w=await S.json().catch(()=>({}));throw new Error(Array.isArray(w.error)?w.error.join(", "):"save failed")}o(null),i(""),l(""),p(w=>({...w,[y]:null})),KT(),await e()}catch(k){t(`Could not save the ${Hee[y]?.label||y} credential${k.message!=="save failed"?`: ${k.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(y,{editing:x=!1}={})=>{if(!f){m(y),t(null);try{let v={provider:y};r&&(v.scope=r),x&&(a.trim()&&(v.credential=a.trim()),s.trim()&&(v.api_key=s.trim()));let k=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)}),S=await k.json().catch(()=>({}));if(!k.ok)throw new Error(S.error||"test failed");p(w=>({...w,[y]:S}))}catch(v){p(k=>({...k,[y]:{ok:!1,models:[],error:v.message}}))}finally{m(null)}}},removeProviderKey:async y=>{if(await $r(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(PA(`/api/provider_keys/${y}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(k=>({...k,[y]:null})),KT(),await e()}catch{t("Could not remove the provider credential.")}}}}var Uee={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 Ab({providerKeys:e,editor:t,scope:r,editable:n=!0}){let{darkMode:o}=ut(),{editingProvider:a,setEditingProvider:i,providerInput:s,setProviderInput:l,providerApiKeyInput:u,setProviderApiKeyInput:c,savingProvider:d,testResults:p,testingProvider:f,saveProviderKey:m,testProviderHost:g,removeProviderKey:b}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},y=Uee[r]||Uee.default;return Kt.default.createElement("div",{className:"border rounded-lg p-6",style:h},Kt.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},y.title),Kt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},y.description),!n&&Kt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),Kt.default.createElement("div",{className:"space-y-4"},e.filter(({kind:x})=>x!=="connection").map(x=>{let{provider:v,host_based:k,configured:S,hint:w,api_key_configured:_,api_key_hint:A,platform_default:C}=x,O=Hee[v]||{label:v,icon:"\u{1F511}",placeholder:""},D=a===v,H=p[v],$=f===v,Z=k&&(D?s.trim():S||C),N=S?k?`${w}${_?` \xB7 key ${A}`:""}`:`Configured (${w})`:k&&C?`Platform default: ${C}`:"Not configured",P=r==="personal"?Bee(x.effective_source):null,{canChange:M,canRemove:I,note:j}=Wee({editable:n,scope:r,row:x}),T=r==="organization"&&S?Fee(x):null;return Kt.default.createElement("div",{key:v,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Kt.default.createElement("div",{className:"flex items-center justify-between"},Kt.default.createElement("div",{className:"flex items-center space-x-3"},Kt.default.createElement("span",{className:"text-xl"},O.icon),Kt.default.createElement("div",null,Kt.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},O.label),Kt.default.createElement("p",{className:`text-sm ${S?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),T&&Kt.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},T)),P&&Kt.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"},P)),(M||I)&&Kt.default.createElement("div",{className:"flex items-center space-x-2"},M&&k&&!D&&Z&&Kt.default.createElement("button",{onClick:()=>g(v),disabled:$,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"}`},$?"Testing\u2026":"Test connection"),I&&!D&&Kt.default.createElement("button",{onClick:()=>b(v),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"),M&&Kt.default.createElement("button",{onClick:()=>{i(D?null:v),l(!D&&k&&S?w:""),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"}`},D?"Cancel":S?"Update":"Configure"))),j&&Kt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},j),D&&Kt.default.createElement("div",{className:"mt-3 space-y-2"},Kt.default.createElement("div",{className:"flex items-center space-x-2"},Kt.default.createElement("input",{type:k?"text":"password","data-aa-secret":k?void 0:"",value:s,onChange:q=>l(q.target.value),onKeyDown:q=>q.key==="Enter"&&m(v,{hostBased:k}),placeholder:k?O.placeholder:`${O.label} API key (${O.placeholder})`,"aria-label":k?`${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"}`}),k&&Kt.default.createElement("button",{onClick:()=>g(v,{editing:!0}),disabled:!s.trim()||$,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"}`},$?"Testing\u2026":"Test"),Kt.default.createElement("button",{onClick:()=>m(v,{hostBased:k}),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")),k&&Kt.default.createElement("div",{className:"flex items-center space-x-2"},Kt.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:q=>c(q.target.value),onKeyDown:q=>q.key==="Enter"&&m(v,{hostBased:k}),placeholder:_?`API key (stored: ${A} \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"}`}),_&&Kt.default.createElement("button",{onClick:()=>m(v,{hostBased:k,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"))),k&&D&&Kt.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."),k&&H&&Kt.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:H.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:H.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},H.ok?Kt.default.createElement(Kt.default.Fragment,null,Kt.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",H.host,H.cloud?" (Ollama Cloud)":"",typeof H.latency_ms=="number"?` in ${H.latency_ms} ms`:""," \xB7 ",H.models.length===0?H.cloud?"no models listed":"no models pulled yet (run `ollama pull ` on the server)":`${H.models.length} model${H.models.length===1?"":"s"}`,H.models.length>0&&Kt.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},H.models.map(q=>tEe(q,H.rates?.[q])).join(" \xB7 ")),H.rates&&Object.keys(H.rates).length>0&&Kt.default.createElement("span",{className:"block mt-1"},"Rates are Ollama Cloud's list price per million input / output tokens; traces and evaluations on these models are priced at them.")):Kt.default.createElement(Kt.default.Fragment,null,Kt.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",H.error)))})))}async function qee(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 IA=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function pj({account:e,user:t,subscription:r,agentCount:n=0}){let{darkMode:o}=ut(),[a,i]=(0,Pe.useState)(null),[s,l]=(0,Pe.useState)(!1),[u,c]=(0,Pe.useState)(!1),[d,p]=(0,Pe.useState)({status:"idle",value:null,error:null}),[f,m]=(0,Pe.useState)(!1),[g,b]=(0,Pe.useState)(null),[h,y]=(0,Pe.useState)(null),[x,v]=(0,Pe.useState)([]),[k,S]=(0,Pe.useState)(!1),[w,_]=(0,Pe.useState)(null),A=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Pe.useEffect)(()=>{fetch("/api/usage").then(T=>T.ok?T.json():null).then(T=>i(T?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(T=>T.ok?T.json():null).then(T=>y(T?.members||[])).catch(()=>y([]))},[]);let C=(0,Pe.useCallback)(async()=>{try{let T=await fetch("/api/provider_keys?scope=organization");if(!T.ok)throw new Error("load failed");let q=await T.json();v(q.provider_keys||[]),S(!!q.can_manage_organization_keys),_(null)}catch{_("Could not load the organization's provider keys.")}},[]);(0,Pe.useEffect)(()=>{C()},[C]);let O=MA({onKeysChanged:C,onError:_,scope:"organization"}),D=async()=>{m(!0),b(null);try{await Vh({planSlug:"pro"})}catch(T){b(T.message),m(!1)}},H=async()=>{if(d.status==="ready")return d.value;p({status:"loading",value:null,error:null});try{let T=await qee();return p({status:"ready",value:T,error:null}),T}catch(T){return p({status:"error",value:null,error:T.message}),null}},$=async()=>{u?c(!1):await H()&&c(!0)},Z=async()=>{let T=await H();if(T)try{await navigator.clipboard.writeText(T),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,P={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},M=r?.plan_name||"Free",I={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"}},j=I[M.toLowerCase()]||I.free;return Pe.default.createElement("div",{className:"p-6 space-y-6"},Pe.default.createElement("div",null,Pe.default.createElement("h2",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},"Organization"),Pe.default.createElement("p",{className:`mt-1 ${o?"text-gray-400":"text-gray-500"}`},"Manage your workspace, team, and billing")),Pe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6"},Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Workspace"),Pe.default.createElement("div",{className:"space-y-3"},Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Name"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.name||"My Workspace")),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Owner"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},t?.email||"you@example.com")),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Created"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.created_at?new Date(e.created_at).toLocaleDateString():"Today")))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Pe.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Current Plan"),Pe.default.createElement("span",{className:"px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm font-medium"},M)),Pe.default.createElement("div",{className:"space-y-3"},Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Team Seats"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.seats)),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Workspaces"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.workspaces)),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Agents"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.agents)),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Traces"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.traces))),M.toLowerCase()!=="enterprise"&&Pe.default.createElement(Pe.default.Fragment,null,Pe.default.createElement("button",{onClick:D,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"),g&&Pe.default.createElement("p",{className:"mt-2 text-sm text-red-500 text-center"},g)))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Pe.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Team Members"),A&&Pe.default.createElement("a",{href:A,className:"px-4 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors"},"+ Invite Member")),Pe.default.createElement("div",{className:"overflow-hidden"},Pe.default.createElement("table",{className:"min-w-full"},Pe.default.createElement("thead",null,Pe.default.createElement("tr",{className:o?"border-b border-gray-700":"border-b border-gray-200"},Pe.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Member"),Pe.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Role"))),Pe.default.createElement("tbody",null,(h||[]).map(T=>Pe.default.createElement("tr",{key:T.id??T.email},Pe.default.createElement("td",{className:"py-3 px-4"},Pe.default.createElement("div",{className:"flex items-center space-x-3"},Pe.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},Pe.default.createElement("span",{className:"text-red-600 font-medium text-sm"},(T.name||T.email||"?").charAt(0).toUpperCase())),Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},T.name||T.email,T.id!=null&&T.id===t?.id&&Pe.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),T.name&&T.email&&Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},T.email)))),Pe.default.createElement("td",{className:"py-3 px-4"},T.role?Pe.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(T.role).charAt(0).toUpperCase()+String(T.role).slice(1)):Pe.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Pe.default.createElement("div",{className:"space-y-2"},w&&Pe.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},w),Pe.default.createElement(Ab,{providerKeys:x,editor:O,scope:"organization",editable:k})),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Usage This Month"),Pe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4"},Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},n),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Agents")),Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},IA(a?.traces_used),a?.traces_limit>0&&Pe.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",IA(a.traces_limit))),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Traces")),Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},IA(a?.runs_used)),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Executions")),Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},IA(a?.tokens_used)),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Tokens")))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${o?"text-white":"text-gray-900"}`},"Telemetry"),Pe.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"," ",Pe.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"),", under each environment that should report:"),Pe.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"}`},xw(bw())),Pe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Pe.default.createElement("div",{className:"min-w-0 flex-1"},Pe.default.createElement("p",{className:`text-xs uppercase tracking-wide mb-1 ${o?"text-gray-500":"text-gray-400"}`},"API Key"),Pe.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))),Pe.default.createElement("div",{className:"flex gap-2 flex-shrink-0 self-end"},Pe.default.createElement("button",{onClick:$,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"),Pe.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&&Pe.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Me=X(J());var Ge=X(J());var rEe=/^[A-Za-z_][A-Za-z0-9_]*$/,nEe=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,oEe={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},aEe=["sk_live_","rk_live_"],Kee=8,Vee=2e3;function DA(e){return e?rEe.test(e)?nEe.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 jA(e,t){let r=[],n=typeof t=="string"?t:"";return aEe.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||oEe[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function Gee(e,t){return[...e,...Eb([{name:t}])]}function Yee({name:e,edited:t,fullName:r}){return t?e:r}function Nb(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 ry(e){for(let t of e){let r=DA(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 Xee({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 fj(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function iEe(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function Zee({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=iEe(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 $A={supported:"success",bootstrap:"info",unsupported:"error"};function Jee(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 Qee(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 Ree={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function ete(e){return e?.sandbox_state==="booting"}function Of(e){return e==null?"/projects/new":`/projects/${e}`}function Tb(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var tte=["overview","explorations","environment","browser","sessions"];function rte(e=""){let t=new URLSearchParams(e).get("tab");return tte.includes(t)?t:"overview"}function nte(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!tte.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function LA(e){if(!e?.project?.id)return null;let t=Of(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function ote(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 Bn=X(J());function Pf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=ut(),[a,i]=(0,Bn.useState)(e.browser||null),[s,l]=(0,Bn.useState)(!1),[u,c]=(0,Bn.useState)(null),[d,p]=(0,Bn.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,Bn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(_,A,C)=>{c(_),p(null);try{let O=await fetch(f,A),D=await O.json().catch(()=>({}));if(D.browser&&(i(D.browser),n?.(D.browser)),!O.ok)throw new Error(D.message||ot(D,`${C} (HTTP ${O.status}).`))}catch(O){p(O.message)}finally{c(null)}},g=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(XZ({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",y=o?"text-white":"text-gray-900",x=o?"border-gray-700":"border-gray-200",v=`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"}`,k=GZ(a),S=YZ(a),w=a?.status==="running";return Bn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${x}`},Bn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Bn.default.createElement("div",{className:"flex items-center gap-2"},Bn.default.createElement("p",{className:`text-sm font-medium ${y}`},"Browser"),k&&Bn.default.createElement(Js,{tone:k.tone},k.label)),S?Bn.default.createElement("button",{type:"button",onClick:b,disabled:u!==null,className:v},u==="stop"?"Stopping\u2026":"Stop browser"):Bn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&Bn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},Bn.default.createElement("input",{type:"checkbox",checked:s,onChange:_=>l(_.target.checked),disabled:u!==null}),"Open a window on this machine"),Bn.default.createElement("button",{type:"button",onClick:g,disabled:u!==null,className:v},u==="start"?"Starting\u2026":"Start browser"))),d&&Bn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!S&&!d&&Bn.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."),w&&a.server_key&&Bn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",Bn.default.createElement("code",{className:"font-mono"},a.server_key),"."),w&&a.live_url&&Bn.default.createElement(F0,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),w&&!a.live_url&&Bn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var sr=X(J());var fn=X(J());function ate(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function zA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var ite={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 Mf({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}=ut(),[g,b]=(0,fn.useState)(""),[h,y]=(0,fn.useState)(!1),x=m?"text-gray-400":"text-gray-500",v=m?"text-white":"text-gray-900",k={backgroundColor:m?"#252525":"#f9fafb"},S=`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"}`,w=ate(e,n);(0,fn.useEffect)(()=>{if(!h||!d)return;let C=()=>{y(!1),d()};return window.addEventListener("focus",C),()=>window.removeEventListener("focus",C)},[h,d]);let _=c?fn.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>y(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,A=p?fn.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),fj(g)&&p(g)}},fn.default.createElement("input",{type:"text",value:g,onChange:C=>b(C.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:S,"data-testid":"repo-picker-typed-name"}),fn.default.createElement("button",{type:"submit",disabled:!fj(g),className:`px-3 py-2 border rounded-lg text-sm ${v}`},"Look up")):null;if(l!=="ready"){let C=["not_connected","reconnect_required"].includes(l)&&u;return fn.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},fn.default.createElement("p",{className:`text-sm ${x}`},ite[l]||ite.loading),C&&fn.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&fn.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${v}`},"Check again"),l==="empty"&&_,l==="empty"&&A,f&&fn.default.createElement("p",{className:"text-sm text-red-500"},f))}return fn.default.createElement("div",{className:"space-y-2"},fn.default.createElement("input",{type:"text",value:n,onChange:C=>o(C.target.value),placeholder:"Filter repositories",className:S}),fn.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},w.map(C=>fn.default.createElement("label",{key:C.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:k},a==="single"?fn.default.createElement("input",{type:"radio",name:"repository",checked:i===C.full_name,onChange:()=>s(C.full_name)}):fn.default.createElement("input",{type:"checkbox",checked:t.has(C.full_name),onChange:()=>r(C.full_name)}),fn.default.createElement("span",{className:`text-sm font-mono ${v}`},C.full_name),C.private&&fn.default.createElement("span",{className:`text-xs ${x}`},"private"))),w.length===0&&fn.default.createElement("p",{className:`text-sm ${x}`},"No repositories match.")),(_||A)&&fn.default.createElement("div",{className:"space-y-2"},_,A,f&&fn.default.createElement("p",{className:"text-sm text-red-500"},f)))}var ste={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."},members_permission:{tone:"error",text:"GitHub would not show your role in the organization, so the installation was not linked. Give the GitHub App the organization permission Members (read), accept the new permission on the installation, and link it again. If the organization uses SAML single sign-on, authorize the App for it too."},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 lte(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function BA(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 ute(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>BA(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 cte(e,t){let r=new Map;return(t||[]).forEach(n=>{BA(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 dte(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function pte(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function fte(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 mj({app:e,onChanged:t,onError:r,onNotice:n}){let{darkMode:o}=ut(),[a,i]=(0,sr.useState)(null),[s,l]=(0,sr.useState)(null),[u,c]=(0,sr.useState)(new Set),[d,p]=(0,sr.useState)(""),[f,m]=(0,sr.useState)(!1),[g,b]=(0,sr.useState)(null),[h,y]=(0,sr.useState)(""),[x,v]=(0,sr.useState)(!1);if(!e||!e.configured&&!e.manifest_available)return null;let k=o?"text-gray-400":"text-gray-500",S=o?"text-white":"text-gray-900",w={backgroundColor:o?"#252525":"#f9fafb"},_=`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"}`,A=`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"},O=async M=>{r(null);try{let I=await fetch(`/api/github_installations/${M.id}/repositories`),j=await I.json().catch(()=>({}));if(!I.ok)throw j.reinstall_required&&t(),new Error(j.error||"Could not list the installation's repositories.");l(j.repositories||[]),c(new Set((M.repositories||[]).map(T=>T.full_name))),p(""),i(M.id)}catch(I){r(I.message)}},D=async M=>{b(M.id),r(null);try{let I=await fetch(`/api/github_installations/${M.id}/repositories`),j=await I.json().catch(()=>({}));if(!I.ok)throw new Error(j.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${M.account_login} is active again.`})}catch(I){r(I.message)}finally{b(null),t()}},H=()=>{i(null),l(null)},$=async()=>{m(!0),r(null);try{let M=await fetch(`/api/github_installations/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...u]})}),I=await M.json().catch(()=>({}));if(!M.ok)throw new Error(I.error||"Could not save the selection.");H(),n({tone:"success",text:"Repository selection saved."}),t()}catch(M){r(M.message)}finally{m(!1)}},Z=async M=>{if(await $r({title:`Unlink @${M.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 I=await fetch(`/api/github_installations/${M.id}`,{method:"DELETE"});if(!I.ok&&I.status!==404)throw new Error("Could not unlink the installation.");a===M.id&&H(),t()}catch(I){r(I.message)}}},N=async()=>{let M=h.trim();if(M&&!pte(M)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}v(!0),r(null);try{let I=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M?{organization:M}:{})}),j=await I.json().catch(()=>({}));if(!I.ok)throw new Error(j.error||"Could not start creating the GitHub App.");fte(document,j.url,j.manifest)}catch(I){r(I.message),v(!1)}};if(!e.configured)return sr.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:w},sr.default.createElement("p",{className:`text-sm font-medium ${S}`},"Use a GitHub App"),sr.default.createElement("p",{className:`text-xs ${k}`},"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."),sr.default.createElement("div",{className:"flex items-center gap-2"},sr.default.createElement("input",{type:"text",value:h,onChange:M=>y(M.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"}`}),sr.default.createElement("button",{type:"button",onClick:N,disabled:x,className:`${_} disabled:opacity-50`},x?"Opening GitHub\u2026":"Create GitHub App")));let P=e.installations||[];return sr.default.createElement("div",{className:"space-y-3"},sr.default.createElement("div",{className:"flex items-center justify-between"},sr.default.createElement("div",null,sr.default.createElement("p",{className:`text-sm font-medium ${S}`},"GitHub App"),sr.default.createElement("p",{className:`text-xs ${k}`},"Each checkout gets a one-hour token limited to its repository. When a repository is reachable both ways, the App is used.")),sr.default.createElement("a",{href:rt("/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")),P.length===0&&sr.default.createElement("p",{className:`text-sm ${k}`},"No installation is linked yet. Install the App on the repositories this workspace should use."),P.map(M=>{let I=BA(M),j=M.repositories||[];return sr.default.createElement("div",{key:M.id,className:"p-3 rounded-lg space-y-2",style:w},sr.default.createElement("div",{className:"flex items-center justify-between gap-3"},sr.default.createElement("div",{className:"min-w-0"},sr.default.createElement("p",{className:`text-sm font-mono ${S}`},lte(M)),sr.default.createElement("p",{className:`text-xs ${I?C[I.tone]:k}`},I?I.label:`${j.length} selected for sandboxes`)),sr.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===M.id?sr.default.createElement(sr.default.Fragment,null,sr.default.createElement("button",{type:"button",onClick:H,className:_},"Cancel"),sr.default.createElement("button",{type:"button",onClick:$,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})`)):sr.default.createElement(sr.default.Fragment,null,I?sr.default.createElement("button",{type:"button",onClick:()=>D(M),disabled:g===M.id,className:`${_} disabled:opacity-50`},g===M.id?"Checking\u2026":"Check again"):sr.default.createElement("button",{type:"button",onClick:()=>O(M),className:_},"Choose repositories"),M.settings_url&&sr.default.createElement("a",{href:M.settings_url,target:"_blank",rel:"noreferrer",className:_},"Access on GitHub"),sr.default.createElement("button",{type:"button",onClick:()=>Z(M),className:A},"Unlink")))),a===M.id&&s&&sr.default.createElement(Mf,{repositories:s,selection:u,onToggle:T=>c(q=>zA(q,T)),filter:d,onFilterChange:p}))}))}var lEe={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 gj({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=ut(),[o,a]=(0,Ge.useState)(null),[i,s]=(0,Ge.useState)(null),[l,u]=(0,Ge.useState)(new Set),[c,d]=(0,Ge.useState)(""),[p,f]=(0,Ge.useState)(!1),[m,g]=(0,Ge.useState)(null),[b,h]=(0,Ge.useState)(lEe[e]||ste[t]||null),[y,x]=(0,Ge.useState)([]),[v,k]=(0,Ge.useState)(null),[S,w]=(0,Ge.useState)({}),[_,A]=(0,Ge.useState)(null),[C,O]=(0,Ge.useState)(null),[D,H]=(0,Ge.useState)(0),[$,Z]=(0,Ge.useState)({}),N=(0,Ge.useRef)({}),P=(0,Ge.useCallback)(async()=>{try{let fe=await fetch("/api/github_connection");if(!fe.ok)throw new Error("status failed");let ze=await fe.json();a(ze),u(new Set((ze.connection?.repositories||[]).map(Vt=>Vt.full_name)))}catch{g("Could not load the GitHub connection. Are you signed in?")}},[]);(0,Ge.useEffect)(()=>{P()},[P]);let M=(0,Ge.useCallback)(async()=>{try{let fe=await fetch("/api/sandboxes?sandbox_type=app_runtime"),ze=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(ot(ze,`Could not list your sandboxes (HTTP ${fe.status}).`));x(ze.sandboxes||[]),k({codeSessions:!!ze.code_sessions_supported,claudeCode:{...O2(ze),sandboxes:ze.claude_code_sandboxes||[]},codex:P2(ze),pullRequests:ze.pull_requests_supported===!0,browserModes:Array.isArray(ze.browser_modes)?ze.browser_modes:[]})}catch(fe){g(fe.message)}},[]),I=o!==null,j=!!o?.connected;(0,Ge.useEffect)(()=>{I&&M()},[I,j,M,r]);let T=y.filter(fe=>E2(fe)&&!$[fe.session_id]?.stopped).map(fe=>fe.session_id).join(" ");(0,Ge.useEffect)(()=>{if(!T)return;let fe=!1,ze=setTimeout(async()=>{let Vt=await Promise.all(T.split(" ").map(async Gt=>{try{let Se=await fetch(`/api/sandboxes/${encodeURIComponent(Gt)}`);if(Se.status===404)return{id:Gt,gone:!0};let tt=await Se.json().catch(()=>({}));return Se.ok?{id:Gt,sandbox:tt.sandbox||null}:{id:Gt,status:Se.status,error:ot(tt,`Could not check on this sandbox (HTTP ${Se.status}).`)}}catch{return{id:Gt,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(fe)return;let Ot={};Vt.forEach(({id:Gt,status:Se,error:tt})=>{if(!tt){delete N.current[Gt],Ot[Gt]=null;return}let dt=(N.current[Gt]||0)+1;N.current[Gt]=dt,Ot[Gt]={message:tt,stopped:_2(Se,dt)}}),Z(Gt=>Object.entries(Ot).reduce((Se,[tt,dt])=>{if(dt)return{...Se,[tt]:dt};if(!(tt in Se))return Se;let{[tt]:zt,...Gr}=Se;return Gr},Gt)),x(Gt=>Vt.reduce((Se,tt)=>tt.gone?Se.filter(dt=>dt.session_id!==tt.id):tt.sandbox?qX(Se,tt.sandbox,"session_id"):Se,Gt)),H(Gt=>Gt+1)},2e3);return()=>{fe=!0,clearTimeout(ze)}},[T,D]);let q=fe=>{delete N.current[fe],Z(ze=>{let{[fe]:Vt,...Ot}=ze;return Ot})},G=(fe,ze)=>{w(Vt=>({...Vt,[fe]:ze}))},L=async()=>{g(null);try{let fe=await fetch("/api/github_connection/repositories"),ze=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(ze.error||"Could not list repositories.");s(ze.repositories||[])}catch(fe){g(fe.message)}},Y=fe=>{u(ze=>zA(ze,fe))},K=async()=>{f(!0),g(null);try{let fe=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),ze=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(ze.error||"Could not save the selection.");a(Vt=>({...Vt,connection:ze.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(fe){g(fe.message)}finally{f(!1)}},pe=async()=>{if(await $r({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 P()}catch{g("Could not disconnect GitHub.")}},De=async fe=>{A(fe),G(fe,null);try{let ze=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:fe})}),Vt=await ze.json().catch(()=>({}));if(!ze.ok)throw new Error(ot(Vt,`Could not start the sandbox (HTTP ${ze.status}).`));x(Ot=>vd(Ot,Vt.sandbox,"session_id"))}catch(ze){G(fe,ze.message)}finally{A(null)}},se=async fe=>{if(!(fe.status!=="failed"&&!await $r({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(fe.session_id),G(fe.repository,null);try{let ze=await fetch(`/api/sandboxes/${encodeURIComponent(fe.session_id)}`,{method:"DELETE"}),Vt=await ze.json().catch(()=>({}));if(!ze.ok&&ze.status!==404)throw new Error(ot(Vt,`Could not stop the sandbox (HTTP ${ze.status}).`));x(Ot=>Ot.filter(Gt=>Gt.session_id!==fe.session_id)),q(fe.session_id)}catch(ze){G(fe.repository,ze.message)}finally{O(null)}}},xe=n?"text-gray-400":"text-gray-500",ue=n?"text-white":"text-gray-900",R={backgroundColor:n?"#252525":"#f9fafb"},we=`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"}`,Ce=o?.connection,z=Ce?.repositories||[],ee=o?.app?.configured?o.app.installations||[]:[],ae=cte(Ce,ee),{byRepository:E,others:W}=VX(y,ae.map(fe=>fe.full_name)),F=ee.length>0,B=ute(ee),Ee=n?"text-red-400":"text-red-600",Ve=(fe,{standalone:ze=!1}={})=>{let{label:Vt,tone:Ot}=BX(fe.status),Gt=E2(fe),Se=FX(fe),tt=Se?zX(fe.expires_at):null,dt=Gt?$[fe.session_id]:null;return Ge.default.createElement("div",{key:fe.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},Ge.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ge.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},Ge.default.createElement(Js,{tone:Ot},Vt),Ge.default.createElement("span",{className:`font-mono truncate ${xe}`},ze?fe.repository:"","@",fe.repository_ref),tt&&Ge.default.createElement("span",{className:`shrink-0 ${xe}`},"\xB7 ",tt),LA(fe)&&Ge.default.createElement("a",{href:rt(LA(fe)),onClick:zt=>{zt.preventDefault(),st(LA(fe))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:fe.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",fe.project.name," \u2192")),Ge.default.createElement("button",{onClick:()=>se(fe),disabled:C===fe.session_id,className:`shrink-0 px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},C===fe.session_id?"Stopping\u2026":fe.status==="failed"?"Dismiss":"Stop")),Gt&&!dt?.stopped&&Ge.default.createElement("p",{className:`text-xs ${xe}`},"Checking out the repository and booting its app; this can take a few minutes."),dt&&Ge.default.createElement("p",{className:`text-xs ${Ee}`},dt.message," ",dt.stopped?Ge.default.createElement(Ge.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",Ge.default.createElement("button",{type:"button",onClick:()=>q(fe.session_id),className:"underline"},"Retry")):"Trying again\u2026"),fe.error_message&&Ge.default.createElement("pre",{className:`p-2 rounded text-xs font-mono whitespace-pre-wrap break-words max-h-48 overflow-y-auto border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},fe.error_message),fe.runtime_server_key&&Ge.default.createElement("p",{className:`text-xs ${xe}`},"Enable ",Ge.default.createElement("code",{className:"font-mono"},fe.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),Se&&v?.codeSessions&&Ge.default.createElement(z0,{sandbox:fe,claudeCode:v.claudeCode?.mode==="sandbox_login"?{...v.claudeCode,connected:!!v.claudeCode.sandboxes.find(zt=>zt.session_id===fe.session_id)?.credential_mode}:v.claudeCode,codex:v.codex,onRecheckConnection:M}),Se&&v&&!v.codeSessions&&Ge.default.createElement("p",{className:`text-xs ${xe}`},"The configured sandbox backend cannot run Claude Code sessions."),Se&&v?.pullRequests&&Ge.default.createElement(sb,{sandbox:fe}),Se&&v?.browserModes.length>0&&Ge.default.createElement(Pf,{sandbox:fe,modes:v.browserModes}))};return Ge.default.createElement("div",{className:"space-y-4"},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",{className:"flex items-center space-x-3"},Ge.default.createElement("span",{className:"text-xl"},"\u{1F419}"),Ge.default.createElement("div",null,Ge.default.createElement("p",{className:`font-medium ${ue}`},"GitHub"),Ge.default.createElement("p",{className:`text-sm ${o?.connected||B.active>0?n?"text-green-400":"text-green-600":xe}`},o?[o.connected?`Connected as @${Ce.login}`:null,B.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?Ge.default.createElement("button",{onClick:pe,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?Ge.default.createElement("a",{href:rt("/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&&Ge.default.createElement("p",{className:`text-sm ${xe}`},"The operator has not configured a GitHub OAuth app. Set ",Ge.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",Ge.default.createElement("code",null,"github_client_secret")," (or ",Ge.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",Ge.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",Ge.default.createElement("code",null,rt("/api/github_connection/callback"))," as its callback URL."),b&&Ge.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&&Ge.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),Ge.default.createElement(mj,{app:o?.app,onChanged:P,onError:g,onNotice:h}),o?.connected&&Ge.default.createElement("div",{className:"space-y-3"},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",null,Ge.default.createElement("p",{className:`text-sm font-medium ${ue}`},"OAuth connection"),Ge.default.createElement("p",{className:`text-xs ${xe}`},z.length," selected for sandboxes, cloned with @",Ce.login,"'s token.")),i?Ge.default.createElement("div",{className:"flex items-center space-x-2"},Ge.default.createElement("button",{onClick:()=>{s(null),u(new Set(z.map(fe=>fe.full_name)))},className:we},"Cancel"),Ge.default.createElement("button",{onClick:K,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})`)):Ge.default.createElement("button",{onClick:L,className:we},"Choose repositories")),i&&Ge.default.createElement(Mf,{repositories:i,selection:l,onToggle:Y,filter:c,onFilterChange:d})),(o?.connected||F)&&!i&&Ge.default.createElement("div",{className:"space-y-3"},Ge.default.createElement("p",{className:`text-sm font-medium ${ue}`},"Available repositories"),ae.length===0?Ge.default.createElement("p",{className:`text-sm ${xe}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Ge.default.createElement("div",{className:"space-y-2"},ae.map(fe=>{let ze=E[fe.full_name]||[],Vt=ze.some(E2),Ot=o.app?.configured?` \xB7 via ${dte(fe)}`:"";return Ge.default.createElement("div",{key:fe.full_name,className:"p-3 rounded-lg",style:R},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",null,Ge.default.createElement("p",{className:`text-sm font-mono ${ue}`},fe.full_name),Ge.default.createElement("p",{className:`text-xs ${xe}`},fe.private?"private":"public"," \xB7 ",fe.default_branch,Ot)),Ge.default.createElement("button",{onClick:()=>De(fe.full_name),disabled:_===fe.full_name||Vt,className:`${we} disabled:opacity-50`},_===fe.full_name?"Starting\u2026":Vt?"Booting\u2026":"Start sandbox")),S[fe.full_name]&&Ge.default.createElement("p",{className:`mt-2 text-xs ${Ee}`},S[fe.full_name]),ze.map(Gt=>Ve(Gt)))}))),!i&&W.length>0&&Ge.default.createElement("div",{className:"space-y-2"},Ge.default.createElement("p",{className:`text-sm font-medium ${ue}`},j||F?"Other sandboxes":"Checkout sandboxes"),Ge.default.createElement("p",{className:`text-xs ${xe}`},j||F?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),W.map(fe=>Ge.default.createElement(Ge.default.Fragment,{key:fe.session_id},S[fe.repository]&&Ge.default.createElement("p",{className:`text-xs ${Ee}`},S[fe.repository]),Ve(fe,{standalone:!0})))))}var Dt=X(J());var hj="claude_code";function yj({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Dt.useState)(null),[o,a]=(0,Dt.useState)(null),[i,s]=(0,Dt.useState)(!1),[l,u]=(0,Dt.useState)(""),[c,d]=(0,Dt.useState)(!1),[p,f]=(0,Dt.useState)(null),[m,g]=(0,Dt.useState)([]),[b,h]=(0,Dt.useState)(""),y=(0,Dt.useCallback)(async()=>{try{let[C,O]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!C.ok||!O.ok)throw new Error("load failed");let[D,H]=await Promise.all([C.json(),O.json()]);n((D.provider_keys||[]).find(Z=>Z.provider===hj)||{configured:!1}),a(O2(H));let $=(H.sandboxes||[]).filter(Z=>Z.status==="ready");g($),h(Z=>$.some(N=>N.session_id===Z)?Z:$[0]?.session_id||"")}catch{f("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,Dt.useEffect)(()=>{y()},[y]);let x=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:hj,credential:l.trim()})});if(!C.ok){let O=await C.json().catch(()=>({}));throw new Error(Array.isArray(O.error)?O.error.join(", "):"Could not save the API key.")}s(!1),u(""),await y(),e?.()}catch(C){f(C.message)}finally{d(!1)}}},v=async()=>{if(await $r({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/${hj}`,{method:"DELETE"})).ok)throw new Error("delete failed");await y(),e?.()}catch{f("Could not disconnect Claude Code.")}},k=t?"text-gray-400":"text-gray-500",S=aZ(o,r),w=S.keyForm&&r?.configured,_={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:k}[S.tone],A=`underline ${t?"text-gray-300":"text-gray-700"}`;return Dt.default.createElement("div",{className:"space-y-3"},Dt.default.createElement("div",{className:"flex items-center justify-between"},Dt.default.createElement("div",{className:"flex items-center space-x-3"},Dt.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),Dt.default.createElement("div",null,Dt.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),Dt.default.createElement("p",{className:`text-sm ${_}`},S.status))),S.keyForm&&Dt.default.createElement("div",{className:"flex items-center space-x-2"},w&&!i&&Dt.default.createElement("button",{onClick:v,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},S.view==="sandbox_login"?"Remove API key":"Disconnect"),Dt.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":S.view==="sandbox_login"?w?"Update API key":"Add API key":S.needsReplacing?"Replace":w?"Update":"Connect")),S.view==="local_login"&&Dt.default.createElement("button",{onClick:()=>{f(null),y(),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")),S.view==="local_login"&&Dt.default.createElement("p",{className:`text-xs ${k}`},"Sessions run ",Dt.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",S.loginHint&&Dt.default.createElement(Dt.default.Fragment,null,"Run ",Dt.default.createElement("code",{className:"font-mono"},S.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),S.needsReplacing&&!i&&Dt.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."),S.keyForm&&i&&Dt.default.createElement(Dt.default.Fragment,null,Dt.default.createElement("div",{className:"flex items-center space-x-2"},Dt.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:C=>u(C.target.value),onKeyDown:C=>C.key==="Enter"&&x(),placeholder:rZ,"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"}`}),Dt.default.createElement("button",{onClick:x,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")),Dt.default.createElement("p",{className:`text-xs ${k}`},"Paste an Anthropic API key from the"," ",Dt.default.createElement("a",{href:nZ,target:"_blank",rel:"noreferrer",className:A},"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 (",Dt.default.createElement("a",{href:oZ,target:"_blank",rel:"noreferrer",className:A},"why"),"); to use your own subscription, use the sandbox sign-in below when enabled by this installation.")),S.view==="sandbox_login"&&Dt.default.createElement("div",{className:"space-y-3"},m.length>0?Dt.default.createElement(Dt.default.Fragment,null,Dt.default.createElement("label",{className:`block text-xs ${k}`},"Sandbox",Dt.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=>Dt.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)&&Dt.default.createElement(uf,{key:b,sandbox:m.find(C=>C.session_id===b),onChange:()=>{y(),e?.()}})):Dt.default.createElement("p",{className:`text-sm ${k}`},"Start a checkout sandbox in ",Dt.default.createElement("a",{className:"underline",href:rt("/projects")},"Projects")," to connect your Claude subscription."),Dt.default.createElement("p",{className:`text-xs ${k}`},"Each member uses their own sandbox login. Sessions without a personal login use the account\u2019s Anthropic API key when one is connected.")),p&&Dt.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 Mr=X(J());function vj({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Mr.useState)(null),[o,a]=(0,Mr.useState)(null),[i,s]=(0,Mr.useState)(!1),[l,u]=(0,Mr.useState)(""),[c,d]=(0,Mr.useState)(!1),[p,f]=(0,Mr.useState)(null),m=(0,Mr.useCallback)(async()=>{let[S,w]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!S.ok||!w.ok)throw new Error("Could not load the Codex connection.");let[_,A]=await Promise.all([S.json(),w.json()]);n((_.provider_keys||[]).find(C=>C.provider==="codex")||{configured:!1}),a(P2(A))},[]);(0,Mr.useEffect)(()=>{m().catch(S=>f(S.message))},[m]);let g=async S=>{if(S.preventDefault(),!(c||!l.trim())){d(!0),f(null);try{let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:"codex",credential:l.trim()})}),_=await w.json().catch(()=>({}));if(!w.ok)throw new Error(Array.isArray(_.error)?_.error.join(", "):_.error||"Could not save the API key.");u(""),s(!1),await m(),e?.()}catch(w){f(w.message)}finally{d(!1)}}},b=async()=>{if(await $r({title:"Disconnect Codex?",message:"New Codex sessions will need an API key connected again.",confirmLabel:"Disconnect",danger:!0})){d(!0),f(null);try{if(!(await fetch("/api/provider_keys/codex",{method:"DELETE"})).ok)throw new Error("Could not disconnect Codex.");await m(),e?.()}catch(S){f(S.message)}finally{d(!1)}}},h=async()=>{f(null);try{await m(),e?.()}catch(S){f(S.message)}},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"}`,v=lZ(o,r),k={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:y}[v.tone];return Mr.default.createElement("div",{className:"space-y-3"},Mr.default.createElement("div",{className:"flex items-center justify-between gap-3"},Mr.default.createElement("div",null,Mr.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),Mr.default.createElement("p",{className:`text-sm ${k}`},v.status)),Mr.default.createElement("div",{className:"flex gap-2"},v.keyForm&&r?.configured&&!i&&Mr.default.createElement("button",{className:x,disabled:c,onClick:b},"Disconnect"),v.keyForm&&Mr.default.createElement("button",{className:x,disabled:c,onClick:()=>{s(!i),u(""),f(null)}},i?"Cancel":r?.configured?"Update":"Connect"),v.view==="local_login"&&Mr.default.createElement("button",{className:x,disabled:c,onClick:h},"Check again"))),v.view==="local_login"?Mr.default.createElement("p",{className:`text-xs ${y}`},"Sessions run ",Mr.default.createElement("code",{className:"font-mono"},"codex")," on this machine with its own login (a ChatGPT plan, or a key the CLI holds), which the dashboard never reads or stores."," ",v.loginHint&&Mr.default.createElement(Mr.default.Fragment,null,"Run ",Mr.default.createElement("code",{className:"font-mono"},v.loginHint)," on this machine, as the user the dashboard runs as, then check again.")):Mr.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."),v.keyForm&&i&&Mr.default.createElement("form",{onSubmit:g,className:"flex flex-wrap gap-2"},Mr.default.createElement("label",{className:`flex-1 text-sm ${y}`},"OpenAI API key for Codex",Mr.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:l,onChange:S=>u(S.target.value),placeholder:"sk-\u2026",disabled:c,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"}`})),Mr.default.createElement("button",{type:"submit",className:`${x} self-end`,disabled:c||!l.trim()},c?"Saving\u2026":"Save API key")),p&&Mr.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},p))}var mte=X(J());var Nn=X(J());function xj({provider:e,title:t,description:r,credentialLabel:n,placeholder:o,onChange:a}){let{darkMode:i}=ut(),[s,l]=(0,Nn.useState)(null),[u,c]=(0,Nn.useState)(!1),[d,p]=(0,Nn.useState)(""),[f,m]=(0,Nn.useState)(!1),[g,b]=(0,Nn.useState)(null),h=(0,Nn.useCallback)(async()=>{let S=await fetch("/api/provider_keys");if(!S.ok)throw new Error(`Could not load the ${t} connection.`);let w=await S.json();l((w.provider_keys||[]).find(_=>_.provider===e)||{configured:!1})},[e,t]);(0,Nn.useEffect)(()=>{h().catch(S=>b(S.message))},[h]);let y=async S=>{if(S.preventDefault(),!(f||!d.trim())){m(!0),b(null);try{let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,credential:d.trim()})}),_=await w.json().catch(()=>({}));if(!w.ok)throw new Error(Array.isArray(_.error)?_.error.join(", "):_.error||`Could not save the ${n}.`);p(""),c(!1),await h(),a?.()}catch(w){b(w.message)}finally{m(!1)}}},x=async()=>{if(await $r({title:`Disconnect ${t}?`,message:`${t} will need its ${n} connected again.`,confirmLabel:"Disconnect",danger:!0})){m(!0),b(null);try{if(!(await fetch(`/api/provider_keys/${e}`,{method:"DELETE"})).ok)throw new Error(`Could not disconnect ${t}.`);await h(),a?.()}catch(S){b(S.message)}finally{m(!1)}}},v=i?"text-gray-400":"text-gray-500",k=`px-3 py-1 text-sm rounded ${i?"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 ${i?"text-white":"text-gray-900"}`},t),Nn.default.createElement("p",{className:`text-sm ${v}`},s==null?"Loading\u2026":s.configured?`Connected \xB7 ${s.hint}`:"Not connected")),Nn.default.createElement("div",{className:"flex gap-2"},s?.configured&&!u&&Nn.default.createElement("button",{className:k,disabled:f,onClick:x},"Disconnect"),Nn.default.createElement("button",{className:k,disabled:f||s==null,onClick:()=>{c(!u),p(""),b(null)}},u?"Cancel":s?.configured?"Update":"Connect"))),Nn.default.createElement("p",{className:`text-sm ${v}`},r),u&&Nn.default.createElement("form",{onSubmit:y,className:"flex flex-wrap gap-2"},Nn.default.createElement("label",{className:`flex-1 text-sm ${v}`},n,Nn.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:d,onChange:S=>p(S.target.value),placeholder:o,disabled:f,className:`block w-full mt-1 px-3 py-2 border rounded ${i?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),Nn.default.createElement("button",{type:"submit",className:`${k} self-end`,disabled:f||!d.trim()},f?"Saving\u2026":"Save")),g&&Nn.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},g))}function bj({onChange:e}){return mte.default.createElement(xj,{provider:"slack",title:"Slack",description:"Agents with the Slack tool list channels, read them and post as this bot. Create a Slack app with the channels:read, channels:history and chat:write scopes, install it, and invite the bot to the channels it should see.",credentialLabel:"Bot User OAuth Token",placeholder:"xoxb-\u2026",onChange:e})}var uEe=["profile","api-keys","integrations","notifications","billing"];function cEe(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:uEe.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function wj({user:e,account:t}){let{darkMode:r,theme:n,systemDark:o,setTheme:a}=ut(),[i]=(0,Me.useState)(()=>window.ACTIVE_AGENT_DASHBOARD?.meta?.personalProviderKeys?"personal":void 0),[{tab:s,github:l,githubApp:u}]=(0,Me.useState)(cEe),[c,d]=(0,Me.useState)(s),[p,f]=(0,Me.useState)(0),[m,g]=(0,Me.useState)([]),[b,h]=(0,Me.useState)([]),[y,x]=(0,Me.useState)(!1),[v,k]=(0,Me.useState)(""),[S,w]=(0,Me.useState)(!1),[_,A]=(0,Me.useState)(null),[C,O]=(0,Me.useState)(!1),[D,H]=(0,Me.useState)(null),$=(0,Me.useCallback)(async()=>{try{let[T,q]=await Promise.all([fetch("/api/api_keys"),fetch(PA("/api/provider_keys",i))]);if(!T.ok||!q.ok)throw new Error("Failed to load keys");let G=await T.json(),L=await q.json();g(G.api_keys||[]),h(L.provider_keys||[]),H(null)}catch{H("Could not load API keys. Are you signed in?")}finally{x(!0)}},[i]);(0,Me.useEffect)(()=>{c==="api-keys"&&!y&&$()},[c,y,$]);let Z=MA({onKeysChanged:$,onError:H,scope:i}),N=async()=>{if(!(!v.trim()||S)){w(!0),H(null);try{let T=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:v.trim()})});if(!T.ok)throw new Error("create failed");let q=await T.json();A(q.api_key),O(!1),k(""),await $()}catch{H("Could not create the API key.")}finally{w(!1)}}},P=async T=>{if(await $r({title:"Revoke this API key?",message:"Requests using it stop working immediately. This cannot be undone.",confirmLabel:"Revoke key",danger:!0}))try{if(!(await fetch(`/api/api_keys/${T}`,{method:"DELETE"})).ok)throw new Error("delete failed");_&&_.id===T&&A(null),await $()}catch{H("Could not revoke the API key.")}},M=async T=>{try{await navigator.clipboard.writeText(T),O(!0),setTimeout(()=>O(!1),2e3)}catch{}},I={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};return Me.default.createElement("div",{className:"p-6 space-y-6"},Me.default.createElement("div",null,Me.default.createElement("h2",{className:`text-2xl font-bold ${r?"text-white":"text-gray-900"}`},"Settings"),Me.default.createElement("p",{className:`mt-1 ${r?"text-gray-400":"text-gray-500"}`},"Manage your account and preferences")),Me.default.createElement("div",{className:"border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Me.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=>Me.default.createElement("button",{key:T.id,onClick:()=>d(T.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${c===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)))),c==="profile"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Profile Information"),Me.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Me.default.createElement("div",null,Me.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"First Name"),Me.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"}`})),Me.default.createElement("div",null,Me.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Last Name"),Me.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"}`})),Me.default.createElement("div",{className:"md:col-span-2"},Me.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Email"),Me.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"}`}))),Me.default.createElement("button",{className:"mt-4 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Save Changes")),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Appearance"),Me.default.createElement("div",{className:"flex items-center justify-between gap-4"},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Theme"),Me.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`,"data-testid":"theme-description"},p6(n,o))),Me.default.createElement(To,{options:s6,value:n,onChange:a})))),c==="api-keys"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("div",{className:"flex items-center justify-between mb-4"},Me.default.createElement("h3",{className:`text-lg font-semibold ${r?"text-white":"text-gray-900"}`},"API Keys"),Me.default.createElement("div",{className:"flex items-center space-x-2"},Me.default.createElement("input",{type:"text",value:v,onChange:T=>k(T.target.value),onKeyDown:T=>T.key==="Enter"&&N(),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"}`}),Me.default.createElement("button",{onClick:N,disabled:!v.trim()||S,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},S?"Creating\u2026":"+ Create New Key"))),Me.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"}`},Me.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.")),D&&Me.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"}`},D),_&&Me.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"}`},Me.default.createElement("p",{className:`text-sm font-medium mb-2 ${r?"text-green-300":"text-green-800"}`},"Key \u201C",_.name,"\u201D created. Copy it now \u2014 it won't be shown again."),Me.default.createElement("div",{className:"flex items-center space-x-2"},Me.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"}`},_.token),Me.default.createElement("button",{onClick:()=>M(_.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"}`},C?"Copied!":"Copy"),Me.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"))),m.length===0?Me.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Me.default.createElement("p",null,y?"No API keys yet":"Loading\u2026"),y&&Me.default.createElement("p",{className:"text-sm"},"Create your first API key to authenticate requests")):Me.default.createElement("div",{className:"space-y-2"},m.map(T=>Me.default.createElement("div",{key:T.id,className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.name),Me.default.createElement("p",{className:`text-sm font-mono ${r?"text-gray-400":"text-gray-500"}`},T.masked_token,Me.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"))),Me.default.createElement("button",{onClick:()=>P(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"))))),Me.default.createElement(Ab,{providerKeys:b,editor:Z,scope:i})),c==="integrations"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${r?"text-white":"text-gray-900"}`},"Integrations"),Me.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."),Me.default.createElement(gj,{callbackStatus:l,appCallbackStatus:u,refreshKey:p})),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement(yj,{onChange:()=>f(T=>T+1)})),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement(vj,{onChange:()=>f(T=>T+1)})),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement(bj,{onChange:()=>f(T=>T+1)}))),c==="notifications"&&Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Email Notifications"),Me.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,q)=>Me.default.createElement("div",{key:q,className:"flex items-center justify-between py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.label),Me.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},T.desc)),Me.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"}`},Me.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"}`})))))),c==="billing"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Subscription"),Me.default.createElement("div",{className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Free Plan"),Me.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Current plan")),Me.default.createElement("button",{className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Upgrade to Pro"))),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Payment Method"),Me.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No payment method on file"),Me.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")),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Invoices"),Me.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No invoices yet"))))}var Je=X(J());var dEe=[{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."}],Sj={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"},tl={color:"var(--color-text-muted)",fontSize:12};function gte(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?rt(t):null}function pEe({card:e,onAsk:t,busy:r}){let n=gte(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Je.default.createElement(Le,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Je.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Je.default.createElement(be,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Je.default.createElement(be,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Je.default.createElement("span",{style:tl},String(e.check_strength).replaceAll("_"," "))),Je.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Je.default.createElement("div",{style:{...tl,fontFamily:U}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Je.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Je.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Je.default.createElement("div",{style:tl},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Je.default.createElement("div",{style:tl},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Je.default.createElement("div",{style:tl},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Je.default.createElement("details",{style:tl},Je.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Je.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Je.default.createElement("li",{key:u},l)))),Je.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Je.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===rt("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Je.default.createElement(ie,{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 fEe({draft:e,onReview:t}){return Je.default.createElement(Le,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Je.default.createElement(je,null,"Agent draft \xB7 not saved"),Je.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Je.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Je.default.createElement("div",{style:{...tl,fontFamily:U}},e.provider," / ",e.model),Je.default.createElement("details",null,Je.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Je.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Je.default.createElement("p",{style:tl},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Je.default.createElement(ie,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function kj({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[a,i]=(0,Je.useState)(null),[s,l]=(0,Je.useState)(""),[u,c]=(0,Je.useState)(!1),[d,p]=(0,Je.useState)(null),[f,m]=(0,Je.useState)(!1),g=(0,Je.useRef)(null),b=(0,Je.useRef)(null),h=(0,Je.useRef)(e);h.current=e,(0,Je.useEffect)(()=>{let _=new AbortController;return fetch("/api/dashboard_assistant",{signal:_.signal}).then(async A=>{let C=await A.json();if(!A.ok)throw new Error(C.error||"Could not load assistant configuration.");i(C),h.current.provider||t({...h.current,...C.defaults})}).catch(A=>{A.name!=="AbortError"&&p({message:A.message})}),()=>{_.abort(),g.current?.abort()}},[]);let y=e.messages||[],x=e.provider||a?.defaults?.provider||"",v=e.model||"",k=a?.limits?.message_characters||8e3,S=a?.providers?.find(_=>_.id===x),w=async _=>{let A=_.trim();if(!A||u||!a||!o||!v.trim()||!f)return;let C=y.map(H=>({role:H.role,content:H.content})).slice(-12);for(;C.reduce((H,$)=>H+$.content.length,0)>24e3;)C.shift();let O=[...y,{role:"user",content:A}];t({...e,messages:O}),l(""),p(null),c(!0);let D=new AbortController;g.current=D;try{let H=await fetch("/api/dashboard_assistant",{method:"POST",signal:D.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:A,history:C,provider:x,model:v.trim(),allow_provider_processing:!0})}),$=await H.json();if(!H.ok){p({message:typeof $.error=="string"?$.error:"The assistant could not complete this request.",setup:$.setup_required,retry:A}),t({...e,messages:y}),l(A);return}t({...e,messages:[...O,{role:"assistant",content:$.answer,cards:$.cards||[],references:$.references||[],drafts:$.drafts||[],limitations:$.limitations||[]}]})}catch(H){H.name!=="AbortError"&&(p({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:y}),l(A))}finally{c(!1)}};return Je.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Je.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Je.default.createElement("div",null,Je.default.createElement(je,null,"Workspace assistant"),Je.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Je.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:14}},"Find evaluation evidence. Understand failures. Build the next agent.")),y.length>0&&Je.default.createElement(ie,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!y.length&&Je.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},dEe.map(_=>Je.default.createElement("button",{key:_.label,onClick:()=>{l(_.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"}},Je.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},_.label," \u2197"),Je.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},_.message)))),Je.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},y.map((_,A)=>Je.default.createElement("div",{key:A,style:{display:"grid",gap:12}},Je.default.createElement(je,{color:_.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},_.role==="user"?"You":"ActiveAgents"),Je.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},_.content),_.cards?.map(C=>Je.default.createElement(pEe,{key:C.id,card:C,onAsk:O=>{l(O),b.current?.querySelector("textarea")?.focus()},busy:u})),_.references?.length>0&&Je.default.createElement("div",{"aria-label":"Evidence references",style:{...tl,display:"flex",gap:12,flexWrap:"wrap"}},_.references.map(C=>{let O=gte(C);return O&&Je.default.createElement("a",{key:C.id,href:O,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-accent-ui)"}},C.id)})),_.drafts?.map(C=>Je.default.createElement(fEe,{key:C.id,draft:C,onReview:r})),_.limitations?.length>0&&Je.default.createElement("details",{style:tl},Je.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Je.default.createElement("ul",{style:{paddingLeft:18}},_.limitations.map((C,O)=>Je.default.createElement("li",{key:O},C)))))),u&&Je.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Je.default.createElement(Le,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Je.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Je.default.createElement(ie,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Je.default.createElement(Le,{padding:18},Je.default.createElement("form",{ref:b,onSubmit:_=>{_.preventDefault(),w(s)},style:{display:"grid",gap:14}},Je.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Je.default.createElement("textarea",{id:"assistant-question",placeholder:"Ask about your evals, or describe an agent to build\u2026",value:s,onChange:_=>l(_.target.value),maxLength:k,rows:3,disabled:u,style:{...Sj,resize:"vertical",boxSizing:"border-box"}}),Je.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Je.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Je.default.createElement("select",{"aria-label":"Assistant provider",value:x,disabled:u||!a,onChange:_=>{let A=a.providers.find(C=>C.id===_.target.value);m(!1),t({...e,provider:A?.id||"",model:A?.default_model||""})},style:Sj},Je.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(_=>Je.default.createElement("option",{key:_.id,value:_.id},_.id,_.configured?"":" \xB7 setup needed")))),Je.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Je.default.createElement("input",{"aria-label":"Assistant model",value:v,disabled:u||!a,maxLength:160,onChange:_=>{m(!1),t({...e,model:_.target.value})},style:Sj})),Je.default.createElement(ie,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!v.trim()||!o||!f},u?"Working\u2026":"Ask ActiveAgents \u2192")),Je.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Je.default.createElement("input",{type:"checkbox",checked:f,disabled:u||!a,onChange:_=>m(_.target.checked),style:{marginTop:4}}),Je.default.createElement("span",null,"Allow ",x||"the selected provider"," / ",v||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),Je.default.createElement("div",{style:{...tl,lineHeight:1.5}},o?S&&!S.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 _a=X(J());var yt=X(J());var ua=X(J());function mEe(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 _j({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,ua.useState)(r),a=mEe(t);return ua.default.createElement(en,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},ua.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"}},ua.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),ua.default.createElement("span",{"data-testid":"capabilities-summary"},a),ua.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&ua.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>ua.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)"}},ua.default.createElement(Ia,{kind:i.ok?"pass":i.blocking?"fault":"info"}),ua.default.createElement("div",{style:{minWidth:0,flex:1}},ua.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},ua.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&ua.default.createElement(je,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&ua.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&ua.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:U,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var un=X(J());var hte={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:U,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function Ob({rows:e,onChange:t,repository:r}){let[n,o]=(0,un.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?DA(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return un.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&un.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=DA(s.name),c=s.useOrganizationKey?[]:jA(s.name,s.value);return un.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},un.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},un.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&un.default.createElement(be,{tone:"warning"},"required"),s.set&&un.default.createElement(be,{tone:"success"},"set"),s.sources?.length>0&&un.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&un.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?un.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):un.default.createElement(un.default.Fragment,null,!s.useOrganizationKey&&un.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:{...hte,marginTop:6}}),s.organizationKey&&un.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},un.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&&un.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)"}},un.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=>un.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),un.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},un.default.createElement("div",{style:{flex:1}},un.default.createElement(je,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),un.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...hte,marginTop:4}}),i&&un.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),un.default.createElement(ie,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(Gee(e,n)),o("")}},"Add")))}var yte={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 gEe({repository:e,preflight:t}){return t?yt.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},yt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},yt.default.createElement("span",{style:{fontFamily:U,fontSize:13,color:"var(--color-text-primary)"}},e),yt.default.createElement(be,{tone:$A[t.status]||"muted"},t.summary)),yt.default.createElement("div",{style:{fontFamily:U,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=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function Cj({onCreated:e,onCancel:t}){let[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)(null),[p,f]=(0,yt.useState)(null),[m,g]=(0,yt.useState)(null),[b,h]=(0,yt.useState)(!1),[y,x]=(0,yt.useState)([]),[v,k]=(0,yt.useState)(""),[S,w]=(0,yt.useState)(!1),[_,A]=(0,yt.useState)("/"),[C,O]=(0,yt.useState)(!1),[D,H]=(0,yt.useState)(null),$=(0,yt.useCallback)(async()=>{let T=await fetch("/api/projects/capabilities"),q=await T.json().catch(()=>({}));if(!T.ok)throw new Error(ot(q,`Could not check what this dashboard can do (HTTP ${T.status}).`));return n(q),q},[]),Z=(0,yt.useCallback)(async()=>{a(null);let T=await fetch("/api/projects/repositories"),q=await T.json().catch(()=>({}));if(q.reconnect_required){s(!0);return}if(!T.ok)throw new Error(ot(q,`Could not list repositories (HTTP ${T.status}).`));s(!1),a(q.repositories||[])},[]);(0,yt.useEffect)(()=>{$().then(T=>T.github?.connected?Z():null).catch(T=>H(T.message))},[$,Z]);let N=(0,yt.useCallback)(async(T,{typed:q=!1}={})=>{H(null),f(null),h(!0);try{let G=`repository=${encodeURIComponent(T)}`,L=await fetch(`/api/projects/preflight?${G}`),Y=await L.json().catch(()=>({}));if(Y.reconnect_required){s(!0);return}if(!L.ok){let De=ot(Y,`Could not check ${T} (HTTP ${L.status}).`);q?f(De):H(De);return}if(d(Y.repository.full_name),g(Y.preflight),k(De=>Yee({name:De,edited:S,fullName:Y.repository.full_name})),x([]),Y.preflight.status==="unsupported")return;let K=await fetch(`/api/projects/discover_secrets?${G}`),pe=await K.json().catch(()=>({}));if(!K.ok)throw new Error(ot(pe,`Could not read ${T}'s environment variables (HTTP ${K.status}).`));x(Eb(pe.variables||[]))}catch(G){H(G.message)}finally{h(!1)}},[S]),P=async()=>{O(!0),H(null);try{let T=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:v,start_url:_,secrets:Nb(y)})}),q=await T.json().catch(()=>({}));if(!T.ok)throw new Error(ot(q,`Could not create the project (HTTP ${T.status}).`));e(q.project)}catch(T){H(T.message)}finally{O(!1)}},M=r?.github,I=Xee({github:M,repositories:o,reconnectRequired:i,pendingApproval:M?.pending_approval===!0}),j=b?"Checking the repository\u2026":Zee({capabilities:r,preflight:m,secretsProblem:ry(y)});return yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},yt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},yt.default.createElement("div",{style:{flex:1}},yt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),yt.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.")),yt.default.createElement(ie,{onClick:t},"Cancel")),D&&yt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},D),yt.default.createElement(Le,null,yt.default.createElement(je,null,"Repository"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(Mf,{mode:"single",state:I,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:T=>N(T),settingsHref:rt("/settings?tab=integrations"),missingRepositoryUrl:M?.access_settings_url,onRefresh:()=>Z().catch(T=>H(T.message)),onTypeName:T=>N(T,{typed:!0}),typedNameError:p})),m&&yt.default.createElement("div",{style:{marginTop:12}},yt.default.createElement(gEe,{repository:c,preflight:m}))),r&&yt.default.createElement(_j,{capabilities:r}),m&&m.status!=="unsupported"&&yt.default.createElement(Le,null,yt.default.createElement(je,null,"Project"),yt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",yt.default.createElement("input",{type:"text",value:v,onChange:T=>{k(T.target.value),w(T.target.value!=="")},style:{...yte,marginTop:4}})),yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",yt.default.createElement("input",{type:"text",value:_,onChange:T=>A(T.target.value),style:{...yte,marginTop:4,fontFamily:U}}))),yt.default.createElement("div",{style:{marginTop:16}},yt.default.createElement(je,null,"Secrets the boot needs"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(Ob,{rows:y,onChange:x,repository:c})))),yt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},j&&yt.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},j),yt.default.createElement(ie,{variant:"primary",onClick:P,disabled:!!j||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var Ye=X(J());var Ur=X(J());var hEe={success:"success",error:"error",progress:"info",neutral:"muted"};function Aj({project:e}){let[t,r]=(0,Ur.useState)(null),[n,o]=(0,Ur.useState)(null),[a,i]=(0,Ur.useState)(""),[s,l]=(0,Ur.useState)(!1),u=e.sandbox,c=e.sandbox_state==="ready"&&!!u?.session_id,d=(0,Ur.useCallback)(async()=>{let m=await fetch(`/api/interactions?project_id=${e.id}`),g=await m.json().catch(()=>({}));if(!m.ok){o(ot(g,`Could not list the conversations (HTTP ${m.status}).`));return}r(g.interactions||[])},[e.id]);(0,Ur.useEffect)(()=>{d()},[d]);let p=async m=>{m.preventDefault();let g=a.trim();if(!(!g||!c)){l(!0),o(null);try{let b=await fetch(`/api/sandboxes/${encodeURIComponent(u.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:g,origin:"chat"})}),h=await b.json().catch(()=>({}));if(!b.ok)throw new Error(ot(h,`The conversation did not start (HTTP ${b.status}).`));st(ks(h.code_session.id))}catch(b){o(b.message),l(!1)}}},f={margin:0,fontSize:13,color:"var(--color-text-secondary)"};return Ur.default.createElement("div",{style:{display:"grid",gap:12},"data-testid":"project-sessions"},Ur.default.createElement(Le,null,Ur.default.createElement("form",{onSubmit:p,style:{display:"grid",gap:8}},Ur.default.createElement(je,{as:"label",htmlFor:`project-${e.id}-chat`},"Chat with Claude Code"),Ur.default.createElement("textarea",{id:`project-${e.id}-chat`,value:a,onChange:m=>i(m.target.value),rows:3,disabled:!c,placeholder:c?`What should Claude Code do in ${e.repository}?`:"Boot the sandbox to start a conversation",style:{width:"100%",fontSize:13,padding:8,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}}),Ur.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8}},Ur.default.createElement("p",{style:f},"It edits the checkout and never commits or pushes. The conversation opens with the sandbox's browser beside it."),Ur.default.createElement(ie,{variant:"primary",type:"submit",disabled:!c||s||!a.trim(),testId:"project-start-conversation"},s?"Starting\u2026":"Start")),n&&Ur.default.createElement("p",{role:"alert",style:{...f,color:"var(--color-error-text)"}},n))),Ur.default.createElement(Le,null,Ur.default.createElement(je,null,"Conversations"),t===null&&!n&&Ur.default.createElement("p",{style:f},"Loading\u2026"),t?.length===0&&Ur.default.createElement("p",{style:f},"No conversations yet."),Ur.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0,display:"grid",gap:8}},(t||[]).map(m=>{let g=Ss(m.status),b=ks(sf(m.id));return Ur.default.createElement("li",{key:m.id},Ur.default.createElement("a",{href:rt(b),onClick:h=>{h.preventDefault(),st(b)},style:{display:"grid",gap:2,textDecoration:"none",color:"var(--color-text-primary)"},"data-testid":"project-conversation"},Ur.default.createElement("span",{style:{display:"flex",gap:8,alignItems:"center"}},Ur.default.createElement(be,{tone:hEe[g.tone]||"muted"},g.label),Ur.default.createElement("span",{style:{fontSize:13}},m.preview?.input||m.display_name)),Ur.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:U}},I2(m))))}))))}var fr=X(J());function vte(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function Ej(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 xte(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"&&!Ej(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function bte(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function wte(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 Ste(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||Nj(e)||(Number(e?.pending_input_requests)||0)>0}var yEe=6e4;function kte(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 Nte(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(Oj(e,r))!==n(t)}function Tte(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 Ote(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function Pte(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 Mte(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 Ite(e){return e.json().catch(()=>({}))}function Pj({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,fr.useState)(null),[a,i]=(0,fr.useState)({}),[s,l]=(0,fr.useState)(null),[u,c]=(0,fr.useState)(!1),d=e.schema_tools||[],p=(0,fr.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),g=await Ite(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(ot(g,`Could not list the app's models (HTTP ${m.status}).`));o(g.models||[]),i(Ate(g.schema_tools||[]))},[e.id]);(0,fr.useEffect)(()=>{e.app_models_listed&&p().catch(m=>l(m.message))},[p,e.app_models_listed]);let f=async(m,g=!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:Oj(a,n||[]),apply:m,...g?{confirm:!0}:{}})}),h=await Ite(b);if(b.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(m,!0));return}if(!b.ok)throw new Error(ot(h,`Could not save what the assistant may read (HTTP ${b.status}).`));t?.(h.project)}catch(b){l(b.message)}finally{c(!1)}};return fr.default.createElement(vEe,{listed:e.app_models_listed,models:n,selection:a,changed:n?Nte(a,d,n):!1,busy:u,error:s,onToggle:(m,g,b)=>i(h=>Ete(h,m,g,b)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function vEe({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,fr.useMemo)(()=>Object.keys(r||{}),[r]);return fr.default.createElement(en,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},fr.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&&fr.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&&fr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&fr.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 fr.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"}},fr.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},fr.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),fr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&fr.default.createElement(be,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),fr.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},fr.default.createElement("thead",null,fr.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},fr.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),fr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),fr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),fr.default.createElement("tbody",null,c.columns.map(p=>fr.default.createElement("tr",{key:p.name},fr.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:U,color:"var(--color-text-primary)"}},p.name," ",fr.default.createElement("span",{style:{color:"var(--color-text-muted)"}},p.type)),["filterable","returns"].map(f=>fr.default.createElement("td",{key:f,style:{padding:"2px 12px",textAlign:"center"}},fr.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&&fr.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},fr.default.createElement(ie,{size:"sm",onClick:s,disabled:o||!n},"Save"),fr.default.createElement(ie,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var Ua=X(J());function Mj({boot:e,logTail:t,error:r,backendError:n,sandboxState:o,waiting:a}){let i=e?.steps||[],s=n?"No sandbox backend answered.":o==="booting"?"Waiting for the sandbox to report its steps\u2026":"No boot to show yet.",l=n?`The ${n.backend} sandbox backend could not report this boot`+(n.message&&n.message!==r?`: ${n.message}`:"."):null;return Ua.default.createElement(en,{title:"Boot",meta:vte(a)||o||"none",testId:"project-boot-progress"},i.length===0&&Ua.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},s),l&&Ua.default.createElement("div",{"data-testid":"boot-backend-error",style:{padding:"8px 12px",fontSize:13,color:"var(--color-text-secondary)",borderTop:"1px solid var(--color-border-light)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},l),i.length>0&&Ua.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},i.map(u=>Ua.default.createElement("li",{key:u.name,"data-testid":`boot-step-${u.name}`,style:{display:"grid",gridTemplateColumns:"92px 170px 1fr 80px",gap:10,alignItems:"baseline",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},Ua.default.createElement(be,{tone:Ree[u.status]||"muted"},u.status),Ua.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},Jee(u.name)," ",Ua.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},u.name)),Ua.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},u.detail||""),Ua.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},u.status==="pending"?"":Qee(u.duration_ms))))),r&&Ua.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&&Ua.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Ua.default.createElement("div",{style:{padding:"6px 12px",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),Ua.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:U,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var zl=X(J());var Dte="/settings?tab=integrations";function Ij({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=zl.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=zl.default.createElement(zl.default.Fragment,null,zl.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, type and upload files, and hand back. Agent runs reach it as ",zl.default.createElement("span",{style:{fontFamily:U}},"browser:",o.session_id),"."),zl.default.createElement(Pf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=zl.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."),zl.default.createElement(en,{title:"Browser",meta:zl.default.createElement(Jr,{href:rt(Dte),onClick:()=>st(Dte)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var Vn=X(J());var xEe=e=>e?new Date(e).toLocaleString():"\u2014",bEe={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function Dj({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,Vn.useState)(null),[i,s]=(0,Vn.useState)(""),[l,u]=(0,Vn.useState)(!1),c=o?jA(o,i):[],d=async p=>{u(!0);try{await p()}catch{return}finally{u(!1)}};return Vn.default.createElement(en,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&Vn.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&Vn.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),Vn.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(p=>Vn.default.createElement("li",{key:p.name,"data-testid":`environment-${p.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Vn.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},Vn.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),Vn.default.createElement(be,{tone:p.source==="organization_key"?"info":"muted"},bEe[p.source]?.(p)||"entered"),Vn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",xEe(p.updated_at)),Vn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&Vn.default.createElement(ie,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),Vn.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&Vn.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&Vn.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("")})}},Vn.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:U,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),Vn.default.createElement(ie,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),Vn.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>Vn.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var Gn=X(J());var Od=X(J());var wEe=["proposed","edited"],Lj={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."}},FA={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},jte={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function Lte(e){return e?.status==="pending"||e?.status==="running"}function WA(e){return wEe.includes(e.state)}function zj(e=[],t=null){let r=e.filter(n=>WA(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function zte(e=[],t=[]){let r=new Set(t.filter(WA).map(n=>n.id));return e.filter(n=>r.has(n))}function $te(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function Bte(e={},t={}){return Object.keys(jte).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:jte[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${$te(r,o)} / ${$te(r,n)}`}]})}function Fte(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 Wte({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 Ute(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 jj(e){return(e||[]).join(", ")}function $j(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function Hte(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:jj(t.tools),contains:jj(t.contains),not_contains:jj(t.not_contains)}}function qte(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:$j(e.tools),contains:$j(e.contains),not_contains:$j(e.not_contains)}}function UA(e){return`/explorations/${e}`}function HA(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function If({explorations:e,onOpen:t,selectedId:r=null}){return Od.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 Od.default.createElement(Le,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},Od.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},Od.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),Od.default.createElement(be,{tone:FA[n.status]||"muted"},n.status),Od.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),Od.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",_o(n.created_at))))}))}var Et=X(J());var Df=X(J());function Bj({budget:e,usage:t}){let r=Bte(e,t);return r.length===0?null:Df.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?Fn.error:n.ratio>=.8?Fn.warning:Fn.info;return Df.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},Df.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),Df.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Df.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),Df.default.createElement("span",{style:{fontFamily:U,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var jt=X(J());var SEe={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},ny={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 oy({label:e,children:t}){return jt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function Fj({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,jt.useState)(null),c=Lj[e.verdict]||Lj.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=Fte(e),g=WA(e),b=y=>x=>u({...l,[y]:x.target.value}),h=async()=>{await n(e.id,qte(l))&&u(null)};return jt.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}},jt.default.createElement("input",{type:"checkbox","aria-label":`Accept candidate ${e.id}`,checked:t,disabled:!g||a,onChange:()=>r(e.id),style:{marginTop:3,alignSelf:"flex-start"}}),jt.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},jt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},jt.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),jt.default.createElement(be,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),jt.default.createElement(be,{tone:SEe[e.state]||"muted"},e.state),e.group&&jt.default.createElement(be,null,e.group),e.scenario_key&&jt.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?jt.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},jt.default.createElement(oy,{label:"Prompt"},jt.default.createElement("input",{style:ny,value:l.prompt,onChange:b("prompt")})),jt.default.createElement(oy,{label:"Rubric: what a good answer does (the judge grades against it)"},jt.default.createElement("textarea",{style:{...ny,minHeight:60},value:l.rubric,onChange:b("rubric")})),jt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},jt.default.createElement(oy,{label:"Group"},jt.default.createElement("input",{style:ny,value:l.group,onChange:b("group")})),jt.default.createElement(oy,{label:"Tools (comma-separated)"},jt.default.createElement("input",{style:ny,value:l.tools,onChange:b("tools")})),jt.default.createElement(oy,{label:"Contains"},jt.default.createElement("input",{style:ny,value:l.contains,onChange:b("contains")})),jt.default.createElement(oy,{label:"Does not contain"},jt.default.createElement("input",{style:ny,value:l.not_contains,onChange:b("not_contains")}))),jt.default.createElement("div",{style:{display:"flex",gap:8}},jt.default.createElement(ie,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),jt.default.createElement(ie,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):jt.default.createElement(jt.default.Fragment,null,jt.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)&&jt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:U,fontSize:11}},(d.tools||[]).map(y=>jt.default.createElement(be,{key:y,tone:p.has(y)?"warning":"muted",title:p.has(y)?"The agent cannot call this tool":void 0},p.has(y)?`missing ${y}`:y)),(d.contains||[]).map(y=>jt.default.createElement(be,{key:`c-${y}`},"contains \u201C",y,"\u201D")),(d.not_contains||[]).map(y=>jt.default.createElement(be,{key:`n-${y}`},"not \u201C",y,"\u201D")))),i&&jt.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)&&jt.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},jt.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),f.urls?.length>0&&jt.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11}},f.urls.join(" \xB7 ")),f.steps?.length>0&&jt.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},f.steps.map((y,x)=>jt.default.createElement("li",{key:x},y))),f.screenshots?.length>0&&jt.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&jt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&jt.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&jt.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&jt.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>u(Hte(e)),disabled:a},"Edit"),g&&jt.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&jt.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var Wj={minutes:15,steps:150},Kte={minutes:120,steps:1e3,cost:100},Vte={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function Yte(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:`${Vte[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>Kte[r])return{error:`${Vte[r]} may be at most ${Kte[r]}.`};t[r]=o}return{budget:t}}var Gte={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 Xte(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&Gte[t.code]?Gte[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var kEe={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 Zte(e){return e?kEe[e]||e:null}var _Ee={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function Jte(e){return e?{tone:_Ee[e.status]||"muted",text:e.message||e.status}:null}function Qte(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 Uj(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function Rte(e){return e.json().catch(()=>({}))}var AEe={explorer:"explorer agent",external:"submitted from outside the dashboard"};function jf({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,Et.useState)(null),[s,l]=(0,Et.useState)(null),[u,c]=(0,Et.useState)([]),[d,p]=(0,Et.useState)(!1),[f,m]=(0,Et.useState)(!1),[g,b]=(0,Et.useState)({}),[h,y]=(0,Et.useState)(null),[x,v]=(0,Et.useState)(null),k=(0,Et.useRef)(t);k.current=t;let S=(0,Et.useCallback)(async()=>{let T=await fetch(`/api/explorations/${e}`),q=await Rte(T);if(!T.ok)throw new Error(ot(q,`Could not load the exploration (HTTP ${T.status}).`));return i(q),k.current?.(q),q},[e]);(0,Et.useEffect)(()=>{S().catch(T=>l(T.message))},[S]);let w=a?.candidates||[];(0,Et.useEffect)(()=>{a&&c(T=>d?zte(T,w):zj(w,a.preselect_limit))},[a,d]);let _=Lte(a?.exploration);(0,Et.useEffect)(()=>{if(!_)return;let T=setInterval(()=>S().catch(q=>l(q.message)),3e3);return()=>clearInterval(T)},[_,S]),Jh("ExplorationChannel",{exploration_id:e},T=>{Qh(T)&&S().catch(()=>{})},!!e);let A=async(T,q,G)=>{m(!0),l(null);try{let L=await fetch(T,{method:q,headers:{"Content-Type":"application/json"},body:JSON.stringify(G||{})}),Y=await Rte(L);return{res:L,data:Y}}finally{m(!1)}},C=async(T,q)=>{let{res:G,data:L}=await A(`/api/explorations/${e}/candidates/${T}`,"PATCH",q);return G.ok?(b({...g,[T]:null}),await S(),!0):(b({...g,[T]:ot(L,`Could not save the candidate (HTTP ${G.status}).`)}),!1)},O=async(T,q)=>C(T,{state:q}),D=T=>{p(!0),c(q=>q.includes(T)?q.filter(G=>G!==T):[...q,T])},H=async()=>{let T={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:q,data:G}=await A(`/api/explorations/${e}/accept`,"POST",T);return q.ok?(b({}),y({accepted:G.accepted,evaluation:r?null:G.evaluation,scenarioSet:G.scenario_set||null}),o?.(G),p(!1),i(G),k.current?.(G),G):(b(G.problems||{}),l(ot(G,`Could not accept the candidates (HTTP ${q.status}).`)),null)},$=async(T,q,{confirm:G=!1}={})=>{let L=q?`/api/projects/${q.id}/run_evaluation`:`/api/evaluations/${T.id}/run`,{res:Y,data:K}=await A(L,"POST",G?{confirm:!0}:{});if(Y.status===409&&K.code==="confirmation_required"){v({question:K.confirmation,evaluation:T,project:q});return}if(!Y.ok){l(ot(K,`The scenarios were accepted, but the run did not start (HTTP ${Y.status}).`));return}v(null),st(`/evaluations/${K.run?.evaluation_id||T.id}/runs/${K.run.id}`)},Z=async()=>{let T=await H();T?.evaluation&&await $(T.evaluation,T.project)},N=async()=>{let{res:T,data:q}=await A(`/api/explorations/${e}/stop`,"POST");if(!T.ok&&T.status!==409){l(ot(q,`Could not stop the exploration (HTTP ${T.status}).`));return}await S()};if(!a)return s?Et.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):Et.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:P}=a,M=P.counts||{},I=Wte({evaluation:a.evaluation,candidates:w,selectedIds:u}),j=zj(w);return Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},Et.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Et.default.createElement(je,null,"Exploration ",P.id),Et.default.createElement(be,{tone:FA[P.status]||"muted",testId:"exploration-status"},P.status),Et.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},AEe[P.source]||P.source," \xB7 ",_o(P.created_at),P.start_url?` \xB7 from ${P.start_url}`:""),_&&Et.default.createElement(ie,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),P.stop_reason&&Et.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},Zte(P.stop_reason)),P.error_message&&Et.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},P.error_message),Et.default.createElement(Bj,{budget:P.budget,usage:P.usage}),s&&Et.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&Et.default.createElement(Le,{padding:12,testId:"exploration-accepted"},Et.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&&Et.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),x&&Et.default.createElement(Le,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},Et.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},x.question),Et.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Et.default.createElement(ie,{variant:"primary",onClick:()=>$(x.evaluation,x.project,{confirm:!0}),disabled:f},"Run it on this machine"),Et.default.createElement(ie,{onClick:()=>v(null)},"Cancel"))),Et.default.createElement(en,{title:"Found so far",meta:`${M.total||0} found \xB7 ${M.answerable||0} answerable \xB7 ${M.accepted||0} accepted`,testId:"exploration-candidates",bodyStyle:{padding:"0 12px"}},w.length===0?Et.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."):Et.default.createElement("ul",{style:{margin:0,padding:0}},w.map(T=>Et.default.createElement(Fj,{key:T.id,candidate:T,selected:u.includes(T.id),onToggle:D,onSave:C,onState:O,busy:f,problem:g?.[T.id]||g?.[String(T.id)],agentId:a.target_agent?.id})))),w.length>0&&Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},Et.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Et.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c(j)},disabled:f},"Select every answerable"),Et.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&j.length>a.preselect_limit&&Et.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),Et.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Et.default.createElement(ie,{variant:"primary",onClick:H,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&Et.default.createElement(Et.default.Fragment,null,Et.default.createElement(ie,{onClick:Z,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),Et.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},Ute(I,a.runs_remaining))))))}var ci=X(J());var EEe={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:U,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function Pb({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,ci.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,ci.useState)(null),[s,l]=(0,ci.useState)(!1),{error:u,budget:c}=Yte(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(Xte(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,g)=>ci.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},ci.default.createElement(je,null,m),ci.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:g,onChange:b=>o({...n,[f]:b.target.value}),"aria-label":m,style:EEe}));return ci.default.createElement(en,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},ci.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."),ci.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(Wj.minutes)),p("steps","Browser steps",String(Wj.steps)),p("cost","Cost cap ($)","none"),ci.default.createElement(ie,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&ci.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)&&ci.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var er=X(J());var NEe={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:U,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},TEe=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],ere=e=>e?new Date(e).toLocaleString():"\u2014";async function $f(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(ot(o,`The request failed (HTTP ${n.status}).`));return o}function Hj({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,er.useState)(null),[a,i]=(0,er.useState)(null),[s,l]=(0,er.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,er.useState)(null),[d,p]=(0,er.useState)(null),[f,m]=(0,er.useState)(null),[g,b]=(0,er.useState)(!1),h=(0,er.useCallback)(async()=>{let $=await $f(`/api/projects/${e}/sign_in`,"GET");o($.sign_in);let Z=$.sign_in?.credentials;Z&&l(N=>({...N,login_url:Z.login_url||"",login:Z.login||"",...Z.fields})),i(N=>N||(Z?"credentials":$.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,er.useEffect)(()=>{h().catch($=>p($.message))},[h]);let y=async $=>{b(!0),p(null),m(null);try{await $()}catch(Z){p(Z.message)}finally{b(!1)}},x=n?.credentials,{error:v,payload:k}=Qte(s,{passwordSaved:!!x?.password_set}),S=Jte(u),w=()=>y(async()=>{let $=await $f(`/api/projects/${e}/sign_in`,"PUT",k);o($.sign_in),l(Z=>({...Z,password:""})),m($.warnings?.length?$.warnings.map(Z=>Z.message).join(" "):"Saved. The explorer signs in with them.")}),_=()=>y(async()=>{let $=await $f(`/api/projects/${e}/sign_in/check`,"POST");c($.result),o($.sign_in)}),A=()=>y(async()=>{await $f(`/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=()=>y(async()=>{let $=await $f(`/api/projects/${e}/sign_in/save_browser`,"POST");o($.sign_in),m("Saved. Every browser of this project now starts signed in.")}),O=()=>y(async()=>{await $f(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),D=()=>y(async()=>{let $=await $f(`/api/projects/${e}/sign_in`,"DELETE");o($.sign_in),c(null),m("The explorer explores what is reachable without signing in.")}),H=($,Z,N="text",P="")=>er.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},er.default.createElement(je,null,Z),er.default.createElement("input",{type:N,autoComplete:"off",value:s[$],placeholder:P,onChange:M=>l({...s,[$]:M.target.value}),"aria-label":Z,style:NEe}));return er.default.createElement(en,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},er.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."),er.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},x&&er.default.createElement(be,{tone:"success"},"credentials saved ",ere(x.updated_at)),n?.storage_state&&er.default.createElement(be,{tone:"success"},"browser sign-in saved ",ere(n.storage_state.updated_at)),!x&&!n?.storage_state&&n&&er.default.createElement(be,null,"no sign-in")),er.default.createElement(To,{options:TEe,value:a||"none",onChange:i}),a==="credentials"&&er.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},er.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},H("login_url","Login URL","text","/users/sign_in"),H("login","Login","text","dev@example.com"),H("password","Password","password",x?.password_set?"Saved; leave empty to keep it":"")),er.default.createElement("details",null,er.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),er.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},H("login_field","Login field","text","#user_email"),H("password_field","Password field","text","#user_password"),H("submit_field","Submit button","text","button[type=submit]"))),er.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},er.default.createElement(ie,{variant:"primary",size:"sm",onClick:w,disabled:g||!!v},"Save credentials"),er.default.createElement(ie,{size:"sm",onClick:_,disabled:g||!x||!r,testId:"sign-in-check"},"Check sign-in"),v&&er.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},v))),a==="by_hand"&&er.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},er.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."),er.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},er.default.createElement(ie,{size:"sm",onClick:A,disabled:g||!r||n?.browser_running},"Open a browser window"),er.default.createElement(ie,{variant:"primary",size:"sm",onClick:C,disabled:g||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&er.default.createElement(ie,{size:"sm",variant:"ghost",onClick:O,disabled:g},"Stop the browser"))),a==="none"&&(x||n?.storage_state)&&er.default.createElement("div",null,er.default.createElement(ie,{size:"sm",variant:"danger",onClick:D,disabled:g},"Remove the saved sign-in")),S&&er.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:Fn[S.tone]?.text||"var(--color-text-secondary)"}},S.text),f&&er.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f),d&&er.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function qj({projectId:e,project:t,onCount:r}){let[n,o]=(0,Gn.useState)(null),[a,i]=(0,Gn.useState)(null),[s,l]=(0,Gn.useState)(null),u=(0,Gn.useCallback)(async()=>{let f=await fetch(`/api/explorations?project_id=${e}`),m=await f.json().catch(()=>({}));if(!f.ok)throw new Error(ot(m,`Could not list the project's explorations (HTTP ${f.status}).`));o(m.explorations||[]),r?.(m.explorations?.length||0)},[e,r]);(0,Gn.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=Gn.default.createElement(Gn.default.Fragment,null,Gn.default.createElement(Pb,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),Gn.default.createElement(Hj,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return Gn.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return Gn.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return Gn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,Gn.default.createElement(Le,{testId:"project-explorations-empty"},Gn.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 Gn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,Gn.default.createElement(If,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),Gn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},Gn.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(UA(p))},"Open on its own page")),Gn.default.createElement(jf,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var hr=X(J());var OEe={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function tre(e){return e.json().catch(()=>({}))}function Kj({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,hr.useState)(null),[i,s]=(0,hr.useState)(null),l=(0,hr.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await tre(c);if(!c.ok)throw new Error(ot(d,`Could not list what the project is waiting for (HTTP ${c.status}).`));a(d.input_requests||[])},[e]);(0,hr.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 tre(f);if(!f.ok)throw new Error(ot(m,`Could not send the answer (HTTP ${f.status}).`));await l(),n?.()};return!o?.length&&!i?null:hr.default.createElement(en,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&hr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>hr.default.createElement(PEe,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function PEe({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,hr.useState)(""),[a,i]=(0,hr.useState)(!1),[s,l]=(0,hr.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 hr.default.createElement(MEe,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",bte(e,c)),onDecline:()=>u("decline")})}function MEe({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=xte(e,r),u=`project-answer-${e.id}`;return hr.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)}},hr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},hr.default.createElement(be,{tone:e.kind==="secret"?"warning":"info"},OEe[e.kind]||e.kind),hr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),hr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),hr.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&hr.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)"}},hr.default.createElement("option",{value:""},"Choose\u2026"),Ej(e).map(c=>hr.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&hr.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"?U:"inherit"}}),e.kind==="secret"&&hr.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."),hr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?hr.default.createElement(hr.default.Fragment,null,hr.default.createElement(ie,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),hr.default.createElement(ie,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):hr.default.createElement(hr.default.Fragment,null,hr.default.createElement(ie,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),hr.default.createElement(ie,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&hr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&hr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var Ut=X(J());async function qA(e){return e.json().catch(()=>({}))}function Vj({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,Ut.useState)(null),[i,s]=(0,Ut.useState)(null),[l,u]=(0,Ut.useState)(null),[c,d]=(0,Ut.useState)(0),[p,f]=(0,Ut.useState)(!1),m=(0,Ut.useCallback)(async()=>{let h=await fetch(n),y=await qA(h);if(!h.ok)throw new Error(ot(y,`Could not read the install pull request (HTTP ${h.status}).`));return y},[n]);(0,Ut.useEffect)(()=>{let h=!1,y=null,x=async()=>{try{let v=await m();if(h)return;a(v),s(null),v.project&&t?.(v.project);let k=Ote(v.pull_request);k&&(y=setTimeout(x,k))}catch(v){h||s(v.message)}};return x(),()=>{h=!0,clearTimeout(y)}},[m,c]);let g=async h=>{f(!0),s(null);try{let y=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),x=await qA(y);if(!y.ok)throw new Error(ot(x,`Could not open the pull request (HTTP ${y.status}).`));d(v=>v+1)}catch(y){s(y.message)}finally{f(!1)}},b=o?.pull_request||null;return e.install_state==="installed"&&!b?null:Ut.default.createElement(Ut.default.Fragment,null,Ut.default.createElement(IEe,{project:e,pullRequest:b,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:g}),l&&Ut.default.createElement(DEe,{project:e,base:n,pullRequest:b,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function IEe({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=Tte(t),{canOpen:c,canUpdate:d,openBranch:p}=Pte(t);return Ut.default.createElement(Le,{testId:"project-install-pull-request"},Ut.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ut.default.createElement(je,null,"Install pull request"),Ut.default.createElement(be,{tone:u},l),t?.url&&Ut.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),Ut.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&Ut.default.createElement(ie,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&Ut.default.createElement(ie,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&Ut.default.createElement(ie,{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"))),Ut.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&&Ut.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&Ut.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&Ut.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&Ut.default.createElement("details",{style:{marginTop:6}},Ut.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),Ut.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:U,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>Ut.default.createElement("li",{key:f},f)))),o&&Ut.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function DEe({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,Ut.useState)(null),[c,d]=(0,Ut.useState)(null),[p,f]=(0,Ut.useState)(!0),[m,g]=(0,Ut.useState)(null),[b,h]=(0,Ut.useState)(new Set),[y,x]=(0,Ut.useState)(s?r?.title||"":"Install ActiveAgent"),[v,k]=(0,Ut.useState)(""),[S,w]=(0,Ut.useState)(s&&r?.branch||""),[_,A]=(0,Ut.useState)(eA),[C,O]=(0,Ut.useState)(!1),[D,H]=(0,Ut.useState)(0);(0,Ut.useEffect)(()=>{let Z=!1,N=null;f(!0);let P=async(M=!1)=>{try{let I=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M?{confirm:!0}:{})}),j=await qA(I);if(Z)return;if(I.status===409&&j.code==="confirmation_required"){o?.(j.confirmation,()=>P(!0));return}if(I.status===202){g(j.error),N=setTimeout(()=>P(),3e3);return}if(!I.ok)throw new Error(ot(j,`Could not read the sandbox's changes (HTTP ${I.status}).`));g(null),u(j.preview),d(j.publishing),h(rA(j.preview.files)),w(T=>T||j.preview.suggested_branch||""),f(!1)}catch(I){Z||(g(I.message),f(!1))}};return P(),()=>{Z=!0,clearTimeout(N)}},[t,D]);let $=async()=>{O(!0),g(null);try{let Z=oA({files:l?.files,selection:b,title:y,body:v,branch:S,message:_,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Z)}),P=await qA(N);if(!N.ok)throw tA(P.code)&&H(M=>M+1),new Error(ot(P,`Could not publish (HTTP ${N.status}).`));i(P.pull_request)}catch(Z){g(Z.message)}finally{O(!1)}};return Ut.default.createElement(n3,{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=>nA(N,Z)),fields:{title:y,body:v,branch:S,message:_,allowlist:""},onField:(Z,N)=>({title:x,body:k,branch:w,message:A})[Z]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:C,onSubmit:$,onCancel:a,patchHref:(Z,N)=>Mte(e.id,Z,N)})}var mn=X(J());var jEe={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},$Ee={progress:"info",success:"success",error:"error",neutral:"muted"};function Gj({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 mn.default.createElement(Le,{testId:"project-setup"},mn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},mn.default.createElement(je,null,"Setup"),mn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},mn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},mn.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&mn.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},mn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},mn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&mn.default.createElement(be,{tone:"muted"},"not used"),l&&mn.default.createElement(be,{tone:$Ee[Ss(l.status).tone]||"muted"},Ss(l.status).label),Tj(e)&&n&&mn.default.createElement(ie,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),mn.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},_te(e)),l?.id&&mn.default.createElement("a",{href:rt(ks(l.id)),onClick:u=>{u.preventDefault(),st(ks(l.id))},"data-testid":"boot-fix-conversation",style:{display:"inline-block",marginTop:4,fontSize:12,color:"var(--color-accent-ui)"}},"Ask Claude Code about this fix \u2192"),l?.sandbox_session_id&&mn.default.createElement(z0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),mn.default.createElement("div",{style:{marginTop:12}},mn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},mn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&mn.default.createElement(be,{tone:"muted"},"unavailable"),i&&mn.default.createElement(be,{tone:jEe[i.status]||"muted"},i.status.replace("_"," ")),mn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&mn.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/agents/${a.agent_id}/interactions`)},"Open its runs"),Cte(e)&&mn.default.createElement(ie,{size:"sm",variant:Tj(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),mn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},wte(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."),mn.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 rre="/settings?tab=integrations",LEe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},zEe={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function rl(e){return e.json().catch(()=>({}))}function Yj({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,Ye.useState)(null),[a,i]=(0,Ye.useState)(null),[s,l]=(0,Ye.useState)([]),[u,c]=(0,Ye.useState)(()=>rte(window.location.search)),[d,p]=(0,Ye.useState)(!1),[f,m]=(0,Ye.useState)(null),[g,b]=(0,Ye.useState)(null),[h,y]=(0,Ye.useState)(null),[x,v]=(0,Ye.useState)(!1),[k,S]=(0,Ye.useState)(null),[w,_]=(0,Ye.useState)(null),[A,C]=(0,Ye.useState)(null),O=(0,Ye.useCallback)(async()=>{let ee=await fetch(`/api/projects/${e}/boot`),ae=await rl(ee);if(!ee.ok)throw new Error(ot(ae,`Could not load the project (HTTP ${ee.status}).`));o(ae.project),i(ae)},[e]),D=(0,Ye.useCallback)(async()=>{let ee=await fetch(`/api/projects/${e}/secrets`),ae=await rl(ee);if(!ee.ok)throw new Error(ot(ae,`Could not list the project's secrets (HTTP ${ee.status}).`));l(ae.secrets||[])},[e]);(0,Ye.useEffect)(()=>{O().catch(ee=>m(ee.message)),D().catch(ee=>b(ee.message))},[O,D]);let H=ee=>{c(ee),ee!=="browser"&&p(!1);let{pathname:ae,search:E}=window.location;window.history.replaceState(window.history.state,"",`${ae}${nte(E,ee)}`)},$=n?.sandbox_state==="failed",[Z,N]=(0,Ye.useState)(null);(0,Ye.useEffect)(()=>{N($?Date.now():null)},[$,n?.sandbox?.session_id]);let P=ete(n),M=P||Ste(n)||kte(n,Z);(0,Ye.useEffect)(()=>{if(!M)return;let ee=setTimeout(()=>O().catch(ae=>m(ae.message)),Vee);return()=>clearTimeout(ee)},[M,a,O]);let I=n?.sandbox?.session_id;Jh("SandboxChannel",{session_id:I},ee=>{Qh(ee)&&O().catch(()=>{})},!!I);let j=async(ee,{confirm:ae=!1,onDone:E}={})=>{v(!0),m(null);try{let W=await fetch(ee,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ae?{confirm:!0}:{})}),F=await rl(W);if(W.status===409&&F.code==="confirmation_required")return y({question:F.confirmation,retry:()=>j(ee,{confirm:!0,onDone:E})}),null;if(!W.ok)throw new Error(ot(F,`The request failed (HTTP ${W.status}).`));return y(null),F.project&&o(F.project),await O(),E?.(F),F}catch(W){return m(W.message),null}finally{v(!1)}},T=()=>j(`/api/projects/${e}/run_evaluation`,{onDone:ee=>{ee.run&&S(ee.run)}}),q=(ee,ae)=>y({question:ee,retry:ae}),G=async(ee,ae,E="setup")=>{v(!0),m(null);try{let W=await fetch(`/api/projects/${e}/${E}`,{method:ee,headers:{"Content-Type":"application/json"},body:JSON.stringify(ae||{})}),F=await rl(W);if(!W.ok)throw new Error(ot(F,`The setup request failed (HTTP ${W.status}).`));F.project&&o(F.project),await O()}catch(W){m(W.message)}finally{v(!1)}},L=async()=>{m(null);let ee=await fetch(`/api/projects/${e}/synced_agents`),ae=await rl(ee);if(!ee.ok){m(ot(ae,`Could not list the checkout's agents (HTTP ${ee.status}).`));return}_(ae.synced_agents||[])},Y=async ee=>{v(!0);try{let ae=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)}),E=await rl(ae);if(!ae.ok)throw new Error(ot(E,`Could not choose the agent (HTTP ${ae.status}).`));o(E.project),_(null)}catch(ae){m(ae.message)}finally{v(!1)}},K=async ee=>{b(null);let ae=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:ee})}),E=await rl(ae);return ae.ok?(l(E.secrets||[]),!0):(b(ot(E,`Could not save the secrets (HTTP ${ae.status}).`)),!1)},pe=async(ee,ae)=>{b(null);let E=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(ee)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:ae})}),W=await rl(E);if(!E.ok){let F=ot(W,`Could not replace ${ee} (HTTP ${E.status}).`);throw b(F),new Error(F)}await D()},De=async ee=>{b(null);let ae=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(ee)}`,{method:"DELETE"});if(!ae.ok){b(ot(await rl(ae),`Could not delete ${ee} (HTTP ${ae.status}).`));return}await D()},se=async()=>{b(null);let ee=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,ae=await fetch(`/api/projects/discover_secrets?${ee}`),E=await rl(ae);if(!ae.ok){b(ot(E,`Could not read the repository's environment variables (HTTP ${ae.status}).`));return}C(Eb(E.variables||[],s))},xe=async()=>{if(!await $r({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 ee=await fetch(`/api/projects/${e}`,{method:"DELETE"});ee.ok?r():m(ot(await rl(ee),`Could not delete the project (HTTP ${ee.status}).`))};if(!n)return f?Ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):Ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let ue=a?.browser_modes||[],R=ote(n,ue),we=ee=>{ee&&p(!0),H("browser")},Ce=n.target_agent,z=!Ce&&n.install_state==="installed";return Ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},Ye.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},Ye.default.createElement("div",{style:{flex:1,minWidth:260}},Ye.default.createElement(ie,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),Ye.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),Ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},Ye.default.createElement("span",{style:{fontFamily:U,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),Ye.default.createElement(be,{tone:LEe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),Ye.default.createElement(be,{tone:$A[n.install_state==="installed"?"supported":"bootstrap"]},zEe[n.install_state]),Ye.default.createElement(Jr,{href:rt(rre),onClick:()=>st(rre),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),Ye.default.createElement("div",{style:{display:"flex",gap:8}},Ye.default.createElement(ie,{onClick:()=>j(`/api/projects/${e}/boot`),disabled:x||P,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":P?"Booting\u2026":"Boot sandbox"),R&&Ye.default.createElement(ie,{onClick:()=>we(R.watch),testId:"project-watch-live"},R.label),Ye.default.createElement(ie,{variant:"primary",onClick:()=>T(),disabled:x||!Ce,testId:"run-project-evaluation",title:Ce?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&Ye.default.createElement(Le,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},Ye.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),Ye.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Ye.default.createElement(ie,{variant:"primary",onClick:()=>{let{retry:ee}=h;y(null),ee?.()},disabled:x},"Run it on this machine"),Ye.default.createElement(ie,{onClick:()=>y(null)},"Cancel"))),f&&Ye.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),Ye.default.createElement(To,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${Uj(s).length})`},...ue.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[],{value:"sessions",label:"Sessions"}],value:u,onChange:H}),u==="overview"&&Ye.default.createElement(Ye.default.Fragment,null,Ye.default.createElement(Mj,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,backendError:a?.backend_error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),Ye.default.createElement(Kj,{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(()=>{})}),Ye.default.createElement(Gj,{project:n,busy:x,onAsk:()=>G("POST"),onFixWithClaudeCode:()=>G("POST",null,"setup/claude_code"),onToggleAuto:ee=>G("PATCH",{auto:ee})}),Ye.default.createElement(Le,null,Ye.default.createElement(je,null,"Agent under evaluation"),Ce&&Ye.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Ye.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},Ce.name),Ye.default.createElement(be,{tone:"accent"},Ce.kind==="app_assistant"?"App assistant":`synced agent ${Ce.synced_agent}`),Ye.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/agents/${Ce.id}/edit`)},"Open agent"),n.evaluation&&Ye.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&Ye.default.createElement(ie,{size:"sm",onClick:L},"Change")),z&&!w&&Ye.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.",Ye.default.createElement("div",{style:{marginTop:8}},Ye.default.createElement(ie,{size:"sm",onClick:L,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),w&&Ye.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},w.length===0&&Ye.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),w.map(ee=>Ye.default.createElement("li",{key:ee.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},Ye.default.createElement("span",{style:{fontFamily:U,fontSize:13}},ee.tool),Ye.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},ee.description),Ye.default.createElement(ie,{size:"sm",onClick:()=>Y({synced_agent:ee.slug}),disabled:x},"Evaluate this agent")))),k&&Ye.default.createElement("div",{"data-testid":"project-run",style:{marginTop:10,fontSize:13,color:"var(--color-text-secondary)"}},"Run ",k.id," is ",k.status,P?": it starts once the sandbox is ready":"","."," ",Ye.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${k.evaluation_id}/runs/${k.id}`)},"Open run"))),Ce?.kind==="app_assistant"&&Ye.default.createElement(Pj,{project:n,onSaved:ee=>{ee&&o(ee),O().catch(()=>{})},onConfirmationRequired:q}),Ye.default.createElement(Vj,{project:n,onProjectChanged:ee=>o(ae=>ae&&ee.install_state!==ae.install_state?ee:ae),onConfirmationRequired:q}),Ye.default.createElement("div",null,Ye.default.createElement(ie,{variant:"danger",size:"sm",onClick:xe},"Delete project"))),u==="explorations"&&Ye.default.createElement(qj,{projectId:e,project:n}),u==="browser"&&Ye.default.createElement(Ij,{project:n,modes:ue,watchOnOpen:d,onChange:()=>O().catch(()=>{})}),u==="sessions"&&Ye.default.createElement(Aj,{project:n}),u==="environment"&&Ye.default.createElement(Ye.default.Fragment,null,Ye.default.createElement(Dj,{secrets:Uj(s),onReplace:pe,onDelete:De,error:g}),A?Ye.default.createElement(Le,null,Ye.default.createElement(je,null,"Add secrets"),Ye.default.createElement("div",{style:{marginTop:8}},Ye.default.createElement(Ob,{rows:A,onChange:C,repository:n.repository})),Ye.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},Ye.default.createElement(ie,{variant:"primary",disabled:!!ry(A)||Nb(A).length===0,onClick:async()=>{await K(Nb(A))&&C(null)}},"Save secrets"),Ye.default.createElement(ie,{onClick:()=>C(null)},"Cancel"),ry(A)&&Ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},ry(A)))):Ye.default.createElement("div",null,Ye.default.createElement(ie,{size:"sm",onClick:se},"Add secrets"))))}var ka=X(J());var BEe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function Xj({projects:e,onOpen:t,onNew:r}){return ka.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},ka.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},ka.default.createElement("div",{style:{flex:1}},ka.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),ka.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.")),ka.default.createElement(ie,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&ka.default.createElement(Le,null,ka.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=>ka.default.createElement(Le,{key:n.id,padding:14,testId:`project-${n.id}`},ka.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},ka.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),ka.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},n.repository),ka.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},ka.default.createElement(be,{tone:BEe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&ka.default.createElement(be,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function Zj({visit:e=0}){let[t,r]=(0,_a.useState)(()=>Tb(Zn())),[n,o]=(0,_a.useState)(null),[a,i]=(0,_a.useState)(null);(0,_a.useEffect)(()=>{r(Tb(Zn()))},[e]),(0,_a.useEffect)(()=>{let u=()=>r(Tb(Zn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,_a.useCallback)(async()=>{try{let u=await fetch("/api/projects"),c=await u.json().catch(()=>({}));if(!u.ok)throw new Error(ot(c,`Could not list projects (HTTP ${u.status}).`));o(c.projects||[])}catch(u){i(u.message)}},[]);(0,_a.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{Pc(u),r(Tb(u))};return t.creating?_a.default.createElement(Cj,{onCreated:u=>l(Of(u.id)),onCancel:()=>l("/projects")}):t.projectId?_a.default.createElement(Yj,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?_a.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?_a.default.createElement(Xj,{projects:n,onOpen:u=>l(Of(u.id)),onNew:()=>l(Of(null))}):_a.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Qr=X(J());function Jj({visit:e=0}){let[t,r]=(0,Qr.useState)(()=>HA(Zn())),[n,o]=(0,Qr.useState)(null),[a,i]=(0,Qr.useState)(null),[s,l]=(0,Qr.useState)(null);(0,Qr.useEffect)(()=>{r(HA(Zn()))},[e]),(0,Qr.useEffect)(()=>{let c=()=>r(HA(Zn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Qr.useCallback)(async()=>{try{let c=await fetch("/api/explorations"),d=await c.json().catch(()=>({}));if(!c.ok)throw new Error(ot(d,`Could not list explorations (HTTP ${c.status}).`));o(d.explorations||[])}catch(c){l(c.message)}},[]);if((0,Qr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Qr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Qr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Qr.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(Of(c.id)),style:{padding:0}},"\u2190 ",c.name):Qr.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Qr.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${d.id}`)},"Open ",d.name)),Qr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Qr.default.createElement(jf,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Qr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Qr.default.createElement("div",null,Qr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Qr.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&&Qr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Qr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Qr.default.createElement(Le,null,Qr.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&&Qr.default.createElement(If,{explorations:n,onOpen:c=>st(UA(c.id))}))}var vt=X(J());var me=X(J());var di=X(J());var Qj=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?U:void 0}),nre={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},ore=e=>typeof e=="string"?e:void 0;function Tn({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){let l=(0,di.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":ore(e),"data-testid":s};return di.default.createElement("div",{style:nre},di.default.createElement("label",{htmlFor:l},e),a?di.default.createElement("textarea",{...u,rows:i,style:{...Qj(o),resize:"vertical"}}):di.default.createElement("input",{...u,style:Qj(o)}))}function Pd({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,di.useId)();return di.default.createElement("div",{style:nre},di.default.createElement("label",{htmlFor:a},e),di.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":ore(e),style:Qj(!1),"data-testid":o},n))}function Mb({label:e,checked:t,onChange:r}){return di.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},di.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function Ca({tone:e="info",children:t}){let r=e==="error";return di.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 no(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(ot(i,`${n} (HTTP ${a.status}).`));return i}async function are(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var FEe=["collections","generate","import"],WEe=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function Rj(e=""){let r=String(e).match(WEe)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function ire({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!FEe.includes(e)?"/scenarios":`/scenarios/${e}`}function e$(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 KA(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function sre(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 lre(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:KA(e.tools),contains:KA(e.contains),not_contains:KA(e.notContains)},tags:KA(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function ure(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 cre(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 UEe=["create","update","remove","keep"],HEe={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function dre(e){let t=e?.changes||[];return UEe.map(r=>({action:r,label:HEe[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function pre(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 fre(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function mre(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function t$({collectionId:e,agents:t,projects:r,storageAvailable:n,onBack:o,onChanged:a,onDeleted:i}){let[s,l]=(0,me.useState)(null),[u,c]=(0,me.useState)(null),[d,p]=(0,me.useState)(null),[f,m]=(0,me.useState)({productIds:[],setIds:[],scenarioIds:[]}),[g,b]=(0,me.useState)(!1),[h,y]=(0,me.useState)(!1),x=`/api/scenario_catalogs/${e}`,v=(0,me.useCallback)(async()=>{try{let O=await no(x,{fallback:"Could not open the collection"});l(O.catalog),c(null)}catch(O){c(O.message)}},[x]);(0,me.useEffect)(()=>{v()},[v]);let k=async(O,D,H,$)=>{let Z=await no(`${x}${O}`,{method:D,body:H,fallback:$});return Z.catalog?l(Z.catalog):await v(),a?.(),Z},S=async O=>{c(null),p(null);try{await O()}catch(D){c(D.message)}},w=f.productIds.length+f.setIds.length+f.scenarioIds.length,_=(O,D)=>m(H=>({...H,[O]:mre(H[O],D)})),A=O=>S(async()=>{let D=await are(e$(e,O,{inline:!0})),H=await bd(D);p(H?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=O=>window.open(e$(e,O),"_blank");return s?me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenario-collection"},me.default.createElement("div",null,me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),g?me.default.createElement(qEe,{collection:s,onCancel:()=>b(!1),onSave:async O=>{await k("","PATCH",{catalog:O},"Could not save the collection"),b(!1)}}):me.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},me.default.createElement("div",null,me.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},s.name),me.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},me.default.createElement("code",null,s.key),s.source_path?` \xB7 ${s.source_path}`:"",s.description?` \xB7 ${s.description}`:""),me.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")),me.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>b(!0)},"Rename"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>A({})},"Copy YAML"),n&&me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>S(async()=>{await k("/sync","POST",{direction:"push"},"Sync failed"),p("Written to storage.")})},"Write to storage"),me.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>S(async()=>{await $r({title:`Delete the collection ${s.key}?`,message:"Its products, sets and scenarios are deleted. The evaluations its sets became stay, with their runs.",confirmLabel:"Delete collection",danger:!0,requireText:s.key})&&(await no(x,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&me.default.createElement(Ca,{tone:"error"},u),d&&me.default.createElement(Ca,null,d),w>0&&me.default.createElement(Le,{padding:12,testId:"scenarios-selection-bar",style:{position:"sticky",top:8,zIndex:1}},me.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},w," selected"),me.default.createElement(ie,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>A(f)},"Copy YAML"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>m({productIds:[],setIds:[],scenarioIds:[]})},"Clear"),me.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&&me.default.createElement(Le,{testId:"scenarios-collection-empty"},me.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(O=>me.default.createElement(KEe,{key:O.id,product:O,collection:s,agents:t,projects:r,selection:f,onToggle:_,change:k,act:S,setNotice:p})),h?me.default.createElement(hre,{agents:t,projects:r,onCancel:()=>y(!1),onSave:async O=>{await k("/products","POST",{product:O},"Could not add the product"),y(!1)}}):me.default.createElement("div",null,me.default.createElement(ie,{size:"sm",onClick:()=>y(!0),testId:"scenarios-add-product"},"Add product"))):u?me.default.createElement(Ca,{tone:"error"},u):me.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function qEe({collection:e,onSave:t,onCancel:r}){let[n,o]=(0,me.useState)(e.name||""),[a,i]=(0,me.useState)(e.description||"");return me.default.createElement(VA,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},me.default.createElement(Tn,{label:"Name",value:n,onChange:o}),me.default.createElement(Tn,{label:"Description",value:a,onChange:i}))}function KEe({product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l}){let[u,c]=(0,me.useState)(!1),[d,p]=(0,me.useState)(!1),f=`/products/${e.id}`;return me.default.createElement(Le,{testId:"scenarios-product"},u?me.default.createElement(hre,{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)}}):me.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},me.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start"}},me.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}}),me.default.createElement("div",null,me.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),me.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},me.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&&me.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.description))),me.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},e.set_count," sets \xB7 ",e.scenario_count," scenarios"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),me.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>s(async()=>{await $r({title:`Delete product ${e.key}?`,message:`Its ${e.set_count} sets and their scenarios are deleted.`,confirmLabel:"Delete product",danger:!0})&&await i(f,"DELETE",void 0,"Could not delete the product")})},"Delete"))),me.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>me.default.createElement(VEe,{key:m.id,set:m,product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l})),d?me.default.createElement(yre,{onCancel:()=>p(!1),onSave:async m=>{await i(`${f}/sets`,"POST",{set:m},"Could not add the set"),p(!1)}}):me.default.createElement("div",null,me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function VEe({set:e,product:t,collection:r,agents:n,projects:o,selection:a,onToggle:i,change:s,act:l,setNotice:u}){let[c,d]=(0,me.useState)((e.scenarios||[]).length<=5),[p,f]=(0,me.useState)(!1),[m,g]=(0,me.useState)(null),b=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,y]=(0,me.useState)(b),x=`/sets/${e.id}`,v=()=>l(async()=>{let[k,S]=h.split(":"),w=k==="project"?{project_id:Number(S)}:k==="agent"?{agent_id:Number(S)}:{},_=await no(`/api/scenario_catalogs/${r.id}${x}/run`,{method:"POST",body:w,fallback:"The run could not start"});u(`Run #${_.run.id} of ${e.name} started; it shows under Evaluations as ${_.evaluation.name}.`)});return me.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},p?me.default.createElement(yre,{set:e,onCancel:()=>f(!1),onSave:async k=>{await s(x,"PATCH",{set:k},"Could not save the set"),f(!1)}}):me.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},me.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("input",{type:"checkbox","aria-label":`Select set ${e.key}`,checked:a.setIds.includes(e.id),onChange:()=>i("setIds",e.id)}),me.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),me.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},e.key),me.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"\xB7 ",e.scenario_count," scenarios"),e.judge?.kind&&me.default.createElement(be,null,`judge ${e.judge.kind}`),e.evaluation&&me.default.createElement("a",{href:"#",style:{fontSize:12},onClick:k=>{k.preventDefault(),st(`/evaluations/${e.evaluation.id}`)}},"evaluation",e.latest_run?` (latest run ${e.latest_run.status})`:"")),me.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("select",{value:h,onChange:k=>y(k.target.value),style:{fontSize:12,padding:4,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}},me.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&me.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(k=>me.default.createElement("option",{key:`project-${k.id}`,value:`project:${k.id}`},k.name))),n.length>0&&me.default.createElement("optgroup",{label:"Agents"},n.map(k=>me.default.createElement("option",{key:`agent-${k.id}`,value:`agent:${k.id}`},k.name)))),me.default.createElement(ie,{size:"sm",onClick:v,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>d(k=>!k)},c?"Hide":"Scenarios"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),me.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>l(async()=>{await $r({title:`Delete set ${e.key}?`,message:`Its ${e.scenario_count} scenarios are deleted. Its evaluation stays.`,confirmLabel:"Delete set",danger:!0})&&await s(x,"DELETE",void 0,"Could not delete the set")})},"Delete"))),c&&me.default.createElement("ul",{style:{listStyle:"none",margin:"10px 0 0",padding:0,display:"grid",gap:6}},(e.scenarios||[]).map(k=>m===k.id?me.default.createElement("li",{key:k.id},me.default.createElement(gre,{scenario:k,onCancel:()=>g(null),onSave:async S=>{await s(`${x}/scenarios/${k.id}`,"PATCH",S,"Could not save the scenario"),g(null)}})):me.default.createElement(GEe,{key:k.id,scenario:k,selected:a.scenarioIds.includes(k.id),onToggle:()=>i("scenarioIds",k.id),onEdit:()=>g(k.id),onDelete:()=>l(async()=>{await $r({title:`Delete scenario ${k.key}?`,confirmLabel:"Delete scenario",danger:!0})&&await s(`${x}/scenarios/${k.id}`,"DELETE",void 0,"Could not delete the scenario")})})),me.default.createElement("li",null,m==="new"?me.default.createElement(gre,{onCancel:()=>g(null),onSave:async k=>{await s(`${x}/scenarios`,"POST",k,"Could not add the scenario"),g(null)}}):me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{d(!0),g("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function GEe({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=cre(e.expectations);return me.default.createElement("li",{style:{display:"flex",gap:8,alignItems:"flex-start",padding:"6px 8px",borderRadius:6,background:"var(--color-surface)"},"data-testid":"scenarios-scenario"},me.default.createElement("input",{type:"checkbox","aria-label":`Select scenario ${e.key}`,checked:t,onChange:r,style:{marginTop:3}}),me.default.createElement("div",{style:{flex:1,minWidth:0}},me.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)",opacity:e.enabled?1:.6}},me.default.createElement("code",{style:{fontSize:11,color:"var(--color-text-secondary)"}},e.key)," ",e.prompt),(e.notes||a)&&me.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginTop:2}},e.notes,e.notes&&a?" \xB7 ":"",a&&me.default.createElement("span",{style:{fontFamily:U}},a)),me.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>me.default.createElement(be,{key:i},i)),e.production_only&&me.default.createElement(be,{tone:"warning"},"production only"),!e.enabled&&me.default.createElement(be,null,"disabled"))),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:n},"Edit"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function VA({children:e,onSave:t,onCancel:r,problem:n=null,testId:o}){let[a,i]=(0,me.useState)(!1),[s,l]=(0,me.useState)(null);return me.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&&me.default.createElement(Ca,{tone:"error"},s),me.default.createElement("div",{style:{display:"flex",gap:8}},me.default.createElement(ie,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function hre({product:e=null,agents:t,projects:r,onSave:n,onCancel:o}){let[a,i]=(0,me.useState)(e?.name||""),[s,l]=(0,me.useState)(e?.key||""),[u,c]=(0,me.useState)(e?.description||""),[d,p]=(0,me.useState)(e?.agent?String(e.agent.id):""),[f,m]=(0,me.useState)(e?.project?String(e.project.id):"");return me.default.createElement(VA,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:f}),testId:"scenarios-product-form"},me.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},me.default.createElement(Tn,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),me.default.createElement(Tn,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),me.default.createElement(Pd,{label:"Agent",value:d,onChange:p},me.default.createElement("option",{value:""},"None"),t.map(g=>me.default.createElement("option",{key:g.id,value:g.id},g.name))),me.default.createElement(Pd,{label:"Project",value:f,onChange:m},me.default.createElement("option",{value:""},"None"),r.map(g=>me.default.createElement("option",{key:g.id,value:g.id},g.name)))),me.default.createElement(Tn,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function yre({set:e=null,onSave:t,onCancel:r}){let[n,o]=(0,me.useState)(e?.name||""),[a,i]=(0,me.useState)(e?.key||""),[s,l]=(0,me.useState)(e?.description||""),[u,c]=(0,me.useState)(e?.judge?.kind||"");return me.default.createElement(VA,{onCancel:r,onSave:()=>t({name:n.trim(),key:a.trim(),description:s.trim(),...u?{judge:{kind:u}}:{}}),testId:"scenarios-set-form"},me.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},me.default.createElement(Tn,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),me.default.createElement(Tn,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),me.default.createElement(Pd,{label:"Judge",value:u,onChange:c},me.default.createElement("option",{value:""},"The evaluation's default"),me.default.createElement("option",{value:"rules"},"Rules (expectations only)"),me.default.createElement("option",{value:"llm"},"LLM judge (grades against the notes)"))),me.default.createElement(Tn,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function gre({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,me.useState)(()=>sre(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return me.default.createElement(VA,{onCancel:r,onSave:()=>t(lre(n)),problem:ure(n),testId:"scenarios-scenario-form"},me.default.createElement(Tn,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),me.default.createElement(Tn,{label:"Notes: the rubric, what a good answer does",value:n.notes,onChange:a("notes"),multiline:!0,rows:2}),me.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},me.default.createElement(Tn,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),me.default.createElement(Tn,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),me.default.createElement(Tn,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),me.default.createElement(Tn,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),me.default.createElement(Tn,{label:"Key",value:n.key,onChange:a("key"),placeholder:"made from the prompt when empty",mono:!0})),me.default.createElement("div",{style:{display:"flex",gap:16}},me.default.createElement(Mb,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),me.default.createElement(Mb,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var Tt=X(J());function r$({projects:e,collections:t,onAccepted:r}){let[n,o]=(0,Tt.useState)(""),[a,i]=(0,Tt.useState)(null),[s,l]=(0,Tt.useState)(null),[u,c]=(0,Tt.useState)({sandbox:null,modes:[]}),[d,p]=(0,Tt.useState)([]),[f,m]=(0,Tt.useState)(null),[g,b]=(0,Tt.useState)({collectionId:"",setId:""}),[h,y]=(0,Tt.useState)(null),[x,v]=(0,Tt.useState)(null),k=(0,Tt.useCallback)(async()=>{if(n)try{let[O,D,H,$]=await Promise.all([no(`/api/projects/${n}`,{fallback:"Could not load the project"}),no("/api/projects/capabilities").catch(()=>({})),no("/api/sandboxes").catch(()=>({})),no(`/api/explorations?project_id=${n}`,{fallback:"Could not list the project's explorations"})]),Z=O.project;i(Z),l((D.items||[]).find(P=>P.key==="model_credentials")||null);let N=Z?.sandbox?.session_id;c({sandbox:(H.sandboxes||[]).find(P=>P.session_id===N)||null,modes:H.browser_modes||[]}),p($.explorations||[]),v(null)}catch(O){v(O.message)}},[n]);(0,Tt.useEffect)(()=>{i(null),m(null),k()},[k]),(0,Tt.useEffect)(()=>{if(!g.collectionId){y(null);return}no(`/api/scenario_catalogs/${g.collectionId}`).then(O=>y(O.catalog)).catch(O=>v(O.message))},[g.collectionId]);let S=(h?.products||[]).flatMap(O=>(O.sets||[]).map(D=>({...D,product:O}))),w=S.find(O=>String(O.id)===String(g.setId)),_=async()=>{try{let D=(await no("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,H=await no(`/api/scenario_catalogs/${D}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),$=await no(`/api/scenario_catalogs/${D}/products/${H.product.id}/sets`,{method:"POST",body:{set:{name:"Explored",key:"explored",judge:{kind:"llm"}}},fallback:"Could not add the set"});r?.(),b({collectionId:String(D),setId:String($.set.id)})}catch(O){v(O.message)}},A=a?.sandbox_state==="ready",C=f||d[0]?.id;return Tt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-generator"},Tt.default.createElement(Le,null,Tt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Tt.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."),Tt.default.createElement(Pd,{label:"Project",value:n,onChange:o,testId:"scenarios-generator-project"},Tt.default.createElement("option",{value:""},"Choose a project\u2026"),e.map(O=>Tt.default.createElement("option",{key:O.id,value:O.id},O.name))),e.length===0&&Tt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"No projects yet. ",Tt.default.createElement("a",{href:"#",onClick:O=>{O.preventDefault(),st("/projects/new")}},"Create one")," from a repository first."))),x&&Tt.default.createElement(Ca,{tone:"error"},x),a&&Tt.default.createElement(Tt.default.Fragment,null,s&&!s.ok&&Tt.default.createElement(Ca,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",Tt.default.createElement("a",{href:"#",onClick:O=>{O.preventDefault(),st("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!A&&Tt.default.createElement(Ca,null,a.name,"'s sandbox is ",a.sandbox_state||"not booted",". The explorer walks the app the sandbox serves:"," ",Tt.default.createElement("a",{href:"#",onClick:O=>{O.preventDefault(),st(`/projects/${a.id}`)}},"boot it on the project's page"),"."),Tt.default.createElement(Pb,{projectId:a.id,sandboxReady:A,onStarted:O=>{m(O.id),k()}}),A&&u.sandbox&&u.modes.length>0&&Tt.default.createElement(en,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},Tt.default.createElement(Pf,{sandbox:u.sandbox,modes:u.modes})),Tt.default.createElement(en,{title:"Accept into",testId:"scenarios-generator-destination",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},Tt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Tt.default.createElement(Pd,{label:"Collection",value:g.collectionId,onChange:O=>b({collectionId:O,setId:""})},Tt.default.createElement("option",{value:""},"Choose a collection\u2026"),t.map(O=>Tt.default.createElement("option",{key:O.id,value:O.id},O.name))),Tt.default.createElement(Pd,{label:"Set",value:g.setId,onChange:O=>b(D=>({...D,setId:O}))},Tt.default.createElement("option",{value:""},h&&S.length===0?"The collection has no sets yet":"Choose a set\u2026"),S.map(O=>Tt.default.createElement("option",{key:O.id,value:O.id},O.product.name," / ",O.name)))),Tt.default.createElement("div",null,Tt.default.createElement(ie,{size:"sm",variant:"ghost",onClick:_},"New collection for ",a.name))),d.length===0?Tt.default.createElement(Le,null,Tt.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.")):Tt.default.createElement(Tt.default.Fragment,null,Tt.default.createElement(If,{explorations:d,selectedId:C,onOpen:O=>m(O.id)}),!w&&Tt.default.createElement(Ca,null,"Choose the set to accept into, above."),Tt.default.createElement(jf,{key:`${C}-${w?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:w?{id:w.id,label:`${w.product.name} / ${w.name}`}:null,onAccepted:()=>r?.()}))))}var Jt=X(J());var YEe=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],XEe=`catalog: support_desk +`)||v?.instructions||"",Hl=b.slice();y&&!Hl.some(le=>le.id===y)&&Hl.unshift({id:y,message_count:it.length});let vo=(c.trim().length>0||p.length>0)&&!C,Ts=D?.status==="awaiting_input",py=Ts?Ah(D.input_requests):[],fy=new Set(q.map(({request:le})=>le.id)),Dd=D&&!C&&D.status==="failed",Ub=D&&!C&&D.status==="complete"&&!Es(D)&&!y,al={background:a.cardBg,border:`1px solid ${a.cardBorder}`,borderRadius:"12px"},Hb={borderBottom:`1px solid ${a.cardBorder}`},qb={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontSize:"13px",fontFamily:It.mono,maxWidth:"260px"},my={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${m?aa:a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},gy=Hn("system",o),eE=x2(o);return Q.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},Q.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},be&&Q.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},Q.default.createElement("div",null,Q.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),Q.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",be.runs_used," of ",be.runs_limit," runs on the"," ",be.plan||"free"," plan. Upgrade to keep running agents."),Ce&&Q.default.createElement("p",{className:"text-sm text-red-600 mt-1"},Ce)),Q.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},Pa&&Q.default.createElement("a",{href:Pa,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),Q.default.createElement("button",{onClick:Hf,disabled:R,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},R?"Redirecting\u2026":"Upgrade to Pro"))),Q.default.createElement("div",{"data-testid":"runner-toolbar",style:al,className:"p-4 flex items-center gap-3 flex-wrap"},Q.default.createElement(wn,{size:40}),Q.default.createElement("div",{className:"min-w-0"},Q.default.createElement("div",{className:"font-semibold truncate",style:{color:a.textPrimary}},e.name),Q.default.createElement("div",{className:"text-xs font-mono",style:{color:a.textSecondary}},e.provider," / ",e.model)),Q.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},Q.default.createElement("select",{"data-testid":"runner-action-select",value:l,onChange:le=>io(le.target.value),disabled:C,className:"aa-field",style:qb,title:"Agent action to invoke"},s.map(le=>Q.default.createElement("option",{key:le,value:le},"#",le))),Q.default.createElement("select",{"data-testid":"runner-conversation-select",value:y??"",onChange:le=>Na(le.target.value),disabled:C,className:"aa-field",style:qb,title:"Conversation to continue"},Q.default.createElement("option",{value:""},"New conversation on first run"),Hl.map(le=>Q.default.createElement("option",{key:le.id,value:le.id},"Conversation #",le.id," \xB7 ",le.message_count??0," message",le.message_count===1?"":"s"))),Q.default.createElement(ka,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:a,onClick:Id,disabled:C,title:"Start an empty conversation for this action"},"+ New conversation"),Q.default.createElement(ka,{testId:"runner-back",variant:"secondary",size:"sm",colors:a,onClick:t},"\u2190 Back to editor"))),Q.default.createElement("div",{"data-testid":"runner-context",ref:Ea,style:al,className:"flex flex-col overflow-hidden"},Q.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:Hb},Q.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Q.default.createElement("h3",{className:"font-medium",style:{color:a.textPrimary}},"Context"),v&&Q.default.createElement("span",{className:"text-xs font-mono",style:{color:a.textMuted}},"#",v.id," \xB7 ",it.length," message",it.length===1?"":"s"),nt==="recording"&&Q.default.createElement("span",{"data-testid":"runner-recording-notice",className:"text-xs inline-flex items-center gap-1",style:{color:a.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."},Q.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),nt==="limit"&&Q.default.createElement("span",{"data-testid":"runner-recording-stopped",className:"text-xs",style:{color:a.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")),Q.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},Q.default.createElement(G2e,{run:D,darkMode:o,colors:a}),v&&Q.default.createElement(ka,{testId:"runner-replay",variant:"secondary",size:"sm",colors:a,onClick:()=>st(Ch("context",v.id)),disabled:C,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),Q.default.createElement("div",{className:"relative",ref:ge},Q.default.createElement(ka,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:a,onClick:()=>W(le=>!le),disabled:C,title:"Insert a message into the context without running"},"+ Add message"),E&&Q.default.createElement("div",{className:"absolute right-0 mt-1 z-10 py-1 rounded-lg shadow-lg",style:{background:a.cardBg,border:`1px solid ${a.borderStrong}`,minWidth:"180px"}},[["user","runner-add-user-message","User message"],["assistant","runner-add-assistant-message","Assistant message"]].map(([le,Le,ct])=>Q.default.createElement("button",{key:le,type:"button","data-testid":Le,onClick:()=>ol(le),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-black/5",style:{color:a.textCell,background:"none",border:"none",cursor:"pointer"}},ct)))))),Q.default.createElement("div",{ref:Fl,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},Q.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:()=>ae(le=>!le),title:ee?"Collapse system instructions":"Show system instructions"},Q.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},Q.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:gy.background,color:gy.color,textAlign:"center"}},gy.label)),Q.default.createElement("div",{className:"min-w-0 flex-1"},Ul?ee?Q.default.createElement("pre",{style:{...eE,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},Ul):Q.default.createElement("div",{className:"text-sm truncate",style:{color:a.textSecondary}},Ul.split(` +`).find(le=>le.trim())||""):Q.default.createElement("div",{className:"text-sm",style:{color:a.textMuted}},"No system instructions"),Q.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:a.textMuted}},"read-only \xB7 Edit in the Instructions tab")),Q.default.createElement(ree,{open:ee,color:a.textMuted})),S&&Q.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},S),it.length>0?Q.default.createElement("div",{className:"mt-3"},Q.default.createElement(Ss,{messages:it,darkMode:o,testIdPrefix:"runner-message",onUiAction:Ff,onEditMessage:Oa,onDeleteMessage:Wf})):!j&&!N&&!Dd&&Q.default.createElement("div",{"data-testid":"runner-context-empty",className:"text-sm text-center py-8",style:{color:a.textMuted}},"No messages yet \u2014 say something below to test the agent as a user."),j&&Q.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},Q.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},Q.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Hn("user",o).background,color:Hn("user",o).color,textAlign:"center"}},"User")),Q.default.createElement("div",{className:"min-w-0 flex-1"},Q.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:a.textPrimary}},j.content),Q.default.createElement(b2,{attachments:j.attachments,darkMode:o}))),D&&(C||D3(D).length>0)&&Q.default.createElement("div",{className:"mt-3 space-y-2"},Q.default.createElement(V2e,{run:D,darkMode:o,colors:a,expanded:$,onToggle:le=>T(Le=>({...Le,[le]:!Le[le]}))}),C&&!Ts&&Q.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:a.textSecondary}},Q.default.createElement("span",{className:"animate-pulse"},"\u25CF"),Q.default.createElement("span",null,D3(D).length>0?"Working\u2026":"Starting run\u2026"))),(py.length>0||q.length>0)&&Q.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},Ts&&Q.default.createElement("div",{className:"text-sm",style:{color:a.textSecondary}},"Paused for input: answer to continue this run."),py.filter(le=>!fy.has(le.id)).map(le=>Q.default.createElement(af,{key:le.id,request:le,showRunLink:!1,onSettled:Ye})),q.map(({request:le,outcome:Le})=>Q.default.createElement(af,{key:le.id,request:le,initialOutcome:Le,showRunLink:!1}))),M&&Q.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},M),Dd&&D.error_message&&Q.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:o?"rgba(239,68,68,0.12)":"#fef2f2",color:o?"#fca5a5":"#b91c1c"}},Q.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),Q.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},D.error_message)),Ub&&Q.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:a.innerBg,color:a.textPrimary}},Q.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:a.textMuted}},"Output"),Q.default.createElement(Ys,{text:D.output||"No output",darkMode:o,onUiAction:Ff})),N&&Q.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:a.innerBg,border:`1px solid ${a.cardBorder}`}},Q.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},Q.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:a.textMuted}},Q.default.createElement("span",{style:{color:a.textPrimary}},"Run #",N.id),Q.default.createElement(Nd,{tone:I3[N.status]||"neutral",darkMode:o},N.status),N.output_metadata?.model&&Q.default.createElement("span",null,N.output_metadata.provider,"/",N.output_metadata.model),N.duration_ms?Q.default.createElement("span",null,CA(N.duration_ms)):null,N.trace_id&&Q.default.createElement("a",{href:rt(`/traces?trace=${N.trace_id}`),className:"hover:underline",style:{color:a.textSecondary}},"trace:",N.trace_id.slice(0,8)," \u2192"),Q.default.createElement("span",null,"\xB7 no conversation attached")),Q.default.createElement("button",{type:"button",onClick:()=>P(null),className:"text-xs font-mono",style:{color:a.textMuted,background:"none",border:"none",cursor:"pointer"},title:"Close"},"[x]")),(N.input_prompt||N.input_preview)&&Q.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:a.textSecondary}},N.input_prompt||N.input_preview),N.error_message?Q.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:o?"#fca5a5":"#b91c1c"}},N.error_message):Q.default.createElement("div",{className:"text-sm",style:{color:a.textPrimary}},Q.default.createElement(Ys,{text:N.output||"No output",darkMode:o}))),F&&Q.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${a.borderStrong}`}},Q.default.createElement("div",{className:"flex items-center gap-2 mb-2"},Q.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Hn(F,o).background,color:Hn(F,o).color}},Hn(F,o).label),Q.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Added to the context without running the agent")),Q.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:Ee,onChange:le=>Ve(le.target.value),onKeyDown:le=>{le.key==="Escape"&&B(null),le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&rc()},placeholder:F==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...my,border:`1px solid ${a.inputBorder}`}}),Q.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},Q.default.createElement(ka,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:a,onClick:rc,disabled:fe||!Ee.trim()},fe?"Adding\u2026":`Add ${F} message`),Q.default.createElement(ka,{variant:"secondary",size:"sm",colors:a,onClick:()=>B(null),disabled:fe},"Cancel"),Vt&&Q.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},Vt))))),Q.default.createElement("div",{style:al,className:"p-4"},Q.default.createElement("div",{onDragOver:le=>{le.preventDefault(),m||g(!0)},onDragLeave:()=>g(!1),onDrop:le=>{le.preventDefault(),g(!1),C||zf(le.dataTransfer?.files)}},Q.default.createElement("textarea",{"data-testid":"runner-prompt",value:c,onChange:le=>d(le.target.value),onKeyDown:fa,placeholder:"Message the agent as a user\u2026 (\u2318/Ctrl+Enter to run \xB7 drop files here to attach)",rows:3,disabled:C,className:"aa-field",style:my})),Q.default.createElement(b2,{attachments:p,darkMode:o,testId:"runner-attachment-chip",onRemove:(le,Le)=>ly(Le),removeTestId:"runner-attachment-remove"}),Q.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},Q.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},Q.default.createElement("input",{ref:kt,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:le=>{zf(le.target.files),le.target.value=""}}),Q.default.createElement(ka,{testId:"runner-attach",variant:"secondary",size:"sm",colors:a,onClick:()=>kt.current?.click(),disabled:C,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),Q.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Press ",Q.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"\u2318")," + ",Q.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"Enter")," to run")),Q.default.createElement(ka,{testId:"runner-run",variant:"primary",colors:a,onClick:Wb,disabled:!vo},C&&Ts?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("span",{style:{fontFamily:It.mono}},"[?]")," Waiting for input"):C?Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:It.mono}},"[~]")," Running\u2026"):Q.default.createElement(Q.default.Fragment,null,Q.default.createElement("span",{style:{fontFamily:It.mono}},"[>]")," Run"))))),Q.default.createElement("div",{className:"space-y-4 min-w-0"},Q.default.createElement("div",{style:al,className:"p-4"},Q.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Configuration"),Q.default.createElement("dl",{className:"space-y-2 text-sm"},Q.default.createElement("div",{className:"flex justify-between"},Q.default.createElement("dt",{style:{color:a.textSecondary}},"Temperature"),Q.default.createElement("dd",{style:{color:a.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),Q.default.createElement(tee,{label:"Tools",names:e.tools||[],colors:a}),Q.default.createElement(tee,{label:"MCP",names:(e.mcp_servers||e.mcpServers||[]).map(K2e),colors:a}),Q.default.createElement("div",{className:"flex justify-between items-center gap-3"},Q.default.createElement("dt",{className:"shrink-0",style:{color:a.textSecondary}},"Checkout"),Q.default.createElement("dd",{className:"min-w-0"},Q.default.createElement("select",{"data-testid":"runner-checkout",value:K,onChange:le=>pe(le.target.value),onFocus:De,className:"text-xs rounded border px-1 py-0.5 max-w-[12rem]",style:{background:a.cardBg,borderColor:a.cardBorder,color:a.textPrimary}},Q.default.createElement("option",{value:""},"None"),L.map(le=>Q.default.createElement("option",{key:le.value,value:le.value},le.label))))),se&&!K&&Q.default.createElement("p",{className:"text-xs","data-testid":"runner-checkout-hint",style:{color:a.textMuted}},L.length?"Choose a checkout: the terminal, filesystem, edit and database tools act in it.":"The terminal, filesystem, edit and database tools act in a checkout. Boot one from a project's page, then choose it here."),Q.default.createElement("div",{className:"flex justify-between items-center"},Q.default.createElement("dt",{style:{color:a.textSecondary}},"Status"),Q.default.createElement("dd",null,Q.default.createElement(Nd,{tone:e.status==="active"?"success":"neutral",darkMode:o},e.status)))),e.instructions&&Q.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${a.cardBorder}`}},Q.default.createElement("div",{className:"text-xs mb-1.5",style:{color:a.textSecondary}},"System Instructions"),Q.default.createElement("p",{className:"text-xs whitespace-pre-wrap max-h-44 overflow-y-auto font-mono leading-relaxed",style:{color:a.textCell}},e.instructions))),Q.default.createElement("div",{style:al,className:"overflow-hidden"},Q.default.createElement("div",{className:"px-4 py-3",style:Hb},Q.default.createElement("h4",{className:"font-medium",style:{color:a.textPrimary}},"Recent Runs")),Q.default.createElement("div",{className:"max-h-64 overflow-auto"},_.length>0?Q.default.createElement("div",null,_.map(le=>Q.default.createElement("div",{key:le.id,"data-testid":"runner-recent-run",className:"px-4 py-3 cursor-pointer hover:bg-black/5",style:{borderBottom:`1px solid ${a.cardBorder}`},onClick:()=>Uf(le),title:Es(le)?"Open this run\u2019s conversation":"Show this run\u2019s output"},Q.default.createElement("div",{className:"flex items-center justify-between mb-1"},Q.default.createElement(Nd,{tone:I3[le.status]||"neutral",darkMode:o},le.status),Q.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},CA(le.duration_ms))),Q.default.createElement("p",{className:"text-sm truncate",style:{color:a.textCell}},le.input_preview||le.input_prompt?.substring(0,50)),Q.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:a.textMuted}},le.model&&Q.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:a.mutedBg,color:a.textSecondary}},le.model),Es(le)&&Q.default.createElement("span",{className:"font-mono"},"#",Es(le)),Q.default.createElement("span",null,new Date(le.created_at).toLocaleString()))))):Q.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:a.textMuted}},"No runs yet"))),Q.default.createElement("div",{style:al,className:"p-4"},Q.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Example Prompts"),Q.default.createElement("div",{className:"space-y-2"},W2e.map(le=>Q.default.createElement("button",{key:le,type:"button","data-testid":"runner-example-prompt",onClick:()=>d(le),className:"w-full text-left px-3 py-2 text-sm rounded-lg transition-colors hover:bg-black/5",style:{color:a.textCell,border:`1px solid ${a.cardBorder}`,background:"transparent",cursor:"pointer"}},le))))))}var Re=X(J());var AA=e=>new Date(`${e}T00:00:00`),Y2e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function j3({onSelectAgent:e}){let[t,r]=(0,Re.useState)(null),[n,o]=(0,Re.useState)(!0),[a,i]=(0,Re.useState)(30);(0,Re.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 Re.default.createElement("div",{className:"flex items-center justify-center h-64"},Re.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 Re.default.createElement("div",{className:"space-y-6"},Re.default.createElement("div",{className:"flex items-center justify-between"},Re.default.createElement("div",null,Re.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Re.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Re.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"},Y2e.map(p=>Re.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Re.default.createElement(xb,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Re.default.createElement(xb,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Re.default.createElement(xb,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Re.default.createElement(xb,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Re.default.createElement(xb,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Re.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Re.default.createElement("div",{className:"h-48"},Re.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((p,f)=>Re.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Re.default.createElement("div",{className:"relative w-full"},Re.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"}}),Re.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"))))),Re.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Re.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&AA(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Re.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&AA(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Re.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Re.default.createElement("div",{className:"h-48"},Re.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((p,f)=>Re.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Re.default.createElement("div",{className:"relative w-full"},Re.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"}}),Re.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"))))),Re.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Re.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&AA(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Re.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&AA(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Re.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Re.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Re.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 overflow-hidden"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 px-6 pt-6 pb-2"},"Top Agents"),t?.top_agents?.length>0?Re.default.createElement(Sf,{testId:"top-agents",identity:{key:"name",label:"Agent",unit:"By runs",render:p=>Re.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:10,minWidth:0}},Re.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--color-text-muted)",width:18,textAlign:"right"}},t.top_agents.indexOf(p)+1),Re.default.createElement("span",{className:"truncate"},p.name))},columns:[{key:"run_count",label:"Runs",unit:"In period",better:"higher",format:p=>l(p)},{key:"total_tokens",label:"Tokens",unit:"Total",better:"lower",band:"none",format:p=>l(p)},{key:"tokens_per_run",label:"Tokens",unit:"Per run",better:"lower",band:"none",value:p=>p.run_count?p.total_tokens/p.run_count:null,format:p=>p==null?"\u2014":l(Math.round(p))}],rows:t.top_agents,rowKey:p=>p.id,rowProps:p=>({onClick:()=>e?.(p),style:{cursor:"pointer"},"data-testid":"top-agent-row"}),defaultSort:"run_count"}):Re.default.createElement("div",{className:"py-8 px-6 text-center text-gray-400"},"No agent activity yet")),Re.default.createElement("div",{className:"space-y-6"},Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Re.default.createElement("div",{className:"space-y-3"},Object.entries(t.provider_breakdown).map(([p,f])=>{let m=t?.summary?.total_runs||1,g=(f/m*100).toFixed(1);return Re.default.createElement("div",{key:p},Re.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Re.default.createElement("span",{className:"capitalize text-gray-600"},p),Re.default.createElement("span",{className:"text-gray-900 font-medium"},f)),Re.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Re.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${g}%`}})))})):Re.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Re.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Re.default.createElement("div",{className:"space-y-4"},Re.default.createElement("div",{className:"flex justify-between items-center"},Re.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Re.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Re.default.createElement("div",{className:"flex justify-between items-center"},Re.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Re.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Re.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Re.default.createElement("div",{className:"flex justify-between items-center"},Re.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Re.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function xb({title:e,value:t,subtitle:r,color:n}){return Re.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`},Re.default.createElement("p",{className:"text-sm text-gray-500"},e),Re.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Re.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var re=X(J());var X2e=[{value:"",label:"All",title:"Every execution, however it started"},{value:"dashboard",label:"Dashboard",title:"Executions started from this dashboard"},{value:"reported",label:"Reported",title:"Executions reported by your app via telemetry"}],Z2e=[{value:"run",label:"Selected run"},{value:"all",label:"Sessions"}];function L3({agent:e,onBack:t}){let{timeWindow:r}=Nl(),{darkMode:n}=ut(),[o,a]=(0,re.useState)([]),[i,s]=(0,re.useState)([]),[l,u]=(0,re.useState)(null),[c,d]=(0,re.useState)(null),[p,f]=(0,re.useState)([]),[m,g]=(0,re.useState)("run"),[b,h]=(0,re.useState)(!1),[y,x]=(0,re.useState)(!1),v=(0,re.useRef)(!1),k=(0,re.useRef)(!1),[S,w]=(0,re.useState)("recent"),[_,A]=(0,re.useState)({}),[C,O]=(0,re.useState)(!0),[D,H]=(0,re.useState)(1),[j,Z]=(0,re.useState)(!0),[N,P]=(0,re.useState)(""),[M,I]=(0,re.useState)(""),[$,T]=(0,re.useState)("recent"),q=(0,re.useRef)(null),[G,L]=(0,re.useState)("detail"),Y=rt(`/agents/${e.id}/interactions`);(0,re.useEffect)(()=>{K()},[e.id,D,N,M,$,r.minutes]),(0,re.useEffect)(()=>{H(1)},[r.minutes]),(0,re.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(E=>E.json()).then(E=>s(E.interactions||[])).catch(()=>{}).finally(()=>x(!0))},[e.id]),(0,re.useEffect)(()=>{let E=()=>{let W=Qn(),F=W.match(/\/interactions\/runs\/(\d+)/),B=W.match(/\/interactions\/sessions\/(\d+)/);if(F)g("run"),d(null),De(parseInt(F[1],10),{updateUrl:!1});else if(B)g("all"),d({id:parseInt(B[1],10)});else if(W.endsWith("/interactions/sessions")||W.endsWith("/interactions/all"))W.endsWith("/all")&&window.history.replaceState({},"",W.replace(/\/all$/,"/sessions")),g("all"),d(null);else{v.current=!1,u(null),d(null),f([]);return}v.current=!0};return E(),window.addEventListener("popstate",E),()=>window.removeEventListener("popstate",E)},[e.id]),(0,re.useEffect)(()=>{v.current||k.current||!b||!y||g(o.length===0&&i.length>0?"all":"run")},[b,y,o.length,i.length]);let K=async()=>{O(!0);try{let E=new URLSearchParams({page:D.toString(),per_page:"20",minutes:String(r.minutes)});N&&E.append("status",N),M&&E.append("source",M),$!=="recent"&&E.append("sort",$);let F=await(await fetch(`/api/agents/${e.id}/runs?${E}`)).json();a(D===1?F.runs:B=>[...B,...F.runs]),Z(F.runs.length===20)}catch(E){console.error("Failed to load runs:",E)}finally{O(!1),h(!0)}},pe=E=>{window.location.pathname!==E&&window.history.pushState({},"",E)},De=async(E,{updateUrl:W=!0}={})=>{try{let B=await(await fetch(`/api/runs/${E}`)).json();u(B.run),f(B.messages||[]),g("run"),d(null),L("detail"),W&&pe(`${Y}/runs/${E}`)}catch(F){console.error("Failed to load run details:",F)}},se=E=>{if(E.source==="reported"){let W=E.trace_id||String(E.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",rt(`/traces/${W}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:rt(`/traces/${W}`)}}));return}De(E.record_id||E.id)},be=()=>{u(null),d(null),f([]),g("run"),pe(Y)},ue=E=>{g("all"),L("detail"),E?(d({id:E.id,name:E.display_name}),pe(`${Y}/sessions/${E.id}`)):(d(null),pe(`${Y}/sessions`))},R=E=>{k.current=!0,g(E),pe(E==="all"?c?`${Y}/sessions/${c.id}`:`${Y}/sessions`:l?`${Y}/runs/${l.id}`:Y)},we=c?c.name||i.find(E=>E.id===c.id)?.display_name||`Session #${c.id}`:null,Ce=()=>{let E=new Map;o.forEach(B=>{let Ee=`${B.model||"unknown"}|${B.instructions_digest||"none"}`;E.has(Ee)||E.set(Ee,{key:Ee,model:B.model,instructionsDigest:B.instructions_digest,instructionsVersion:B.instructions_version,instructionsCodename:B.instructions_codename,instructionsPreview:B.instructions_preview,runs:[]}),E.get(Ee).runs.push(B)});let W=[...E.values()].map(B=>({...B,count:B.runs.length,completed:B.runs.filter(Ee=>Ee.status==="complete").length,failed:B.runs.filter(Ee=>Ee.status==="failed").length,totalTokens:B.runs.reduce((Ee,Ve)=>Ee+(Ve.tokens||0),0),avgTokens:B.runs.reduce((Ee,Ve)=>Ee+(Ve.tokens||0),0)/B.runs.length,avgDuration:B.runs.reduce((Ee,Ve)=>Ee+(Ve.duration_ms||0),0)/B.runs.length,latest:B.runs[0],sortedRuns:[...B.runs].sort((Ee,Ve)=>(Ve.duration_ms||0)-(Ee.duration_ms||0))}));W.sort((B,Ee)=>S==="longest"?Ee.avgDuration-B.avgDuration:new Date(Ee.latest.created_at)-new Date(B.latest.created_at));let F={runs:o.length,completed:o.filter(B=>B.status==="complete").length,tokens:o.reduce((B,Ee)=>B+(Ee.tokens||0),0),avgDuration:o.length?o.reduce((B,Ee)=>B+(Ee.duration_ms||0),0)/o.length:0,models:[...new Set(o.map(B=>B.model).filter(Boolean))]};return{cohorts:W,totals:F}},z=E=>E?E<1e3?`${E}ms`:E<6e4?`${(E/1e3).toFixed(1)}s`:`${Math.floor(E/6e4)}m ${Math.floor(E%6e4/1e3)}s`:"-",ee=E=>E==null?"\u2014":E===0?"$0":E<.01?`$${E.toFixed(4)}`:`$${E.toFixed(2)}`,ae=E=>{let W=new Date(E),B=new Date-W,Ee=Math.floor(B/6e4),Ve=Math.floor(B/36e5),fe=Math.floor(B/864e5);return Ee<1?"Just now":Ee<60?`${Ee}m ago`:Ve<24?`${Ve}h ago`:fe<7?`${fe}d ago`:W.toLocaleDateString()};return re.default.createElement("div",{className:"flex h-full"},re.default.createElement("div",{className:`${G==="list"?"flex":"hidden"} lg:flex w-full lg:w-80 lg:border-r aa-border flex-col aa-bg-card`,"data-testid":"agent-runs-pane"},re.default.createElement("div",{className:"p-4 border-b aa-border"},re.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},re.default.createElement("button",{onClick:t,className:"p-1 aa-text-muted hover:aa-text-secondary transition-colors"},re.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),re.default.createElement("div",{className:"min-w-0"},re.default.createElement("h2",{className:"font-semibold aa-text-primary"},"Agent Interactions"),re.default.createElement("p",{className:"text-sm aa-text-secondary truncate"},e.name)),re.default.createElement("button",{type:"button",onClick:()=>L("detail"),className:"lg:hidden ml-auto px-2 py-1 text-xs rounded-md aa-text-secondary hover:aa-text-primary hover:aa-bg-hover transition-colors whitespace-nowrap","data-testid":"agent-runs-show-detail"},l&&m==="run"?`Run #${l.id} \u2192`:"Report \u2192")),re.default.createElement("div",{className:"mb-2"},re.default.createElement(Vs,{compact:!0})),re.default.createElement(Oo,{options:X2e,value:M,onChange:E=>{I(E),H(1)},style:{marginBottom:8}}),re.default.createElement("select",{value:N,onChange:E=>{P(E.target.value),H(1)},className:"w-full px-3 py-2 border aa-border aa-bg-card aa-text-primary rounded-lg text-sm focus:ring-2 focus:ring-red-500"},re.default.createElement("option",{value:""},"All statuses"),re.default.createElement("option",{value:"complete"},"Completed"),re.default.createElement("option",{value:"failed"},"Failed"),re.default.createElement("option",{value:"running"},"Running"),re.default.createElement("option",{value:"cancelled"},"Cancelled")),re.default.createElement("select",{value:$,onChange:E=>{T(E.target.value),H(1)},className:"w-full mt-2 px-3 py-2 border aa-border aa-bg-card aa-text-primary rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},re.default.createElement("option",{value:"recent"},"Most recent"),re.default.createElement("option",{value:"longest"},"Longest running"),re.default.createElement("option",{value:"cost"},"Highest cost"),re.default.createElement("option",{value:"tokens"},"Most tokens"))),re.default.createElement("div",{className:"flex-1 overflow-auto"},C&&o.length===0?re.default.createElement("div",{className:"flex items-center justify-center h-32"},re.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):o.length>0?re.default.createElement(re.default.Fragment,null,o.map(E=>{let W=E.source==="reported";return re.default.createElement("div",{key:E.id,onClick:()=>se(E),title:W?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b aa-border-light cursor-pointer transition-colors ${!W&&l?.id===E.id?"aa-bg-accent-tint border-l-4 border-l-red-500":"hover:aa-bg-hover"}`},re.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},re.default.createElement(ve,{tone:ml(E.status)},E.status),re.default.createElement("div",{className:"flex items-center gap-2"},re.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${W?"bg-blue-100 text-blue-700":"aa-bg-muted aa-text-secondary"}`},W?"reported":"dashboard"),re.default.createElement("span",{className:"text-xs aa-text-muted"},ae(E.created_at||E.occurred_at)),!W&&re.default.createElement(bd,{kind:"run",id:E.id,title:"Replay this run"}))),re.default.createElement("p",{className:"text-sm aa-text-cell truncate"},E.input_preview||E.input_prompt?.substring(0,60)||(W?`${E.action_name||"execution"} \xB7 trace ${String(E.trace_id||"").slice(0,8)}`:"No input")),re.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs aa-text-muted flex-wrap gap-y-1"},E.model&&re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},E.model),re.default.createElement("span",{className:$==="longest"?"aa-text-cell font-medium":void 0},z(E.duration_ms)),!!E.tokens&&re.default.createElement("span",{className:$==="tokens"?"aa-text-cell font-medium":void 0},E.tokens," tokens"),E.cost!=null&&re.default.createElement("span",{className:$==="cost"?"aa-text-cell font-medium":void 0,title:"Estimated from token counts at this model's published rates"},ee(E.cost))))}),j&&re.default.createElement("button",{onClick:()=>H(E=>E+1),disabled:C,className:"w-full py-3 text-sm text-red-600 hover:aa-bg-hover transition-colors"},C?"Loading...":"Load More")):re.default.createElement("div",{className:"p-8 text-center aa-text-muted"},re.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 aa-text-muted",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.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"})),re.default.createElement("p",null,"No conversations yet")))),re.default.createElement("div",{className:`${G==="detail"?"flex":"hidden"} lg:flex flex-1 min-w-0 flex-col aa-bg-background`,"data-testid":"agent-runs-detail"},re.default.createElement("div",{className:"px-4 py-2 aa-bg-card border-b aa-border-light flex items-center gap-1.5 text-xs aa-text-secondary flex-wrap"},re.default.createElement("button",{type:"button",onClick:()=>L("list"),className:"lg:hidden mr-1 px-2 py-1 rounded-md aa-text-secondary hover:aa-text-primary hover:aa-bg-hover transition-colors whitespace-nowrap","data-testid":"agent-runs-show-list"},"\u2261 Runs"),re.default.createElement("button",{onClick:t,className:"hover:aa-text-primary hover:underline transition-colors"},e.name),re.default.createElement("span",{className:"aa-text-muted"},"/"),m==="all"||l?re.default.createElement(re.default.Fragment,null,re.default.createElement("button",{onClick:be,className:"hover:aa-text-primary hover:underline transition-colors"},"Interactions"),re.default.createElement("span",{className:"aa-text-muted"},"/"),m==="all"?c?re.default.createElement(re.default.Fragment,null,re.default.createElement("button",{onClick:()=>ue(null),className:"hover:aa-text-primary hover:underline transition-colors"},"Sessions"),re.default.createElement("span",{className:"aa-text-muted"},"/"),re.default.createElement("span",{className:"aa-text-primary font-medium"},we)):re.default.createElement("span",{className:"aa-text-primary font-medium"},"Sessions"):re.default.createElement("span",{className:"aa-text-primary font-medium"},"Run #",l.id)):re.default.createElement("span",{className:"aa-text-primary font-medium"},"Interactions")),re.default.createElement("div",{className:"p-3 max-md:px-4 max-md:py-2 aa-bg-card border-b aa-border flex items-center justify-between gap-2 flex-wrap"},re.default.createElement(Oo,{options:Z2e,value:m,onChange:R}),m==="run"&&l&&re.default.createElement(ve,{tone:ml(l.status),size:12},l.status)),m==="all"?re.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:E}=Ce();return re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-4 space-y-3"},re.default.createElement("div",{className:"flex items-center gap-3"},re.default.createElement(wn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-semibold aa-text-primary"},e.name),re.default.createElement("p",{className:"text-xs aa-text-secondary"},c?`${we} \u2014 one persisted interaction stream`:"Sessions group this agent\u2019s runs into persisted interaction streams"))),re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Runs"),re.default.createElement("p",{className:`text-lg ${Ku} font-bold aa-text-primary`},E.runs)),re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Success"),re.default.createElement("p",{className:`text-lg ${Ku} font-bold aa-text-primary`},E.runs?Math.round(E.completed/E.runs*100):0,"%")),re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Avg Duration"),re.default.createElement("p",{className:`text-lg ${Ku} font-bold aa-text-primary`},z(Math.round(E.avgDuration)))),re.default.createElement("div",{className:"aa-bg-muted rounded-lg p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Tokens"),re.default.createElement("p",{className:`text-lg ${Ku} font-bold aa-text-primary`},E.tokens.toLocaleString()))))})(),re.default.createElement(Yu,{agentId:e.id,embedded:!0,selectedSessionId:c?.id??null,onSelectSession:ue})):l?re.default.createElement(re.default.Fragment,null,re.default.createElement("div",{className:"p-4 aa-bg-card border-b aa-border"},re.default.createElement("div",{className:"flex items-center space-x-3"},re.default.createElement(wn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-medium aa-text-primary"},e.name," \u2014 Run #",l.id),re.default.createElement("p",{className:"text-xs aa-text-secondary"},new Date(l.created_at).toLocaleString())))),re.default.createElement("div",{ref:q,className:"flex-1 overflow-auto p-4 md:p-6"},re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border shadow-sm p-4"},p.length>0?re.default.createElement(Ss,{messages:p,darkMode:n}):re.default.createElement(Ss,{darkMode:n,messages:[{id:`run-${l.id}-input`,role:"user",content:l.input_prompt||l.input_preview,created_at:l.created_at},{id:`run-${l.id}-output`,role:"assistant",content:l.error_message||l.output||l.output_preview||"No response",created_at:l.completed_at||l.created_at}]}))),re.default.createElement("div",{className:"p-4 aa-bg-card border-t aa-border"},re.default.createElement("div",{className:"flex flex-wrap items-center justify-center gap-x-8 gap-y-1 text-sm aa-text-secondary"},re.default.createElement("span",null,"Duration: ",z(l.duration_ms)),l.total_tokens&&re.default.createElement("span",null,"Tokens: ",l.total_tokens),l.input_tokens&&l.output_tokens&&re.default.createElement("span",null,"Input: ",l.input_tokens," / Output: ",l.output_tokens),l.trace_id&&re.default.createElement("a",{href:rt(`/traces?trace=${l.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${l.trace_id} \u2014 open in Traces`},"trace:",l.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:E,totals:W}=Ce();return E.length===0?re.default.createElement("div",{className:"flex-1 flex items-center justify-center"},re.default.createElement("div",{className:"text-center aa-text-muted"},re.default.createElement(wn,{size:100}),re.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):re.default.createElement("div",{className:"flex-1 overflow-auto p-4 md:p-6 space-y-5"},re.default.createElement("div",{className:"flex items-center gap-3"},re.default.createElement(wn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-semibold aa-text-primary max-md:text-sm"},"Agent Report"),re.default.createElement("p",{className:"text-xs aa-text-secondary"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Runs"),re.default.createElement("p",{className:`text-xl ${Ku} font-bold aa-text-primary`},W.runs)),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Success"),re.default.createElement("p",{className:`text-xl ${Ku} font-bold aa-text-primary`},W.runs?Math.round(W.completed/W.runs*100):0,"%")),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Avg Duration"),re.default.createElement("p",{className:`text-xl ${Ku} font-bold aa-text-primary`},z(Math.round(W.avgDuration)))),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border p-3"},re.default.createElement("p",{className:`text-xs aa-text-secondary ${go}`},"Tokens"),re.default.createElement("p",{className:`text-xl ${Ku} font-bold aa-text-primary`},W.tokens.toLocaleString()))),W.models.length>0&&re.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},re.default.createElement("span",{className:"aa-text-secondary"},"Models used:"),W.models.map(F=>re.default.createElement("span",{key:F,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},F))),i.length>0&&re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b aa-border-light max-md:px-3 max-md:py-2 max-md:aa-bg-muted"},re.default.createElement("span",{className:"text-xs uppercase tracking-wide aa-text-muted max-md:font-mono max-md:text-[11px] max-md:font-semibold max-md:tracking-[0.05em] max-md:aa-text-secondary"},"Sessions \u2014 grouped interaction streams")),re.default.createElement("div",{className:"divide-y aa-divide-light"},i.map(F=>re.default.createElement("div",{key:F.id,className:"px-4 py-3 hover:aa-bg-hover cursor-pointer flex flex-wrap items-center justify-between gap-3",onClick:()=>ue(F),title:"Open this session's interaction stream"},re.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:F.display_name},re.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),re.default.createElement("span",{className:"text-sm aa-text-primary truncate"},F.agent?.name||F.agent_name),F.action_name&&re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",F.action_name)),re.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs aa-text-muted flex-shrink-0"},re.default.createElement("span",null,F.message_count," messages"),re.default.createElement("span",null,(F.tokens?.total||0).toLocaleString()," tokens"),re.default.createElement("span",null,ae(F.last_activity_at)),re.default.createElement(bd,{kind:"context",id:F.id,title:"Replay this conversation"})))))),re.default.createElement("div",{className:"aa-bg-card rounded-xl border aa-border overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b aa-border-light max-md:px-3 max-md:py-2 max-md:aa-bg-muted flex items-center justify-between max-md:flex-wrap max-md:gap-2"},re.default.createElement("span",{className:"text-xs uppercase tracking-wide aa-text-muted max-md:font-mono max-md:text-[11px] max-md:font-semibold max-md:tracking-[0.05em] max-md:aa-text-secondary"},"Interactions by instructions \xD7 model"),re.default.createElement("select",{value:S,onChange:F=>w(F.target.value),className:"text-xs border aa-border aa-bg-card rounded px-2 py-1 aa-text-secondary"},re.default.createElement("option",{value:"recent"},"Most recent"),re.default.createElement("option",{value:"longest"},"Longest interactions"))),re.default.createElement("div",{className:"divide-y aa-divide-light"},E.map(F=>re.default.createElement("div",{key:F.key},re.default.createElement("div",{className:"px-4 py-3 hover:aa-bg-hover cursor-pointer",onClick:()=>A(B=>({...B,[F.key]:!B[F.key]})),title:"Show this configuration's runs"},re.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},F.model||"unknown model"),re.default.createElement("span",{className:"text-xs aa-text-muted font-mono",title:F.instructionsDigest?`sha:${F.instructionsDigest}`:void 0},"instructions"," ",F.instructionsDigest?[F.instructionsVersion,F.instructionsCodename||F.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),F.instructionsPreview&&re.default.createElement("p",{className:"text-xs aa-text-secondary mt-1 truncate"},F.instructionsPreview),re.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs aa-text-muted flex-wrap gap-y-1"},re.default.createElement("span",null,F.count," run",F.count>1?"s":""),re.default.createElement("span",{className:F.failed>0?"text-red-500":"text-green-600"},F.count?Math.round(F.completed/F.count*100):0,"% success"),re.default.createElement("span",null,"avg ",z(Math.round(F.avgDuration))),re.default.createElement("span",null,"avg ",Math.round(F.avgTokens).toLocaleString()," tokens"),re.default.createElement("span",null,"last ",ae(F.latest.created_at)))),_[F.key]&&re.default.createElement("div",{className:"aa-bg-muted divide-y aa-divide-light border-t aa-border-light"},F.sortedRuns.map(B=>re.default.createElement("div",{key:B.id,className:"px-6 py-2 hover:aa-bg-hover cursor-pointer",onClick:()=>De(B.id),title:"Open this run's interaction"},re.default.createElement("p",{className:"text-xs aa-text-cell truncate"},B.input_preview||"No input"),re.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] aa-text-muted"},re.default.createElement("span",{className:B.status==="failed"?"text-red-500":""},B.status),re.default.createElement("span",null,z(B.duration_ms)),B.tokens&&re.default.createElement("span",null,B.tokens.toLocaleString()," tokens"),re.default.createElement("span",null,ae(B.created_at)))))))))))})()))}var pt=X(J());var J2e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function z3({onUseTemplate:e,onClose:t}){let[r,n]=(0,pt.useState)([]),[o,a]=(0,pt.useState)([]),[i,s]=(0,pt.useState)(""),[l,u]=(0,pt.useState)(null),[c,d]=(0,pt.useState)(!0),[p,f]=(0,pt.useState)(!1),[m,g]=(0,pt.useState)(null);(0,pt.useEffect)(()=>{b()},[i]);let b=async()=>{d(!0);try{let y=new URLSearchParams;i&&y.append("category",i);let v=await(await fetch(`/api/templates?${y}`)).json();n(v.templates),a(v.categories)}catch(y){console.error("Failed to load templates:",y)}finally{d(!1)}},h=async y=>{f(!0),g(null);try{let x=await fetch(`/api/templates/${y.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:y.name})});if(x.ok){let v=await x.json();e(v.agent)}else{let v=`Could not create the agent (HTTP ${x.status})`;try{let k=await x.json(),S=k.errors||k.error;S&&(v=Array.isArray(S)?S.join(", "):String(S))}catch{}g(v)}}catch(x){console.error("Failed to create agent from template:",x),g("Could not create the agent \u2014 check your connection and try again.")}finally{f(!1)}};return pt.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},pt.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},pt.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},pt.default.createElement("div",null,pt.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),pt.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),pt.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},pt.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),pt.default.createElement("div",{className:"flex-1 flex overflow-hidden"},pt.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},pt.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),pt.default.createElement("div",{className:"space-y-1"},pt.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(y=>pt.default.createElement("button",{key:y,onClick:()=>s(y),className:`w-full text-left px-3 py-2 rounded-lg text-sm flex items-center space-x-2 transition-colors ${i===y?"bg-red-50 text-red-600":"text-gray-600 hover:bg-gray-50"}`},pt.default.createElement("span",null,J2e[y]||"\u{1F4E6}"),pt.default.createElement("span",{className:"capitalize"},y))))),pt.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?pt.default.createElement("div",{className:"flex items-center justify-center h-full"},pt.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?pt.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(y=>pt.default.createElement("div",{key:y.id,onClick:()=>u(y),className:`bg-white rounded-xl border-2 p-4 cursor-pointer transition-all hover:shadow-lg ${l?.id===y.id?"border-red-500 ring-2 ring-red-100":"border-gray-200 hover:border-gray-300"}`},pt.default.createElement("div",{className:"flex items-start space-x-3"},pt.default.createElement("div",{className:"flex-shrink-0"},pt.default.createElement(wn,{size:60})),pt.default.createElement("div",{className:"flex-1 min-w-0"},pt.default.createElement("div",{className:"flex items-center space-x-2"},pt.default.createElement("span",{className:"text-lg"},y.icon),pt.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},y.name)),pt.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},y.description),pt.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},pt.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},y.category),y.featured&&pt.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):pt.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&pt.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},pt.default.createElement("div",{className:"flex justify-center mb-4"},pt.default.createElement(wn,{size:120})),pt.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),pt.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),pt.default.createElement("div",{className:"mt-6 space-y-4"},pt.default.createElement("div",null,pt.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),pt.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&pt.default.createElement("div",null,pt.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),pt.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(y=>pt.default.createElement("span",{key:y,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},y)))),pt.default.createElement("div",null,pt.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),pt.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),pt.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&&pt.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var lt=X(J());function B3({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={},open:l=!1,onClose:u}){let{darkMode:c}=ut(),[d,p]=(0,lt.useState)(!1),f=(0,lt.useRef)(null);(0,lt.useEffect)(()=>{function v(k){f.current&&!f.current.contains(k.target)&&p(!1)}return document.addEventListener("mousedown",v),()=>document.removeEventListener("mousedown",v)},[]);let m=o?.name||"My Workspace",g=a?.name||a?.email?.split("@")[0]||"User",b={agentCount:r,pendingInputCount:n},h=v=>{let k=v.badge?b[v.badge]:void 0;return v.badgeTone==="attention"&&!k?void 0:k},y=SX(s).map(v=>({...v,items:v.items.map(k=>({id:k.view,label:k.label,icon:k.glyph??Vo.nav[k.icon],badge:h(k),badgeTone:k.badgeTone,badgeTitle:k.badgeTitle}))})),x=({item:v})=>lt.default.createElement("button",{onClick:()=>t(v.id),className:`w-full flex items-center justify-between py-3 rounded-lg text-left transition-colors ${v.indent?"pl-10 pr-4":"px-4"}`,style:{backgroundColor:e===v.id?c?"rgba(239, 68, 68, 0.15)":"#fef2f2":"transparent",color:e===v.id?"#ef4444":c?"#d1d5db":"#374151"},onMouseEnter:k=>{e!==v.id&&(k.currentTarget.style.backgroundColor=c?"#252525":"#f3f4f6")},onMouseLeave:k=>{e!==v.id&&(k.currentTarget.style.backgroundColor="transparent")}},lt.default.createElement("div",{className:"flex items-center space-x-3"},lt.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"12px",width:"20px",textAlign:"center"}},v.icon),lt.default.createElement("span",{className:"font-medium"},v.label)),v.badge!==void 0&&v.badgeTone==="attention"&<.default.createElement("span",{"data-testid":`nav-badge-${v.id}`,className:"px-2 py-0.5 text-xs rounded-full font-semibold",title:`${v.badge} ${v.badgeTitle||""}`.trim(),"aria-label":`${v.badge} ${v.badgeTitle||""}`.trim(),style:{backgroundColor:"var(--color-warning-soft)",color:"var(--color-warning-text)"}},v.badge),v.badge!==void 0&&v.badgeTone!=="attention"&<.default.createElement("span",{className:"px-2 py-0.5 text-xs rounded-full",style:{backgroundColor:e===v.id?"#fee2e2":c?"#2a2a2a":"#f3f4f6",color:e===v.id?"#ef4444":c?"#d1d5db":"#4b5563"}},v.badge));return lt.default.createElement(lt.default.Fragment,null,l&<.default.createElement("div",{className:"fixed inset-0 z-40 bg-black/40 md:hidden","data-testid":"sidebar-backdrop","aria-hidden":"true",onClick:u}),lt.default.createElement("aside",{"data-testid":"sidebar","data-open":l?"true":"false",className:`w-64 border-r flex flex-col max-md:fixed max-md:inset-y-0 max-md:left-0 max-md:z-50 max-md:overflow-y-auto max-md:transition-[transform,visibility] max-md:duration-200 max-md:ease-out ${l?"max-md:translate-x-0 max-md:shadow-xl":"max-md:-translate-x-full max-md:invisible"}`,style:{backgroundColor:c?"#1a1a1a":"#ffffff",borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:c?"#2a2a2a":"#e5e7eb"},ref:f},lt.default.createElement("button",{type:"button",onClick:u,className:"md:hidden mr-1 p-2 -ml-2 rounded-lg flex-shrink-0",style:{color:c?"#9ca3af":"#6b7280"},"aria-label":"Close navigation","data-testid":"sidebar-close"},lt.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}))),lt.default.createElement("button",{onClick:()=>p(!d),className:"w-full flex items-center justify-between px-2 py-2 rounded-lg transition-colors",style:{backgroundColor:d?c?"#252525":"#f3f4f6":"transparent"}},lt.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},lt.default.createElement(wn,{size:28}),lt.default.createElement("span",{className:`font-semibold truncate ${c?"text-white":"text-gray-900"}`},m)),lt.default.createElement("svg",{className:`w-4 h-4 flex-shrink-0 transition-transform ${d?"rotate-180":""}`,style:{color:c?"#9ca3af":"#6b7280"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),d&<.default.createElement("div",{className:"absolute left-4 right-4 top-14 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:c?"#1a1a1a":"#ffffff",borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:"flex items-center space-x-3"},lt.default.createElement(wn,{size:32}),lt.default.createElement("div",{className:"min-w-0"},lt.default.createElement("div",{className:`font-medium truncate ${c?"text-white":"text-gray-900"}`},m)))),lt.default.createElement("div",{className:"py-1"},lt.default.createElement("button",{onClick:()=>{t("settings"),p(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${c?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},lt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.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"}),lt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),lt.default.createElement("span",null,"Settings")),lt.default.createElement("button",{onClick:()=>{t("organization"),p(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${c?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},lt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.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"})),lt.default.createElement("span",null,"Organization"))),lt.default.createElement("div",{className:"border-t py-1",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${c?"text-gray-300":"text-gray-700"}`},lt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},lt.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"})),lt.default.createElement("span",{className:"text-sm"},g))))),lt.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},y.map(v=>{let k=lt.default.createElement("div",{className:"space-y-1"},v.items.map(S=>lt.default.createElement(x,{key:S.id,item:S})));return v.label?lt.default.createElement("div",{key:v.id,className:"pt-4"},lt.default.createElement("div",{className:"px-4 pb-2"},lt.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${c?"text-gray-500":"text-gray-400"}`},v.label)),k):lt.default.createElement(lt.default.Fragment,{key:v.id},k)})),lt.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${c?"text-gray-500":"text-gray-400"}`},"Resources"),lt.default.createElement("div",{className:"space-y-2"},lt.default.createElement("a",{href:"https://docs.activeagents.ai",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${c?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},lt.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Vo.nav.docs),lt.default.createElement("span",null,"Documentation")),lt.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 ${c?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},lt.default.createElement("span",{style:{fontFamily:It.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Vo.nav.github),lt.default.createElement("span",null,"GitHub")))),lt.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:c?"#2a2a2a":"#e5e7eb"}},lt.default.createElement("div",{className:`text-xs ${c?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:""))))}var or=X(J());function F3({user:e,account:t,onOpenNav:r}){let{darkMode:n,toggleDarkMode:o}=ut(),[a,i]=(0,or.useState)(!1),s=(0,or.useRef)(null);(0,or.useEffect)(()=>{function f(m){s.current&&!s.current.contains(m.target)&&i(!1)}return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[]);let l=window.ACTIVE_AGENT_DASHBOARD?.meta?.signOutPath,u=window.ACTIVE_AGENT_DASHBOARD?.meta?.userMenuLinks||[],c=()=>{if(!l)return;let f=document.querySelector('meta[name="csrf-token"]')?.content,m=document.createElement("form");m.method="POST",m.action=l;let g=document.createElement("input");g.type="hidden",g.name="_method",g.value="delete",m.appendChild(g);let b=document.createElement("input");b.type="hidden",b.name="authenticity_token",b.value=f,m.appendChild(b),document.body.appendChild(m),m.submit()},d=e?.name||e?.email?.split("@")[0]||"User",p=d.charAt(0).toUpperCase();return or.default.createElement("header",{className:"h-16 border-b flex items-center justify-between gap-3 px-4 md:px-6",style:{backgroundColor:n?"#1a1a1a":"#ffffff",borderColor:n?"#2a2a2a":"#e5e7eb"}},or.default.createElement("div",{className:"flex items-center space-x-4 min-w-0"},or.default.createElement("button",{type:"button",onClick:r,className:"md:hidden flex items-center gap-2 min-w-0 p-2 -ml-2 rounded-lg transition-colors",style:{color:n?"#d1d5db":"#374151"},"aria-label":"Open navigation","data-testid":"open-nav"},or.default.createElement("svg",{className:"w-5 h-5 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},or.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})),or.default.createElement("span",{className:`font-semibold truncate ${n?"text-white":"text-gray-900"}`},t?.name||"My Workspace"))),or.default.createElement("div",{className:"flex items-center space-x-4 flex-shrink-0"},or.default.createElement("button",{onClick:o,className:"p-2 rounded-lg transition-colors",style:{backgroundColor:n?"#252525":"#f3f4f6",color:n?"#fbbf24":"#4b5563"},title:n?"Switch to light mode":"Switch to dark mode"},n?or.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},or.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"})):or.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},or.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),or.default.createElement("div",{className:`hidden sm:flex items-center space-x-2 text-sm ${n?"text-gray-400":"text-gray-500"}`},or.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),or.default.createElement("span",null,"Connected")),or.default.createElement("div",{className:"relative",ref:s},or.default.createElement("button",{onClick:()=>i(!a),className:"flex items-center space-x-2 p-1 rounded-lg transition-colors",style:{backgroundColor:a?n?"#252525":"#f3f4f6":"transparent"}},or.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},or.default.createElement("span",{className:"text-red-600 font-medium text-sm"},p))),a&&or.default.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:n?"#1a1a1a":"#ffffff",borderColor:n?"#2a2a2a":"#e5e7eb"}},or.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:n?"#2a2a2a":"#e5e7eb"}},or.default.createElement("div",{className:"flex items-center space-x-3"},or.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},or.default.createElement("span",{className:"text-red-600 font-medium"},p)),or.default.createElement("div",null,or.default.createElement("div",{className:`font-medium ${n?"text-white":"text-gray-900"}`},d),or.default.createElement("div",{className:`text-sm ${n?"text-gray-400":"text-gray-500"}`},e?.email)))),u.length>0&&or.default.createElement("div",{className:"py-1 border-b",style:{borderColor:n?"#2a2a2a":"#e5e7eb"}},u.map(f=>or.default.createElement("a",{key:f.href,href:f.href,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${n?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},or.default.createElement("span",null,f.label)))),l&&or.default.createElement("div",{className:"py-1"},or.default.createElement("button",{onClick:c,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${n?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},or.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},or.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"})),or.default.createElement("span",null,"Sign out")))))))}var Ue=X(J());var At=X(J());var W3=150,Q2e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),R2e=e=>e.length?Q2e(e)/e.length:0,tl=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),U3=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))})),eAe=4,Zh=e=>Math.max(eAe,U3(e)),nee=(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},tAe=5.5,rAe=12,nAe=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*tAe+rAe,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},Tf=(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(" ")},EA=(e,t)=>{let r=Tf(e,t);return r?`0,100 ${r} 100,100`:""},oee=(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 R2e(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(" ")},bb=(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 aee({label:e,value:t,unit:r,sub:n,delta:o,deltaRank:a="none",deltaSub:i,spark:s,sparkColor:l}){return At.default.createElement(je,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},At.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},At.default.createElement($e,{size:11,spacing:"0.05em"},e),o&&At.default.createElement(jo,{rank:a,size:"compact",title:i,style:{marginLeft:"auto",fontSize:11,padding:"3px 9px",minWidth:0},testId:"signal-delta"},o)),At.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},At.default.createElement("span",{style:{fontFamily:U,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?At.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},r):null),At.default.createElement("div",{title:n,style:{fontFamily:U,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),At.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},At.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},At.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),At.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function iee({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=W3}){let p=(0,At.useRef)(null),f=yf(p),m="1px dashed var(--color-text-secondary)";return At.default.createElement(je,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},At.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},At.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),At.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},t),At.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),At.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(g=>At.default.createElement("span",{key:g.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:U,fontSize:10,color:"var(--color-text-secondary)"}},At.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:g.color,flexShrink:0}}),g.label))),At.default.createElement("div",{ref:p,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(g=>At.default.createElement("div",{key:g.top,style:{position:"absolute",left:0,right:0,top:`${g.top}%`,borderTop:"1px solid var(--color-border-light)"}},At.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:U,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},g.label))),i.length>0&&At.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((g,b)=>At.default.createElement("div",{key:b,title:g.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},g.segs.map((h,y)=>At.default.createElement("div",{key:y,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&At.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((g,b)=>At.default.createElement("polygon",{key:b,points:g.points,fill:g.color,opacity:"0.16"})),s.map((g,b)=>At.default.createElement("polyline",{key:b,points:g.points,fill:"none",stroke:g.color,strokeWidth:g.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((g,b)=>{let h=nAe(g,f),y=`${Number(g.left).toFixed(2)}%`;return At.default.createElement("div",{key:b,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:y,borderRight:m}:{left:y,right:0,borderLeft:m}}},At.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:U,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},g.label))})),At.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},c.map((g,b)=>At.default.createElement("span",{key:b},g))))}function Jh({label:e,qualifier:t,meta:r,children:n}){return At.default.createElement(je,{padding:0,style:{overflow:"hidden"}},At.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},At.default.createElement($e,null,e),t?At.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?At.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function H3({template:e,columns:t}){return At.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:U,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},At.default.createElement("span",null),t.map(r=>At.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function NA({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return At.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 q3({children:e,padding:t="8px 14px"}){return At.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function wb({children:e}){return At.default.createElement("div",{style:{padding:"12px 14px",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},e)}function K3({color:e}){return At.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function V3({pct:e,color:t}){return At.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},At.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function G3({pct:e,color:t,width:r=70}){return At.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},At.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function Ns({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return At.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var cee=6e4,oAe=1180,Rh={"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"}},aAe=Object.keys(Rh).map(e=>({value:e,label:e})),X3="24h",Qh=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],Sb=[{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)"}],see=e=>Sb.find(t=>t.type===e)?.color||"var(--color-text-muted)",iAe=3,OA="var(--color-text-primary)",sAe={success:"good",error:"poor",muted:"none"},lAe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Y3=e=>String(e).padStart(2,"0"),qt=e=>e==null||Number.isNaN(Number(e))?0:Number(e),uAe=e=>e.reduce((t,r)=>t+qt(r),0),lee=e=>`${qt(e).toFixed(1)}%`,TA=(e,t)=>`${e} ${t}${e===1?"":"s"}`,cAe=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,dAe=(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},pAe=e=>{let t=String(e.label||"incident"),r=Sb.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},fAe=e=>{let t=qt(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},uee=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},mAe=(e,t,r=Date.now())=>{let n=Math.max(1,qt(t))*1e3,o=Math.max(1,Math.round(qt(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()}))},gAe=(e,t)=>{let r=e.summary||{},n=Rh[e.range]||Rh[t]||Rh[X3],o=qt(e.bucket_seconds)||n.seconds,a=qt(e.window_minutes)||(e.window_hours?qt(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:mAe(a,o),s=qt(e.totals?.requests??r.total_requests),l=qt(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:qt(r.errors),error_rate:qt(r.error_rate),tokens_in:qt(r.tokens_input),tokens_out:qt(r.tokens_output),tokens:qt(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:qt(f.requests),share_pct:s?qt(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?qt(f.errors)/qt(f.requests)*100:0,cost:qt(f.cost),tokens:qt(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:Sb.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:[]}},dee=e=>{let t=Rh[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:fAe(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},hAe=e=>{let[t,r]=(0,Ue.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 Z3(){let[e,t]=(0,Ue.useState)(X3),[r,n]=(0,Ue.useState)(""),[o,a]=(0,Ue.useState)(null),[i,s]=(0,Ue.useState)(!0),[l,u]=(0,Ue.useState)(null),[c,d]=(0,Ue.useState)(!1),p=(0,Ue.useRef)(0),f=hAe(oAe),m=(0,Ue.useRef)(null),g=(0,Ue.useCallback)(async()=>{let k=++p.current;try{let S=new URLSearchParams({range:e});r&&S.set("agent",r);let[w,_]=await Promise.all([uee(S),r?uee(new URLSearchParams({range:e})).catch(()=>null):null]);if(k!==p.current)return;let A=r?_?.agents:w.agents;Array.isArray(A)&&(m.current=A),a({data:w,ranking:Array.isArray(A)?A:m.current}),u(null)}catch(S){if(k!==p.current)return;u(S.message)}finally{k===p.current&&s(!1)}},[e,r]);(0,Ue.useEffect)(()=>{let k=!1;d(!0),g().finally(()=>{k||d(!1)});let S=setInterval(g,cee);return()=>{k=!0,clearInterval(S)}},[g]);let b=(0,Ue.useMemo)(()=>o?gAe(o.data,e):null,[o,e]),h=(0,Ue.useMemo)(()=>b?b.agent?dAe(o.ranking,b.agents):b.agents:[],[b,o]),y=(0,Ue.useMemo)(()=>h.map(k=>k.name).filter(Boolean),[h]),x=(0,Ue.useMemo)(()=>{let k=Object.fromEntries(y.map((w,_)=>[w,Qh[_%Qh.length]])),S=y.length;return(b?b.agents:[]).forEach(w=>{w.name&&!k[w.name]&&(k[w.name]=Qh[S++%Qh.length])}),w=>k[w]||Qh[0]},[y,b]),v=(0,Ue.useMemo)(()=>b?vAe(b,x):null,[b,x]);return i?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",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!b?Ue.default.createElement("div",null,Ue.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:OA}},"Metrics"),Ue.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}`:"")):Ue.default.createElement(yAe,{m:b,view:v,railAgents:h,range:Rh[e]?e:X3,agent:r,agentOptions:r&&!y.includes(r)?[...y,r]:y,colorFor:x,narrow:f,pending:c,onRange:t,onAgent:n})}function yAe({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=dee(e),p=e.totals.requests===0,f=m=>c(o===m?"":m);return Ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:OA,fontSize:13}},Ue.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},Ue.default.createElement("div",{style:{flex:1,minWidth:240}},Ue.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),Ue.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}`:"")),Ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Ue.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:OA,cursor:"pointer"}},Ue.default.createElement("option",{value:""},"All agents"),a.map(m=>Ue.default.createElement("option",{key:m,value:m},m))),e.environment&&Ue.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:U,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},Ue.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),Ue.default.createElement(Oo,{options:aAe,value:n,onChange:u}),Ue.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${cee/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},Ue.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?Ue.default.createElement(je,{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",Ue.default.createElement("div",{style:{marginTop:8,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):Ue.default.createElement(Ue.default.Fragment,null,Ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>Ue.default.createElement(aee,{key:m.label,...m,deltaSub:d.prev}))),Ue.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}},Ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>Ue.default.createElement(iee,{key:m.title,...m,xLabels:t.xLabels,height:W3}))),Ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},Ue.default.createElement(Jh,{label:"Agents",qualifier:"by requests \xB7 click to filter"},Ue.default.createElement(H3,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&Ue.default.createElement(wb,null,"no agents in this window"),r.map(m=>Ue.default.createElement(NA,{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}`},Ue.default.createElement("div",{style:{minWidth:0}},Ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},Ue.default.createElement(K3,{color:i(m.name)}),Ue.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),Ue.default.createElement(V3,{pct:m.share_pct,color:i(m.name)})),Ue.default.createElement(Ns,null,sn(m.requests)),Ue.default.createElement(Ns,{color:"var(--color-text-secondary)"},Bn(m.p95_ms)),Ue.default.createElement(Ns,{color:qt(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},lee(m.error_rate)),Ue.default.createElement(Ns,null,B0(m.cost))))),Ue.default.createElement(Jh,{label:"Models",qualifier:"by tokens"},e.models.length===0&&Ue.default.createElement(wb,null,"no model usage in this window"),e.models.map((m,g)=>Ue.default.createElement(NA,{key:`${m.model}-${m.provider}-${g}`,template:"minmax(0, 1fr) 52px 56px"},Ue.default.createElement("div",{style:{minWidth:0}},Ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},Ue.default.createElement("span",{style:{fontFamily:U,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&Ue.default.createElement("span",{style:{fontFamily:U,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),Ue.default.createElement(V3,{pct:m.share_pct,color:"var(--color-token-in)"})),Ue.default.createElement(Ns,null,sn(m.tokens)),Ue.default.createElement(Ns,{color:"var(--color-text-secondary)"},B0(m.cost))))),Ue.default.createElement(Jh,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&Ue.default.createElement(wb,null,"no actions in this window"),e.actions.map(m=>Ue.default.createElement(q3,{key:m.name},Ue.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:U,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ue.default.createElement(G3,{pct:t.slowestP95?qt(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),Ue.default.createElement(Ns,{weight:600,width:40},Bn(m.p95_ms))))),Ue.default.createElement(Jh,{label:"Tools",qualifier:"by calls"},Ue.default.createElement(H3,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&Ue.default.createElement(wb,null,"no tool calls in this window"),e.tools.map(m=>Ue.default.createElement(NA,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},Ue.default.createElement("span",{title:m.name,style:{fontFamily:U,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Ue.default.createElement(Ns,null,sn(m.calls)),Ue.default.createElement(Ns,{color:"var(--color-text-secondary)"},Bn(m.avg_ms)),Ue.default.createElement(Ns,{color:qt(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},lee(m.error_rate))))),Ue.default.createElement(Jh,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>Ue.default.createElement(q3,{key:m.type},Ue.default.createElement(K3,{color:see(m.type)}),Ue.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),Ue.default.createElement(G3,{pct:t.errorTotal?qt(m.count)/t.errorTotal*100:0,color:see(m.type)}),Ue.default.createElement(Ns,{weight:600,width:32},Math.round(qt(m.count))))))))))}function vAe(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=dee(e),s=r.map(E=>new Date(E.ts)),l=e.windowMinutes>=2880,u=E=>Number.isNaN(E.getTime())?"":l?`${lAe[E.getDay()]} ${Y3(E.getHours())}h`:`${Y3(E.getHours())}:${Y3(E.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(E=>E===6?"now":u(s[Math.round(E*(a-1)/6)])):[],d=E=>r.map(W=>qt(W[E])),p=d("requests"),f=d("errors"),m=d("tokens_in"),g=d("tokens_out"),b=d("cost"),h=d("tool_calls"),y=d("tool_errors"),x=E=>r.map(W=>W[E]==null?null:qt(W[E])),v=x("p50_ms"),k=x("p95_ms"),S=x("p99_ms"),w=r.map(E=>E.requests_by_agent||{}),_=e.agents.map(E=>E.name).filter(Boolean);w.forEach(E=>Object.keys(E).forEach(W=>{_.includes(W)||_.push(W)}));let A=_.length?_.map(E=>({label:E,color:t(E),data:w.map(W=>qt(W[E]))})):[{label:"requests",color:Qh[0],data:p}],C=Sb.map(E=>({label:E.type,color:E.color,data:r.map(W=>qt((W.errors_by_type||{})[E.type]))})),O=(qt(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,D=(E,W)=>{if(!E||a<2||!O)return null;let F=new Date(E.ts).getTime();if(Number.isNaN(F))return null;let Ee=Math.min(a-1,Math.max(0,Math.floor((F-s[0].getTime())/O)))/(a-1);return{left:Ee*100,label:W,flip:Ee>.55}},H=e.markers.filter(E=>E.kind==="deploy").sort((E,W)=>new Date(E.ts)-new Date(W.ts)).slice(-iAe).map(E=>D(E,E.label)).filter(Boolean),j=e.markers.find(E=>E.kind==="incident"),Z=j?D(j,pAe(j)):null,N=Z?[Z]:[],P=Zh(tl(p)*1.1),M=Zh(tl(f)*1.15),I=Zh(Math.max(tl(S),tl(k),tl(v))*1.05),$=Zh(Math.max(tl(m),tl(g))*1.1),T=U3(tl(b)*1.1),q=nee(T),G=Zh(tl(h)*1.1),L=qt(n.requests),Y=qt(n.requests_per_minute),K=qt(n.errors),pe=qt(n.error_rate),De=qt(n.tokens)||qt(n.tokens_in)+qt(n.tokens_out),se=qt(n.cost),be=n.cost_per_request!=null?qt(n.cost_per_request):L?se/L:0,ue=qt(n.tool_calls),R=n.tool_error_rate!=null?qt(n.tool_error_rate):ue?qt(n.tool_errors)/ue*100:0,we=qt(e.errorsByType.find(E=>E.type===Sb[0].type)?.count),Ce=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${sn(L)} \xB7 ${Y.toFixed(1)}/min`,legend:A.map(E=>({label:E.label,color:E.color})),ticks:Nf(P,sn),buckets:bb(A,P,E=>`${u(s[E])} \xB7 ${Math.round(p[E])} req`),markers:H},{title:"Latency",sub:"generation percentiles",value:`p50 ${Bn(n.p50_ms)}`,legend:[{label:`p50 ${Bn(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${Bn(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${Bn(n.p99_ms)}`,color:"var(--color-error)"}],ticks:Nf(I,cAe),lines:[{points:Tf(S,I),color:"var(--color-error)",width:1.5},{points:Tf(k,I),color:"var(--color-warning)",width:1.5},{points:Tf(v,I),color:"var(--color-token-in)",width:2}],areas:[{points:EA(v,I),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${pe.toFixed(2)}% \xB7 ${TA(Math.round(K),"error")}`,valueColor:pe>1?"var(--color-error)":OA,legend:C.map(E=>({label:E.label,color:E.color})),ticks:Nf(M,E=>String(Math.round(E))),buckets:bb(C,M,E=>`${u(s[E])} \xB7 ${TA(Math.round(f[E]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${sn(De)} \xB7 in ${sn(n.tokens_in)} / out ${sn(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:Nf($,sn),lines:[{points:Tf(m,$),color:"var(--color-token-in)",width:1.5},{points:Tf(g,$),color:"var(--color-token-out)",width:1.5}],areas:[{points:EA(m,$),color:"var(--color-token-in)"},{points:EA(g,$),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${B0(se)} \xB7 ${F0(be)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:Nf(T,E=>F0(E,q)),buckets:bb([{color:"var(--color-text-secondary)",data:b}],T,E=>`${u(s[E])} \xB7 ${F0(b[E],q)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${sn(ue)} \xB7 ${R.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:Nf(G,sn),buckets:bb([{color:"var(--span-tool)",data:h.map((E,W)=>Math.max(0,E-y[W]))},{color:"var(--color-error)",data:y}],G,E=>`${u(s[E])} \xB7 ${TA(Math.round(h[E]),"call")}`)}],z=(E,W,F)=>{let B=E==null?null:qt(E);return B==null||B===0?"muted":W&&W(B)?"success":F&&F(B)?"error":"muted"},ee=(E,W,F,B,Ee,Ve,fe,ze)=>({label:E,value:W,unit:F,sub:B,delta:Ee,deltaRank:sAe[Ve]||"none",spark:oee(fe),sparkColor:ze});return{signals:[ee("Requests",sn(L),"",`${Y.toFixed(1)} req/min`,Nh(o.requests_pct),z(o.requests_pct,E=>E>0,null),p,"var(--color-token-in)"),ee("Latency",Bn(n.p50_ms),"p50",`p95 ${Bn(n.p95_ms)} \xB7 p99 ${Bn(n.p99_ms)}`,Nh(o.p50_pct),z(o.p50_pct,E=>E<0,E=>E>0),v,"var(--color-token-in)"),ee("Error rate",pe.toFixed(2),"%",`${TA(Math.round(K),"error")} \xB7 ${Math.round(we)} rate-limited`,Nh(o.error_rate_pt," pt",1),z(o.error_rate_pt,E=>E<0,E=>E>0),f,"var(--color-error)"),ee("Tokens",sn(De),"",`in ${sn(n.tokens_in)} \xB7 out ${sn(n.tokens_out)}`,Nh(o.tokens_pct),"muted",m.map((E,W)=>E+g[W]),"var(--color-token-in)"),ee("Cost",B0(se),"",`${F0(be)} per request`,Nh(o.cost_pct),"muted",b,"var(--color-text-secondary)")],panels:Ce,xLabels:c,slowestP95:tl(e.actions.map(E=>E.p95_ms)),errorTotal:uAe(e.errorsByType.map(E=>E.count))}}var He=X(J());var xAe=6e4,bAe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],pee={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)"}},kb=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),fee=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,wAe=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 J3({onOpenServer:e}){let{darkMode:t}=ut(),[r,n]=(0,He.useState)(null),[o,a]=(0,He.useState)(!0),[i,s]=(0,He.useState)(null),[l,u]=(0,He.useState)("all"),[c,d]=(0,He.useState)(""),[p,f]=(0,He.useState)(168),[m,g]=(0,He.useState)(null),b=(0,He.useCallback)(async()=>{try{let A=new URLSearchParams({hours:String(p)});l!=="all"&&A.set("origin",l),c.trim()&&A.set("q",c.trim());let C=await fetch(`/api/tools?${A}`);if(!C.ok)throw new Error(`Request failed (${C.status})`);n(await C.json()),s(null)}catch(A){s(A.message)}finally{a(!1)}},[l,c,p]);(0,He.useEffect)(()=>{let A=setTimeout(b,c?250:0);return()=>clearTimeout(A)},[b,c]),(0,He.useEffect)(()=>{let A=setInterval(b,xAe);return()=>clearInterval(A)},[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"},y=A=>{let C=pee[A]||pee.agent;return{fg:t?C.dark:C.light,bg:t?C.bgDark:C.bgLight}};if(o&&!r)return He.default.createElement("div",{className:"flex items-center justify-center h-64"},He.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return He.default.createElement("div",{style:{padding:"24px"}},He.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),He.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:x=[],summary:v={},origins:k={},sources:S={}}=r||{},w=!S.telemetry&&!S.generations&&!S.messages&&!S.declared,_=({label:A,value:C,hint:O,tone:D})=>He.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},He.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},A),He.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:D||h.textPrimary}},C),O&&He.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},O));return He.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},He.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},He.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},He.default.createElement("div",null,He.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),He.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")),He.default.createElement("div",{style:{display:"flex",gap:"4px"}},bAe.map(A=>He.default.createElement("button",{key:A.value,onClick:()=>f(A.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${p===A.value?"#ef4444":h.border}`,background:p===A.value?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:p===A.value?"#ef4444":h.textSecondary}},A.label))))),He.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},He.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},He.default.createElement(_,{label:"Tools Detected",value:kb(v.total_tools),hint:`${v.active_tools||0} called in this window`}),He.default.createElement(_,{label:"Tool Calls",value:kb(v.total_calls),hint:`${fee(v.avg_duration_ms)} average`}),He.default.createElement(_,{label:"Error Rate",value:`${v.error_rate||0}%`,tone:v.error_rate>5?h.error:h.textPrimary,hint:`${v.total_errors||0} failed call${v.total_errors===1?"":"s"}`}),He.default.createElement(_,{label:"From MCP",value:kb(v.mcp_tools),hint:`across ${v.mcp_servers_active||0} active server${v.mcp_servers_active===1?"":"s"}`}),He.default.createElement(_,{label:"Never Called",value:kb(v.unused_tools),hint:"offered or configured, unused"})),He.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(k).map(([A,C])=>He.default.createElement("button",{key:A,onClick:()=>u(A),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${l===A?"#ef4444":h.border}`,background:l===A?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:l===A?"#ef4444":h.textSecondary}},C)),He.default.createElement("input",{value:c,onChange:A=>d(A.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}})),He.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},x.length===0?He.default.createElement("div",{style:{textAlign:"center",padding:"48px 24px",color:h.textSecondary,fontSize:"14px"}},w?"No tool activity yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace":"No tools match these filters"):He.default.createElement("div",{style:{overflowX:"auto"}},He.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},He.default.createElement("thead",null,He.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),He.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),He.default.createElement("tbody",null,x.map((A,C)=>{let O=y(A.origin),D=m===A.name;return He.default.createElement(He.default.Fragment,{key:A.name},He.default.createElement("tr",{onClick:()=>g(D?null:A.name),style:{borderBottom:C{H.stopPropagation(),A.mcp_server&&e&&e(A.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:O.bg,color:O.fg,fontFamily:"monospace",cursor:A.mcp_server&&e?"pointer":"default"},title:A.mcp_server?`Open ${A.mcp_server} in MCP Services`:A.source_label},A.source_label)),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},kb(A.calls)),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:A.errors>0?h.error:h.textCell}},A.errors),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},fee(A.avg_duration_ms)),He.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},wAe(A.last_seen))),D&&He.default.createElement("tr",{style:{borderBottom:CHe.default.createElement("span",{key:A,style:{color:S[A]?h.textSecondary:h.textMuted,opacity:S[A]?1:.5}},S[A]?"\u25CF":"\u25CB"," ",C)))))}function SAe({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>He.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},He.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),He.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return He.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}`}},He.default.createElement(o,{label:"Full name"},He.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&He.default.createElement(o,{label:"Description"},e.description),He.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?He.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):He.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),He.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):He.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&He.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),He.default.createElement(o,{label:"Call breakdown"},He.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&He.default.createElement(o,{label:"Last arguments"},He.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&He.default.createElement(o,{label:"Last error"},He.default.createElement("span",{style:{color:t.error}},e.last_error)),He.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var qe=X(J());var ft=X(J());var _b={width:"100%",boxSizing:"border-box",padding:"8px 10px",borderRadius:8,fontSize:13,border:"1px solid var(--color-border-strong)",background:"var(--color-card)",color:"var(--color-text-primary)"};function Q3({onChanged:e}){let[t,r]=(0,ft.useState)(null),[n,o]=(0,ft.useState)(null),[a,i]=(0,ft.useState)(null),[s,l]=(0,ft.useState)(null),[u,c]=(0,ft.useState)(!1),[d,p]=(0,ft.useState)(null),[f,m]=(0,ft.useState)(null),g=(0,ft.useCallback)(async()=>{try{let w=await fetch("/api/mcp_server_configs");if(!w.ok)throw new Error(`Request failed (${w.status})`);r(await w.json()),o(null)}catch(w){o(w.message)}},[]);(0,ft.useEffect)(()=>{g()},[g]);let b=()=>{g(),e&&e()},h=async()=>{let w=L6(a);if(z6(w)){l(Object.values(w).join(" "));return}c(!0),l(null);try{let _=a.id?`/api/mcp_server_configs/${a.id}`:"/api/mcp_server_configs",A=await fetch(_,{method:a.id?"PATCH":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(B6(a))}),C=await A.json().catch(()=>({}));if(!A.ok)throw new Error(kv(C,"Could not save the server."));i(null),m({kind:"ok",text:`${C.mcp_server_config.name} saved. Test it to list the tools it serves.`}),b()}catch(_){l(_.message)}finally{c(!1)}},y=async w=>{p(w.id),m(null);try{let _=await fetch(`/api/mcp_server_configs/${w.id}/test`,{method:"POST"}),A=await _.json().catch(()=>({}));if(!_.ok)throw new Error(kv(A,"Could not test the server."));m(A.ok?{kind:"ok",text:`${w.name} answered with ${A.tools.length} tool${A.tools.length===1?"":"s"}.`}:{kind:"error",text:`${w.name}: ${A.error}`}),b()}catch(_){m({kind:"error",text:_.message})}finally{p(null)}},x=async w=>{try{let _=await fetch(`/api/mcp_server_configs/${w.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({mcp_server_config:{enabled:!w.enabled}})}),A=await _.json().catch(()=>({}));if(!_.ok)throw new Error(kv(A,"Could not change the server."));b()}catch(_){m({kind:"error",text:_.message})}},v=async w=>{if(await jr({title:`Delete ${w.name}?`,message:"Agents that enable it keep its entry, but can no longer call its tools until it is switched off or replaced.",confirmLabel:"Delete server",danger:!0}))try{let A=await fetch(`/api/mcp_server_configs/${w.id}`,{method:"DELETE"});if(!A.ok){let C=await A.json().catch(()=>({}));throw new Error(kv(C,"Could not delete the server."))}b()}catch(A){m({kind:"error",text:A.message})}},k=t?.mcp_server_configs||[],S=t?t.can_manage!==!1:!1;return ft.default.createElement(je,{testId:"mcp-server-configs",style:{marginBottom:16}},ft.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},ft.default.createElement("div",null,ft.default.createElement("h3",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)",margin:0}},"Your MCP servers"),ft.default.createElement("p",{style:{fontSize:13,color:"var(--color-text-secondary)",margin:"4px 0 0 0"}},"Remote servers you connect by URL. Enable one on an agent from its Tools tab; runs and evaluations then call its tools.")),S&&!a&&ft.default.createElement(ie,{variant:"primary",size:"sm",testId:"mcp-server-config-add",onClick:()=>{i(I6()),l(null)}},"Add server")),n&&ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error)",fontSize:13}},"Failed to load your servers: ",n),f&&ft.default.createElement("p",{role:"status",style:{fontSize:13,margin:"12px 0 0 0",color:f.kind==="error"?"var(--color-error)":"var(--color-success-text)"}},f.text),a&&ft.default.createElement(kAe,{draft:a,setDraft:i,error:s,saving:u,allowPrivate:t?.allow_private_hosts,onSave:h,onCancel:()=>{i(null),l(null)}}),ft.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},t&&k.length===0&&!a&&ft.default.createElement("p",{style:{fontSize:13,color:"var(--color-text-muted)",margin:0}},"No servers added yet."),k.map(w=>{let _=F6(w);return ft.default.createElement("div",{key:w.id,"data-testid":`mcp-server-config-${w.id}`,style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"10px 12px",borderRadius:8,border:"1px solid var(--color-border)"}},ft.default.createElement("div",{style:{flex:1,minWidth:220}},ft.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ft.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},w.name),ft.default.createElement(ve,{tone:_.tone,title:_.title},_.label),!w.enabled&&ft.default.createElement(ve,{tone:"warning"},"switched off")),ft.default.createElement("div",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-secondary)",marginTop:2,wordBreak:"break-all"}},w.url),w.headers.length>0&&ft.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-muted)",marginTop:2}},"Headers: ",w.headers.map(A=>`${A.name}: ${A.hint}`).join(", ")),w.last_test_status==="failed"&&w.last_test_error&&ft.default.createElement("div",{style:{fontSize:12,color:"var(--color-error)",marginTop:2}},w.last_test_error)),S&&ft.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},ft.default.createElement(ie,{size:"sm",onClick:()=>y(w),disabled:d===w.id,testId:`mcp-server-config-test-${w.id}`},d===w.id?"Testing\u2026":"Test"),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>x(w)},w.enabled?"Switch off":"Switch on"),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{i(D6(w)),l(null)}},"Edit"),ft.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>v(w)},"Delete")))})))}function kAe({draft:e,setDraft:t,error:r,saving:n,allowPrivate:o,onSave:a,onCancel:i}){let s=l=>u=>t({...e,[l]:l==="enabled"?u.target.checked:u.target.value});return ft.default.createElement("div",{"data-testid":"mcp-server-config-form",style:{marginTop:12,padding:12,borderRadius:8,border:"1px solid var(--color-border-strong)",display:"grid",gap:10}},ft.default.createElement("label",{style:{display:"grid",gap:4}},ft.default.createElement($e,null,"Name"),ft.default.createElement("input",{style:_b,value:e.name,onChange:s("name"),placeholder:"Orders API","aria-label":"Server name"})),ft.default.createElement("label",{style:{display:"grid",gap:4}},ft.default.createElement($e,null,"URL"),ft.default.createElement("input",{style:{..._b,fontFamily:U},value:e.url,onChange:s("url"),placeholder:"https://app.example.com/mcp","aria-label":"Server URL"}),ft.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},"Streamable HTTP endpoint.",o?"":" Private, loopback and link-local addresses are not reachable from here.")),ft.default.createElement("label",{style:{display:"grid",gap:4}},ft.default.createElement($e,null,"Description"),ft.default.createElement("input",{style:_b,value:e.description,onChange:s("description"),placeholder:"Optional","aria-label":"Server description"})),ft.default.createElement("div",{style:{display:"grid",gap:6}},ft.default.createElement($e,null,"Headers"),e.headers.map((l,u)=>ft.default.createElement("div",{key:u,style:{display:"flex",gap:6,alignItems:"center"}},ft.default.createElement("input",{style:{..._b,flex:"0 0 35%",fontFamily:U},value:l.name,onChange:c=>t(RT(e,u,"name",c.target.value)),placeholder:"Authorization","aria-label":`Header ${u+1} name`}),ft.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",style:{..._b,flex:1,fontFamily:U},value:l.value,onChange:c=>t(RT(e,u,"value",c.target.value)),placeholder:l.stored?`stored ${l.hint} \u2014 leave blank to keep`:"Bearer \u2026","aria-label":`Header ${u+1} value`}),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>t(j6(e,u)),title:"Remove this header"},"Remove"))),ft.default.createElement("div",null,ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>t($6(e))},"+ Add header"))),ft.default.createElement("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13,color:"var(--color-text-cell)"}},ft.default.createElement("input",{type:"checkbox",checked:e.enabled,onChange:s("enabled")}),"Agents that enable it may call it"),r&&ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error)",fontSize:13,margin:0}},r),ft.default.createElement("div",{style:{display:"flex",gap:8}},ft.default.createElement(ie,{variant:"primary",size:"sm",onClick:a,disabled:n,testId:"mcp-server-config-save"},n?"Saving\u2026":e.id?"Save changes":"Add server"),ft.default.createElement(ie,{size:"sm",variant:"ghost",onClick:i},"Cancel")))}var _Ae=6e4,CAe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],AAe=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],EAe=["http","streamable_http","sse"],mee={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)"}},Cb=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function R3({focusServer:e,onOpenTools:t}){let{darkMode:r}=ut(),[n,o]=(0,qe.useState)(null),[a,i]=(0,qe.useState)(!0),[s,l]=(0,qe.useState)(null),[u,c]=(0,qe.useState)("all"),[d,p]=(0,qe.useState)(168),[f,m]=(0,qe.useState)(e||null),[g,b]=(0,qe.useState)(null),[h,y]=(0,qe.useState)(null),x=(0,qe.useCallback)(async()=>{try{let j=await fetch(`/api/mcp_servers?hours=${d}`);if(!j.ok)throw new Error(`Request failed (${j.status})`);o(await j.json()),l(null)}catch(j){l(j.message)}finally{i(!1)}},[d]);(0,qe.useEffect)(()=>{x();let j=setInterval(x,_Ae);return()=>clearInterval(j)},[x]),(0,qe.useEffect)(()=>{e&&m(e)},[e]);let v={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"},k=j=>{let Z=mee[j]||mee.available;return{fg:r?Z.dark:Z.light,bg:r?Z.bgDark:Z.bgLight}},S=async j=>{b(j.key),y(null);try{let Z=await fetch(`/api/mcp_servers/${encodeURIComponent(j.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})`);y({kind:"ok",text:`${j.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),x()}catch(Z){y({kind:"error",text:Z.message})}finally{b(null)}};if(a&&!n)return qe.default.createElement("div",{className:"flex items-center justify-center h-64"},qe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(s&&!n)return qe.default.createElement("div",{style:{padding:"24px"}},qe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:v.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:v.errorBg,borderRadius:"8px",color:v.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:w=[],summary:_={},sandboxes:A=[],statuses:C={}}=n||{},O=u==="all"?w:w.filter(j=>j.status===u),D=new Set(A.flatMap(j=>j.mcp_servers||[])),H=({label:j,value:Z,hint:N})=>qe.default.createElement("div",{style:{background:v.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${v.border}`}},qe.default.createElement("div",{style:{fontSize:"11px",color:v.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},j),qe.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:v.textPrimary}},Z),N&&qe.default.createElement("div",{style:{fontSize:"13px",color:v.textSecondary,marginTop:"8px"}},N));return qe.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:v.bg}},qe.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${v.border}`,marginBottom:"16px"}},qe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},qe.default.createElement("div",null,qe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:v.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("p",{style:{fontSize:"14px",color:v.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),qe.default.createElement("div",{style:{display:"flex",gap:"4px"}},CAe.map(j=>qe.default.createElement("button",{key:j.value,onClick:()=>p(j.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${d===j.value?"#ef4444":v.border}`,background:d===j.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===j.value?"#ef4444":v.textSecondary}},j.label))))),qe.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},qe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},qe.default.createElement(H,{label:"Active",value:Cb(_.active),hint:"called in this window"}),qe.default.createElement(H,{label:"Configured",value:Cb(_.configured),hint:"declared, no traffic yet"}),qe.default.createElement(H,{label:"Available",value:Cb(_.available),hint:"defaults you can connect"}),qe.default.createElement(H,{label:"Tool Calls",value:Cb(_.total_calls),hint:"through MCP servers"})),qe.default.createElement(Q3,{onChanged:x}),h&&qe.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?v.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?v.error:r?"#86efac":"#15803d"}},h.text),qe.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},AAe.map(j=>qe.default.createElement("button",{key:j.value,onClick:()=>c(j.value),title:C[j.value]||"Every MCP service known to this workspace",style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${u===j.value?"#ef4444":v.border}`,background:u===j.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===j.value?"#ef4444":v.textSecondary}},j.label))),qe.default.createElement("div",{style:{display:"grid",gap:"12px"}},O.length===0?qe.default.createElement("div",{style:{background:v.cardBg,borderRadius:"12px",border:`1px solid ${v.border}`,textAlign:"center",padding:"48px 24px",color:v.textSecondary,fontSize:"14px"}},"No MCP services in this state"):O.map(j=>{let Z=k(j.status),N=f===j.key,P=D.has(j.key);return qe.default.createElement("div",{key:j.key,style:{background:v.cardBg,borderRadius:"12px",border:`1px solid ${N?Z.fg:v.border}`,overflow:"hidden"}},qe.default.createElement("div",{onClick:()=>m(N?null:j.key),style:{padding:"16px 20px",cursor:"pointer",display:"flex",alignItems:"center",gap:"16px",flexWrap:"wrap"}},qe.default.createElement("div",{style:{flex:1,minWidth:"220px"}},qe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontSize:"15px",fontWeight:"600",color:v.textPrimary}},j.name),qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:Z.bg,color:Z.fg,textTransform:"uppercase",letterSpacing:"0.04em"}},j.status),j.first_party&&qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(239,68,68,0.15)":"#fef2f2",color:"#ef4444"}},"first-party"),np(j)&&qe.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"),Cv(j)&&qe.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"),$c(j)&&qe.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:"A server you added by URL under Your MCP servers"},"your server"),Av(j)&&qe.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 server was deleted; agents may still name it"},"removed"),Iw(j)&&qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:v.borderLight,color:v.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),P&&qe.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")),j.description&&qe.default.createElement("div",{style:{fontSize:"13px",color:v.textSecondary,marginTop:"4px"}},j.description)),qe.default.createElement("div",{style:{display:"flex",gap:"24px",alignItems:"center"}},qe.default.createElement("div",{style:{textAlign:"right"}},qe.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:v.textPrimary}},Cb(j.calls)),qe.default.createElement("div",{style:{fontSize:"11px",color:v.textMuted}},"calls")),qe.default.createElement("div",{style:{textAlign:"right"}},qe.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:j.errors>0?v.error:v.textPrimary}},j.errors||0),qe.default.createElement("div",{style:{fontSize:"11px",color:v.textMuted}},"errors")),j.launchable&&qe.default.createElement("button",{onClick:M=>{M.stopPropagation(),S(j)},disabled:g===j.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:g===j.key?v.borderLight:"#ef4444",color:g===j.key?v.textMuted:"#ffffff",cursor:g===j.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${j.name} in a sandbox session`},g===j.key?"Starting\u2026":P?"Start another":"Start in sandbox"))),N&&qe.default.createElement(NAe,{server:j,colors:v,tone:Z,onOpenTools:t}))})),A.length>0&&qe.default.createElement("div",{style:{marginTop:"24px",background:v.cardBg,borderRadius:"12px",border:`1px solid ${v.border}`,padding:"20px"}},qe.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:v.textPrimary,margin:"0 0 12px 0"}},"Running sandboxes"),qe.default.createElement("div",{style:{display:"grid",gap:"8px"}},A.map(j=>qe.default.createElement("div",{key:j.session_id,style:{display:"flex",justifyContent:"space-between",gap:"12px",fontSize:"13px",color:v.textCell,flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontFamily:"monospace"}},(j.mcp_servers||[]).join(", ")||j.sandbox_type),qe.default.createElement("span",{style:{color:v.textMuted}},j.status," \xB7 ",j.runs_count,"/",j.max_runs," runs \xB7 expires ",new Date(j.expires_at).toLocaleTimeString())))))))}function NAe({server:e,colors:t,tone:r,onOpenTools:n}){let o=({label:i,children:s})=>qe.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},qe.default.createElement("span",{style:{color:t.textMuted,minWidth:"120px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},i),qe.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},s)),a=e.command||e.url;return qe.default.createElement("div",{style:{padding:"0 20px 20px 20px",display:"grid",gap:"10px"}},qe.default.createElement("div",{style:{height:"1px",background:t.borderLight,marginBottom:"4px"}}),a&&qe.default.createElement(o,{label:EAe.includes(e.transport)?"Endpoint":"Command"},qe.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",background:t.codeBg,display:"inline-block"}},a)),e.transport&&qe.default.createElement(o,{label:"Transport"},e.transport),e.categories?.length>0&&qe.default.createElement(o,{label:"Categories"},e.categories.join(", ")),e.requires_credentials?.length>0&&qe.default.createElement(o,{label:"Requires"},e.requires_credentials.join(", ")),qe.default.createElement(o,{label:e.tool_count>0?"Tools used":"Tools offered"},e.tools?.length>0?qe.default.createElement("span",{style:{display:"flex",gap:"6px",flexWrap:"wrap"}},e.tools.map(i=>qe.default.createElement("code",{key:i,style:{fontFamily:"monospace",fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r.bg,color:r.fg}},i))):qe.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),e.agents?.length>0&&qe.default.createElement(o,{label:"Used by"},e.agents.join(", ")),e.configured_by?.length>0&&qe.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),e.last_seen&&qe.default.createElement(o,{label:"Last call"},new Date(e.last_seen).toLocaleString()),qe.default.createElement("div",{style:{display:"flex",gap:"12px",marginTop:"4px",flexWrap:"wrap"}},e.docs_url&&qe.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&&qe.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 te=X(J());var Td=X(J());var MA={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},Gn={log(...e){this.enabled&&(e.push(Date.now()),MA.logger.log("[ActionCable]",...e))}},Eb=()=>new Date().getTime(),PA=e=>(Eb()-e)/1e3,Nb=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=Eb(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),Gn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=Eb(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),Gn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=Eb()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,Gn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=Eb(),Gn.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()&&(Gn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${PA(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?Gn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${PA(this.disconnectedAt)} s`):(Gn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return PA(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&PA(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(Gn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};Nb.staleThreshold=6;Nb.reconnectionBackoffRate=.15;var hee={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:Ab,protocols:e$}=hee,TAe=e$.slice(0,e$.length-1),gee=[].indexOf,Tb=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new Nb(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return Gn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...e$,...this.consumer.subprotocols||[]];return Gn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new MA.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(Gn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){Gn.log("Failed to reopen WebSocket",t)}finally{Gn.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 gee.call(TAe,this.getProtocol())>=0}isState(...t){return gee.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in MA.WebSocket)if(MA.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(){}}};Tb.reopenDelay=500;Tb.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 Ab.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case Ab.disconnect:return Gn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case Ab.ping:return null;case Ab.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 Ab.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(Gn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return Gn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(Gn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){Gn.log("WebSocket onerror event")}};var OAe=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},t$=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),OAe(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)}},r$=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(Gn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):Gn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){Gn.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=>{Gn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},n$=class{constructor(t){this.consumer=t,this.guarantor=new r$(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new t$(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){Gn.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})}},o$=class{constructor(t){this._url=t,this.subscriptions=new n$(this),this.connection=new Tb(this),this.subprotocols=[]}get url(){return PAe(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 PAe(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 yee(e=MAe("url")||hee.default_mount_path){return new o$(e)}function MAe(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var IA=null;function IAe(){if(IA===null)try{IA=yee()}catch{IA=!1}return IA||null}function ey(e,t,r,n=!0){let o=(0,Td.useRef)(null),a=(0,Td.useRef)(r);return(0,Td.useEffect)(()=>{a.current=r},[r]),(0,Td.useEffect)(()=>{if(!n||!e)return;let s=IAe();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,Td.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function ty(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var DA=[{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"}],DAe={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"}]},vee={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function a$({initialType:e="playwright_mcp",onClose:t,showAgents:r=!1}){let[n,o]=(0,te.useState)(e),[a,i]=(0,te.useState)(null),[s,l]=(0,te.useState)(""),[u,c]=(0,te.useState)([]),[d,p]=(0,te.useState)(null),[f,m]=(0,te.useState)(!1),[g,b]=(0,te.useState)(!1),[h,y]=(0,te.useState)(null),[x,v]=(0,te.useState)(null),[k,S]=(0,te.useState)(!1),[w,_]=(0,te.useState)(null),[A,C]=(0,te.useState)(!1),O=(0,te.useRef)(null),[D,H]=(0,te.useState)(["anthropic"]),[j,Z]=(0,te.useState)(!1),[N,P]=(0,te.useState)({}),[M,I]=(0,te.useState)([]),$=(0,te.useCallback)(async z=>{try{let ee=await fetch(`/api/sandboxes/${z}`);if(!ee.ok)return;let ae=await ee.json();i(ae.sandbox),c(ae.sandbox.runs||[])}catch(ee){console.error("Could not refresh the sandbox session:",ee)}},[]),T=(0,te.useCallback)(z=>{!ty(z)||!a?.session_id||$(a.session_id)},[$,a?.session_id]);ey("SandboxChannel",{session_id:a?.session_id},T,!!a?.session_id),(0,te.useEffect)(()=>{G(),q()},[n]);let q=async()=>{try{let z=await fetch("/api/usage");if(z.ok){let ee=await z.json();_(ee.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,te.useEffect)(()=>{if(!a?.expires_at)return;let z=setInterval(()=>{let ee=new Date,ae=new Date(a.expires_at),E=Math.max(0,Math.floor((ae-ee)/1e3));v(E),E===0&&(i(W=>({...W,status:"expired"})),clearInterval(z))},1e3);return()=>clearInterval(z)},[a?.expires_at]),(0,te.useEffect)(()=>{O.current&&(O.current.scrollTop=O.current.scrollHeight)},[d?.result]);let G=async()=>{b(!0),y(null);try{let z=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:n})});if(!z.ok)throw new Error("Failed to create sandbox session");let ee=await z.json();i(ee.sandbox),c([]),p(null)}catch(z){y(z.message)}finally{b(!1)}},L=async()=>{!s.trim()||f||!a||(j&&D.length>1?await K():await Y(D[0]||"anthropic"))},Y=async z=>{m(!0),p({status:"running",task:s,provider:z,result:"",started_at:new Date().toISOString()});try{let ee=await fetch(`/api/sandboxes/${a.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,provider:z})}),ae=await ee.json();if(ee.status===402&&ae.upgrade_required){_(ae.usage),S(!0),p(E=>({...E,status:"failed",error:ae.message||"Plan limit reached"})),m(!1);return}if(!ee.ok)throw new Error(ae.error||"Task execution failed");ae.usage&&_(ae.usage),be(ae.run_id)}catch(ee){p(ae=>({...ae,status:"failed",error:ee.message})),m(!1)}},K=async()=>{m(!0),I([...D]),P({});let z={};D.forEach(ee=>{z[ee]={status:"running",result:"",started_at:new Date().toISOString()}}),P(z);try{let ee=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,providers:D,sandbox_id:a?.session_id,sandbox_type:n})});if(!ee.ok){let E=await ee.json();throw new Error(E.error||"Comparison failed")}let ae=await ee.json();ae.sandbox&&i(ae.sandbox),pe(D,ae.sandbox?.session_id||a?.session_id,ae.sandbox?.runs_count??a?.runs_count??0)}catch(ee){D.forEach(ae=>{P(E=>({...E,[ae]:{status:"failed",error:ee.message}}))}),m(!1),I([])}},pe=(z,ee,ae)=>{if(!ee)return;let E=async()=>{try{let W=await fetch(`/api/sandboxes/${ee}`);if(!W.ok)throw new Error(`HTTP ${W.status}`);let F=await W.json();i(F.sandbox);let B=F.sandbox.runs||[];c(B);let Ee=new Set;if(B.slice(ae).forEach(Ve=>{Ve.provider&&(P(fe=>({...fe,[Ve.provider]:{...Ve,provider:Ve.provider}})),(Ve.status==="completed"||Ve.status==="failed")&&Ee.add(Ve.provider))}),z.every(Ve=>Ee.has(Ve))){m(!1),I([]);return}setTimeout(E,1e3)}catch(W){console.error("Comparison polling failed:",W),m(!1),I([])}};setTimeout(E,1e3)},De=async()=>{if(a?.session_id)try{let ee=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(ee.sandbox),c(ee.sandbox.runs||[]),(ee.sandbox.runs||[]).forEach(W=>{W.provider&&P(F=>({...F,[W.provider]:{...W,provider:W.provider}}))}),D.every(W=>{let F=N[W];return F?.status==="completed"||F?.status==="failed"})&&(m(!1),I([]))}catch(z){console.error("Polling error:",z)}},se=z=>{H(ee=>ee.includes(z)?ee.length===1?ee:ee.filter(ae=>ae!==z):[...ee,z])},be=async z=>{let ee=async()=>{try{let E=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(E.sandbox);let W=E.sandbox.runs||[],F=W[W.length-1];if(F&&(p(F),c(W),F.status==="completed"||F.status==="failed")){m(!1);return}setTimeout(ee,1e3)}catch{m(!1)}};ee()},ue=z=>{z.key==="Enter"&&(z.metaKey||z.ctrlKey)&&L()},R=z=>{if(!z)return"--:--";let ee=Math.floor(z/60),ae=z%60;return`${ee}:${ae.toString().padStart(2,"0")}`},we=a?.status==="ready"&&a?.runs_count{C(!0);try{await Xh({planSlug:"pro",billingInterval:z})}catch(ee){console.error("Checkout error:",ee),y(ee.message||"Failed to initiate checkout. Please try again."),C(!1)}};return te.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},r&&te.default.createElement("div",{className:"pb-6"},te.default.createElement(_0,{inline:!0})),te.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},te.default.createElement("div",{className:"flex items-center justify-between"},te.default.createElement("div",{className:"flex items-center space-x-4"},te.default.createElement(wn,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),te.default.createElement("div",null,te.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),te.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),te.default.createElement("div",{className:"flex items-center space-x-4"},a&&te.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},te.default.createElement(ve,{tone:ml(a.status)},a.status),te.default.createElement("span",{className:"text-gray-500"},a.runs_count,"/",a.max_runs," runs"),te.default.createElement("span",{className:`font-mono ${x<60?"text-red-500":"text-gray-500"}`},R(x))),t&&te.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},te.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},te.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),te.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},te.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},te.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("textarea",{value:s,onChange:z=>l(z.target.value),onKeyDown:ue,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!we,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"}),te.default.createElement("div",{className:"flex items-center justify-between mt-3"},te.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",te.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",te.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),te.default.createElement("button",{onClick:L,disabled:!s.trim()||!we,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${s.trim()&&we?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},f?te.default.createElement(te.default.Fragment,null,te.default.createElement("span",{className:"animate-spin"},"\u25E0"),te.default.createElement("span",null,"Running...")):te.default.createElement(te.default.Fragment,null,te.default.createElement("span",null,"\u25B6"),te.default.createElement("span",null,"Run"))))),te.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},te.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},te.default.createElement("h3",{className:"font-medium text-gray-900"},j&&Object.keys(N).length>0?"Comparison Results":"Output"),d&&!j&&te.default.createElement(ve,{tone:ml(d.status)},d.status),j&&M.length>0&&te.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",M.length," provider(s)...")),te.default.createElement("div",{ref:O,className:"flex-1 overflow-auto bg-gray-50"},g?te.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},te.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):h?te.default.createElement("div",{className:"text-red-600 p-4"},h):j&&Object.keys(N).length>0?te.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},D.map(z=>{let ee=DA.find(E=>E.id===z),ae=N[z];return te.default.createElement("div",{key:z,className:"p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-2"},te.default.createElement("div",{className:"flex items-center space-x-2"},te.default.createElement("div",{className:`w-3 h-3 rounded-full ${ee?.color||"bg-gray-400"}`}),te.default.createElement("span",{className:"font-medium text-gray-900"},ee?.name||z),te.default.createElement("span",{className:"text-xs text-gray-500"},ee?.model)),ae&&te.default.createElement("div",{className:"flex items-center space-x-2"},te.default.createElement(ve,{tone:ml(ae.status)},ae.status),ae.tokens&&te.default.createElement("span",{className:"text-xs text-gray-500"},ae.tokens," tokens"),ae.duration_ms&&te.default.createElement("span",{className:"text-xs text-gray-500"},(ae.duration_ms/1e3).toFixed(1),"s"))),te.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},ae?.status==="running"?te.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},te.default.createElement("span",{className:"animate-pulse"},"\u25CF"),te.default.createElement("span",null,"Processing...")):ae?.error?te.default.createElement("div",{className:"text-red-600"},ae.error):ae?.result?te.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},ae.result):te.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):d?te.default.createElement("div",{className:"p-4 font-mono text-sm"},d.provider&&te.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},te.default.createElement("div",{className:`w-2 h-2 rounded-full ${DA.find(z=>z.id===d.provider)?.color||"bg-gray-400"}`}),te.default.createElement("span",{className:"text-sm text-gray-600"},DA.find(z=>z.id===d.provider)?.name||d.provider)),d.status==="running"?te.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},te.default.createElement("span",{className:"animate-pulse"},"\u25CF"),te.default.createElement("span",null,"Executing task...")):d.error?te.default.createElement("div",{className:"text-red-600"},te.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),te.default.createElement("pre",{className:"whitespace-pre-wrap"},d.error)):te.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},d.result||"Processing...")):te.default.createElement("div",{className:"text-gray-400 text-center py-12"},te.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),te.default.createElement("p",{className:"text-xs"},j?`Compare results across ${D.length} providers`:"Task will execute using the selected provider"))))),te.default.createElement("div",{className:"space-y-4 overflow-auto"},te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-3"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),te.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},te.default.createElement("input",{type:"checkbox",checked:j,onChange:z=>Z(z.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),te.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),te.default.createElement("div",{className:"space-y-2"},DA.map(z=>te.default.createElement("label",{key:z.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${D.includes(z.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},te.default.createElement("div",{className:"flex items-center space-x-3"},te.default.createElement("input",{type:"checkbox",checked:D.includes(z.id),onChange:()=>se(z.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),te.default.createElement("div",{className:`w-2 h-2 rounded-full ${z.color}`}),te.default.createElement("span",{className:"text-sm font-medium text-gray-900"},z.name)),te.default.createElement("span",{className:"text-xs text-gray-500"},z.model)))),j&&D.length>1&&te.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},te.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",D.length," providers simultaneously"))),te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-3"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),j&&te.default.createElement("button",{onClick:()=>o(n==="playwright_mcp"?"comparison":"playwright_mcp"),className:"text-xs text-rose-600 hover:text-rose-700"},n==="comparison"?"Browser Tasks":"Comparison Tasks")),te.default.createElement("div",{className:"space-y-2"},DAe[n]?.map((z,ee)=>te.default.createElement("button",{key:ee,onClick:()=>l(z.task),disabled:!we,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},te.default.createElement("div",{className:"font-medium text-sm text-gray-900"},z.name),te.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},z.description))))),te.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},te.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&&te.default.createElement("div",{className:"mb-4"},te.default.createElement("div",{className:"flex justify-between text-sm mb-1"},te.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),te.default.createElement("span",{className:`font-medium ${w.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},w.runs_used," / ",w.runs_limit)),te.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},te.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&&te.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},w.runs_remaining===0?"Limit reached!":"Almost at limit!")),te.default.createElement("dl",{className:"space-y-2 text-sm"},te.default.createElement("div",{className:"flex justify-between"},te.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),te.default.createElement("dd",{className:"text-gray-900"},a?.runs_count||0,"/",a?.max_runs||vee.max_runs)),te.default.createElement("div",{className:"flex justify-between"},te.default.createElement("dt",{className:"text-gray-500"},"Timeout"),te.default.createElement("dd",{className:"text-gray-900"},vee.timeout_seconds,"s per task"))),w?.plan==="free"&&te.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},te.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"))),u.length>0&&te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},te.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),te.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},u.slice().reverse().map((z,ee)=>te.default.createElement("div",{key:z.id||ee,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>p(z)},te.default.createElement("div",{className:"flex items-center justify-between mb-1"},te.default.createElement(ve,{tone:ml(z.status||"completed")},z.status||"completed"),te.default.createElement("span",{className:"text-xs text-gray-400"},z.tokens||0," tokens")),te.default.createElement("p",{className:"text-sm text-gray-600 truncate"},z.task))))),a?.status==="expired"&&te.default.createElement("button",{onClick:G,className:"w-full px-4 py-3 bg-rose-500 text-white rounded-lg hover:bg-rose-600 transition-colors"},"Start New Session")))),k&&te.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},te.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},te.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},te.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),te.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.")),te.default.createElement("div",{className:"p-6"},te.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},te.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},te.default.createElement("div",{className:"text-center mb-4"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),te.default.createElement("span",{className:"text-gray-500"},"/mo"))),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),te.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")),te.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},te.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},te.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),te.default.createElement("div",{className:"text-center mb-4 mt-2"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),te.default.createElement("span",{className:"text-gray-500"},"/mo")),te.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),te.default.createElement("button",{onClick:()=>Ce("monthly"),disabled:A,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"},A?"Loading...":"Upgrade to Pro")),te.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},te.default.createElement("div",{className:"text-center mb-4"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),te.default.createElement("span",{className:"text-gray-500"},"/mo")),te.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),te.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")))),te.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},te.default.createElement("button",{onClick:()=>S(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ht=X(J());var Bo=X(J());var i$=["message","llm","tool","browser"];function $A(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function xee(e={}){let t=[];return i$.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=$A(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 bee(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&$A(t.rrweb.first_at)!==null).map(t=>{let r=$A(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,$A(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function wee(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function See(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 kee(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 _ee(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 s$(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 Aee(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 Nee(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 ry(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 jA(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 l$(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function $Ae(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 Tee(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=l$(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",$Ae(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"}: ${l$(t.message??t.value)}`:e.kind==="marker"?`marker: ${l$(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function ny(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function jAe(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 LAe(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 Oee(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(LAe(e,a));if(o())return{count:i,truncated:!1};let l=jAe(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 Ru=[{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)"}],Ob=18,zAe=76,Of=(e,t)=>e.totalMs?t/e.totalMs*100:0,BAe=(0,Bo.memo)(function({axis:t,entries:r,recordings:n}){let o=kee(t);return Bo.default.createElement(Bo.default.Fragment,null,o.map(a=>Bo.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${jA(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${Of(t,a.axisStart)}%`,width:`${Of(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Ru.map((a,i)=>Bo.default.createElement(Bo.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=Od(t,s.startMs);return Bo.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*Ob+7,height:4,borderRadius:2,left:`${Of(t,l)}%`,width:`${Math.max(Of(t,Od(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=Od(t,s.startMs);return Bo.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*Ob+4,height:Ob-8,borderRadius:2,left:`${Of(t,l)}%`,width:`max(3px, ${Of(t,Od(t,s.endMs)-l)}%)`,background:ny(s)?"var(--color-error)":a.color}})}))))});function u$({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,Bo.useRef)(null),i=Ru.length*Ob,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 Bo.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},Bo.default.createElement("div",{style:{width:zAe,flexShrink:0}},Ru.map(u=>Bo.default.createElement("div",{key:u.lane,style:{height:Ob,display:"flex",alignItems:"center",gap:6,fontFamily:U,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},Bo.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),Bo.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"}},Bo.default.createElement(BAe,{axis:e,entries:t,recordings:r}),Bo.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${Of(e,n)}%`,background:"var(--color-text-primary)"}})))}var ua=X(J());var FAe=Object.fromEntries(Ru.map(e=>[e.lane,e])),WAe=(0,ua.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=FAe[t.lane],l=ny(t);return ua.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"}},ua.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},ry(t.startMs-r)),ua.default.createElement("span",{style:{fontFamily:U,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),ua.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},Tee(t)),t.duration_ms>0&&ua.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),Pee=(0,ua.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,ua.useRef)(null),l=(0,ua.useRef)(null);return(0,ua.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?ua.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>ua.default.createElement(WAe,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):ua.default.createElement("div",{style:{padding:20,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var Ui=X(J());var UAe=Object.fromEntries(Ru.map(e=>[e.lane,e.label])),HAe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:U,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function qAe(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function KAe({label:e,value:t}){let r=qAe(t);return r==null?null:Ui.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},Ui.default.createElement($e,{size:10},e),Ui.default.createElement("pre",{style:HAe},r))}function VAe(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 c$({entry:e}){return e?Ui.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},Ui.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ui.default.createElement(ve,{tone:ny(e)?"error":"muted"},UAe[e.lane]),e.role&&Ui.default.createElement(ve,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&Ui.default.createElement("span",{style:{fontFamily:U,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),Ui.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,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&&Ui.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),VAe(e).map(([t,r])=>Ui.default.createElement(KAe,{key:t,label:t,value:r}))):Ui.default.createElement("div",{style:{padding:16,fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var ho=X(J());var Mee="action-agent-session-player",Iee="/session_player",Dee="allow-scripts allow-same-origin";function $ee(e,t={}){return{...t,channel:Mee,type:e}}function jee(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===Mee&&typeof e.data.type=="string"}async function YAe(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 XAe="the session player did not start",ZAe={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 d$({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,ho.useRef)(null),s=(0,ho.useRef)(null),[l,u]=(0,ho.useState)(!1),[c,d]=(0,ho.useState)(!1),[p,f]=(0,ho.useState)(null),[m,g]=(0,ho.useState)({state:"loading"}),b=Eee(e,t),h=b?.id,y=p!==null&&p===s.current,x=b?Nee(b,t):null,v=(w,_)=>{i.current?.contentWindow?.postMessage($ee(w,_),window.location.origin)};(0,ho.useEffect)(()=>{let w=_=>{if(!jee(_,i.current?.contentWindow,window.location.origin))return;let{type:A}=_.data;A==="ready"?d(!0):A==="loaded"?f(_.data.token):A==="error"&&g({state:"error",message:_.data.message})};return window.addEventListener("message",w),()=>window.removeEventListener("message",w)},[]),(0,ho.useEffect)(()=>{if(!l||c)return;let w=setTimeout(()=>g({state:"error",message:XAe}),5e3);return()=>clearTimeout(w)},[l,c]),(0,ho.useEffect)(()=>{if(!c||h==null)return;let w=!1,_=[],A=`${h}:${Date.now()}`;return s.current=A,f(null),g({state:"loading"}),Oee(h,{fetchPage:YAe,isCancelled:()=>w,onEvents:C=>{if(_===null){v("append",{events:C});return}_=_.concat(C),!(_.length<2)&&(v("load",{events:_,token:A}),_=null)}}).then(({truncated:C})=>{w||g(_!==null?{state:"empty"}:{state:C?"truncated":"ready"})}).catch(C=>{w||g({state:"error",message:C.message})}),()=>{w=!0}},[c,h]);let k=x?.phase;(0,ho.useEffect)(()=>{!y||!x||v("seek",{offset:x.offsetMs,playing:n&&k==="during"})},[y,a,n,k]),(0,ho.useEffect)(()=>{y&&v("speed",{speed:o})},[y,o]);let S=m.state==="error"?m.message:k==="before"?`the browser recording starts at ${ry(b.startMs-r)}`:ZAe[m.state];return ho.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},ho.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},ho.default.createElement($e,null,"browser"),b&&ho.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},b.name||`recording ${b.id}`,e.length>1?` \xB7 ${e.indexOf(b)+1} of ${e.length}`:""),S&&ho.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},S)),ho.default.createElement("iframe",{ref:i,title:"Browser recording",src:rt(Iee),sandbox:Dee,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:k==="before"?.4:1}}))}var Ha=X(J());function p$(e){let[t,r]=(0,Ha.useState)(0),[n,o]=(0,Ha.useState)(!1),[a,i]=(0,Ha.useState)(1),[s,l]=(0,Ha.useState)(0),u=(0,Ha.useRef)(0),c=(0,Ha.useRef)(0),d=(0,Ha.useCallback)((g,b)=>{let h=Math.min(Math.max(g,0),e.totalMs),y=Cee(e,h);return u.current=h,r(h),(b||y!==c.current)&&l(x=>x+1),c.current=y,h},[e]);(0,Ha.useEffect)(()=>{if(!n)return;let g=null,b=performance.now(),h=y=>{let x=d(u.current+(y-b)*a,!1);if(b=y,x>=e.totalMs){o(!1);return}g=requestAnimationFrame(h)};return g=requestAnimationFrame(h),()=>cancelAnimationFrame(g)},[n,a,e,d]);let p=(0,Ha.useCallback)(g=>d(g,!0),[d]),f=(0,Ha.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,Ha.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var JAe=[.5,1,2,4,8,16],QAe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function RAe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function eEe(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function tEe({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ht.useMemo)(()=>xee(r.lanes),[r]),i=(0,ht.useMemo)(()=>bee(r.recordings),[r]),s=(0,ht.useMemo)(()=>See(wee(a,i)),[a,i]),l=p$(s),{seek:u,pause:c}=l,[d,p]=(0,ht.useState)(()=>new Set(i$)),[f,m]=(0,ht.useState)(null),g=_ee(s,l.position)??s.startMs,b=(0,ht.useMemo)(()=>a.filter(O=>d.has(O.lane)),[a,d]),h=a[s$(a,g)]||null,y=b[s$(b,g)]?.id??null,x=a.find(O=>O.id===f)||h,v=(0,ht.useMemo)(()=>eEe(a),[a]),k=(0,ht.useCallback)(O=>{c(),m(O.id),u(Od(s,O.startMs))},[s,c,u]),S=O=>{let D=Aee(b,g,O);D!==null&&(c(),m(null),u(Od(s,D)))},w=()=>{m(null),l.togglePlay()},_=O=>p(D=>{let H=new Set(D);return H.has(O)?H.delete(O):H.add(O),H}),A=r.session||{},C=a.length===0&&i.length===0;return ht.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1400}},ht.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},ht.default.createElement("div",{style:{minWidth:0}},ht.default.createElement(ie,{variant:"ghost",size:"sm",onClick:n,style:{padding:"2px 0",marginBottom:6}},"<- Sessions"),ht.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},QAe[e]||"Session"," #",t),ht.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},A.started_at&&ht.default.createElement("span",{title:A.started_at},"started ",new Date(A.started_at).toLocaleString()),s.startMs!==null&&ht.default.createElement("span",null,jA(s.endMs-s.startMs)," long"),ht.default.createElement("span",null,v.message||0," messages \xB7 ",v.llm||0," model calls \xB7 ",v.tool||0," tool calls"),i.length>0&&ht.default.createElement("span",null,"browser recorded"))),ht.default.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},A.truncated&&ht.default.createElement(ve,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?ht.default.createElement(je,{testId:"replay-empty"},ht.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"Nothing to replay yet."),ht.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.")):ht.default.createElement(ht.default.Fragment,null,ht.default.createElement(je,{padding:14,style:{display:"flex",flexDirection:"column",gap:12}},ht.default.createElement("div",{"data-testid":"replay-controls",style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ht.default.createElement(ie,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>S(-1)},"|<"),ht.default.createElement(ie,{size:"sm",variant:"primary",testId:"replay-play",onClick:w,style:{minWidth:72}},l.playing?"Pause":"Play"),ht.default.createElement(ie,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>S(1)},">|"),ht.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:U,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},JAe.map(O=>ht.default.createElement("option",{key:O,value:O},O,"x"))),ht.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:U,fontSize:12,color:"var(--color-text-primary)"}},ry(g-s.startMs)),ht.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"},title:"Idle stretches longer than 10 seconds play as one second"},Number.isFinite(g)?new Date(g).toLocaleTimeString():"")),ht.default.createElement(u$,{axis:s,entries:a,recordings:i,position:l.position,onSeek:u})),ht.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 3fr) minmax(0, 2fr)",gap:16,alignItems:"start"}},ht.default.createElement(je,{padding:0,style:{overflow:"hidden"}},ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},ht.default.createElement($e,{style:{marginRight:6}},"timeline"),Ru.map(O=>ht.default.createElement(In,{key:O.lane,mono:!0,selected:d.has(O.lane),onClick:()=>_(O.lane)},O.label," ",v[O.lane]||0))),ht.default.createElement(Pee,{entries:b,startMs:s.startMs,currentId:y,selectedId:f,playing:l.playing,onChoose:k})),ht.default.createElement(je,{padding:0},ht.default.createElement(c$,{entry:x}))),i.length>0&&ht.default.createElement(je,{padding:14},ht.default.createElement(d$,{recordings:i,time:g,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function f$({kind:e,id:t,onBack:r,onHandoff:n}){let[o,a]=(0,ht.useState)({status:"loading"}),[i,s]=(0,ht.useState)(!1);(0,ht.useEffect)(()=>{let c=!1;return a({status:"loading"}),fetch(RAe(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 ht.default.createElement(tEe,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ht.default.createElement(ie,{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 ht.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:12,maxWidth:1400}},ht.default.createElement(ie,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ht.default.createElement(je,{testId:`replay-${o.status}`},ht.default.createElement("div",{style:{fontSize:13,color:o.status==="loading"?"var(--color-text-muted)":"var(--color-text-primary)"}},u)))}var mt=X(J());function Lee(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var g$=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],h$=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],Pb=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),Bee={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},m$=/^(\d{4})-(\d{2})-(\d{2})$/,rEe={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>g$.some(t=>t.value&&t.value===e),outcome:e=>h$.some(t=>t.value&&t.value===e),from:e=>m$.test(e),to:e=>m$.test(e)};function LA(e={}){let t={...Pb};for(let r of Object.keys(Pb)){let n=String(e[r]??"");n&&rEe[r](n)&&(t[r]=n)}return t}function y$(e={}){return Object.values(LA(e)).some(Boolean)}function Fee(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(Bee))r[n]=t.get(o)||"";return LA(r)}function Wee(e={}){let t=new URLSearchParams,r=LA(e);for(let[o,a]of Object.entries(Bee))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function zee(e,t=0){let[,r,n,o]=e.match(m$);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var Uee=Object.freeze({openedFromSessions:!0});function Hee(e){return e?.openedFromSessions===!0}function qee(e={},{before:t=null,perPage:r=25}={}){let n=LA(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",zee(n.from)),n.to&&o.set("to",zee(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var Kee={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},nEe={failed:"error",passed:"success"},oy={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 Vee(e,t){let r=await fetch(qee(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 oEe(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 aEe({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return mt.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},mt.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:oy},mt.default.createElement("option",{value:""},"Every agent"),r.map(a=>mt.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&&mt.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:oy},mt.default.createElement("option",{value:""},"Run by anyone"),mt.default.createElement("option",{value:"me"},"Run by me")),mt.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:oy},g$.map(a=>mt.default.createElement("option",{key:a.value,value:a.value},a.label))),mt.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:oy},h$.map(a=>mt.default.createElement("option",{key:a.value,value:a.value},a.label))),mt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",mt.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:oy})),mt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",mt.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:oy})),y$(e)&&mt.default.createElement(ie,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(Pb)},"Clear filters"))}function iEe({session:e}){let t=Ch(e.kind,e.id),r=Kee[e.source]||Kee.agent,n=oEe(e);return mt.default.createElement("a",{href:rt(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),st(t,Uee))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},mt.default.createElement(ve,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),mt.default.createElement("div",{style:{minWidth:0,flex:1}},mt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},mt.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&&mt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&&mt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&&mt.default.createElement("div",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&mt.default.createElement(ve,{tone:nEe[e.outcome]||"muted"},e.outcome),mt.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},Co(e.last_activity_at)),mt.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function v$({agents:e=[],user:t=null}){let[r,n]=(0,mt.useState)(()=>Fee(window.location.search)),[o,a]=(0,mt.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,mt.useState)("loading"),[l,u]=(0,mt.useState)(null),[c,d]=(0,mt.useState)(!1),[p,f]=(0,mt.useState)(null),[m,g]=(0,mt.useState)(0),[b]=(0,mt.useState)(Lee);(0,mt.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${Wee(r)}`);let x=b.next();return s("loading"),d(!1),f(null),Vee(r,null).then(v=>{x()&&(a({sessions:v.sessions||[],total:v.total||0,nextBefore:v.next_before||null}),s("ready"))}).catch(v=>{x()&&(u(v.message),s("error"))}),()=>{b.next()}},[r,m]);let h=async()=>{let x=b.latest();d(!0),f(null);try{let v=await Vee(r,o.nextBefore);if(!x())return;a(k=>({sessions:[...k.sessions,...v.sessions||[]],total:v.total??k.total,nextBefore:v.next_before||null}))}catch(v){x()&&f(v.message)}finally{x()&&d(!1)}},y=y$(r);return mt.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},mt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},mt.default.createElement("div",null,mt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),mt.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"&&mt.default.createElement($e,null,o.total," session",o.total===1?"":"s")),mt.default.createElement(aEe,{filters:r,onChange:n,agents:e,user:t}),mt.default.createElement(je,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&mt.default.createElement(tn,null,"loading sessions\u2026"),i==="error"&&mt.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,mt.default.createElement(ie,{size:"sm",onClick:()=>g(x=>x+1)},"Retry")),i==="ready"&&o.sessions.length===0&&mt.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},y?mt.default.createElement(mt.default.Fragment,null,mt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),mt.default.createElement(ie,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(Pb)},"Clear filters")):mt.default.createElement(mt.default.Fragment,null,mt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),mt.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(x=>mt.default.createElement(iEe,{key:`${x.kind}-${x.id}`,session:x}))),i==="ready"&&o.nextBefore&&mt.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},p&&mt.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},p),mt.default.createElement(ie,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":p?"Try again":"Load more")))}var Pe=X(J());var Kt=X(J());var sEe={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function Gee(e){return sEe[e]||null}function zA(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function Yee({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 lEe="Setting your own host needs permission to manage the organization's keys.";function Xee({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?lEe:null}}var Jee={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"}},uEe=(e,t)=>!t||t.input==null||t.output==null?e:`${e} ($${t.input} / $${t.output} per 1M)`;function BA({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,Kt.useState)(null),[a,i]=(0,Kt.useState)(""),[s,l]=(0,Kt.useState)(""),[u,c]=(0,Kt.useState)(!1),[d,p]=(0,Kt.useState)({}),[f,m]=(0,Kt.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:f,saveProviderKey:async(y,{hostBased:x=!1,clearApiKey:v=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let k={provider:y,credential:a.trim()};r&&(k.scope=r),x&&(s.trim()||v)&&(k.api_key=v?"":s.trim());let S=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(k)});if(!S.ok){let w=await S.json().catch(()=>({}));throw new Error(Array.isArray(w.error)?w.error.join(", "):"save failed")}o(null),i(""),l(""),p(w=>({...w,[y]:null})),QT(),await e()}catch(k){t(`Could not save the ${Jee[y]?.label||y} credential${k.message!=="save failed"?`: ${k.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(y,{editing:x=!1}={})=>{if(!f){m(y),t(null);try{let v={provider:y};r&&(v.scope=r),x&&(a.trim()&&(v.credential=a.trim()),s.trim()&&(v.api_key=s.trim()));let k=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)}),S=await k.json().catch(()=>({}));if(!k.ok)throw new Error(S.error||"test failed");p(w=>({...w,[y]:S}))}catch(v){p(k=>({...k,[y]:{ok:!1,models:[],error:v.message}}))}finally{m(null)}}},removeProviderKey:async y=>{if(await jr(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(zA(`/api/provider_keys/${y}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(k=>({...k,[y]:null})),QT(),await e()}catch{t("Could not remove the provider credential.")}}}}var Zee={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 Mb({providerKeys:e,editor:t,scope:r,editable:n=!0}){let{darkMode:o}=ut(),{editingProvider:a,setEditingProvider:i,providerInput:s,setProviderInput:l,providerApiKeyInput:u,setProviderApiKeyInput:c,savingProvider:d,testResults:p,testingProvider:f,saveProviderKey:m,testProviderHost:g,removeProviderKey:b}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},y=Zee[r]||Zee.default;return Kt.default.createElement("div",{className:"border rounded-lg p-6",style:h},Kt.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},y.title),Kt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},y.description),!n&&Kt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),Kt.default.createElement("div",{className:"space-y-4"},e.filter(({kind:x})=>x!=="connection").map(x=>{let{provider:v,host_based:k,configured:S,hint:w,api_key_configured:_,api_key_hint:A,platform_default:C}=x,O=Jee[v]||{label:v,icon:"\u{1F511}",placeholder:""},D=a===v,H=p[v],j=f===v,Z=k&&(D?s.trim():S||C),N=S?k?`${w}${_?` \xB7 key ${A}`:""}`:`Configured (${w})`:k&&C?`Platform default: ${C}`:"Not configured",P=r==="personal"?Gee(x.effective_source):null,{canChange:M,canRemove:I,note:$}=Xee({editable:n,scope:r,row:x}),T=r==="organization"&&S?Yee(x):null;return Kt.default.createElement("div",{key:v,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Kt.default.createElement("div",{className:"flex items-center justify-between"},Kt.default.createElement("div",{className:"flex items-center space-x-3"},Kt.default.createElement("span",{className:"text-xl"},O.icon),Kt.default.createElement("div",null,Kt.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},O.label),Kt.default.createElement("p",{className:`text-sm ${S?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),T&&Kt.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},T)),P&&Kt.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"},P)),(M||I)&&Kt.default.createElement("div",{className:"flex items-center space-x-2"},M&&k&&!D&&Z&&Kt.default.createElement("button",{onClick:()=>g(v),disabled:j,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"}`},j?"Testing\u2026":"Test connection"),I&&!D&&Kt.default.createElement("button",{onClick:()=>b(v),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"),M&&Kt.default.createElement("button",{onClick:()=>{i(D?null:v),l(!D&&k&&S?w:""),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"}`},D?"Cancel":S?"Update":"Configure"))),$&&Kt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},$),D&&Kt.default.createElement("div",{className:"mt-3 space-y-2"},Kt.default.createElement("div",{className:"flex items-center space-x-2"},Kt.default.createElement("input",{type:k?"text":"password","data-aa-secret":k?void 0:"",value:s,onChange:q=>l(q.target.value),onKeyDown:q=>q.key==="Enter"&&m(v,{hostBased:k}),placeholder:k?O.placeholder:`${O.label} API key (${O.placeholder})`,"aria-label":k?`${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"}`}),k&&Kt.default.createElement("button",{onClick:()=>g(v,{editing:!0}),disabled:!s.trim()||j,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"}`},j?"Testing\u2026":"Test"),Kt.default.createElement("button",{onClick:()=>m(v,{hostBased:k}),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")),k&&Kt.default.createElement("div",{className:"flex items-center space-x-2"},Kt.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:q=>c(q.target.value),onKeyDown:q=>q.key==="Enter"&&m(v,{hostBased:k}),placeholder:_?`API key (stored: ${A} \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"}`}),_&&Kt.default.createElement("button",{onClick:()=>m(v,{hostBased:k,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"))),k&&D&&Kt.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."),k&&H&&Kt.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:H.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:H.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},H.ok?Kt.default.createElement(Kt.default.Fragment,null,Kt.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",H.host,H.cloud?" (Ollama Cloud)":"",typeof H.latency_ms=="number"?` in ${H.latency_ms} ms`:""," \xB7 ",H.models.length===0?H.cloud?"no models listed":"no models pulled yet (run `ollama pull ` on the server)":`${H.models.length} model${H.models.length===1?"":"s"}`,H.models.length>0&&Kt.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},H.models.map(q=>uEe(q,H.rates?.[q])).join(" \xB7 ")),H.rates&&Object.keys(H.rates).length>0&&Kt.default.createElement("span",{className:"block mt-1"},"Rates are Ollama Cloud's list price per million input / output tokens; traces and evaluations on these models are priced at them.")):Kt.default.createElement(Kt.default.Fragment,null,Kt.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",H.error)))})))}async function Qee(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 FA=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function x$({account:e,user:t,subscription:r,agentCount:n=0}){let{darkMode:o}=ut(),[a,i]=(0,Pe.useState)(null),[s,l]=(0,Pe.useState)(!1),[u,c]=(0,Pe.useState)(!1),[d,p]=(0,Pe.useState)({status:"idle",value:null,error:null}),[f,m]=(0,Pe.useState)(!1),[g,b]=(0,Pe.useState)(null),[h,y]=(0,Pe.useState)(null),[x,v]=(0,Pe.useState)([]),[k,S]=(0,Pe.useState)(!1),[w,_]=(0,Pe.useState)(null),A=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Pe.useEffect)(()=>{fetch("/api/usage").then(T=>T.ok?T.json():null).then(T=>i(T?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(T=>T.ok?T.json():null).then(T=>y(T?.members||[])).catch(()=>y([]))},[]);let C=(0,Pe.useCallback)(async()=>{try{let T=await fetch("/api/provider_keys?scope=organization");if(!T.ok)throw new Error("load failed");let q=await T.json();v(q.provider_keys||[]),S(!!q.can_manage_organization_keys),_(null)}catch{_("Could not load the organization's provider keys.")}},[]);(0,Pe.useEffect)(()=>{C()},[C]);let O=BA({onKeysChanged:C,onError:_,scope:"organization"}),D=async()=>{m(!0),b(null);try{await Xh({planSlug:"pro"})}catch(T){b(T.message),m(!1)}},H=async()=>{if(d.status==="ready")return d.value;p({status:"loading",value:null,error:null});try{let T=await Qee();return p({status:"ready",value:T,error:null}),T}catch(T){return p({status:"error",value:null,error:T.message}),null}},j=async()=>{u?c(!1):await H()&&c(!0)},Z=async()=>{let T=await H();if(T)try{await navigator.clipboard.writeText(T),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,P={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},M=r?.plan_name||"Free",I={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[M.toLowerCase()]||I.free;return Pe.default.createElement("div",{className:"p-6 space-y-6"},Pe.default.createElement("div",null,Pe.default.createElement("h2",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},"Organization"),Pe.default.createElement("p",{className:`mt-1 ${o?"text-gray-400":"text-gray-500"}`},"Manage your workspace, team, and billing")),Pe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6"},Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Workspace"),Pe.default.createElement("div",{className:"space-y-3"},Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Name"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.name||"My Workspace")),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Owner"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},t?.email||"you@example.com")),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Created"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.created_at?new Date(e.created_at).toLocaleDateString():"Today")))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Pe.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Current Plan"),Pe.default.createElement("span",{className:"px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm font-medium"},M)),Pe.default.createElement("div",{className:"space-y-3"},Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Team Seats"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},$.seats)),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Workspaces"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},$.workspaces)),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Agents"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},$.agents)),Pe.default.createElement("div",{className:"flex justify-between items-center"},Pe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Traces"),Pe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},$.traces))),M.toLowerCase()!=="enterprise"&&Pe.default.createElement(Pe.default.Fragment,null,Pe.default.createElement("button",{onClick:D,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"),g&&Pe.default.createElement("p",{className:"mt-2 text-sm text-red-500 text-center"},g)))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Pe.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Team Members"),A&&Pe.default.createElement("a",{href:A,className:"px-4 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors"},"+ Invite Member")),Pe.default.createElement("div",{className:"overflow-hidden"},Pe.default.createElement("table",{className:"min-w-full"},Pe.default.createElement("thead",null,Pe.default.createElement("tr",{className:o?"border-b border-gray-700":"border-b border-gray-200"},Pe.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Member"),Pe.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Role"))),Pe.default.createElement("tbody",null,(h||[]).map(T=>Pe.default.createElement("tr",{key:T.id??T.email},Pe.default.createElement("td",{className:"py-3 px-4"},Pe.default.createElement("div",{className:"flex items-center space-x-3"},Pe.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},Pe.default.createElement("span",{className:"text-red-600 font-medium text-sm"},(T.name||T.email||"?").charAt(0).toUpperCase())),Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},T.name||T.email,T.id!=null&&T.id===t?.id&&Pe.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),T.name&&T.email&&Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},T.email)))),Pe.default.createElement("td",{className:"py-3 px-4"},T.role?Pe.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(T.role).charAt(0).toUpperCase()+String(T.role).slice(1)):Pe.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Pe.default.createElement("div",{className:"space-y-2"},w&&Pe.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},w),Pe.default.createElement(Mb,{providerKeys:x,editor:O,scope:"organization",editable:k})),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Usage This Month"),Pe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4"},Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},n),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Agents")),Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},FA(a?.traces_used),a?.traces_limit>0&&Pe.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",FA(a.traces_limit))),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Traces")),Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},FA(a?.runs_used)),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Executions")),Pe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Pe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},FA(a?.tokens_used)),Pe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Tokens")))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:P},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${o?"text-white":"text-gray-900"}`},"Telemetry"),Pe.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"," ",Pe.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"),", under each environment that should report:"),Pe.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"}`},Cw(Aw())),Pe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Pe.default.createElement("div",{className:"min-w-0 flex-1"},Pe.default.createElement("p",{className:`text-xs uppercase tracking-wide mb-1 ${o?"text-gray-500":"text-gray-400"}`},"API Key"),Pe.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))),Pe.default.createElement("div",{className:"flex gap-2 flex-shrink-0 self-end"},Pe.default.createElement("button",{onClick:j,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"),Pe.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&&Pe.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Me=X(J());var Ge=X(J());var cEe=/^[A-Za-z_][A-Za-z0-9_]*$/,dEe=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,pEe={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},fEe=["sk_live_","rk_live_"],Ree=8,ete=2e3;function WA(e){return e?cEe.test(e)?dEe.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 UA(e,t){let r=[],n=typeof t=="string"?t:"";return fEe.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||pEe[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function tte(e,t){return[...e,...Ib([{name:t}])]}function rte({name:e,edited:t,fullName:r}){return t?e:r}function Db(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 ay(e){for(let t of e){let r=WA(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 nte({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 b$(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function mEe(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function ote({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=mEe(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 HA={supported:"success",bootstrap:"info",unsupported:"error"};function ate(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 ite(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 ste={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function lte(e){return e?.sandbox_state==="booting"}function Pf(e){return e==null?"/projects/new":`/projects/${e}`}function $b(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var ute=["overview","explorations","environment","browser","sessions"];function cte(e=""){let t=new URLSearchParams(e).get("tab");return ute.includes(t)?t:"overview"}function dte(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!ute.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function qA(e){if(!e?.project?.id)return null;let t=Pf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function pte(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 Fn=X(J());function Mf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=ut(),[a,i]=(0,Fn.useState)(e.browser||null),[s,l]=(0,Fn.useState)(!1),[u,c]=(0,Fn.useState)(null),[d,p]=(0,Fn.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,Fn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(_,A,C)=>{c(_),p(null);try{let O=await fetch(f,A),D=await O.json().catch(()=>({}));if(D.browser&&(i(D.browser),n?.(D.browser)),!O.ok)throw new Error(D.message||ot(D,`${C} (HTTP ${O.status}).`))}catch(O){p(O.message)}finally{c(null)}},g=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(rJ({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",y=o?"text-white":"text-gray-900",x=o?"border-gray-700":"border-gray-200",v=`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"}`,k=eJ(a),S=tJ(a),w=a?.status==="running";return Fn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${x}`},Fn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Fn.default.createElement("div",{className:"flex items-center gap-2"},Fn.default.createElement("p",{className:`text-sm font-medium ${y}`},"Browser"),k&&Fn.default.createElement(Qs,{tone:k.tone},k.label)),S?Fn.default.createElement("button",{type:"button",onClick:b,disabled:u!==null,className:v},u==="stop"?"Stopping\u2026":"Stop browser"):Fn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&Fn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},Fn.default.createElement("input",{type:"checkbox",checked:s,onChange:_=>l(_.target.checked),disabled:u!==null}),"Open a window on this machine"),Fn.default.createElement("button",{type:"button",onClick:g,disabled:u!==null,className:v},u==="start"?"Starting\u2026":"Start browser"))),d&&Fn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!S&&!d&&Fn.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."),w&&a.server_key&&Fn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",Fn.default.createElement("code",{className:"font-mono"},a.server_key),"."),w&&a.live_url&&Fn.default.createElement(H0,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),w&&!a.live_url&&Fn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var sr=X(J());var fn=X(J());function fte(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function KA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var mte={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 If({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}=ut(),[g,b]=(0,fn.useState)(""),[h,y]=(0,fn.useState)(!1),x=m?"text-gray-400":"text-gray-500",v=m?"text-white":"text-gray-900",k={backgroundColor:m?"#252525":"#f9fafb"},S=`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"}`,w=fte(e,n);(0,fn.useEffect)(()=>{if(!h||!d)return;let C=()=>{y(!1),d()};return window.addEventListener("focus",C),()=>window.removeEventListener("focus",C)},[h,d]);let _=c?fn.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>y(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,A=p?fn.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),b$(g)&&p(g)}},fn.default.createElement("input",{type:"text",value:g,onChange:C=>b(C.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:S,"data-testid":"repo-picker-typed-name"}),fn.default.createElement("button",{type:"submit",disabled:!b$(g),className:`px-3 py-2 border rounded-lg text-sm ${v}`},"Look up")):null;if(l!=="ready"){let C=["not_connected","reconnect_required"].includes(l)&&u;return fn.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},fn.default.createElement("p",{className:`text-sm ${x}`},mte[l]||mte.loading),C&&fn.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&fn.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${v}`},"Check again"),l==="empty"&&_,l==="empty"&&A,f&&fn.default.createElement("p",{className:"text-sm text-red-500"},f))}return fn.default.createElement("div",{className:"space-y-2"},fn.default.createElement("input",{type:"text",value:n,onChange:C=>o(C.target.value),placeholder:"Filter repositories",className:S}),fn.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},w.map(C=>fn.default.createElement("label",{key:C.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:k},a==="single"?fn.default.createElement("input",{type:"radio",name:"repository",checked:i===C.full_name,onChange:()=>s(C.full_name)}):fn.default.createElement("input",{type:"checkbox",checked:t.has(C.full_name),onChange:()=>r(C.full_name)}),fn.default.createElement("span",{className:`text-sm font-mono ${v}`},C.full_name),C.private&&fn.default.createElement("span",{className:`text-xs ${x}`},"private"))),w.length===0&&fn.default.createElement("p",{className:`text-sm ${x}`},"No repositories match.")),(_||A)&&fn.default.createElement("div",{className:"space-y-2"},_,A,f&&fn.default.createElement("p",{className:"text-sm text-red-500"},f)))}var gte={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."},members_permission:{tone:"error",text:"GitHub would not show your role in the organization, so the installation was not linked. Give the GitHub App the organization permission Members (read), accept the new permission on the installation, and link it again. If the organization uses SAML single sign-on, authorize the App for it too."},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 hte(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function VA(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 yte(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>VA(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 vte(e,t){let r=new Map;return(t||[]).forEach(n=>{VA(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 xte(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function bte(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function wte(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 w$({app:e,onChanged:t,onError:r,onNotice:n}){let{darkMode:o}=ut(),[a,i]=(0,sr.useState)(null),[s,l]=(0,sr.useState)(null),[u,c]=(0,sr.useState)(new Set),[d,p]=(0,sr.useState)(""),[f,m]=(0,sr.useState)(!1),[g,b]=(0,sr.useState)(null),[h,y]=(0,sr.useState)(""),[x,v]=(0,sr.useState)(!1);if(!e||!e.configured&&!e.manifest_available)return null;let k=o?"text-gray-400":"text-gray-500",S=o?"text-white":"text-gray-900",w={backgroundColor:o?"#252525":"#f9fafb"},_=`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"}`,A=`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"},O=async M=>{r(null);try{let I=await fetch(`/api/github_installations/${M.id}/repositories`),$=await I.json().catch(()=>({}));if(!I.ok)throw $.reinstall_required&&t(),new Error($.error||"Could not list the installation's repositories.");l($.repositories||[]),c(new Set((M.repositories||[]).map(T=>T.full_name))),p(""),i(M.id)}catch(I){r(I.message)}},D=async M=>{b(M.id),r(null);try{let I=await fetch(`/api/github_installations/${M.id}/repositories`),$=await I.json().catch(()=>({}));if(!I.ok)throw new Error($.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${M.account_login} is active again.`})}catch(I){r(I.message)}finally{b(null),t()}},H=()=>{i(null),l(null)},j=async()=>{m(!0),r(null);try{let M=await fetch(`/api/github_installations/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...u]})}),I=await M.json().catch(()=>({}));if(!M.ok)throw new Error(I.error||"Could not save the selection.");H(),n({tone:"success",text:"Repository selection saved."}),t()}catch(M){r(M.message)}finally{m(!1)}},Z=async M=>{if(await jr({title:`Unlink @${M.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 I=await fetch(`/api/github_installations/${M.id}`,{method:"DELETE"});if(!I.ok&&I.status!==404)throw new Error("Could not unlink the installation.");a===M.id&&H(),t()}catch(I){r(I.message)}}},N=async()=>{let M=h.trim();if(M&&!bte(M)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}v(!0),r(null);try{let I=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M?{organization:M}:{})}),$=await I.json().catch(()=>({}));if(!I.ok)throw new Error($.error||"Could not start creating the GitHub App.");wte(document,$.url,$.manifest)}catch(I){r(I.message),v(!1)}};if(!e.configured)return sr.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:w},sr.default.createElement("p",{className:`text-sm font-medium ${S}`},"Use a GitHub App"),sr.default.createElement("p",{className:`text-xs ${k}`},"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."),sr.default.createElement("div",{className:"flex items-center gap-2"},sr.default.createElement("input",{type:"text",value:h,onChange:M=>y(M.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"}`}),sr.default.createElement("button",{type:"button",onClick:N,disabled:x,className:`${_} disabled:opacity-50`},x?"Opening GitHub\u2026":"Create GitHub App")));let P=e.installations||[];return sr.default.createElement("div",{className:"space-y-3"},sr.default.createElement("div",{className:"flex items-center justify-between"},sr.default.createElement("div",null,sr.default.createElement("p",{className:`text-sm font-medium ${S}`},"GitHub App"),sr.default.createElement("p",{className:`text-xs ${k}`},"Each checkout gets a one-hour token limited to its repository. When a repository is reachable both ways, the App is used.")),sr.default.createElement("a",{href:rt("/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")),P.length===0&&sr.default.createElement("p",{className:`text-sm ${k}`},"No installation is linked yet. Install the App on the repositories this workspace should use."),P.map(M=>{let I=VA(M),$=M.repositories||[];return sr.default.createElement("div",{key:M.id,className:"p-3 rounded-lg space-y-2",style:w},sr.default.createElement("div",{className:"flex items-center justify-between gap-3"},sr.default.createElement("div",{className:"min-w-0"},sr.default.createElement("p",{className:`text-sm font-mono ${S}`},hte(M)),sr.default.createElement("p",{className:`text-xs ${I?C[I.tone]:k}`},I?I.label:`${$.length} selected for sandboxes`)),sr.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===M.id?sr.default.createElement(sr.default.Fragment,null,sr.default.createElement("button",{type:"button",onClick:H,className:_},"Cancel"),sr.default.createElement("button",{type:"button",onClick:j,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})`)):sr.default.createElement(sr.default.Fragment,null,I?sr.default.createElement("button",{type:"button",onClick:()=>D(M),disabled:g===M.id,className:`${_} disabled:opacity-50`},g===M.id?"Checking\u2026":"Check again"):sr.default.createElement("button",{type:"button",onClick:()=>O(M),className:_},"Choose repositories"),M.settings_url&&sr.default.createElement("a",{href:M.settings_url,target:"_blank",rel:"noreferrer",className:_},"Access on GitHub"),sr.default.createElement("button",{type:"button",onClick:()=>Z(M),className:A},"Unlink")))),a===M.id&&s&&sr.default.createElement(If,{repositories:s,selection:u,onToggle:T=>c(q=>KA(q,T)),filter:d,onFilterChange:p}))}))}var hEe={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 S$({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=ut(),[o,a]=(0,Ge.useState)(null),[i,s]=(0,Ge.useState)(null),[l,u]=(0,Ge.useState)(new Set),[c,d]=(0,Ge.useState)(""),[p,f]=(0,Ge.useState)(!1),[m,g]=(0,Ge.useState)(null),[b,h]=(0,Ge.useState)(hEe[e]||gte[t]||null),[y,x]=(0,Ge.useState)([]),[v,k]=(0,Ge.useState)(null),[S,w]=(0,Ge.useState)({}),[_,A]=(0,Ge.useState)(null),[C,O]=(0,Ge.useState)(null),[D,H]=(0,Ge.useState)(0),[j,Z]=(0,Ge.useState)({}),N=(0,Ge.useRef)({}),P=(0,Ge.useCallback)(async()=>{try{let fe=await fetch("/api/github_connection");if(!fe.ok)throw new Error("status failed");let ze=await fe.json();a(ze),u(new Set((ze.connection?.repositories||[]).map(Vt=>Vt.full_name)))}catch{g("Could not load the GitHub connection. Are you signed in?")}},[]);(0,Ge.useEffect)(()=>{P()},[P]);let M=(0,Ge.useCallback)(async()=>{try{let fe=await fetch("/api/sandboxes?sandbox_type=app_runtime"),ze=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(ot(ze,`Could not list your sandboxes (HTTP ${fe.status}).`));x(ze.sandboxes||[]),k({codeSessions:!!ze.code_sessions_supported,claudeCode:{...j2(ze),sandboxes:ze.claude_code_sandboxes||[]},codex:L2(ze),pullRequests:ze.pull_requests_supported===!0,browserModes:Array.isArray(ze.browser_modes)?ze.browser_modes:[]})}catch(fe){g(fe.message)}},[]),I=o!==null,$=!!o?.connected;(0,Ge.useEffect)(()=>{I&&M()},[I,$,M,r]);let T=y.filter(fe=>I2(fe)&&!j[fe.session_id]?.stopped).map(fe=>fe.session_id).join(" ");(0,Ge.useEffect)(()=>{if(!T)return;let fe=!1,ze=setTimeout(async()=>{let Vt=await Promise.all(T.split(" ").map(async Gt=>{try{let Se=await fetch(`/api/sandboxes/${encodeURIComponent(Gt)}`);if(Se.status===404)return{id:Gt,gone:!0};let tt=await Se.json().catch(()=>({}));return Se.ok?{id:Gt,sandbox:tt.sandbox||null}:{id:Gt,status:Se.status,error:ot(tt,`Could not check on this sandbox (HTTP ${Se.status}).`)}}catch{return{id:Gt,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(fe)return;let Ot={};Vt.forEach(({id:Gt,status:Se,error:tt})=>{if(!tt){delete N.current[Gt],Ot[Gt]=null;return}let dt=(N.current[Gt]||0)+1;N.current[Gt]=dt,Ot[Gt]={message:tt,stopped:O2(Se,dt)}}),Z(Gt=>Object.entries(Ot).reduce((Se,[tt,dt])=>{if(dt)return{...Se,[tt]:dt};if(!(tt in Se))return Se;let{[tt]:zt,...Gr}=Se;return Gr},Gt)),x(Gt=>Vt.reduce((Se,tt)=>tt.gone?Se.filter(dt=>dt.session_id!==tt.id):tt.sandbox?JX(Se,tt.sandbox,"session_id"):Se,Gt)),H(Gt=>Gt+1)},2e3);return()=>{fe=!0,clearTimeout(ze)}},[T,D]);let q=fe=>{delete N.current[fe],Z(ze=>{let{[fe]:Vt,...Ot}=ze;return Ot})},G=(fe,ze)=>{w(Vt=>({...Vt,[fe]:ze}))},L=async()=>{g(null);try{let fe=await fetch("/api/github_connection/repositories"),ze=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(ze.error||"Could not list repositories.");s(ze.repositories||[])}catch(fe){g(fe.message)}},Y=fe=>{u(ze=>KA(ze,fe))},K=async()=>{f(!0),g(null);try{let fe=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),ze=await fe.json().catch(()=>({}));if(!fe.ok)throw new Error(ze.error||"Could not save the selection.");a(Vt=>({...Vt,connection:ze.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(fe){g(fe.message)}finally{f(!1)}},pe=async()=>{if(await jr({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 P()}catch{g("Could not disconnect GitHub.")}},De=async fe=>{A(fe),G(fe,null);try{let ze=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:fe})}),Vt=await ze.json().catch(()=>({}));if(!ze.ok)throw new Error(ot(Vt,`Could not start the sandbox (HTTP ${ze.status}).`));x(Ot=>xd(Ot,Vt.sandbox,"session_id"))}catch(ze){G(fe,ze.message)}finally{A(null)}},se=async fe=>{if(!(fe.status!=="failed"&&!await jr({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(fe.session_id),G(fe.repository,null);try{let ze=await fetch(`/api/sandboxes/${encodeURIComponent(fe.session_id)}`,{method:"DELETE"}),Vt=await ze.json().catch(()=>({}));if(!ze.ok&&ze.status!==404)throw new Error(ot(Vt,`Could not stop the sandbox (HTTP ${ze.status}).`));x(Ot=>Ot.filter(Gt=>Gt.session_id!==fe.session_id)),q(fe.session_id)}catch(ze){G(fe.repository,ze.message)}finally{O(null)}}},be=n?"text-gray-400":"text-gray-500",ue=n?"text-white":"text-gray-900",R={backgroundColor:n?"#252525":"#f9fafb"},we=`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"}`,Ce=o?.connection,z=Ce?.repositories||[],ee=o?.app?.configured?o.app.installations||[]:[],ae=vte(Ce,ee),{byRepository:E,others:W}=RX(y,ae.map(fe=>fe.full_name)),F=ee.length>0,B=yte(ee),Ee=n?"text-red-400":"text-red-600",Ve=(fe,{standalone:ze=!1}={})=>{let{label:Vt,tone:Ot}=VX(fe.status),Gt=I2(fe),Se=GX(fe),tt=Se?KX(fe.expires_at):null,dt=Gt?j[fe.session_id]:null;return Ge.default.createElement("div",{key:fe.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},Ge.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ge.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},Ge.default.createElement(Qs,{tone:Ot},Vt),Ge.default.createElement("span",{className:`font-mono truncate ${be}`},ze?fe.repository:"","@",fe.repository_ref),tt&&Ge.default.createElement("span",{className:`shrink-0 ${be}`},"\xB7 ",tt),qA(fe)&&Ge.default.createElement("a",{href:rt(qA(fe)),onClick:zt=>{zt.preventDefault(),st(qA(fe))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:fe.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",fe.project.name," \u2192")),Ge.default.createElement("button",{onClick:()=>se(fe),disabled:C===fe.session_id,className:`shrink-0 px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},C===fe.session_id?"Stopping\u2026":fe.status==="failed"?"Dismiss":"Stop")),Gt&&!dt?.stopped&&Ge.default.createElement("p",{className:`text-xs ${be}`},"Checking out the repository and booting its app; this can take a few minutes."),dt&&Ge.default.createElement("p",{className:`text-xs ${Ee}`},dt.message," ",dt.stopped?Ge.default.createElement(Ge.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",Ge.default.createElement("button",{type:"button",onClick:()=>q(fe.session_id),className:"underline"},"Retry")):"Trying again\u2026"),fe.error_message&&Ge.default.createElement("pre",{className:`p-2 rounded text-xs font-mono whitespace-pre-wrap break-words max-h-48 overflow-y-auto border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},fe.error_message),fe.runtime_server_key&&Ge.default.createElement("p",{className:`text-xs ${be}`},"Enable ",Ge.default.createElement("code",{className:"font-mono"},fe.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),Se&&v?.codeSessions&&Ge.default.createElement(W0,{sandbox:fe,claudeCode:v.claudeCode?.mode==="sandbox_login"?{...v.claudeCode,connected:!!v.claudeCode.sandboxes.find(zt=>zt.session_id===fe.session_id)?.credential_mode}:v.claudeCode,codex:v.codex,onRecheckConnection:M}),Se&&v&&!v.codeSessions&&Ge.default.createElement("p",{className:`text-xs ${be}`},"The configured sandbox backend cannot run Claude Code sessions."),Se&&v?.pullRequests&&Ge.default.createElement(fb,{sandbox:fe}),Se&&v?.browserModes.length>0&&Ge.default.createElement(Mf,{sandbox:fe,modes:v.browserModes}))};return Ge.default.createElement("div",{className:"space-y-4"},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",{className:"flex items-center space-x-3"},Ge.default.createElement("span",{className:"text-xl"},"\u{1F419}"),Ge.default.createElement("div",null,Ge.default.createElement("p",{className:`font-medium ${ue}`},"GitHub"),Ge.default.createElement("p",{className:`text-sm ${o?.connected||B.active>0?n?"text-green-400":"text-green-600":be}`},o?[o.connected?`Connected as @${Ce.login}`:null,B.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?Ge.default.createElement("button",{onClick:pe,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?Ge.default.createElement("a",{href:rt("/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&&Ge.default.createElement("p",{className:`text-sm ${be}`},"The operator has not configured a GitHub OAuth app. Set ",Ge.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",Ge.default.createElement("code",null,"github_client_secret")," (or ",Ge.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",Ge.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",Ge.default.createElement("code",null,rt("/api/github_connection/callback"))," as its callback URL."),b&&Ge.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&&Ge.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),Ge.default.createElement(w$,{app:o?.app,onChanged:P,onError:g,onNotice:h}),o?.connected&&Ge.default.createElement("div",{className:"space-y-3"},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",null,Ge.default.createElement("p",{className:`text-sm font-medium ${ue}`},"OAuth connection"),Ge.default.createElement("p",{className:`text-xs ${be}`},z.length," selected for sandboxes, cloned with @",Ce.login,"'s token.")),i?Ge.default.createElement("div",{className:"flex items-center space-x-2"},Ge.default.createElement("button",{onClick:()=>{s(null),u(new Set(z.map(fe=>fe.full_name)))},className:we},"Cancel"),Ge.default.createElement("button",{onClick:K,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})`)):Ge.default.createElement("button",{onClick:L,className:we},"Choose repositories")),i&&Ge.default.createElement(If,{repositories:i,selection:l,onToggle:Y,filter:c,onFilterChange:d})),(o?.connected||F)&&!i&&Ge.default.createElement("div",{className:"space-y-3"},Ge.default.createElement("p",{className:`text-sm font-medium ${ue}`},"Available repositories"),ae.length===0?Ge.default.createElement("p",{className:`text-sm ${be}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Ge.default.createElement("div",{className:"space-y-2"},ae.map(fe=>{let ze=E[fe.full_name]||[],Vt=ze.some(I2),Ot=o.app?.configured?` \xB7 via ${xte(fe)}`:"";return Ge.default.createElement("div",{key:fe.full_name,className:"p-3 rounded-lg",style:R},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",null,Ge.default.createElement("p",{className:`text-sm font-mono ${ue}`},fe.full_name),Ge.default.createElement("p",{className:`text-xs ${be}`},fe.private?"private":"public"," \xB7 ",fe.default_branch,Ot)),Ge.default.createElement("button",{onClick:()=>De(fe.full_name),disabled:_===fe.full_name||Vt,className:`${we} disabled:opacity-50`},_===fe.full_name?"Starting\u2026":Vt?"Booting\u2026":"Start sandbox")),S[fe.full_name]&&Ge.default.createElement("p",{className:`mt-2 text-xs ${Ee}`},S[fe.full_name]),ze.map(Gt=>Ve(Gt)))}))),!i&&W.length>0&&Ge.default.createElement("div",{className:"space-y-2"},Ge.default.createElement("p",{className:`text-sm font-medium ${ue}`},$||F?"Other sandboxes":"Checkout sandboxes"),Ge.default.createElement("p",{className:`text-xs ${be}`},$||F?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),W.map(fe=>Ge.default.createElement(Ge.default.Fragment,{key:fe.session_id},S[fe.repository]&&Ge.default.createElement("p",{className:`text-xs ${Ee}`},S[fe.repository]),Ve(fe,{standalone:!0})))))}var Dt=X(J());var k$="claude_code";function _$({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Dt.useState)(null),[o,a]=(0,Dt.useState)(null),[i,s]=(0,Dt.useState)(!1),[l,u]=(0,Dt.useState)(""),[c,d]=(0,Dt.useState)(!1),[p,f]=(0,Dt.useState)(null),[m,g]=(0,Dt.useState)([]),[b,h]=(0,Dt.useState)(""),y=(0,Dt.useCallback)(async()=>{try{let[C,O]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!C.ok||!O.ok)throw new Error("load failed");let[D,H]=await Promise.all([C.json(),O.json()]);n((D.provider_keys||[]).find(Z=>Z.provider===k$)||{configured:!1}),a(j2(H));let j=(H.sandboxes||[]).filter(Z=>Z.status==="ready");g(j),h(Z=>j.some(N=>N.session_id===Z)?Z:j[0]?.session_id||"")}catch{f("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,Dt.useEffect)(()=>{y()},[y]);let x=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:k$,credential:l.trim()})});if(!C.ok){let O=await C.json().catch(()=>({}));throw new Error(Array.isArray(O.error)?O.error.join(", "):"Could not save the API key.")}s(!1),u(""),await y(),e?.()}catch(C){f(C.message)}finally{d(!1)}}},v=async()=>{if(await jr({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/${k$}`,{method:"DELETE"})).ok)throw new Error("delete failed");await y(),e?.()}catch{f("Could not disconnect Claude Code.")}},k=t?"text-gray-400":"text-gray-500",S=pZ(o,r),w=S.keyForm&&r?.configured,_={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:k}[S.tone],A=`underline ${t?"text-gray-300":"text-gray-700"}`;return Dt.default.createElement("div",{className:"space-y-3"},Dt.default.createElement("div",{className:"flex items-center justify-between"},Dt.default.createElement("div",{className:"flex items-center space-x-3"},Dt.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),Dt.default.createElement("div",null,Dt.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),Dt.default.createElement("p",{className:`text-sm ${_}`},S.status))),S.keyForm&&Dt.default.createElement("div",{className:"flex items-center space-x-2"},w&&!i&&Dt.default.createElement("button",{onClick:v,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},S.view==="sandbox_login"?"Remove API key":"Disconnect"),Dt.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":S.view==="sandbox_login"?w?"Update API key":"Add API key":S.needsReplacing?"Replace":w?"Update":"Connect")),S.view==="local_login"&&Dt.default.createElement("button",{onClick:()=>{f(null),y(),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")),S.view==="local_login"&&Dt.default.createElement("p",{className:`text-xs ${k}`},"Sessions run ",Dt.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",S.loginHint&&Dt.default.createElement(Dt.default.Fragment,null,"Run ",Dt.default.createElement("code",{className:"font-mono"},S.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),S.needsReplacing&&!i&&Dt.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."),S.keyForm&&i&&Dt.default.createElement(Dt.default.Fragment,null,Dt.default.createElement("div",{className:"flex items-center space-x-2"},Dt.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:C=>u(C.target.value),onKeyDown:C=>C.key==="Enter"&&x(),placeholder:uZ,"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"}`}),Dt.default.createElement("button",{onClick:x,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")),Dt.default.createElement("p",{className:`text-xs ${k}`},"Paste an Anthropic API key from the"," ",Dt.default.createElement("a",{href:cZ,target:"_blank",rel:"noreferrer",className:A},"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 (",Dt.default.createElement("a",{href:dZ,target:"_blank",rel:"noreferrer",className:A},"why"),"); to use your own subscription, use the sandbox sign-in below when enabled by this installation.")),S.view==="sandbox_login"&&Dt.default.createElement("div",{className:"space-y-3"},m.length>0?Dt.default.createElement(Dt.default.Fragment,null,Dt.default.createElement("label",{className:`block text-xs ${k}`},"Sandbox",Dt.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=>Dt.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)&&Dt.default.createElement(cf,{key:b,sandbox:m.find(C=>C.session_id===b),onChange:()=>{y(),e?.()}})):Dt.default.createElement("p",{className:`text-sm ${k}`},"Start a checkout sandbox in ",Dt.default.createElement("a",{className:"underline",href:rt("/projects")},"Projects")," to connect your Claude subscription."),Dt.default.createElement("p",{className:`text-xs ${k}`},"Each member uses their own sandbox login. Sessions without a personal login use the account\u2019s Anthropic API key when one is connected.")),p&&Dt.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 Mr=X(J());function C$({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Mr.useState)(null),[o,a]=(0,Mr.useState)(null),[i,s]=(0,Mr.useState)(!1),[l,u]=(0,Mr.useState)(""),[c,d]=(0,Mr.useState)(!1),[p,f]=(0,Mr.useState)(null),m=(0,Mr.useCallback)(async()=>{let[S,w]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!S.ok||!w.ok)throw new Error("Could not load the Codex connection.");let[_,A]=await Promise.all([S.json(),w.json()]);n((_.provider_keys||[]).find(C=>C.provider==="codex")||{configured:!1}),a(L2(A))},[]);(0,Mr.useEffect)(()=>{m().catch(S=>f(S.message))},[m]);let g=async S=>{if(S.preventDefault(),!(c||!l.trim())){d(!0),f(null);try{let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:"codex",credential:l.trim()})}),_=await w.json().catch(()=>({}));if(!w.ok)throw new Error(Array.isArray(_.error)?_.error.join(", "):_.error||"Could not save the API key.");u(""),s(!1),await m(),e?.()}catch(w){f(w.message)}finally{d(!1)}}},b=async()=>{if(await jr({title:"Disconnect Codex?",message:"New Codex sessions will need an API key connected again.",confirmLabel:"Disconnect",danger:!0})){d(!0),f(null);try{if(!(await fetch("/api/provider_keys/codex",{method:"DELETE"})).ok)throw new Error("Could not disconnect Codex.");await m(),e?.()}catch(S){f(S.message)}finally{d(!1)}}},h=async()=>{f(null);try{await m(),e?.()}catch(S){f(S.message)}},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"}`,v=gZ(o,r),k={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:y}[v.tone];return Mr.default.createElement("div",{className:"space-y-3"},Mr.default.createElement("div",{className:"flex items-center justify-between gap-3"},Mr.default.createElement("div",null,Mr.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),Mr.default.createElement("p",{className:`text-sm ${k}`},v.status)),Mr.default.createElement("div",{className:"flex gap-2"},v.keyForm&&r?.configured&&!i&&Mr.default.createElement("button",{className:x,disabled:c,onClick:b},"Disconnect"),v.keyForm&&Mr.default.createElement("button",{className:x,disabled:c,onClick:()=>{s(!i),u(""),f(null)}},i?"Cancel":r?.configured?"Update":"Connect"),v.view==="local_login"&&Mr.default.createElement("button",{className:x,disabled:c,onClick:h},"Check again"))),v.view==="local_login"?Mr.default.createElement("p",{className:`text-xs ${y}`},"Sessions run ",Mr.default.createElement("code",{className:"font-mono"},"codex")," on this machine with its own login (a ChatGPT plan, or a key the CLI holds), which the dashboard never reads or stores."," ",v.loginHint&&Mr.default.createElement(Mr.default.Fragment,null,"Run ",Mr.default.createElement("code",{className:"font-mono"},v.loginHint)," on this machine, as the user the dashboard runs as, then check again.")):Mr.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."),v.keyForm&&i&&Mr.default.createElement("form",{onSubmit:g,className:"flex flex-wrap gap-2"},Mr.default.createElement("label",{className:`flex-1 text-sm ${y}`},"OpenAI API key for Codex",Mr.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:l,onChange:S=>u(S.target.value),placeholder:"sk-\u2026",disabled:c,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"}`})),Mr.default.createElement("button",{type:"submit",className:`${x} self-end`,disabled:c||!l.trim()},c?"Saving\u2026":"Save API key")),p&&Mr.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},p))}var Ste=X(J());var Nn=X(J());function A$({provider:e,title:t,description:r,credentialLabel:n,placeholder:o,onChange:a}){let{darkMode:i}=ut(),[s,l]=(0,Nn.useState)(null),[u,c]=(0,Nn.useState)(!1),[d,p]=(0,Nn.useState)(""),[f,m]=(0,Nn.useState)(!1),[g,b]=(0,Nn.useState)(null),h=(0,Nn.useCallback)(async()=>{let S=await fetch("/api/provider_keys");if(!S.ok)throw new Error(`Could not load the ${t} connection.`);let w=await S.json();l((w.provider_keys||[]).find(_=>_.provider===e)||{configured:!1})},[e,t]);(0,Nn.useEffect)(()=>{h().catch(S=>b(S.message))},[h]);let y=async S=>{if(S.preventDefault(),!(f||!d.trim())){m(!0),b(null);try{let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,credential:d.trim()})}),_=await w.json().catch(()=>({}));if(!w.ok)throw new Error(Array.isArray(_.error)?_.error.join(", "):_.error||`Could not save the ${n}.`);p(""),c(!1),await h(),a?.()}catch(w){b(w.message)}finally{m(!1)}}},x=async()=>{if(await jr({title:`Disconnect ${t}?`,message:`${t} will need its ${n} connected again.`,confirmLabel:"Disconnect",danger:!0})){m(!0),b(null);try{if(!(await fetch(`/api/provider_keys/${e}`,{method:"DELETE"})).ok)throw new Error(`Could not disconnect ${t}.`);await h(),a?.()}catch(S){b(S.message)}finally{m(!1)}}},v=i?"text-gray-400":"text-gray-500",k=`px-3 py-1 text-sm rounded ${i?"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 ${i?"text-white":"text-gray-900"}`},t),Nn.default.createElement("p",{className:`text-sm ${v}`},s==null?"Loading\u2026":s.configured?`Connected \xB7 ${s.hint}`:"Not connected")),Nn.default.createElement("div",{className:"flex gap-2"},s?.configured&&!u&&Nn.default.createElement("button",{className:k,disabled:f,onClick:x},"Disconnect"),Nn.default.createElement("button",{className:k,disabled:f||s==null,onClick:()=>{c(!u),p(""),b(null)}},u?"Cancel":s?.configured?"Update":"Connect"))),Nn.default.createElement("p",{className:`text-sm ${v}`},r),u&&Nn.default.createElement("form",{onSubmit:y,className:"flex flex-wrap gap-2"},Nn.default.createElement("label",{className:`flex-1 text-sm ${v}`},n,Nn.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:d,onChange:S=>p(S.target.value),placeholder:o,disabled:f,className:`block w-full mt-1 px-3 py-2 border rounded ${i?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`})),Nn.default.createElement("button",{type:"submit",className:`${k} self-end`,disabled:f||!d.trim()},f?"Saving\u2026":"Save")),g&&Nn.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},g))}function E$({onChange:e}){return Ste.default.createElement(A$,{provider:"slack",title:"Slack",description:"Agents with the Slack tool list channels, read them and post as this bot. Create a Slack app with the channels:read, channels:history and chat:write scopes, install it, and invite the bot to the channels it should see.",credentialLabel:"Bot User OAuth Token",placeholder:"xoxb-\u2026",onChange:e})}var yEe=["profile","api-keys","integrations","notifications","billing"];function vEe(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:yEe.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function N$({user:e,account:t}){let{darkMode:r,theme:n,systemDark:o,setTheme:a}=ut(),[i]=(0,Me.useState)(()=>window.ACTIVE_AGENT_DASHBOARD?.meta?.personalProviderKeys?"personal":void 0),[{tab:s,github:l,githubApp:u}]=(0,Me.useState)(vEe),[c,d]=(0,Me.useState)(s),[p,f]=(0,Me.useState)(0),[m,g]=(0,Me.useState)([]),[b,h]=(0,Me.useState)([]),[y,x]=(0,Me.useState)(!1),[v,k]=(0,Me.useState)(""),[S,w]=(0,Me.useState)(!1),[_,A]=(0,Me.useState)(null),[C,O]=(0,Me.useState)(!1),[D,H]=(0,Me.useState)(null),j=(0,Me.useCallback)(async()=>{try{let[T,q]=await Promise.all([fetch("/api/api_keys"),fetch(zA("/api/provider_keys",i))]);if(!T.ok||!q.ok)throw new Error("Failed to load keys");let G=await T.json(),L=await q.json();g(G.api_keys||[]),h(L.provider_keys||[]),H(null)}catch{H("Could not load API keys. Are you signed in?")}finally{x(!0)}},[i]);(0,Me.useEffect)(()=>{c==="api-keys"&&!y&&j()},[c,y,j]);let Z=BA({onKeysChanged:j,onError:H,scope:i}),N=async()=>{if(!(!v.trim()||S)){w(!0),H(null);try{let T=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:v.trim()})});if(!T.ok)throw new Error("create failed");let q=await T.json();A(q.api_key),O(!1),k(""),await j()}catch{H("Could not create the API key.")}finally{w(!1)}}},P=async T=>{if(await jr({title:"Revoke this API key?",message:"Requests using it stop working immediately. This cannot be undone.",confirmLabel:"Revoke key",danger:!0}))try{if(!(await fetch(`/api/api_keys/${T}`,{method:"DELETE"})).ok)throw new Error("delete failed");_&&_.id===T&&A(null),await j()}catch{H("Could not revoke the API key.")}},M=async T=>{try{await navigator.clipboard.writeText(T),O(!0),setTimeout(()=>O(!1),2e3)}catch{}},I={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};return Me.default.createElement("div",{className:"p-6 space-y-6"},Me.default.createElement("div",null,Me.default.createElement("h2",{className:`text-2xl font-bold ${r?"text-white":"text-gray-900"}`},"Settings"),Me.default.createElement("p",{className:`mt-1 ${r?"text-gray-400":"text-gray-500"}`},"Manage your account and preferences")),Me.default.createElement("div",{className:"border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Me.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=>Me.default.createElement("button",{key:T.id,onClick:()=>d(T.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${c===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)))),c==="profile"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Profile Information"),Me.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Me.default.createElement("div",null,Me.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"First Name"),Me.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"}`})),Me.default.createElement("div",null,Me.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Last Name"),Me.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"}`})),Me.default.createElement("div",{className:"md:col-span-2"},Me.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Email"),Me.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"}`}))),Me.default.createElement("button",{className:"mt-4 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Save Changes")),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Appearance"),Me.default.createElement("div",{className:"flex items-center justify-between gap-4"},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Theme"),Me.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`,"data-testid":"theme-description"},x6(n,o))),Me.default.createElement(Oo,{options:m6,value:n,onChange:a})))),c==="api-keys"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("div",{className:"flex items-center justify-between mb-4"},Me.default.createElement("h3",{className:`text-lg font-semibold ${r?"text-white":"text-gray-900"}`},"API Keys"),Me.default.createElement("div",{className:"flex items-center space-x-2"},Me.default.createElement("input",{type:"text",value:v,onChange:T=>k(T.target.value),onKeyDown:T=>T.key==="Enter"&&N(),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"}`}),Me.default.createElement("button",{onClick:N,disabled:!v.trim()||S,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},S?"Creating\u2026":"+ Create New Key"))),Me.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"}`},Me.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.")),D&&Me.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"}`},D),_&&Me.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"}`},Me.default.createElement("p",{className:`text-sm font-medium mb-2 ${r?"text-green-300":"text-green-800"}`},"Key \u201C",_.name,"\u201D created. Copy it now \u2014 it won't be shown again."),Me.default.createElement("div",{className:"flex items-center space-x-2"},Me.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"}`},_.token),Me.default.createElement("button",{onClick:()=>M(_.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"}`},C?"Copied!":"Copy"),Me.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"))),m.length===0?Me.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Me.default.createElement("p",null,y?"No API keys yet":"Loading\u2026"),y&&Me.default.createElement("p",{className:"text-sm"},"Create your first API key to authenticate requests")):Me.default.createElement("div",{className:"space-y-2"},m.map(T=>Me.default.createElement("div",{key:T.id,className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.name),Me.default.createElement("p",{className:`text-sm font-mono ${r?"text-gray-400":"text-gray-500"}`},T.masked_token,Me.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"))),Me.default.createElement("button",{onClick:()=>P(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"))))),Me.default.createElement(Mb,{providerKeys:b,editor:Z,scope:i})),c==="integrations"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${r?"text-white":"text-gray-900"}`},"Integrations"),Me.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."),Me.default.createElement(S$,{callbackStatus:l,appCallbackStatus:u,refreshKey:p})),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement(_$,{onChange:()=>f(T=>T+1)})),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement(C$,{onChange:()=>f(T=>T+1)})),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement(E$,{onChange:()=>f(T=>T+1)}))),c==="notifications"&&Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Email Notifications"),Me.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,q)=>Me.default.createElement("div",{key:q,className:"flex items-center justify-between py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.label),Me.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},T.desc)),Me.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"}`},Me.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"}`})))))),c==="billing"&&Me.default.createElement("div",{className:"space-y-6"},Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Subscription"),Me.default.createElement("div",{className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Me.default.createElement("div",null,Me.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Free Plan"),Me.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Current plan")),Me.default.createElement("button",{className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Upgrade to Pro"))),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Payment Method"),Me.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No payment method on file"),Me.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")),Me.default.createElement("div",{className:"border rounded-lg p-6",style:I},Me.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Invoices"),Me.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No invoices yet"))))}var Je=X(J());var xEe=[{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."}],T$={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"},rl={color:"var(--color-text-muted)",fontSize:12};function kte(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?rt(t):null}function bEe({card:e,onAsk:t,busy:r}){let n=kte(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Je.default.createElement(je,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Je.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Je.default.createElement(ve,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Je.default.createElement(ve,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Je.default.createElement("span",{style:rl},String(e.check_strength).replaceAll("_"," "))),Je.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Je.default.createElement("div",{style:{...rl,fontFamily:U}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Je.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Je.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Je.default.createElement("div",{style:rl},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Je.default.createElement("div",{style:rl},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Je.default.createElement("div",{style:rl},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Je.default.createElement("details",{style:rl},Je.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Je.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Je.default.createElement("li",{key:u},l)))),Je.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Je.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===rt("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Je.default.createElement(ie,{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 wEe({draft:e,onReview:t}){return Je.default.createElement(je,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Je.default.createElement($e,null,"Agent draft \xB7 not saved"),Je.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Je.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Je.default.createElement("div",{style:{...rl,fontFamily:U}},e.provider," / ",e.model),Je.default.createElement("details",null,Je.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Je.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Je.default.createElement("p",{style:rl},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Je.default.createElement(ie,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function O$({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[a,i]=(0,Je.useState)(null),[s,l]=(0,Je.useState)(""),[u,c]=(0,Je.useState)(!1),[d,p]=(0,Je.useState)(null),[f,m]=(0,Je.useState)(!1),g=(0,Je.useRef)(null),b=(0,Je.useRef)(null),h=(0,Je.useRef)(e);h.current=e,(0,Je.useEffect)(()=>{let _=new AbortController;return fetch("/api/dashboard_assistant",{signal:_.signal}).then(async A=>{let C=await A.json();if(!A.ok)throw new Error(C.error||"Could not load assistant configuration.");i(C),h.current.provider||t({...h.current,...C.defaults})}).catch(A=>{A.name!=="AbortError"&&p({message:A.message})}),()=>{_.abort(),g.current?.abort()}},[]);let y=e.messages||[],x=e.provider||a?.defaults?.provider||"",v=e.model||"",k=a?.limits?.message_characters||8e3,S=a?.providers?.find(_=>_.id===x),w=async _=>{let A=_.trim();if(!A||u||!a||!o||!v.trim()||!f)return;let C=y.map(H=>({role:H.role,content:H.content})).slice(-12);for(;C.reduce((H,j)=>H+j.content.length,0)>24e3;)C.shift();let O=[...y,{role:"user",content:A}];t({...e,messages:O}),l(""),p(null),c(!0);let D=new AbortController;g.current=D;try{let H=await fetch("/api/dashboard_assistant",{method:"POST",signal:D.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:A,history:C,provider:x,model:v.trim(),allow_provider_processing:!0})}),j=await H.json();if(!H.ok){p({message:typeof j.error=="string"?j.error:"The assistant could not complete this request.",setup:j.setup_required,retry:A}),t({...e,messages:y}),l(A);return}t({...e,messages:[...O,{role:"assistant",content:j.answer,cards:j.cards||[],references:j.references||[],drafts:j.drafts||[],limitations:j.limitations||[]}]})}catch(H){H.name!=="AbortError"&&(p({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:y}),l(A))}finally{c(!1)}};return Je.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Je.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Je.default.createElement("div",null,Je.default.createElement($e,null,"Workspace assistant"),Je.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Je.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:14}},"Find evaluation evidence. Understand failures. Build the next agent.")),y.length>0&&Je.default.createElement(ie,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!y.length&&Je.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},xEe.map(_=>Je.default.createElement("button",{key:_.label,onClick:()=>{l(_.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"}},Je.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},_.label," \u2197"),Je.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},_.message)))),Je.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},y.map((_,A)=>Je.default.createElement("div",{key:A,style:{display:"grid",gap:12}},Je.default.createElement($e,{color:_.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},_.role==="user"?"You":"ActiveAgents"),Je.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},_.content),_.cards?.map(C=>Je.default.createElement(bEe,{key:C.id,card:C,onAsk:O=>{l(O),b.current?.querySelector("textarea")?.focus()},busy:u})),_.references?.length>0&&Je.default.createElement("div",{"aria-label":"Evidence references",style:{...rl,display:"flex",gap:12,flexWrap:"wrap"}},_.references.map(C=>{let O=kte(C);return O&&Je.default.createElement("a",{key:C.id,href:O,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-accent-ui)"}},C.id)})),_.drafts?.map(C=>Je.default.createElement(wEe,{key:C.id,draft:C,onReview:r})),_.limitations?.length>0&&Je.default.createElement("details",{style:rl},Je.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Je.default.createElement("ul",{style:{paddingLeft:18}},_.limitations.map((C,O)=>Je.default.createElement("li",{key:O},C)))))),u&&Je.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Je.default.createElement(je,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Je.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Je.default.createElement(ie,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Je.default.createElement(je,{padding:18},Je.default.createElement("form",{ref:b,onSubmit:_=>{_.preventDefault(),w(s)},style:{display:"grid",gap:14}},Je.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Je.default.createElement("textarea",{id:"assistant-question",placeholder:"Ask about your evals, or describe an agent to build\u2026",value:s,onChange:_=>l(_.target.value),maxLength:k,rows:3,disabled:u,style:{...T$,resize:"vertical",boxSizing:"border-box"}}),Je.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Je.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Je.default.createElement("select",{"aria-label":"Assistant provider",value:x,disabled:u||!a,onChange:_=>{let A=a.providers.find(C=>C.id===_.target.value);m(!1),t({...e,provider:A?.id||"",model:A?.default_model||""})},style:T$},Je.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(_=>Je.default.createElement("option",{key:_.id,value:_.id},_.id,_.configured?"":" \xB7 setup needed")))),Je.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Je.default.createElement("input",{"aria-label":"Assistant model",value:v,disabled:u||!a,maxLength:160,onChange:_=>{m(!1),t({...e,model:_.target.value})},style:T$})),Je.default.createElement(ie,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!v.trim()||!o||!f},u?"Working\u2026":"Ask ActiveAgents \u2192")),Je.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Je.default.createElement("input",{type:"checkbox",checked:f,disabled:u||!a,onChange:_=>m(_.target.checked),style:{marginTop:4}}),Je.default.createElement("span",null,"Allow ",x||"the selected provider"," / ",v||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),Je.default.createElement("div",{style:{...rl,lineHeight:1.5}},o?S&&!S.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 Ca=X(J());var yt=X(J());var ca=X(J());function SEe(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 P$({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,ca.useState)(r),a=SEe(t);return ca.default.createElement(en,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},ca.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"}},ca.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),ca.default.createElement("span",{"data-testid":"capabilities-summary"},a),ca.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&ca.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>ca.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)"}},ca.default.createElement($a,{kind:i.ok?"pass":i.blocking?"fault":"info"}),ca.default.createElement("div",{style:{minWidth:0,flex:1}},ca.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},ca.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&ca.default.createElement($e,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&ca.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&ca.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:U,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var un=X(J());var _te={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:U,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function jb({rows:e,onChange:t,repository:r}){let[n,o]=(0,un.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?WA(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return un.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&un.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=WA(s.name),c=s.useOrganizationKey?[]:UA(s.name,s.value);return un.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},un.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},un.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&un.default.createElement(ve,{tone:"warning"},"required"),s.set&&un.default.createElement(ve,{tone:"success"},"set"),s.sources?.length>0&&un.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&un.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?un.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):un.default.createElement(un.default.Fragment,null,!s.useOrganizationKey&&un.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:{..._te,marginTop:6}}),s.organizationKey&&un.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},un.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&&un.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)"}},un.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=>un.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),un.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},un.default.createElement("div",{style:{flex:1}},un.default.createElement($e,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),un.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{..._te,marginTop:4}}),i&&un.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),un.default.createElement(ie,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(tte(e,n)),o("")}},"Add")))}var Cte={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 kEe({repository:e,preflight:t}){return t?yt.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},yt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},yt.default.createElement("span",{style:{fontFamily:U,fontSize:13,color:"var(--color-text-primary)"}},e),yt.default.createElement(ve,{tone:HA[t.status]||"muted"},t.summary)),yt.default.createElement("div",{style:{fontFamily:U,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=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function M$({onCreated:e,onCancel:t}){let[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)(null),[p,f]=(0,yt.useState)(null),[m,g]=(0,yt.useState)(null),[b,h]=(0,yt.useState)(!1),[y,x]=(0,yt.useState)([]),[v,k]=(0,yt.useState)(""),[S,w]=(0,yt.useState)(!1),[_,A]=(0,yt.useState)("/"),[C,O]=(0,yt.useState)(!1),[D,H]=(0,yt.useState)(null),j=(0,yt.useCallback)(async()=>{let T=await fetch("/api/projects/capabilities"),q=await T.json().catch(()=>({}));if(!T.ok)throw new Error(ot(q,`Could not check what this dashboard can do (HTTP ${T.status}).`));return n(q),q},[]),Z=(0,yt.useCallback)(async()=>{a(null);let T=await fetch("/api/projects/repositories"),q=await T.json().catch(()=>({}));if(q.reconnect_required){s(!0);return}if(!T.ok)throw new Error(ot(q,`Could not list repositories (HTTP ${T.status}).`));s(!1),a(q.repositories||[])},[]);(0,yt.useEffect)(()=>{j().then(T=>T.github?.connected?Z():null).catch(T=>H(T.message))},[j,Z]);let N=(0,yt.useCallback)(async(T,{typed:q=!1}={})=>{H(null),f(null),h(!0);try{let G=`repository=${encodeURIComponent(T)}`,L=await fetch(`/api/projects/preflight?${G}`),Y=await L.json().catch(()=>({}));if(Y.reconnect_required){s(!0);return}if(!L.ok){let De=ot(Y,`Could not check ${T} (HTTP ${L.status}).`);q?f(De):H(De);return}if(d(Y.repository.full_name),g(Y.preflight),k(De=>rte({name:De,edited:S,fullName:Y.repository.full_name})),x([]),Y.preflight.status==="unsupported")return;let K=await fetch(`/api/projects/discover_secrets?${G}`),pe=await K.json().catch(()=>({}));if(!K.ok)throw new Error(ot(pe,`Could not read ${T}'s environment variables (HTTP ${K.status}).`));x(Ib(pe.variables||[]))}catch(G){H(G.message)}finally{h(!1)}},[S]),P=async()=>{O(!0),H(null);try{let T=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:v,start_url:_,secrets:Db(y)})}),q=await T.json().catch(()=>({}));if(!T.ok)throw new Error(ot(q,`Could not create the project (HTTP ${T.status}).`));e(q.project)}catch(T){H(T.message)}finally{O(!1)}},M=r?.github,I=nte({github:M,repositories:o,reconnectRequired:i,pendingApproval:M?.pending_approval===!0}),$=b?"Checking the repository\u2026":ote({capabilities:r,preflight:m,secretsProblem:ay(y)});return yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},yt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},yt.default.createElement("div",{style:{flex:1}},yt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),yt.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.")),yt.default.createElement(ie,{onClick:t},"Cancel")),D&&yt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},D),yt.default.createElement(je,null,yt.default.createElement($e,null,"Repository"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(If,{mode:"single",state:I,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:T=>N(T),settingsHref:rt("/settings?tab=integrations"),missingRepositoryUrl:M?.access_settings_url,onRefresh:()=>Z().catch(T=>H(T.message)),onTypeName:T=>N(T,{typed:!0}),typedNameError:p})),m&&yt.default.createElement("div",{style:{marginTop:12}},yt.default.createElement(kEe,{repository:c,preflight:m}))),r&&yt.default.createElement(P$,{capabilities:r}),m&&m.status!=="unsupported"&&yt.default.createElement(je,null,yt.default.createElement($e,null,"Project"),yt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",yt.default.createElement("input",{type:"text",value:v,onChange:T=>{k(T.target.value),w(T.target.value!=="")},style:{...Cte,marginTop:4}})),yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",yt.default.createElement("input",{type:"text",value:_,onChange:T=>A(T.target.value),style:{...Cte,marginTop:4,fontFamily:U}}))),yt.default.createElement("div",{style:{marginTop:16}},yt.default.createElement($e,null,"Secrets the boot needs"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(jb,{rows:y,onChange:x,repository:c})))),yt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},$&&yt.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},$),yt.default.createElement(ie,{variant:"primary",onClick:P,disabled:!!$||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var Xe=X(J());var Ur=X(J());var _Ee={success:"success",error:"error",progress:"info",neutral:"muted"};function I$({project:e}){let[t,r]=(0,Ur.useState)(null),[n,o]=(0,Ur.useState)(null),[a,i]=(0,Ur.useState)(""),[s,l]=(0,Ur.useState)(!1),u=e.sandbox,c=e.sandbox_state==="ready"&&!!u?.session_id,d=(0,Ur.useCallback)(async()=>{let m=await fetch(`/api/interactions?project_id=${e.id}`),g=await m.json().catch(()=>({}));if(!m.ok){o(ot(g,`Could not list the conversations (HTTP ${m.status}).`));return}r(g.interactions||[])},[e.id]);(0,Ur.useEffect)(()=>{d()},[d]);let p=async m=>{m.preventDefault();let g=a.trim();if(!(!g||!c)){l(!0),o(null);try{let b=await fetch(`/api/sandboxes/${encodeURIComponent(u.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:g,origin:"chat"})}),h=await b.json().catch(()=>({}));if(!b.ok)throw new Error(ot(h,`The conversation did not start (HTTP ${b.status}).`));st(_s(h.code_session.id))}catch(b){o(b.message),l(!1)}}},f={margin:0,fontSize:13,color:"var(--color-text-secondary)"};return Ur.default.createElement("div",{style:{display:"grid",gap:12},"data-testid":"project-sessions"},Ur.default.createElement(je,null,Ur.default.createElement("form",{onSubmit:p,style:{display:"grid",gap:8}},Ur.default.createElement($e,{as:"label",htmlFor:`project-${e.id}-chat`},"Chat with Claude Code"),Ur.default.createElement("textarea",{id:`project-${e.id}-chat`,value:a,onChange:m=>i(m.target.value),rows:3,disabled:!c,placeholder:c?`What should Claude Code do in ${e.repository}?`:"Boot the sandbox to start a conversation",style:{width:"100%",fontSize:13,padding:8,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}}),Ur.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8}},Ur.default.createElement("p",{style:f},"It edits the checkout and never commits or pushes. The conversation opens with the sandbox's browser beside it."),Ur.default.createElement(ie,{variant:"primary",type:"submit",disabled:!c||s||!a.trim(),testId:"project-start-conversation"},s?"Starting\u2026":"Start")),n&&Ur.default.createElement("p",{role:"alert",style:{...f,color:"var(--color-error-text)"}},n))),Ur.default.createElement(je,null,Ur.default.createElement($e,null,"Conversations"),t===null&&!n&&Ur.default.createElement("p",{style:f},"Loading\u2026"),t?.length===0&&Ur.default.createElement("p",{style:f},"No conversations yet."),Ur.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0,display:"grid",gap:8}},(t||[]).map(m=>{let g=ks(m.status),b=_s(lf(m.id));return Ur.default.createElement("li",{key:m.id},Ur.default.createElement("a",{href:rt(b),onClick:h=>{h.preventDefault(),st(b)},style:{display:"grid",gap:2,textDecoration:"none",color:"var(--color-text-primary)"},"data-testid":"project-conversation"},Ur.default.createElement("span",{style:{display:"flex",gap:8,alignItems:"center"}},Ur.default.createElement(ve,{tone:_Ee[g.tone]||"muted"},g.label),Ur.default.createElement("span",{style:{fontSize:13}},m.preview?.input||m.display_name)),Ur.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:U}},B2(m))))}))))}var fr=X(J());function Ate(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function D$(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 Ete(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"&&!D$(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function Nte(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function Tte(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 Ote(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||$$(e)||(Number(e?.pending_input_requests)||0)>0}var CEe=6e4;function Pte(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 jte(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(L$(e,r))!==n(t)}function Lte(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 zte(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function Bte(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 Fte(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 Wte(e){return e.json().catch(()=>({}))}function z$({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,fr.useState)(null),[a,i]=(0,fr.useState)({}),[s,l]=(0,fr.useState)(null),[u,c]=(0,fr.useState)(!1),d=e.schema_tools||[],p=(0,fr.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),g=await Wte(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(ot(g,`Could not list the app's models (HTTP ${m.status}).`));o(g.models||[]),i(Dte(g.schema_tools||[]))},[e.id]);(0,fr.useEffect)(()=>{e.app_models_listed&&p().catch(m=>l(m.message))},[p,e.app_models_listed]);let f=async(m,g=!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:L$(a,n||[]),apply:m,...g?{confirm:!0}:{}})}),h=await Wte(b);if(b.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(m,!0));return}if(!b.ok)throw new Error(ot(h,`Could not save what the assistant may read (HTTP ${b.status}).`));t?.(h.project)}catch(b){l(b.message)}finally{c(!1)}};return fr.default.createElement(AEe,{listed:e.app_models_listed,models:n,selection:a,changed:n?jte(a,d,n):!1,busy:u,error:s,onToggle:(m,g,b)=>i(h=>$te(h,m,g,b)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function AEe({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,fr.useMemo)(()=>Object.keys(r||{}),[r]);return fr.default.createElement(en,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},fr.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&&fr.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&&fr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&fr.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 fr.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"}},fr.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},fr.default.createElement("span",{style:{fontFamily:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),fr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&fr.default.createElement(ve,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),fr.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},fr.default.createElement("thead",null,fr.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},fr.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),fr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),fr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),fr.default.createElement("tbody",null,c.columns.map(p=>fr.default.createElement("tr",{key:p.name},fr.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:U,color:"var(--color-text-primary)"}},p.name," ",fr.default.createElement("span",{style:{color:"var(--color-text-muted)"}},p.type)),["filterable","returns"].map(f=>fr.default.createElement("td",{key:f,style:{padding:"2px 12px",textAlign:"center"}},fr.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&&fr.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},fr.default.createElement(ie,{size:"sm",onClick:s,disabled:o||!n},"Save"),fr.default.createElement(ie,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var qa=X(J());function B$({boot:e,logTail:t,error:r,backendError:n,sandboxState:o,waiting:a}){let i=e?.steps||[],s=n?"No sandbox backend answered.":o==="booting"?"Waiting for the sandbox to report its steps\u2026":"No boot to show yet.",l=n?`The ${n.backend} sandbox backend could not report this boot`+(n.message&&n.message!==r?`: ${n.message}`:"."):null;return qa.default.createElement(en,{title:"Boot",meta:Ate(a)||o||"none",testId:"project-boot-progress"},i.length===0&&qa.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},s),l&&qa.default.createElement("div",{"data-testid":"boot-backend-error",style:{padding:"8px 12px",fontSize:13,color:"var(--color-text-secondary)",borderTop:"1px solid var(--color-border-light)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},l),i.length>0&&qa.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},i.map(u=>qa.default.createElement("li",{key:u.name,"data-testid":`boot-step-${u.name}`,style:{display:"grid",gridTemplateColumns:"92px 170px 1fr 80px",gap:10,alignItems:"baseline",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},qa.default.createElement(ve,{tone:ste[u.status]||"muted"},u.status),qa.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},ate(u.name)," ",qa.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},u.name)),qa.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},u.detail||""),qa.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},u.status==="pending"?"":ite(u.duration_ms))))),r&&qa.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&&qa.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},qa.default.createElement("div",{style:{padding:"6px 12px",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),qa.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:U,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Bl=X(J());var Ute="/settings?tab=integrations";function F$({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=Bl.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=Bl.default.createElement(Bl.default.Fragment,null,Bl.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, type and upload files, and hand back. Agent runs reach it as ",Bl.default.createElement("span",{style:{fontFamily:U}},"browser:",o.session_id),"."),Bl.default.createElement(Mf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Bl.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."),Bl.default.createElement(en,{title:"Browser",meta:Bl.default.createElement(Jr,{href:rt(Ute),onClick:()=>st(Ute)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var Yn=X(J());var EEe=e=>e?new Date(e).toLocaleString():"\u2014",NEe={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function W$({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?UA(o,i):[],d=async p=>{u(!0);try{await p()}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(p=>Yn.default.createElement("li",{key:p.name,"data-testid":`environment-${p.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:U,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),Yn.default.createElement(ve,{tone:p.source==="organization_key"?"info":"muted"},NEe[p.source]?.(p)||"entered"),Yn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",EEe(p.updated_at)),Yn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&Yn.default.createElement(ie,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),Yn.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&Yn.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&Yn.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("")})}},Yn.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:U,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),Yn.default.createElement(ie,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),Yn.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>Yn.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var Xn=X(J());var Pd=X(J());var TEe=["proposed","edited"],q$={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."}},GA={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},Hte={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function Kte(e){return e?.status==="pending"||e?.status==="running"}function YA(e){return TEe.includes(e.state)}function K$(e=[],t=null){let r=e.filter(n=>YA(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function Vte(e=[],t=[]){let r=new Set(t.filter(YA).map(n=>n.id));return e.filter(n=>r.has(n))}function qte(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function Gte(e={},t={}){return Object.keys(Hte).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:Hte[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${qte(r,o)} / ${qte(r,n)}`}]})}function Yte(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 Xte({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 Zte(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 U$(e){return(e||[]).join(", ")}function H$(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function Jte(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:U$(t.tools),contains:U$(t.contains),not_contains:U$(t.not_contains)}}function Qte(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:H$(e.tools),contains:H$(e.contains),not_contains:H$(e.not_contains)}}function XA(e){return`/explorations/${e}`}function ZA(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function Df({explorations:e,onOpen:t,selectedId:r=null}){return Pd.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 Pd.default.createElement(je,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},Pd.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},Pd.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),Pd.default.createElement(ve,{tone:GA[n.status]||"muted"},n.status),Pd.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),Pd.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",Co(n.created_at))))}))}var Et=X(J());var $f=X(J());function V$({budget:e,usage:t}){let r=Gte(e,t);return r.length===0?null:$f.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?Wn.error:n.ratio>=.8?Wn.warning:Wn.info;return $f.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},$f.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),$f.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},$f.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),$f.default.createElement("span",{style:{fontFamily:U,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var $t=X(J());var OEe={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},iy={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 sy({label:e,children:t}){return $t.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function G$({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,$t.useState)(null),c=q$[e.verdict]||q$.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=Yte(e),g=YA(e),b=y=>x=>u({...l,[y]:x.target.value}),h=async()=>{await n(e.id,Qte(l))&&u(null)};return $t.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}},$t.default.createElement("input",{type:"checkbox","aria-label":`Accept candidate ${e.id}`,checked:t,disabled:!g||a,onChange:()=>r(e.id),style:{marginTop:3,alignSelf:"flex-start"}}),$t.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},$t.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},$t.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),$t.default.createElement(ve,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),$t.default.createElement(ve,{tone:OEe[e.state]||"muted"},e.state),e.group&&$t.default.createElement(ve,null,e.group),e.scenario_key&&$t.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?$t.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},$t.default.createElement(sy,{label:"Prompt"},$t.default.createElement("input",{style:iy,value:l.prompt,onChange:b("prompt")})),$t.default.createElement(sy,{label:"Rubric: what a good answer does (the judge grades against it)"},$t.default.createElement("textarea",{style:{...iy,minHeight:60},value:l.rubric,onChange:b("rubric")})),$t.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},$t.default.createElement(sy,{label:"Group"},$t.default.createElement("input",{style:iy,value:l.group,onChange:b("group")})),$t.default.createElement(sy,{label:"Tools (comma-separated)"},$t.default.createElement("input",{style:iy,value:l.tools,onChange:b("tools")})),$t.default.createElement(sy,{label:"Contains"},$t.default.createElement("input",{style:iy,value:l.contains,onChange:b("contains")})),$t.default.createElement(sy,{label:"Does not contain"},$t.default.createElement("input",{style:iy,value:l.not_contains,onChange:b("not_contains")}))),$t.default.createElement("div",{style:{display:"flex",gap:8}},$t.default.createElement(ie,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),$t.default.createElement(ie,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):$t.default.createElement($t.default.Fragment,null,$t.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)&&$t.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:U,fontSize:11}},(d.tools||[]).map(y=>$t.default.createElement(ve,{key:y,tone:p.has(y)?"warning":"muted",title:p.has(y)?"The agent cannot call this tool":void 0},p.has(y)?`missing ${y}`:y)),(d.contains||[]).map(y=>$t.default.createElement(ve,{key:`c-${y}`},"contains \u201C",y,"\u201D")),(d.not_contains||[]).map(y=>$t.default.createElement(ve,{key:`n-${y}`},"not \u201C",y,"\u201D")))),i&&$t.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)&&$t.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},$t.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),f.urls?.length>0&&$t.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11}},f.urls.join(" \xB7 ")),f.steps?.length>0&&$t.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},f.steps.map((y,x)=>$t.default.createElement("li",{key:x},y))),f.screenshots?.length>0&&$t.default.createElement("div",{style:{marginTop:4,fontFamily:U,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&$t.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&$t.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&$t.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&$t.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>u(Jte(e)),disabled:a},"Edit"),g&&$t.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&$t.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var Y$={minutes:15,steps:150},Rte={minutes:120,steps:1e3,cost:100},ere={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function rre(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:`${ere[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>Rte[r])return{error:`${ere[r]} may be at most ${Rte[r]}.`};t[r]=o}return{budget:t}}var tre={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 nre(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&tre[t.code]?tre[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var PEe={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 ore(e){return e?PEe[e]||e:null}var MEe={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function are(e){return e?{tone:MEe[e.status]||"muted",text:e.message||e.status}:null}function ire(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 X$(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function sre(e){return e.json().catch(()=>({}))}var DEe={explorer:"explorer agent",external:"submitted from outside the dashboard"};function jf({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,Et.useState)(null),[s,l]=(0,Et.useState)(null),[u,c]=(0,Et.useState)([]),[d,p]=(0,Et.useState)(!1),[f,m]=(0,Et.useState)(!1),[g,b]=(0,Et.useState)({}),[h,y]=(0,Et.useState)(null),[x,v]=(0,Et.useState)(null),k=(0,Et.useRef)(t);k.current=t;let S=(0,Et.useCallback)(async()=>{let T=await fetch(`/api/explorations/${e}`),q=await sre(T);if(!T.ok)throw new Error(ot(q,`Could not load the exploration (HTTP ${T.status}).`));return i(q),k.current?.(q),q},[e]);(0,Et.useEffect)(()=>{S().catch(T=>l(T.message))},[S]);let w=a?.candidates||[];(0,Et.useEffect)(()=>{a&&c(T=>d?Vte(T,w):K$(w,a.preselect_limit))},[a,d]);let _=Kte(a?.exploration);(0,Et.useEffect)(()=>{if(!_)return;let T=setInterval(()=>S().catch(q=>l(q.message)),3e3);return()=>clearInterval(T)},[_,S]),ey("ExplorationChannel",{exploration_id:e},T=>{ty(T)&&S().catch(()=>{})},!!e);let A=async(T,q,G)=>{m(!0),l(null);try{let L=await fetch(T,{method:q,headers:{"Content-Type":"application/json"},body:JSON.stringify(G||{})}),Y=await sre(L);return{res:L,data:Y}}finally{m(!1)}},C=async(T,q)=>{let{res:G,data:L}=await A(`/api/explorations/${e}/candidates/${T}`,"PATCH",q);return G.ok?(b({...g,[T]:null}),await S(),!0):(b({...g,[T]:ot(L,`Could not save the candidate (HTTP ${G.status}).`)}),!1)},O=async(T,q)=>C(T,{state:q}),D=T=>{p(!0),c(q=>q.includes(T)?q.filter(G=>G!==T):[...q,T])},H=async()=>{let T={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:q,data:G}=await A(`/api/explorations/${e}/accept`,"POST",T);return q.ok?(b({}),y({accepted:G.accepted,evaluation:r?null:G.evaluation,scenarioSet:G.scenario_set||null}),o?.(G),p(!1),i(G),k.current?.(G),G):(b(G.problems||{}),l(ot(G,`Could not accept the candidates (HTTP ${q.status}).`)),null)},j=async(T,q,{confirm:G=!1}={})=>{let L=q?`/api/projects/${q.id}/run_evaluation`:`/api/evaluations/${T.id}/run`,{res:Y,data:K}=await A(L,"POST",G?{confirm:!0}:{});if(Y.status===409&&K.code==="confirmation_required"){v({question:K.confirmation,evaluation:T,project:q});return}if(!Y.ok){l(ot(K,`The scenarios were accepted, but the run did not start (HTTP ${Y.status}).`));return}v(null),st(`/evaluations/${K.run?.evaluation_id||T.id}/runs/${K.run.id}`)},Z=async()=>{let T=await H();T?.evaluation&&await j(T.evaluation,T.project)},N=async()=>{let{res:T,data:q}=await A(`/api/explorations/${e}/stop`,"POST");if(!T.ok&&T.status!==409){l(ot(q,`Could not stop the exploration (HTTP ${T.status}).`));return}await S()};if(!a)return s?Et.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):Et.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:P}=a,M=P.counts||{},I=Xte({evaluation:a.evaluation,candidates:w,selectedIds:u}),$=K$(w);return Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},Et.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Et.default.createElement($e,null,"Exploration ",P.id),Et.default.createElement(ve,{tone:GA[P.status]||"muted",testId:"exploration-status"},P.status),Et.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},DEe[P.source]||P.source," \xB7 ",Co(P.created_at),P.start_url?` \xB7 from ${P.start_url}`:""),_&&Et.default.createElement(ie,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),P.stop_reason&&Et.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},ore(P.stop_reason)),P.error_message&&Et.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},P.error_message),Et.default.createElement(V$,{budget:P.budget,usage:P.usage}),s&&Et.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&Et.default.createElement(je,{padding:12,testId:"exploration-accepted"},Et.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&&Et.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),x&&Et.default.createElement(je,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},Et.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},x.question),Et.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Et.default.createElement(ie,{variant:"primary",onClick:()=>j(x.evaluation,x.project,{confirm:!0}),disabled:f},"Run it on this machine"),Et.default.createElement(ie,{onClick:()=>v(null)},"Cancel"))),Et.default.createElement(en,{title:"Found so far",meta:`${M.total||0} found \xB7 ${M.answerable||0} answerable \xB7 ${M.accepted||0} accepted`,testId:"exploration-candidates",bodyStyle:{padding:"0 12px"}},w.length===0?Et.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."):Et.default.createElement("ul",{style:{margin:0,padding:0}},w.map(T=>Et.default.createElement(G$,{key:T.id,candidate:T,selected:u.includes(T.id),onToggle:D,onSave:C,onState:O,busy:f,problem:g?.[T.id]||g?.[String(T.id)],agentId:a.target_agent?.id})))),w.length>0&&Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},Et.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Et.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c($)},disabled:f},"Select every answerable"),Et.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&$.length>a.preselect_limit&&Et.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),Et.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Et.default.createElement(ie,{variant:"primary",onClick:H,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&Et.default.createElement(Et.default.Fragment,null,Et.default.createElement(ie,{onClick:Z,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),Et.default.createElement("span",{style:{fontFamily:U,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},Zte(I,a.runs_remaining))))))}var di=X(J());var $Ee={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:U,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function Lb({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,di.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,di.useState)(null),[s,l]=(0,di.useState)(!1),{error:u,budget:c}=rre(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(nre(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,g)=>di.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},di.default.createElement($e,null,m),di.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:g,onChange:b=>o({...n,[f]:b.target.value}),"aria-label":m,style:$Ee}));return di.default.createElement(en,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},di.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."),di.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(Y$.minutes)),p("steps","Browser steps",String(Y$.steps)),p("cost","Cost cap ($)","none"),di.default.createElement(ie,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&di.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)&&di.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var er=X(J());var jEe={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:U,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},LEe=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],lre=e=>e?new Date(e).toLocaleString():"\u2014";async function Lf(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(ot(o,`The request failed (HTTP ${n.status}).`));return o}function Z$({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,er.useState)(null),[a,i]=(0,er.useState)(null),[s,l]=(0,er.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,er.useState)(null),[d,p]=(0,er.useState)(null),[f,m]=(0,er.useState)(null),[g,b]=(0,er.useState)(!1),h=(0,er.useCallback)(async()=>{let j=await Lf(`/api/projects/${e}/sign_in`,"GET");o(j.sign_in);let Z=j.sign_in?.credentials;Z&&l(N=>({...N,login_url:Z.login_url||"",login:Z.login||"",...Z.fields})),i(N=>N||(Z?"credentials":j.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,er.useEffect)(()=>{h().catch(j=>p(j.message))},[h]);let y=async j=>{b(!0),p(null),m(null);try{await j()}catch(Z){p(Z.message)}finally{b(!1)}},x=n?.credentials,{error:v,payload:k}=ire(s,{passwordSaved:!!x?.password_set}),S=are(u),w=()=>y(async()=>{let j=await Lf(`/api/projects/${e}/sign_in`,"PUT",k);o(j.sign_in),l(Z=>({...Z,password:""})),m(j.warnings?.length?j.warnings.map(Z=>Z.message).join(" "):"Saved. The explorer signs in with them.")}),_=()=>y(async()=>{let j=await Lf(`/api/projects/${e}/sign_in/check`,"POST");c(j.result),o(j.sign_in)}),A=()=>y(async()=>{await Lf(`/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=()=>y(async()=>{let j=await Lf(`/api/projects/${e}/sign_in/save_browser`,"POST");o(j.sign_in),m("Saved. Every browser of this project now starts signed in.")}),O=()=>y(async()=>{await Lf(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),D=()=>y(async()=>{let j=await Lf(`/api/projects/${e}/sign_in`,"DELETE");o(j.sign_in),c(null),m("The explorer explores what is reachable without signing in.")}),H=(j,Z,N="text",P="")=>er.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},er.default.createElement($e,null,Z),er.default.createElement("input",{type:N,autoComplete:"off",value:s[j],placeholder:P,onChange:M=>l({...s,[j]:M.target.value}),"aria-label":Z,style:jEe}));return er.default.createElement(en,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},er.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."),er.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},x&&er.default.createElement(ve,{tone:"success"},"credentials saved ",lre(x.updated_at)),n?.storage_state&&er.default.createElement(ve,{tone:"success"},"browser sign-in saved ",lre(n.storage_state.updated_at)),!x&&!n?.storage_state&&n&&er.default.createElement(ve,null,"no sign-in")),er.default.createElement(Oo,{options:LEe,value:a||"none",onChange:i}),a==="credentials"&&er.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},er.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},H("login_url","Login URL","text","/users/sign_in"),H("login","Login","text","dev@example.com"),H("password","Password","password",x?.password_set?"Saved; leave empty to keep it":"")),er.default.createElement("details",null,er.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),er.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},H("login_field","Login field","text","#user_email"),H("password_field","Password field","text","#user_password"),H("submit_field","Submit button","text","button[type=submit]"))),er.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},er.default.createElement(ie,{variant:"primary",size:"sm",onClick:w,disabled:g||!!v},"Save credentials"),er.default.createElement(ie,{size:"sm",onClick:_,disabled:g||!x||!r,testId:"sign-in-check"},"Check sign-in"),v&&er.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},v))),a==="by_hand"&&er.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},er.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."),er.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},er.default.createElement(ie,{size:"sm",onClick:A,disabled:g||!r||n?.browser_running},"Open a browser window"),er.default.createElement(ie,{variant:"primary",size:"sm",onClick:C,disabled:g||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&er.default.createElement(ie,{size:"sm",variant:"ghost",onClick:O,disabled:g},"Stop the browser"))),a==="none"&&(x||n?.storage_state)&&er.default.createElement("div",null,er.default.createElement(ie,{size:"sm",variant:"danger",onClick:D,disabled:g},"Remove the saved sign-in")),S&&er.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:Wn[S.tone]?.text||"var(--color-text-secondary)"}},S.text),f&&er.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f),d&&er.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function J$({projectId:e,project:t,onCount:r}){let[n,o]=(0,Xn.useState)(null),[a,i]=(0,Xn.useState)(null),[s,l]=(0,Xn.useState)(null),u=(0,Xn.useCallback)(async()=>{let f=await fetch(`/api/explorations?project_id=${e}`),m=await f.json().catch(()=>({}));if(!f.ok)throw new Error(ot(m,`Could not list the project's explorations (HTTP ${f.status}).`));o(m.explorations||[]),r?.(m.explorations?.length||0)},[e,r]);(0,Xn.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=Xn.default.createElement(Xn.default.Fragment,null,Xn.default.createElement(Lb,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),Xn.default.createElement(Z$,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return Xn.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return Xn.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return Xn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,Xn.default.createElement(je,{testId:"project-explorations-empty"},Xn.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 Xn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,Xn.default.createElement(Df,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),Xn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},Xn.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(XA(p))},"Open on its own page")),Xn.default.createElement(jf,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var hr=X(J());var zEe={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function ure(e){return e.json().catch(()=>({}))}function Q$({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,hr.useState)(null),[i,s]=(0,hr.useState)(null),l=(0,hr.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await ure(c);if(!c.ok)throw new Error(ot(d,`Could not list what the project is waiting for (HTTP ${c.status}).`));a(d.input_requests||[])},[e]);(0,hr.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 ure(f);if(!f.ok)throw new Error(ot(m,`Could not send the answer (HTTP ${f.status}).`));await l(),n?.()};return!o?.length&&!i?null:hr.default.createElement(en,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&hr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>hr.default.createElement(BEe,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function BEe({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,hr.useState)(""),[a,i]=(0,hr.useState)(!1),[s,l]=(0,hr.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 hr.default.createElement(FEe,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",Nte(e,c)),onDecline:()=>u("decline")})}function FEe({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=Ete(e,r),u=`project-answer-${e.id}`;return hr.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)}},hr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},hr.default.createElement(ve,{tone:e.kind==="secret"?"warning":"info"},zEe[e.kind]||e.kind),hr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),hr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:U,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),hr.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&hr.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)"}},hr.default.createElement("option",{value:""},"Choose\u2026"),D$(e).map(c=>hr.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&hr.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"?U:"inherit"}}),e.kind==="secret"&&hr.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."),hr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?hr.default.createElement(hr.default.Fragment,null,hr.default.createElement(ie,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),hr.default.createElement(ie,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):hr.default.createElement(hr.default.Fragment,null,hr.default.createElement(ie,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),hr.default.createElement(ie,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&hr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&hr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var Ut=X(J());async function JA(e){return e.json().catch(()=>({}))}function R$({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,Ut.useState)(null),[i,s]=(0,Ut.useState)(null),[l,u]=(0,Ut.useState)(null),[c,d]=(0,Ut.useState)(0),[p,f]=(0,Ut.useState)(!1),m=(0,Ut.useCallback)(async()=>{let h=await fetch(n),y=await JA(h);if(!h.ok)throw new Error(ot(y,`Could not read the install pull request (HTTP ${h.status}).`));return y},[n]);(0,Ut.useEffect)(()=>{let h=!1,y=null,x=async()=>{try{let v=await m();if(h)return;a(v),s(null),v.project&&t?.(v.project);let k=zte(v.pull_request);k&&(y=setTimeout(x,k))}catch(v){h||s(v.message)}};return x(),()=>{h=!0,clearTimeout(y)}},[m,c]);let g=async h=>{f(!0),s(null);try{let y=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),x=await JA(y);if(!y.ok)throw new Error(ot(x,`Could not open the pull request (HTTP ${y.status}).`));d(v=>v+1)}catch(y){s(y.message)}finally{f(!1)}},b=o?.pull_request||null;return e.install_state==="installed"&&!b?null:Ut.default.createElement(Ut.default.Fragment,null,Ut.default.createElement(WEe,{project:e,pullRequest:b,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:g}),l&&Ut.default.createElement(UEe,{project:e,base:n,pullRequest:b,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function WEe({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=Lte(t),{canOpen:c,canUpdate:d,openBranch:p}=Bte(t);return Ut.default.createElement(je,{testId:"project-install-pull-request"},Ut.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ut.default.createElement($e,null,"Install pull request"),Ut.default.createElement(ve,{tone:u},l),t?.url&&Ut.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),Ut.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&Ut.default.createElement(ie,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&Ut.default.createElement(ie,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&Ut.default.createElement(ie,{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"))),Ut.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&&Ut.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&Ut.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&Ut.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&Ut.default.createElement("details",{style:{marginTop:6}},Ut.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),Ut.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:U,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>Ut.default.createElement("li",{key:f},f)))),o&&Ut.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function UEe({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,Ut.useState)(null),[c,d]=(0,Ut.useState)(null),[p,f]=(0,Ut.useState)(!0),[m,g]=(0,Ut.useState)(null),[b,h]=(0,Ut.useState)(new Set),[y,x]=(0,Ut.useState)(s?r?.title||"":"Install ActiveAgent"),[v,k]=(0,Ut.useState)(""),[S,w]=(0,Ut.useState)(s&&r?.branch||""),[_,A]=(0,Ut.useState)(sA),[C,O]=(0,Ut.useState)(!1),[D,H]=(0,Ut.useState)(0);(0,Ut.useEffect)(()=>{let Z=!1,N=null;f(!0);let P=async(M=!1)=>{try{let I=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M?{confirm:!0}:{})}),$=await JA(I);if(Z)return;if(I.status===409&&$.code==="confirmation_required"){o?.($.confirmation,()=>P(!0));return}if(I.status===202){g($.error),N=setTimeout(()=>P(),3e3);return}if(!I.ok)throw new Error(ot($,`Could not read the sandbox's changes (HTTP ${I.status}).`));g(null),u($.preview),d($.publishing),h(uA($.preview.files)),w(T=>T||$.preview.suggested_branch||""),f(!1)}catch(I){Z||(g(I.message),f(!1))}};return P(),()=>{Z=!0,clearTimeout(N)}},[t,D]);let j=async()=>{O(!0),g(null);try{let Z=dA({files:l?.files,selection:b,title:y,body:v,branch:S,message:_,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Z)}),P=await JA(N);if(!N.ok)throw lA(P.code)&&H(M=>M+1),new Error(ot(P,`Could not publish (HTTP ${N.status}).`));i(P.pull_request)}catch(Z){g(Z.message)}finally{O(!1)}};return Ut.default.createElement(c3,{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=>cA(N,Z)),fields:{title:y,body:v,branch:S,message:_,allowlist:""},onField:(Z,N)=>({title:x,body:k,branch:w,message:A})[Z]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:C,onSubmit:j,onCancel:a,patchHref:(Z,N)=>Fte(e.id,Z,N)})}var mn=X(J());var HEe={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},qEe={progress:"info",success:"success",error:"error",neutral:"muted"};function ej({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 mn.default.createElement(je,{testId:"project-setup"},mn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},mn.default.createElement($e,null,"Setup"),mn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},mn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},mn.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&mn.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},mn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},mn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&mn.default.createElement(ve,{tone:"muted"},"not used"),l&&mn.default.createElement(ve,{tone:qEe[ks(l.status).tone]||"muted"},ks(l.status).label),j$(e)&&n&&mn.default.createElement(ie,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),mn.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},Mte(e)),l?.id&&mn.default.createElement("a",{href:rt(_s(l.id)),onClick:u=>{u.preventDefault(),st(_s(l.id))},"data-testid":"boot-fix-conversation",style:{display:"inline-block",marginTop:4,fontSize:12,color:"var(--color-accent-ui)"}},"Ask Claude Code about this fix \u2192"),l?.sandbox_session_id&&mn.default.createElement(W0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),mn.default.createElement("div",{style:{marginTop:12}},mn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},mn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&mn.default.createElement(ve,{tone:"muted"},"unavailable"),i&&mn.default.createElement(ve,{tone:HEe[i.status]||"muted"},i.status.replace("_"," ")),mn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&mn.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/agents/${a.agent_id}/interactions`)},"Open its runs"),Ite(e)&&mn.default.createElement(ie,{size:"sm",variant:j$(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),mn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},Tte(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."),mn.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 cre="/settings?tab=integrations",KEe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},VEe={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function nl(e){return e.json().catch(()=>({}))}function tj({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,Xe.useState)(null),[a,i]=(0,Xe.useState)(null),[s,l]=(0,Xe.useState)([]),[u,c]=(0,Xe.useState)(()=>cte(window.location.search)),[d,p]=(0,Xe.useState)(!1),[f,m]=(0,Xe.useState)(null),[g,b]=(0,Xe.useState)(null),[h,y]=(0,Xe.useState)(null),[x,v]=(0,Xe.useState)(!1),[k,S]=(0,Xe.useState)(null),[w,_]=(0,Xe.useState)(null),[A,C]=(0,Xe.useState)(null),O=(0,Xe.useCallback)(async()=>{let ee=await fetch(`/api/projects/${e}/boot`),ae=await nl(ee);if(!ee.ok)throw new Error(ot(ae,`Could not load the project (HTTP ${ee.status}).`));o(ae.project),i(ae)},[e]),D=(0,Xe.useCallback)(async()=>{let ee=await fetch(`/api/projects/${e}/secrets`),ae=await nl(ee);if(!ee.ok)throw new Error(ot(ae,`Could not list the project's secrets (HTTP ${ee.status}).`));l(ae.secrets||[])},[e]);(0,Xe.useEffect)(()=>{O().catch(ee=>m(ee.message)),D().catch(ee=>b(ee.message))},[O,D]);let H=ee=>{c(ee),ee!=="browser"&&p(!1);let{pathname:ae,search:E}=window.location;window.history.replaceState(window.history.state,"",`${ae}${dte(E,ee)}`)},j=n?.sandbox_state==="failed",[Z,N]=(0,Xe.useState)(null);(0,Xe.useEffect)(()=>{N(j?Date.now():null)},[j,n?.sandbox?.session_id]);let P=lte(n),M=P||Ote(n)||Pte(n,Z);(0,Xe.useEffect)(()=>{if(!M)return;let ee=setTimeout(()=>O().catch(ae=>m(ae.message)),ete);return()=>clearTimeout(ee)},[M,a,O]);let I=n?.sandbox?.session_id;ey("SandboxChannel",{session_id:I},ee=>{ty(ee)&&O().catch(()=>{})},!!I);let $=async(ee,{confirm:ae=!1,onDone:E}={})=>{v(!0),m(null);try{let W=await fetch(ee,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ae?{confirm:!0}:{})}),F=await nl(W);if(W.status===409&&F.code==="confirmation_required")return y({question:F.confirmation,retry:()=>$(ee,{confirm:!0,onDone:E})}),null;if(!W.ok)throw new Error(ot(F,`The request failed (HTTP ${W.status}).`));return y(null),F.project&&o(F.project),await O(),E?.(F),F}catch(W){return m(W.message),null}finally{v(!1)}},T=()=>$(`/api/projects/${e}/run_evaluation`,{onDone:ee=>{ee.run&&S(ee.run)}}),q=(ee,ae)=>y({question:ee,retry:ae}),G=async(ee,ae,E="setup")=>{v(!0),m(null);try{let W=await fetch(`/api/projects/${e}/${E}`,{method:ee,headers:{"Content-Type":"application/json"},body:JSON.stringify(ae||{})}),F=await nl(W);if(!W.ok)throw new Error(ot(F,`The setup request failed (HTTP ${W.status}).`));F.project&&o(F.project),await O()}catch(W){m(W.message)}finally{v(!1)}},L=async()=>{m(null);let ee=await fetch(`/api/projects/${e}/synced_agents`),ae=await nl(ee);if(!ee.ok){m(ot(ae,`Could not list the checkout's agents (HTTP ${ee.status}).`));return}_(ae.synced_agents||[])},Y=async ee=>{v(!0);try{let ae=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)}),E=await nl(ae);if(!ae.ok)throw new Error(ot(E,`Could not choose the agent (HTTP ${ae.status}).`));o(E.project),_(null)}catch(ae){m(ae.message)}finally{v(!1)}},K=async ee=>{b(null);let ae=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:ee})}),E=await nl(ae);return ae.ok?(l(E.secrets||[]),!0):(b(ot(E,`Could not save the secrets (HTTP ${ae.status}).`)),!1)},pe=async(ee,ae)=>{b(null);let E=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(ee)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:ae})}),W=await nl(E);if(!E.ok){let F=ot(W,`Could not replace ${ee} (HTTP ${E.status}).`);throw b(F),new Error(F)}await D()},De=async ee=>{b(null);let ae=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(ee)}`,{method:"DELETE"});if(!ae.ok){b(ot(await nl(ae),`Could not delete ${ee} (HTTP ${ae.status}).`));return}await D()},se=async()=>{b(null);let ee=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,ae=await fetch(`/api/projects/discover_secrets?${ee}`),E=await nl(ae);if(!ae.ok){b(ot(E,`Could not read the repository's environment variables (HTTP ${ae.status}).`));return}C(Ib(E.variables||[],s))},be=async()=>{if(!await jr({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 ee=await fetch(`/api/projects/${e}`,{method:"DELETE"});ee.ok?r():m(ot(await nl(ee),`Could not delete the project (HTTP ${ee.status}).`))};if(!n)return f?Xe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):Xe.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let ue=a?.browser_modes||[],R=pte(n,ue),we=ee=>{ee&&p(!0),H("browser")},Ce=n.target_agent,z=!Ce&&n.install_state==="installed";return Xe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},Xe.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},Xe.default.createElement("div",{style:{flex:1,minWidth:260}},Xe.default.createElement(ie,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),Xe.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),Xe.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},Xe.default.createElement("span",{style:{fontFamily:U,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),Xe.default.createElement(ve,{tone:KEe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),Xe.default.createElement(ve,{tone:HA[n.install_state==="installed"?"supported":"bootstrap"]},VEe[n.install_state]),Xe.default.createElement(Jr,{href:rt(cre),onClick:()=>st(cre),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),Xe.default.createElement("div",{style:{display:"flex",gap:8}},Xe.default.createElement(ie,{onClick:()=>$(`/api/projects/${e}/boot`),disabled:x||P,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":P?"Booting\u2026":"Boot sandbox"),R&&Xe.default.createElement(ie,{onClick:()=>we(R.watch),testId:"project-watch-live"},R.label),Xe.default.createElement(ie,{variant:"primary",onClick:()=>T(),disabled:x||!Ce,testId:"run-project-evaluation",title:Ce?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&Xe.default.createElement(je,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},Xe.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),Xe.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Xe.default.createElement(ie,{variant:"primary",onClick:()=>{let{retry:ee}=h;y(null),ee?.()},disabled:x},"Run it on this machine"),Xe.default.createElement(ie,{onClick:()=>y(null)},"Cancel"))),f&&Xe.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),Xe.default.createElement(Oo,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${X$(s).length})`},...ue.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[],{value:"sessions",label:"Sessions"}],value:u,onChange:H}),u==="overview"&&Xe.default.createElement(Xe.default.Fragment,null,Xe.default.createElement(B$,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,backendError:a?.backend_error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),Xe.default.createElement(Q$,{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(()=>{})}),Xe.default.createElement(ej,{project:n,busy:x,onAsk:()=>G("POST"),onFixWithClaudeCode:()=>G("POST",null,"setup/claude_code"),onToggleAuto:ee=>G("PATCH",{auto:ee})}),Xe.default.createElement(je,null,Xe.default.createElement($e,null,"Agent under evaluation"),Ce&&Xe.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Xe.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},Ce.name),Xe.default.createElement(ve,{tone:"accent"},Ce.kind==="app_assistant"?"App assistant":`synced agent ${Ce.synced_agent}`),Xe.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/agents/${Ce.id}/edit`)},"Open agent"),n.evaluation&&Xe.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&Xe.default.createElement(ie,{size:"sm",onClick:L},"Change")),z&&!w&&Xe.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.",Xe.default.createElement("div",{style:{marginTop:8}},Xe.default.createElement(ie,{size:"sm",onClick:L,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),w&&Xe.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},w.length===0&&Xe.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),w.map(ee=>Xe.default.createElement("li",{key:ee.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},Xe.default.createElement("span",{style:{fontFamily:U,fontSize:13}},ee.tool),Xe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},ee.description),Xe.default.createElement(ie,{size:"sm",onClick:()=>Y({synced_agent:ee.slug}),disabled:x},"Evaluate this agent")))),k&&Xe.default.createElement("div",{"data-testid":"project-run",style:{marginTop:10,fontSize:13,color:"var(--color-text-secondary)"}},"Run ",k.id," is ",k.status,P?": it starts once the sandbox is ready":"","."," ",Xe.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${k.evaluation_id}/runs/${k.id}`)},"Open run"))),Ce?.kind==="app_assistant"&&Xe.default.createElement(z$,{project:n,onSaved:ee=>{ee&&o(ee),O().catch(()=>{})},onConfirmationRequired:q}),Xe.default.createElement(R$,{project:n,onProjectChanged:ee=>o(ae=>ae&&ee.install_state!==ae.install_state?ee:ae),onConfirmationRequired:q}),Xe.default.createElement("div",null,Xe.default.createElement(ie,{variant:"danger",size:"sm",onClick:be},"Delete project"))),u==="explorations"&&Xe.default.createElement(J$,{projectId:e,project:n}),u==="browser"&&Xe.default.createElement(F$,{project:n,modes:ue,watchOnOpen:d,onChange:()=>O().catch(()=>{})}),u==="sessions"&&Xe.default.createElement(I$,{project:n}),u==="environment"&&Xe.default.createElement(Xe.default.Fragment,null,Xe.default.createElement(W$,{secrets:X$(s),onReplace:pe,onDelete:De,error:g}),A?Xe.default.createElement(je,null,Xe.default.createElement($e,null,"Add secrets"),Xe.default.createElement("div",{style:{marginTop:8}},Xe.default.createElement(jb,{rows:A,onChange:C,repository:n.repository})),Xe.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},Xe.default.createElement(ie,{variant:"primary",disabled:!!ay(A)||Db(A).length===0,onClick:async()=>{await K(Db(A))&&C(null)}},"Save secrets"),Xe.default.createElement(ie,{onClick:()=>C(null)},"Cancel"),ay(A)&&Xe.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},ay(A)))):Xe.default.createElement("div",null,Xe.default.createElement(ie,{size:"sm",onClick:se},"Add secrets"))))}var _a=X(J());var GEe={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function rj({projects:e,onOpen:t,onNew:r}){return _a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},_a.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},_a.default.createElement("div",{style:{flex:1}},_a.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),_a.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.")),_a.default.createElement(ie,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&_a.default.createElement(je,null,_a.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=>_a.default.createElement(je,{key:n.id,padding:14,testId:`project-${n.id}`},_a.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},_a.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),_a.default.createElement("span",{style:{fontFamily:U,fontSize:12,color:"var(--color-text-muted)"}},n.repository),_a.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},_a.default.createElement(ve,{tone:GEe[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&_a.default.createElement(ve,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function nj({visit:e=0}){let[t,r]=(0,Ca.useState)(()=>$b(Qn())),[n,o]=(0,Ca.useState)(null),[a,i]=(0,Ca.useState)(null);(0,Ca.useEffect)(()=>{r($b(Qn()))},[e]),(0,Ca.useEffect)(()=>{let u=()=>r($b(Qn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,Ca.useCallback)(async()=>{try{let u=await fetch("/api/projects"),c=await u.json().catch(()=>({}));if(!u.ok)throw new Error(ot(c,`Could not list projects (HTTP ${u.status}).`));o(c.projects||[])}catch(u){i(u.message)}},[]);(0,Ca.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{Mc(u),r($b(u))};return t.creating?Ca.default.createElement(M$,{onCreated:u=>l(Pf(u.id)),onCancel:()=>l("/projects")}):t.projectId?Ca.default.createElement(tj,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?Ca.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?Ca.default.createElement(rj,{projects:n,onOpen:u=>l(Pf(u.id)),onNew:()=>l(Pf(null))}):Ca.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Qr=X(J());function oj({visit:e=0}){let[t,r]=(0,Qr.useState)(()=>ZA(Qn())),[n,o]=(0,Qr.useState)(null),[a,i]=(0,Qr.useState)(null),[s,l]=(0,Qr.useState)(null);(0,Qr.useEffect)(()=>{r(ZA(Qn()))},[e]),(0,Qr.useEffect)(()=>{let c=()=>r(ZA(Qn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Qr.useCallback)(async()=>{try{let c=await fetch("/api/explorations"),d=await c.json().catch(()=>({}));if(!c.ok)throw new Error(ot(d,`Could not list explorations (HTTP ${c.status}).`));o(d.explorations||[])}catch(c){l(c.message)}},[]);if((0,Qr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Qr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Qr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Qr.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(Pf(c.id)),style:{padding:0}},"\u2190 ",c.name):Qr.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Qr.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>st(`/evaluations/${d.id}`)},"Open ",d.name)),Qr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Qr.default.createElement(jf,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Qr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Qr.default.createElement("div",null,Qr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Qr.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&&Qr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Qr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Qr.default.createElement(je,null,Qr.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&&Qr.default.createElement(Df,{explorations:n,onOpen:c=>st(XA(c.id))}))}var vt=X(J());var me=X(J());var pi=X(J());var aj=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?U:void 0}),dre={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},pre=e=>typeof e=="string"?e:void 0;function Tn({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){let l=(0,pi.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":pre(e),"data-testid":s};return pi.default.createElement("div",{style:dre},pi.default.createElement("label",{htmlFor:l},e),a?pi.default.createElement("textarea",{...u,rows:i,style:{...aj(o),resize:"vertical"}}):pi.default.createElement("input",{...u,style:aj(o)}))}function Md({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,pi.useId)();return pi.default.createElement("div",{style:dre},pi.default.createElement("label",{htmlFor:a},e),pi.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":pre(e),style:aj(!1),"data-testid":o},n))}function zb({label:e,checked:t,onChange:r}){return pi.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},pi.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function Aa({tone:e="info",children:t}){let r=e==="error";return pi.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 oo(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(ot(i,`${n} (HTTP ${a.status}).`));return i}async function fre(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var YEe=["collections","generate","import"],XEe=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function ij(e=""){let r=String(e).match(XEe)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function mre({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!YEe.includes(e)?"/scenarios":`/scenarios/${e}`}function sj(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 QA(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function gre(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 hre(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:QA(e.tools),contains:QA(e.contains),not_contains:QA(e.notContains)},tags:QA(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function yre(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 vre(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 ZEe=["create","update","remove","keep"],JEe={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function xre(e){let t=e?.changes||[];return ZEe.map(r=>({action:r,label:JEe[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function bre(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 wre(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function Sre(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function lj({collectionId:e,agents:t,projects:r,storageAvailable:n,onBack:o,onChanged:a,onDeleted:i}){let[s,l]=(0,me.useState)(null),[u,c]=(0,me.useState)(null),[d,p]=(0,me.useState)(null),[f,m]=(0,me.useState)({productIds:[],setIds:[],scenarioIds:[]}),[g,b]=(0,me.useState)(!1),[h,y]=(0,me.useState)(!1),x=`/api/scenario_catalogs/${e}`,v=(0,me.useCallback)(async()=>{try{let O=await oo(x,{fallback:"Could not open the collection"});l(O.catalog),c(null)}catch(O){c(O.message)}},[x]);(0,me.useEffect)(()=>{v()},[v]);let k=async(O,D,H,j)=>{let Z=await oo(`${x}${O}`,{method:D,body:H,fallback:j});return Z.catalog?l(Z.catalog):await v(),a?.(),Z},S=async O=>{c(null),p(null);try{await O()}catch(D){c(D.message)}},w=f.productIds.length+f.setIds.length+f.scenarioIds.length,_=(O,D)=>m(H=>({...H,[O]:Sre(H[O],D)})),A=O=>S(async()=>{let D=await fre(sj(e,O,{inline:!0})),H=await wd(D);p(H?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=O=>window.open(sj(e,O),"_blank");return s?me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenario-collection"},me.default.createElement("div",null,me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),g?me.default.createElement(QEe,{collection:s,onCancel:()=>b(!1),onSave:async O=>{await k("","PATCH",{catalog:O},"Could not save the collection"),b(!1)}}):me.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},me.default.createElement("div",null,me.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},s.name),me.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},me.default.createElement("code",null,s.key),s.source_path?` \xB7 ${s.source_path}`:"",s.description?` \xB7 ${s.description}`:""),me.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")),me.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>b(!0)},"Rename"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>A({})},"Copy YAML"),n&&me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>S(async()=>{await k("/sync","POST",{direction:"push"},"Sync failed"),p("Written to storage.")})},"Write to storage"),me.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>S(async()=>{await jr({title:`Delete the collection ${s.key}?`,message:"Its products, sets and scenarios are deleted. The evaluations its sets became stay, with their runs.",confirmLabel:"Delete collection",danger:!0,requireText:s.key})&&(await oo(x,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&me.default.createElement(Aa,{tone:"error"},u),d&&me.default.createElement(Aa,null,d),w>0&&me.default.createElement(je,{padding:12,testId:"scenarios-selection-bar",style:{position:"sticky",top:8,zIndex:1}},me.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},w," selected"),me.default.createElement(ie,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>A(f)},"Copy YAML"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>m({productIds:[],setIds:[],scenarioIds:[]})},"Clear"),me.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&&me.default.createElement(je,{testId:"scenarios-collection-empty"},me.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(O=>me.default.createElement(REe,{key:O.id,product:O,collection:s,agents:t,projects:r,selection:f,onToggle:_,change:k,act:S,setNotice:p})),h?me.default.createElement(_re,{agents:t,projects:r,onCancel:()=>y(!1),onSave:async O=>{await k("/products","POST",{product:O},"Could not add the product"),y(!1)}}):me.default.createElement("div",null,me.default.createElement(ie,{size:"sm",onClick:()=>y(!0),testId:"scenarios-add-product"},"Add product"))):u?me.default.createElement(Aa,{tone:"error"},u):me.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function QEe({collection:e,onSave:t,onCancel:r}){let[n,o]=(0,me.useState)(e.name||""),[a,i]=(0,me.useState)(e.description||"");return me.default.createElement(RA,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},me.default.createElement(Tn,{label:"Name",value:n,onChange:o}),me.default.createElement(Tn,{label:"Description",value:a,onChange:i}))}function REe({product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l}){let[u,c]=(0,me.useState)(!1),[d,p]=(0,me.useState)(!1),f=`/products/${e.id}`;return me.default.createElement(je,{testId:"scenarios-product"},u?me.default.createElement(_re,{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)}}):me.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},me.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start"}},me.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}}),me.default.createElement("div",null,me.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),me.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},me.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&&me.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.description))),me.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},e.set_count," sets \xB7 ",e.scenario_count," scenarios"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),me.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>s(async()=>{await jr({title:`Delete product ${e.key}?`,message:`Its ${e.set_count} sets and their scenarios are deleted.`,confirmLabel:"Delete product",danger:!0})&&await i(f,"DELETE",void 0,"Could not delete the product")})},"Delete"))),me.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>me.default.createElement(eNe,{key:m.id,set:m,product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l})),d?me.default.createElement(Cre,{onCancel:()=>p(!1),onSave:async m=>{await i(`${f}/sets`,"POST",{set:m},"Could not add the set"),p(!1)}}):me.default.createElement("div",null,me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function eNe({set:e,product:t,collection:r,agents:n,projects:o,selection:a,onToggle:i,change:s,act:l,setNotice:u}){let[c,d]=(0,me.useState)((e.scenarios||[]).length<=5),[p,f]=(0,me.useState)(!1),[m,g]=(0,me.useState)(null),b=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,y]=(0,me.useState)(b),x=`/sets/${e.id}`,v=()=>l(async()=>{let[k,S]=h.split(":"),w=k==="project"?{project_id:Number(S)}:k==="agent"?{agent_id:Number(S)}:{},_=await oo(`/api/scenario_catalogs/${r.id}${x}/run`,{method:"POST",body:w,fallback:"The run could not start"});u(`Run #${_.run.id} of ${e.name} started; it shows under Evaluations as ${_.evaluation.name}.`)});return me.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},p?me.default.createElement(Cre,{set:e,onCancel:()=>f(!1),onSave:async k=>{await s(x,"PATCH",{set:k},"Could not save the set"),f(!1)}}):me.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},me.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("input",{type:"checkbox","aria-label":`Select set ${e.key}`,checked:a.setIds.includes(e.id),onChange:()=>i("setIds",e.id)}),me.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),me.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},e.key),me.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"\xB7 ",e.scenario_count," scenarios"),e.judge?.kind&&me.default.createElement(ve,null,`judge ${e.judge.kind}`),e.evaluation&&me.default.createElement("a",{href:"#",style:{fontSize:12},onClick:k=>{k.preventDefault(),st(`/evaluations/${e.evaluation.id}`)}},"evaluation",e.latest_run?` (latest run ${e.latest_run.status})`:"")),me.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},me.default.createElement("select",{value:h,onChange:k=>y(k.target.value),style:{fontSize:12,padding:4,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}},me.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&me.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(k=>me.default.createElement("option",{key:`project-${k.id}`,value:`project:${k.id}`},k.name))),n.length>0&&me.default.createElement("optgroup",{label:"Agents"},n.map(k=>me.default.createElement("option",{key:`agent-${k.id}`,value:`agent:${k.id}`},k.name)))),me.default.createElement(ie,{size:"sm",onClick:v,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>d(k=>!k)},c?"Hide":"Scenarios"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),me.default.createElement(ie,{size:"sm",variant:"danger",onClick:()=>l(async()=>{await jr({title:`Delete set ${e.key}?`,message:`Its ${e.scenario_count} scenarios are deleted. Its evaluation stays.`,confirmLabel:"Delete set",danger:!0})&&await s(x,"DELETE",void 0,"Could not delete the set")})},"Delete"))),c&&me.default.createElement("ul",{style:{listStyle:"none",margin:"10px 0 0",padding:0,display:"grid",gap:6}},(e.scenarios||[]).map(k=>m===k.id?me.default.createElement("li",{key:k.id},me.default.createElement(kre,{scenario:k,onCancel:()=>g(null),onSave:async S=>{await s(`${x}/scenarios/${k.id}`,"PATCH",S,"Could not save the scenario"),g(null)}})):me.default.createElement(tNe,{key:k.id,scenario:k,selected:a.scenarioIds.includes(k.id),onToggle:()=>i("scenarioIds",k.id),onEdit:()=>g(k.id),onDelete:()=>l(async()=>{await jr({title:`Delete scenario ${k.key}?`,confirmLabel:"Delete scenario",danger:!0})&&await s(`${x}/scenarios/${k.id}`,"DELETE",void 0,"Could not delete the scenario")})})),me.default.createElement("li",null,m==="new"?me.default.createElement(kre,{onCancel:()=>g(null),onSave:async k=>{await s(`${x}/scenarios`,"POST",k,"Could not add the scenario"),g(null)}}):me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:()=>{d(!0),g("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function tNe({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=vre(e.expectations);return me.default.createElement("li",{style:{display:"flex",gap:8,alignItems:"flex-start",padding:"6px 8px",borderRadius:6,background:"var(--color-surface)"},"data-testid":"scenarios-scenario"},me.default.createElement("input",{type:"checkbox","aria-label":`Select scenario ${e.key}`,checked:t,onChange:r,style:{marginTop:3}}),me.default.createElement("div",{style:{flex:1,minWidth:0}},me.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)",opacity:e.enabled?1:.6}},me.default.createElement("code",{style:{fontSize:11,color:"var(--color-text-secondary)"}},e.key)," ",e.prompt),(e.notes||a)&&me.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginTop:2}},e.notes,e.notes&&a?" \xB7 ":"",a&&me.default.createElement("span",{style:{fontFamily:U}},a)),me.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>me.default.createElement(ve,{key:i},i)),e.production_only&&me.default.createElement(ve,{tone:"warning"},"production only"),!e.enabled&&me.default.createElement(ve,null,"disabled"))),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:n},"Edit"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function RA({children:e,onSave:t,onCancel:r,problem:n=null,testId:o}){let[a,i]=(0,me.useState)(!1),[s,l]=(0,me.useState)(null);return me.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&&me.default.createElement(Aa,{tone:"error"},s),me.default.createElement("div",{style:{display:"flex",gap:8}},me.default.createElement(ie,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),me.default.createElement(ie,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function _re({product:e=null,agents:t,projects:r,onSave:n,onCancel:o}){let[a,i]=(0,me.useState)(e?.name||""),[s,l]=(0,me.useState)(e?.key||""),[u,c]=(0,me.useState)(e?.description||""),[d,p]=(0,me.useState)(e?.agent?String(e.agent.id):""),[f,m]=(0,me.useState)(e?.project?String(e.project.id):"");return me.default.createElement(RA,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:f}),testId:"scenarios-product-form"},me.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},me.default.createElement(Tn,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),me.default.createElement(Tn,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),me.default.createElement(Md,{label:"Agent",value:d,onChange:p},me.default.createElement("option",{value:""},"None"),t.map(g=>me.default.createElement("option",{key:g.id,value:g.id},g.name))),me.default.createElement(Md,{label:"Project",value:f,onChange:m},me.default.createElement("option",{value:""},"None"),r.map(g=>me.default.createElement("option",{key:g.id,value:g.id},g.name)))),me.default.createElement(Tn,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function Cre({set:e=null,onSave:t,onCancel:r}){let[n,o]=(0,me.useState)(e?.name||""),[a,i]=(0,me.useState)(e?.key||""),[s,l]=(0,me.useState)(e?.description||""),[u,c]=(0,me.useState)(e?.judge?.kind||"");return me.default.createElement(RA,{onCancel:r,onSave:()=>t({name:n.trim(),key:a.trim(),description:s.trim(),...u?{judge:{kind:u}}:{}}),testId:"scenarios-set-form"},me.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},me.default.createElement(Tn,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),me.default.createElement(Tn,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),me.default.createElement(Md,{label:"Judge",value:u,onChange:c},me.default.createElement("option",{value:""},"The evaluation's default"),me.default.createElement("option",{value:"rules"},"Rules (expectations only)"),me.default.createElement("option",{value:"llm"},"LLM judge (grades against the notes)"))),me.default.createElement(Tn,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function kre({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,me.useState)(()=>gre(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return me.default.createElement(RA,{onCancel:r,onSave:()=>t(hre(n)),problem:yre(n),testId:"scenarios-scenario-form"},me.default.createElement(Tn,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),me.default.createElement(Tn,{label:"Notes: the rubric, what a good answer does",value:n.notes,onChange:a("notes"),multiline:!0,rows:2}),me.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},me.default.createElement(Tn,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),me.default.createElement(Tn,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),me.default.createElement(Tn,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),me.default.createElement(Tn,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),me.default.createElement(Tn,{label:"Key",value:n.key,onChange:a("key"),placeholder:"made from the prompt when empty",mono:!0})),me.default.createElement("div",{style:{display:"flex",gap:16}},me.default.createElement(zb,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),me.default.createElement(zb,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var Tt=X(J());function uj({projects:e,collections:t,onAccepted:r}){let[n,o]=(0,Tt.useState)(""),[a,i]=(0,Tt.useState)(null),[s,l]=(0,Tt.useState)(null),[u,c]=(0,Tt.useState)({sandbox:null,modes:[]}),[d,p]=(0,Tt.useState)([]),[f,m]=(0,Tt.useState)(null),[g,b]=(0,Tt.useState)({collectionId:"",setId:""}),[h,y]=(0,Tt.useState)(null),[x,v]=(0,Tt.useState)(null),k=(0,Tt.useCallback)(async()=>{if(n)try{let[O,D,H,j]=await Promise.all([oo(`/api/projects/${n}`,{fallback:"Could not load the project"}),oo("/api/projects/capabilities").catch(()=>({})),oo("/api/sandboxes").catch(()=>({})),oo(`/api/explorations?project_id=${n}`,{fallback:"Could not list the project's explorations"})]),Z=O.project;i(Z),l((D.items||[]).find(P=>P.key==="model_credentials")||null);let N=Z?.sandbox?.session_id;c({sandbox:(H.sandboxes||[]).find(P=>P.session_id===N)||null,modes:H.browser_modes||[]}),p(j.explorations||[]),v(null)}catch(O){v(O.message)}},[n]);(0,Tt.useEffect)(()=>{i(null),m(null),k()},[k]),(0,Tt.useEffect)(()=>{if(!g.collectionId){y(null);return}oo(`/api/scenario_catalogs/${g.collectionId}`).then(O=>y(O.catalog)).catch(O=>v(O.message))},[g.collectionId]);let S=(h?.products||[]).flatMap(O=>(O.sets||[]).map(D=>({...D,product:O}))),w=S.find(O=>String(O.id)===String(g.setId)),_=async()=>{try{let D=(await oo("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,H=await oo(`/api/scenario_catalogs/${D}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),j=await oo(`/api/scenario_catalogs/${D}/products/${H.product.id}/sets`,{method:"POST",body:{set:{name:"Explored",key:"explored",judge:{kind:"llm"}}},fallback:"Could not add the set"});r?.(),b({collectionId:String(D),setId:String(j.set.id)})}catch(O){v(O.message)}},A=a?.sandbox_state==="ready",C=f||d[0]?.id;return Tt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-generator"},Tt.default.createElement(je,null,Tt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Tt.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."),Tt.default.createElement(Md,{label:"Project",value:n,onChange:o,testId:"scenarios-generator-project"},Tt.default.createElement("option",{value:""},"Choose a project\u2026"),e.map(O=>Tt.default.createElement("option",{key:O.id,value:O.id},O.name))),e.length===0&&Tt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"No projects yet. ",Tt.default.createElement("a",{href:"#",onClick:O=>{O.preventDefault(),st("/projects/new")}},"Create one")," from a repository first."))),x&&Tt.default.createElement(Aa,{tone:"error"},x),a&&Tt.default.createElement(Tt.default.Fragment,null,s&&!s.ok&&Tt.default.createElement(Aa,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",Tt.default.createElement("a",{href:"#",onClick:O=>{O.preventDefault(),st("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!A&&Tt.default.createElement(Aa,null,a.name,"'s sandbox is ",a.sandbox_state||"not booted",". The explorer walks the app the sandbox serves:"," ",Tt.default.createElement("a",{href:"#",onClick:O=>{O.preventDefault(),st(`/projects/${a.id}`)}},"boot it on the project's page"),"."),Tt.default.createElement(Lb,{projectId:a.id,sandboxReady:A,onStarted:O=>{m(O.id),k()}}),A&&u.sandbox&&u.modes.length>0&&Tt.default.createElement(en,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},Tt.default.createElement(Mf,{sandbox:u.sandbox,modes:u.modes})),Tt.default.createElement(en,{title:"Accept into",testId:"scenarios-generator-destination",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},Tt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Tt.default.createElement(Md,{label:"Collection",value:g.collectionId,onChange:O=>b({collectionId:O,setId:""})},Tt.default.createElement("option",{value:""},"Choose a collection\u2026"),t.map(O=>Tt.default.createElement("option",{key:O.id,value:O.id},O.name))),Tt.default.createElement(Md,{label:"Set",value:g.setId,onChange:O=>b(D=>({...D,setId:O}))},Tt.default.createElement("option",{value:""},h&&S.length===0?"The collection has no sets yet":"Choose a set\u2026"),S.map(O=>Tt.default.createElement("option",{key:O.id,value:O.id},O.product.name," / ",O.name)))),Tt.default.createElement("div",null,Tt.default.createElement(ie,{size:"sm",variant:"ghost",onClick:_},"New collection for ",a.name))),d.length===0?Tt.default.createElement(je,null,Tt.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.")):Tt.default.createElement(Tt.default.Fragment,null,Tt.default.createElement(Df,{explorations:d,selectedId:C,onOpen:O=>m(O.id)}),!w&&Tt.default.createElement(Aa,null,"Choose the set to accept into, above."),Tt.default.createElement(jf,{key:`${C}-${w?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:w?{id:w.id,label:`${w.product.name} / ${w.name}`}:null,onAccepted:()=>r?.()}))))}var Jt=X(J());var rNe=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],nNe=`catalog: support_desk products: - key: triage agent: TriageAgent @@ -112,7 +114,7 @@ products: - key: refund prompt: A customer asks for a refund. notes: Looks the order up before answering. - expect: { tools: [lookup_order] }`,ZEe={create:"success",update:"warning",remove:"error",keep:"muted"};function n$({onImported:e}){let[t,r]=(0,Jt.useState)("document"),[n,o]=(0,Jt.useState)(""),[a,i]=(0,Jt.useState)(""),[s,l]=(0,Jt.useState)(""),[u,c]=(0,Jt.useState)(""),[d,p]=(0,Jt.useState)(".activeagents/evals"),[f,m]=(0,Jt.useState)(!0),[g,b]=(0,Jt.useState)(null),[h,y]=(0,Jt.useState)(!1),[x,v]=(0,Jt.useState)(null),k=()=>{let D=f?"merge":"replace";return t==="repository"?{repository:s.trim(),ref:u.trim()||void 0,path:d.trim()||void 0,mode:D}:{document:n,mode:D,...a?{source_path:a}:{}}},S=t==="repository"?!!s.trim():!!n.trim(),w=D=>H=>{D(H),b(null)},_=async D=>{y(!0),v(null);try{await D()}catch(H){v(H.message)}finally{y(!1)}},A=()=>_(async()=>{let D=await no("/api/scenario_catalogs/preview",{method:"POST",body:k(),fallback:"The preview failed"});b(D.previews||[])}),C=()=>_(async()=>{let D=await no("/api/scenario_catalogs",{method:"POST",body:k(),fallback:"Import refused"});b(null),o(""),i(""),e?.(D.catalogs||[])}),O=D=>{if(!D)return;let H=new FileReader;H.onload=()=>{i(D.name),w(o)(String(H.result||""))},H.onerror=()=>v(`Could not read ${D.name}.`),H.readAsText(D)};return Jt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-import"},Jt.default.createElement(Le,null,Jt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Jt.default.createElement(To,{options:YEe,value:t,onChange:D=>{r(D),b(null)}}),t==="document"&&Jt.default.createElement(Tn,{label:"YAML",value:n,onChange:w(o),placeholder:XEe,mono:!0,multiline:!0,rows:12,testId:"scenarios-import-yaml"}),t==="file"&&Jt.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",Jt.default.createElement("input",{type:"file",accept:".yml,.yaml,application/x-yaml,text/yaml",onChange:D=>O(D.target.files?.[0])}),a&&Jt.default.createElement("span",{style:{fontFamily:U}},a," \xB7 ",n.length," characters")),t==="repository"&&Jt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Jt.default.createElement(Tn,{label:"Repository",value:s,onChange:w(l),placeholder:"owner/name",mono:!0}),Jt.default.createElement(Tn,{label:"Ref",value:u,onChange:w(c),placeholder:"the default branch when empty",mono:!0}),Jt.default.createElement(Tn,{label:"Path",value:d,onChange:w(p),placeholder:".activeagents/evals or one .yml file",mono:!0})),Jt.default.createElement(Mb,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:f,onChange:w(m)}),Jt.default.createElement("div",{style:{display:"flex",gap:8}},Jt.default.createElement(ie,{onClick:A,disabled:h||!S,testId:"scenarios-import-preview"},h&&!g?"Reading\u2026":"Preview"),Jt.default.createElement(ie,{variant:"primary",onClick:C,disabled:h||!g||g.length===0,testId:"scenarios-import-apply"},fre(g||[])?"Apply, overwriting":"Apply")))),x&&Jt.default.createElement(Ca,{tone:"error"},x),g&&g.map(D=>Jt.default.createElement(JEe,{key:`${D.catalog?.key}-${D.source_path||""}`,preview:D})))}function JEe({preview:e}){let t=dre(e);return Jt.default.createElement(Le,{testId:"scenarios-import-preview-result"},Jt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Jt.default.createElement(be,{tone:e.catalog?.action==="create"?"success":"info"},e.catalog?.action==="create"?"new collection":"existing collection"),Jt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},pre(e))),e.source_path&&Jt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:U,marginTop:4}},e.source_path),t.length===0?Jt.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Nothing changes: the collection already holds this document."):Jt.default.createElement("div",{style:{display:"grid",gap:8,marginTop:10}},t.map(r=>Jt.default.createElement("div",{key:r.action},Jt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center"}},Jt.default.createElement(be,{tone:ZEe[r.action]},r.label),Jt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.changes.length)),Jt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontSize:12,fontFamily:U,color:"var(--color-text-secondary)"}},r.changes.slice(0,50).map(n=>Jt.default.createElement("li",{key:`${n.level}-${n.path}`},n.level," ",n.path)),r.changes.length>50&&Jt.default.createElement("li",null,"and ",r.changes.length-50," more"))))))}var QEe=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function o$({visit:e=0}){let[t,r]=(0,vt.useState)(()=>Rj(Zn())),[n,o]=(0,vt.useState)(null),[a,i]=(0,vt.useState)(!1),[s,l]=(0,vt.useState)({agents:[],projects:[]}),[u,c]=(0,vt.useState)(null),[d,p]=(0,vt.useState)(null),[f,m]=(0,vt.useState)(!1);(0,vt.useEffect)(()=>{let x=()=>r(Rj(Zn()));return window.addEventListener("popstate",x),window.addEventListener("dashboard:navigate",x),()=>{window.removeEventListener("popstate",x),window.removeEventListener("dashboard:navigate",x)}},[]);let g=(0,vt.useCallback)(async()=>{try{let x=await no("/api/scenario_catalogs",{fallback:"Could not list the collections"});o(x.catalogs||[]),i(x.storage_available===!0),c(null)}catch(x){c(x.message)}},[]),b=(0,vt.useCallback)(async()=>{try{let[x,v]=await Promise.all([no("/api/agents").catch(()=>({})),no("/api/projects").catch(()=>({}))]);l({agents:(x.agents||[]).filter(k=>!k.observed),projects:v.projects||[]})}catch{}},[]);(0,vt.useEffect)(()=>{g(),b()},[g,b,e]);let h=x=>{p(null),c(null),st(ire(x))},y=async x=>{let v=await no("/api/scenario_catalogs",{method:"POST",body:{catalog:x},fallback:"Could not create the collection"});m(!1),await g(),h({collectionId:v.catalogs?.[0]?.id})};return t.collectionId?vt.default.createElement(t$,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:g,onDeleted:async()=>{await g(),h({})}}):vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},vt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),vt.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"&&vt.default.createElement(ie,{variant:"primary",onClick:()=>m(x=>!x),testId:"scenarios-new-collection"},f?"Close":"New collection")),vt.default.createElement(To,{options:QEe,value:t.tab,onChange:x=>h({tab:x})}),u&&vt.default.createElement(Ca,{tone:"error"},u),d&&vt.default.createElement(Ca,null,d),t.tab==="generate"&&vt.default.createElement(r$,{projects:s.projects,collections:n||[],onAccepted:g}),t.tab==="import"&&vt.default.createElement(n$,{onImported:async x=>{await g(),x.length===1?h({collectionId:x[0].id}):p(`Imported ${x.map(v=>v.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&vt.default.createElement(vt.default.Fragment,null,f&&vt.default.createElement(REe,{onCreate:y}),n===null?vt.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?vt.default.createElement(Le,{testId:"scenarios-empty"},vt.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"," ",vt.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):vt.default.createElement("div",{style:{display:"grid",gap:12}},n.map(x=>vt.default.createElement(Le,{key:x.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:x.id}),testId:"scenarios-collection-card"},vt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},x.name),vt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},vt.default.createElement("code",null,x.key),x.source_path?` \xB7 ${x.source_path}`:x.source_kind==="api"?" \xB7 written here":` \xB7 ${x.source_kind}`)),vt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",textAlign:"right"}},x.product_count," ",x.product_count===1?"product":"products"," \xB7 ",x.scenario_count," scenarios",vt.default.createElement("div",null,x.synced?"synced to storage":a?"not synced":"database only"))))))))}function REe({onCreate:e}){let[t,r]=(0,vt.useState)(""),[n,o]=(0,vt.useState)(""),[a,i]=(0,vt.useState)(""),[s,l]=(0,vt.useState)(!1),[u,c]=(0,vt.useState)(null);return vt.default.createElement(Le,{testId:"scenarios-new-collection-form"},vt.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}},vt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},vt.default.createElement(Tn,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),vt.default.createElement(Tn,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),vt.default.createElement(Tn,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&vt.default.createElement(Ca,{tone:"error"},u),vt.default.createElement("div",null,vt.default.createElement(ie,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var gn=X(J());var eNe='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function tNe({request:e,onSettle:t}){let[r,n]=(0,gn.useState)(""),o=(0,gn.useRef)(null),a=(0,gn.useRef)(null),i=(0,gn.useId)(),s=(0,gn.useId)(),l=OR(e,r);(0,gn.useEffect)(()=>{let p=document.activeElement;return e.requireText?a.current?.focus():o.current?.querySelector('[data-testid="confirm-cancel"]')?.focus(),()=>p?.focus?.()},[e]);let u=()=>{l&&t(!0)},c=p=>{if(p.key==="Escape"){p.preventDefault(),t(!1);return}if(p.key!=="Tab")return;let f=[...o.current?.querySelectorAll(eNe)||[]];if(f.length===0)return;let m=f[0],g=f[f.length-1];p.shiftKey&&document.activeElement===m?(p.preventDefault(),g.focus()):!p.shiftKey&&document.activeElement===g&&(p.preventDefault(),m.focus())},d=e.danger?{background:"var(--color-error)",color:"#fff"}:void 0;return gn.default.createElement("div",{"data-testid":"confirm-overlay",onMouseDown:p=>{p.target===p.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"}},gn.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)"}},gn.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),gn.default.createElement("div",{id:s},e.message&&gn.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&gn.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",gn.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",gn.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:p=>n(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.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)"}}))),gn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},gn.default.createElement(ie,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),gn.default.createElement(ie,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function vre(){let[e,t]=(0,gn.useState)(NR());return(0,gn.useEffect)(()=>TR(t),[]),e?gn.default.createElement(tNe,{key:nNe(e),request:e,onSettle:ER}):null}var a$=new WeakMap,rNe=0;function nNe(e){return a$.has(e)||a$.set(e,++rNe),a$.get(e)}function oNe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=ut(),[i,s]=(0,_t.useState)(t),[l,u]=(0,_t.useState)("list"),[c,d]=(0,_t.useState)(null),[p,f]=(0,_t.useState)(!1),[m,g]=(0,_t.useState)(null),[b,h]=(0,_t.useState)(!1),[y,x]=(0,_t.useState)("recent"),[v,k]=(0,_t.useState)({messages:[]}),[S,w]=(0,_t.useState)(null),_=pX(r),[A,C]=(0,_t.useState)(null),{requests:O}=S2({refreshKey:l}),[D,H]=(0,_t.useState)(0),[$,Z]=(0,_t.useState)(null),[N,P]=(0,_t.useState)(!1);(0,_t.useEffect)(()=>{if(!N)return;let R=we=>{we.key==="Escape"&&P(!1)};return window.addEventListener("keydown",R),()=>window.removeEventListener("keydown",R)},[N]),(0,_t.useEffect)(()=>{let R=()=>{let we=fX(Zn(),_);we.focusServer&&C(we.focusServer),we.sessionId&&Z({kind:we.sessionKind,id:we.sessionId}),we.replacePath&&window.history.replaceState({},"",rt(we.replacePath)),we.agentId?M(we.agentId,we.view):u(we.view)};return R(),window.addEventListener("popstate",R),window.addEventListener("dashboard:navigate",R),()=>{window.removeEventListener("popstate",R),window.removeEventListener("dashboard:navigate",R)}},[]);let M=async(R,we)=>{f(!0);try{let z=await(await fetch(`/api/agents/${R}`)).json();d(z.agent),u(we)}catch{T("Failed to load agent","error")}finally{f(!1)}},I=async(R=y)=>{f(!0);try{let Ce=await(await fetch(`/api/agents?sort=${R}`)).json();s(Ce.agents)}catch{T("Failed to refresh agents","error")}finally{f(!1)}},j=R=>{x(R),I(R)},T=(R,we="info")=>{g({message:R,type:we}),setTimeout(()=>g(null),3e3)},q=(R,we=null)=>{let Ce=x2(R,{agent:we,features:_});Ce!==null&&window.history.pushState({},"",rt(Ce))},G=async R=>{f(!0);try{let we=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:R})});if(we.ok){let ee=await we.json();return s([ee.agent,...i]),d(ee.agent),u("editor"),T("Agent created successfully!","success"),q("editor",ee.agent),null}let Ce=await we.json().catch(()=>({})),z={errors:Ce.errors?.length?Ce.errors:[Ce.error||`Failed to create agent (${we.status})`],fieldErrors:Ce.field_errors||{}};return T(z.errors.join(", "),"error"),z}catch{return T("Failed to create agent","error"),{errors:["Failed to create agent: the request did not complete"],fieldErrors:{}}}finally{f(!1)}},L=async(R,we)=>{f(!0);try{let Ce=await fetch(`/api/agents/${R}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:we})});if(Ce.ok){let z=await Ce.json();s(i.map(ee=>ee.id===R?z.agent:ee)),d(z.agent),T("Agent updated!","success")}else{let z=await Ce.json();T(z.errors?.join(", ")||"Failed to update agent","error")}}catch{T("Failed to update agent","error")}finally{f(!1)}},Y=async R=>{let we=i.find(Ce=>Ce.id===R);if(await $r({title:we?`Delete ${we.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:we?.name})){f(!0);try{(await fetch(`/api/agents/${R}`,{method:"DELETE"})).ok&&(s(i.filter(z=>z.id!==R)),d(null),u("list"),T("Agent deleted","success"),q("list"))}catch{T("Failed to delete agent","error")}finally{f(!1)}}},K=async R=>{f(!0);try{let we=await fetch(`/api/agents/${R}/duplicate`,{method:"POST"});if(we.ok){let Ce=await we.json();s([Ce.agent,...i]),T("Agent duplicated!","success")}}catch{T("Failed to duplicate agent","error")}finally{f(!1)}},pe=R=>{s([R,...i]),h(!1),T("Agent created from template!","success"),se("editor",R)},De=["editor","runner","agent-analytics","history"],se=(R,we=null)=>{b0(R,_)&&(P(!1),H(Ce=>Ce+1),R==="builder"&&w(null),we?.id&&De.includes(R)&&we.instructions===void 0?M(we.id,R):(d(we),u(R)),q(R,we))},xe={assistant:()=>_t.default.createElement(kj,{session:v,onSessionChange:k,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>se("settings"),onReviewDraft:R=>{w(R),u("builder"),q("builder")}}),builder:()=>_t.default.createElement(eO,{key:S?.id||"new-agent",initialDraft:S,meta:r,onSave:G,onCancel:()=>se(S?"assistant":"list"),isLoading:p}),editor:()=>c?_t.default.createElement(hA,{key:`editor-${c.id}`,agent:c,meta:r,onSave:R=>L(c.id,R),onDelete:()=>Y(c.id),onRun:()=>se("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>se("history",c),onBack:()=>se("list"),isLoading:p}):null,runner:()=>c?_t.default.createElement(N3,{key:`runner-${c.id}-${window.location.search}`,agent:c,recorderUrl:r.recorderUrl,freshConversation:new URLSearchParams(window.location.search).has("new"),onBack:()=>se("editor",c)}):null,"agent-analytics":()=>c?_t.default.createElement(hA,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:R=>L(c.id,R),onDelete:()=>Y(c.id),onRun:()=>se("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>se("history",c),onBack:()=>se("list"),isLoading:p}):null,history:()=>c?_t.default.createElement(O3,{agent:c,onBack:()=>se("editor",c)}):null,analytics:()=>_t.default.createElement(T3,{onSelectAgent:R=>{M(R.id,"agent-analytics")}}),traces:()=>_t.default.createElement(nf,null),metrics:()=>_t.default.createElement(H3,null),interactions:()=>_t.default.createElement(Gu,null),tools:()=>_t.default.createElement(q3,{onOpenServer:R=>{C(R),se("mcp")}}),mcp:()=>_t.default.createElement(V3,{focusServer:A,onOpenTools:()=>{C(null),se("tools")}}),evaluations:()=>_t.default.createElement(db,null),projects:()=>_t.default.createElement(Zj,{visit:D}),scenarios:()=>_t.default.createElement(o$,{visit:D}),sessions:()=>_t.default.createElement(dj,{agents:i,user:e}),exploration:()=>_t.default.createElement(Jj,{visit:D}),replay:()=>$?_t.default.createElement(ij,{key:`${$.kind}-${$.id}`,kind:$.kind,id:$.id,onHandoff:R=>{let we=R?.handoff_state||{};we.url&&window.open(we.url,"_blank","noopener,noreferrer");let Ce=Object.entries(we.form_values||{}).map(([z,ee])=>`${z}: ${ee}`).join(" \xB7 ");T(we.url?`Taking over in a new tab${Ce?` \u2014 already entered: ${Ce}`:""}`:"Taking over session...","info")},onBack:()=>jee(window.history.state)?window.history.back():se("sessions")}):null,sandbox:()=>_t.default.createElement(Q3,{initialType:"playwright_mcp",showAgents:!0,onClose:()=>se("list")}),organization:()=>_t.default.createElement(pj,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>_t.default.createElement(wj,{user:e}),list:()=>_t.default.createElement(qT,{agents:i,meta:r,onSelect:R=>se("editor",R),onNew:()=>se("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:K,onDelete:Y,onRefresh:I,sort:y,onSortChange:j,isLoading:p})},ue=()=>b0(l,_)?(xe[l]||xe.list)():null;return _t.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},_t.default.createElement(M3,{currentView:mX(l),onNavigate:se,agentCount:i.length,pendingInputCount:xX(O),account:n,user:e,gemVersion:r.activeagentVersion,features:_,open:N,onClose:()=>P(!1)}),_t.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},_t.default.createElement(I3,{user:e,account:n,onOpenNav:()=>P(!0)}),_t.default.createElement("main",{className:"flex-1 p-4 md:p-6 overflow-x-clip"},ue())),b&&_t.default.createElement(P3,{onUseTemplate:pe,onClose:()=>h(!1)}),_t.default.createElement(vre,null),m&&_t.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&&_t.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},_t.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},_t.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function i$(e){return _t.default.createElement(m6,null,_t.default.createElement(MY,null,_t.default.createElement(oNe,{...e})))}var aNe=new Set(["POST","PUT","PATCH","DELETE"]);function iNe(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(!aNe.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 sNe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function xre(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=iNe(o,a,{base:r,csrfToken:sNe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var lNe="active-agent-dashboard";function bre(){let e=document.getElementById(lNe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,xre(t.mountPath||"/"),(0,Sre.createRoot)(e).render(wre.default.createElement(i$,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",bre):bre(); + expect: { tools: [lookup_order] }`,oNe={create:"success",update:"warning",remove:"error",keep:"muted"};function cj({onImported:e}){let[t,r]=(0,Jt.useState)("document"),[n,o]=(0,Jt.useState)(""),[a,i]=(0,Jt.useState)(""),[s,l]=(0,Jt.useState)(""),[u,c]=(0,Jt.useState)(""),[d,p]=(0,Jt.useState)(".activeagents/evals"),[f,m]=(0,Jt.useState)(!0),[g,b]=(0,Jt.useState)(null),[h,y]=(0,Jt.useState)(!1),[x,v]=(0,Jt.useState)(null),k=()=>{let D=f?"merge":"replace";return t==="repository"?{repository:s.trim(),ref:u.trim()||void 0,path:d.trim()||void 0,mode:D}:{document:n,mode:D,...a?{source_path:a}:{}}},S=t==="repository"?!!s.trim():!!n.trim(),w=D=>H=>{D(H),b(null)},_=async D=>{y(!0),v(null);try{await D()}catch(H){v(H.message)}finally{y(!1)}},A=()=>_(async()=>{let D=await oo("/api/scenario_catalogs/preview",{method:"POST",body:k(),fallback:"The preview failed"});b(D.previews||[])}),C=()=>_(async()=>{let D=await oo("/api/scenario_catalogs",{method:"POST",body:k(),fallback:"Import refused"});b(null),o(""),i(""),e?.(D.catalogs||[])}),O=D=>{if(!D)return;let H=new FileReader;H.onload=()=>{i(D.name),w(o)(String(H.result||""))},H.onerror=()=>v(`Could not read ${D.name}.`),H.readAsText(D)};return Jt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-import"},Jt.default.createElement(je,null,Jt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Jt.default.createElement(Oo,{options:rNe,value:t,onChange:D=>{r(D),b(null)}}),t==="document"&&Jt.default.createElement(Tn,{label:"YAML",value:n,onChange:w(o),placeholder:nNe,mono:!0,multiline:!0,rows:12,testId:"scenarios-import-yaml"}),t==="file"&&Jt.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",Jt.default.createElement("input",{type:"file",accept:".yml,.yaml,application/x-yaml,text/yaml",onChange:D=>O(D.target.files?.[0])}),a&&Jt.default.createElement("span",{style:{fontFamily:U}},a," \xB7 ",n.length," characters")),t==="repository"&&Jt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Jt.default.createElement(Tn,{label:"Repository",value:s,onChange:w(l),placeholder:"owner/name",mono:!0}),Jt.default.createElement(Tn,{label:"Ref",value:u,onChange:w(c),placeholder:"the default branch when empty",mono:!0}),Jt.default.createElement(Tn,{label:"Path",value:d,onChange:w(p),placeholder:".activeagents/evals or one .yml file",mono:!0})),Jt.default.createElement(zb,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:f,onChange:w(m)}),Jt.default.createElement("div",{style:{display:"flex",gap:8}},Jt.default.createElement(ie,{onClick:A,disabled:h||!S,testId:"scenarios-import-preview"},h&&!g?"Reading\u2026":"Preview"),Jt.default.createElement(ie,{variant:"primary",onClick:C,disabled:h||!g||g.length===0,testId:"scenarios-import-apply"},wre(g||[])?"Apply, overwriting":"Apply")))),x&&Jt.default.createElement(Aa,{tone:"error"},x),g&&g.map(D=>Jt.default.createElement(aNe,{key:`${D.catalog?.key}-${D.source_path||""}`,preview:D})))}function aNe({preview:e}){let t=xre(e);return Jt.default.createElement(je,{testId:"scenarios-import-preview-result"},Jt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Jt.default.createElement(ve,{tone:e.catalog?.action==="create"?"success":"info"},e.catalog?.action==="create"?"new collection":"existing collection"),Jt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},bre(e))),e.source_path&&Jt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:U,marginTop:4}},e.source_path),t.length===0?Jt.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Nothing changes: the collection already holds this document."):Jt.default.createElement("div",{style:{display:"grid",gap:8,marginTop:10}},t.map(r=>Jt.default.createElement("div",{key:r.action},Jt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center"}},Jt.default.createElement(ve,{tone:oNe[r.action]},r.label),Jt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.changes.length)),Jt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontSize:12,fontFamily:U,color:"var(--color-text-secondary)"}},r.changes.slice(0,50).map(n=>Jt.default.createElement("li",{key:`${n.level}-${n.path}`},n.level," ",n.path)),r.changes.length>50&&Jt.default.createElement("li",null,"and ",r.changes.length-50," more"))))))}var iNe=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function dj({visit:e=0}){let[t,r]=(0,vt.useState)(()=>ij(Qn())),[n,o]=(0,vt.useState)(null),[a,i]=(0,vt.useState)(!1),[s,l]=(0,vt.useState)({agents:[],projects:[]}),[u,c]=(0,vt.useState)(null),[d,p]=(0,vt.useState)(null),[f,m]=(0,vt.useState)(!1);(0,vt.useEffect)(()=>{let x=()=>r(ij(Qn()));return window.addEventListener("popstate",x),window.addEventListener("dashboard:navigate",x),()=>{window.removeEventListener("popstate",x),window.removeEventListener("dashboard:navigate",x)}},[]);let g=(0,vt.useCallback)(async()=>{try{let x=await oo("/api/scenario_catalogs",{fallback:"Could not list the collections"});o(x.catalogs||[]),i(x.storage_available===!0),c(null)}catch(x){c(x.message)}},[]),b=(0,vt.useCallback)(async()=>{try{let[x,v]=await Promise.all([oo("/api/agents").catch(()=>({})),oo("/api/projects").catch(()=>({}))]);l({agents:(x.agents||[]).filter(k=>!k.observed),projects:v.projects||[]})}catch{}},[]);(0,vt.useEffect)(()=>{g(),b()},[g,b,e]);let h=x=>{p(null),c(null),st(mre(x))},y=async x=>{let v=await oo("/api/scenario_catalogs",{method:"POST",body:{catalog:x},fallback:"Could not create the collection"});m(!1),await g(),h({collectionId:v.catalogs?.[0]?.id})};return t.collectionId?vt.default.createElement(lj,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:g,onDeleted:async()=>{await g(),h({})}}):vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},vt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),vt.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"&&vt.default.createElement(ie,{variant:"primary",onClick:()=>m(x=>!x),testId:"scenarios-new-collection"},f?"Close":"New collection")),vt.default.createElement(Oo,{options:iNe,value:t.tab,onChange:x=>h({tab:x})}),u&&vt.default.createElement(Aa,{tone:"error"},u),d&&vt.default.createElement(Aa,null,d),t.tab==="generate"&&vt.default.createElement(uj,{projects:s.projects,collections:n||[],onAccepted:g}),t.tab==="import"&&vt.default.createElement(cj,{onImported:async x=>{await g(),x.length===1?h({collectionId:x[0].id}):p(`Imported ${x.map(v=>v.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&vt.default.createElement(vt.default.Fragment,null,f&&vt.default.createElement(sNe,{onCreate:y}),n===null?vt.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?vt.default.createElement(je,{testId:"scenarios-empty"},vt.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"," ",vt.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):vt.default.createElement("div",{style:{display:"grid",gap:12}},n.map(x=>vt.default.createElement(je,{key:x.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:x.id}),testId:"scenarios-collection-card"},vt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},x.name),vt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},vt.default.createElement("code",null,x.key),x.source_path?` \xB7 ${x.source_path}`:x.source_kind==="api"?" \xB7 written here":` \xB7 ${x.source_kind}`)),vt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",textAlign:"right"}},x.product_count," ",x.product_count===1?"product":"products"," \xB7 ",x.scenario_count," scenarios",vt.default.createElement("div",null,x.synced?"synced to storage":a?"not synced":"database only"))))))))}function sNe({onCreate:e}){let[t,r]=(0,vt.useState)(""),[n,o]=(0,vt.useState)(""),[a,i]=(0,vt.useState)(""),[s,l]=(0,vt.useState)(!1),[u,c]=(0,vt.useState)(null);return vt.default.createElement(je,{testId:"scenarios-new-collection-form"},vt.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}},vt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},vt.default.createElement(Tn,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),vt.default.createElement(Tn,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),vt.default.createElement(Tn,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&vt.default.createElement(Aa,{tone:"error"},u),vt.default.createElement("div",null,vt.default.createElement(ie,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var gn=X(J());var lNe='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function uNe({request:e,onSettle:t}){let[r,n]=(0,gn.useState)(""),o=(0,gn.useRef)(null),a=(0,gn.useRef)(null),i=(0,gn.useId)(),s=(0,gn.useId)(),l=zR(e,r);(0,gn.useEffect)(()=>{let p=document.activeElement;return e.requireText?a.current?.focus():o.current?.querySelector('[data-testid="confirm-cancel"]')?.focus(),()=>p?.focus?.()},[e]);let u=()=>{l&&t(!0)},c=p=>{if(p.key==="Escape"){p.preventDefault(),t(!1);return}if(p.key!=="Tab")return;let f=[...o.current?.querySelectorAll(lNe)||[]];if(f.length===0)return;let m=f[0],g=f[f.length-1];p.shiftKey&&document.activeElement===m?(p.preventDefault(),g.focus()):!p.shiftKey&&document.activeElement===g&&(p.preventDefault(),m.focus())},d=e.danger?{background:"var(--color-error)",color:"#fff"}:void 0;return gn.default.createElement("div",{"data-testid":"confirm-overlay",onMouseDown:p=>{p.target===p.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"}},gn.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)"}},gn.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),gn.default.createElement("div",{id:s},e.message&&gn.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&gn.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",gn.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",gn.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:p=>n(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.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)"}}))),gn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},gn.default.createElement(ie,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),gn.default.createElement(ie,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function Are(){let[e,t]=(0,gn.useState)(jR());return(0,gn.useEffect)(()=>LR(t),[]),e?gn.default.createElement(uNe,{key:dNe(e),request:e,onSettle:$R}):null}var pj=new WeakMap,cNe=0;function dNe(e){return pj.has(e)||pj.set(e,++cNe),pj.get(e)}function pNe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=ut(),[i,s]=(0,_t.useState)(t),[l,u]=(0,_t.useState)("list"),[c,d]=(0,_t.useState)(null),[p,f]=(0,_t.useState)(!1),[m,g]=(0,_t.useState)(null),[b,h]=(0,_t.useState)(!1),[y,x]=(0,_t.useState)("recent"),[v,k]=(0,_t.useState)({messages:[]}),[S,w]=(0,_t.useState)(null),_=xX(r),[A,C]=(0,_t.useState)(null),{requests:O}=N2({refreshKey:l}),[D,H]=(0,_t.useState)(0),[j,Z]=(0,_t.useState)(null),[N,P]=(0,_t.useState)(!1);(0,_t.useEffect)(()=>{if(!N)return;let R=we=>{we.key==="Escape"&&P(!1)};return window.addEventListener("keydown",R),()=>window.removeEventListener("keydown",R)},[N]),(0,_t.useEffect)(()=>{let R=()=>{let we=bX(Qn(),_);we.focusServer&&C(we.focusServer),we.sessionId&&Z({kind:we.sessionKind,id:we.sessionId}),we.replacePath&&window.history.replaceState({},"",rt(we.replacePath)),we.agentId?M(we.agentId,we.view):u(we.view)};return R(),window.addEventListener("popstate",R),window.addEventListener("dashboard:navigate",R),()=>{window.removeEventListener("popstate",R),window.removeEventListener("dashboard:navigate",R)}},[]);let M=async(R,we)=>{f(!0);try{let z=await(await fetch(`/api/agents/${R}`)).json();d(z.agent),u(we)}catch{T("Failed to load agent","error")}finally{f(!1)}},I=async(R=y)=>{f(!0);try{let Ce=await(await fetch(`/api/agents?sort=${R}`)).json();s(Ce.agents)}catch{T("Failed to refresh agents","error")}finally{f(!1)}},$=R=>{x(R),I(R)},T=(R,we="info")=>{g({message:R,type:we}),setTimeout(()=>g(null),3e3)},q=(R,we=null)=>{let Ce=C2(R,{agent:we,features:_});Ce!==null&&window.history.pushState({},"",rt(Ce))},G=async R=>{f(!0);try{let we=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:R})});if(we.ok){let ee=await we.json();return s([ee.agent,...i]),d(ee.agent),u("editor"),T("Agent created successfully!","success"),q("editor",ee.agent),null}let Ce=await we.json().catch(()=>({})),z={errors:Ce.errors?.length?Ce.errors:[Ce.error||`Failed to create agent (${we.status})`],fieldErrors:Ce.field_errors||{}};return T(z.errors.join(", "),"error"),z}catch{return T("Failed to create agent","error"),{errors:["Failed to create agent: the request did not complete"],fieldErrors:{}}}finally{f(!1)}},L=async(R,we)=>{f(!0);try{let Ce=await fetch(`/api/agents/${R}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:we})});if(Ce.ok){let z=await Ce.json();s(i.map(ee=>ee.id===R?z.agent:ee)),d(z.agent),T("Agent updated!","success")}else{let z=await Ce.json();T(z.errors?.join(", ")||"Failed to update agent","error")}}catch{T("Failed to update agent","error")}finally{f(!1)}},Y=async R=>{let we=i.find(Ce=>Ce.id===R);if(await jr({title:we?`Delete ${we.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:we?.name})){f(!0);try{(await fetch(`/api/agents/${R}`,{method:"DELETE"})).ok&&(s(i.filter(z=>z.id!==R)),d(null),u("list"),T("Agent deleted","success"),q("list"))}catch{T("Failed to delete agent","error")}finally{f(!1)}}},K=async R=>{f(!0);try{let we=await fetch(`/api/agents/${R}/duplicate`,{method:"POST"});if(we.ok){let Ce=await we.json();s([Ce.agent,...i]),T("Agent duplicated!","success")}}catch{T("Failed to duplicate agent","error")}finally{f(!1)}},pe=R=>{s([R,...i]),h(!1),T("Agent created from template!","success"),se("editor",R)},De=["editor","runner","agent-analytics","history"],se=(R,we=null)=>{k0(R,_)&&(P(!1),H(Ce=>Ce+1),R==="builder"&&w(null),we?.id&&De.includes(R)&&we.instructions===void 0?M(we.id,R):(d(we),u(R)),q(R,we))},be={assistant:()=>_t.default.createElement(O$,{session:v,onSessionChange:k,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>se("settings"),onReviewDraft:R=>{w(R),u("builder"),q("builder")}}),builder:()=>_t.default.createElement(sO,{key:S?.id||"new-agent",initialDraft:S,meta:r,onSave:G,onCancel:()=>se(S?"assistant":"list"),isLoading:p}),editor:()=>c?_t.default.createElement(kA,{key:`editor-${c.id}`,agent:c,meta:r,onSave:R=>L(c.id,R),onDelete:()=>Y(c.id),onRun:()=>se("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>se("history",c),onBack:()=>se("list"),isLoading:p}):null,runner:()=>c?_t.default.createElement($3,{key:`runner-${c.id}-${window.location.search}`,agent:c,recorderUrl:r.recorderUrl,freshConversation:new URLSearchParams(window.location.search).has("new"),onBack:()=>se("editor",c)}):null,"agent-analytics":()=>c?_t.default.createElement(kA,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:R=>L(c.id,R),onDelete:()=>Y(c.id),onRun:()=>se("runner",c),onDuplicate:()=>K(c.id),onRunReport:()=>se("history",c),onBack:()=>se("list"),isLoading:p}):null,history:()=>c?_t.default.createElement(L3,{agent:c,onBack:()=>se("editor",c)}):null,analytics:()=>_t.default.createElement(j3,{onSelectAgent:R=>{M(R.id,"agent-analytics")}}),traces:()=>_t.default.createElement(of,null),metrics:()=>_t.default.createElement(Z3,null),interactions:()=>_t.default.createElement(Yu,null),tools:()=>_t.default.createElement(J3,{onOpenServer:R=>{C(R),se("mcp")}}),mcp:()=>_t.default.createElement(R3,{focusServer:A,onOpenTools:()=>{C(null),se("tools")}}),evaluations:()=>_t.default.createElement(yb,null),projects:()=>_t.default.createElement(nj,{visit:D}),scenarios:()=>_t.default.createElement(dj,{visit:D}),sessions:()=>_t.default.createElement(v$,{agents:i,user:e}),exploration:()=>_t.default.createElement(oj,{visit:D}),replay:()=>j?_t.default.createElement(f$,{key:`${j.kind}-${j.id}`,kind:j.kind,id:j.id,onHandoff:R=>{let we=R?.handoff_state||{};we.url&&window.open(we.url,"_blank","noopener,noreferrer");let Ce=Object.entries(we.form_values||{}).map(([z,ee])=>`${z}: ${ee}`).join(" \xB7 ");T(we.url?`Taking over in a new tab${Ce?` \u2014 already entered: ${Ce}`:""}`:"Taking over session...","info")},onBack:()=>Hee(window.history.state)?window.history.back():se("sessions")}):null,sandbox:()=>_t.default.createElement(a$,{initialType:"playwright_mcp",showAgents:!0,onClose:()=>se("list")}),organization:()=>_t.default.createElement(x$,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>_t.default.createElement(N$,{user:e}),list:()=>_t.default.createElement(JT,{agents:i,meta:r,onSelect:R=>se("editor",R),onNew:()=>se("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:K,onDelete:Y,onRefresh:I,sort:y,onSortChange:$,isLoading:p})},ue=()=>k0(l,_)?(be[l]||be.list)():null;return _t.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},_t.default.createElement(B3,{currentView:wX(l),onNavigate:se,agentCount:i.length,pendingInputCount:AX(O),account:n,user:e,gemVersion:r.activeagentVersion,features:_,open:N,onClose:()=>P(!1)}),_t.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},_t.default.createElement(F3,{user:e,account:n,onOpenNav:()=>P(!0)}),_t.default.createElement("main",{className:"flex-1 p-4 md:p-6 overflow-x-clip"},ue())),b&&_t.default.createElement(z3,{onUseTemplate:pe,onClose:()=>h(!1)}),_t.default.createElement(Are,null),m&&_t.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&&_t.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},_t.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},_t.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function fj(e){return _t.default.createElement(w6,null,_t.default.createElement(BY,null,_t.default.createElement(pNe,{...e})))}var fNe=new Set(["POST","PUT","PATCH","DELETE"]);function mNe(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(!fNe.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 gNe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function Ere(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=mNe(o,a,{base:r,csrfToken:gNe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var hNe="active-agent-dashboard";function Nre(){let e=document.getElementById(hNe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,Ere(t.mountPath||"/"),(0,Ore.createRoot)(e).render(Tre.default.createElement(fj,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Nre):Nre(); /*! Bundled license information: react/cjs/react.production.js: diff --git a/actionagent/app/models/action_agent/evaluation_run.rb b/actionagent/app/models/action_agent/evaluation_run.rb index 2aa47b213..a15764bea 100644 --- a/actionagent/app/models/action_agent/evaluation_run.rb +++ b/actionagent/app/models/action_agent/evaluation_run.rb @@ -87,6 +87,48 @@ def recorded_comparison comparison if comparison.is_a?(Hash) && comparison.present? end + # The bars this run was gated by (ActiveAgent::Evals::PassThresholds), + # as the run recorded them when it started or was imported, so a later + # change to the catalog does not regrade it; nil for a run whose suite + # declared none, one recorded before runs kept them, and a framework + # without per-group bars. + def pass_thresholds + self.class.pass_thresholds_from(scores&.dig("_pass_thresholds")) + end + + # A recorded `pass_thresholds` mapping (Report#to_h's: "threshold", + # "min_pass_rate", "groups") as PassThresholds, or nil for anything + # that is not one. + def self.pass_thresholds_from(value) + return nil unless value.is_a?(Hash) && defined?(ActiveAgent::Evals::PassThresholds) + + value = value.stringify_keys + groups = value["groups"].nil? ? {} : value["groups"] + return nil unless groups.is_a?(Hash) + + ActiveAgent::Evals::PassThresholds.new(suite: value.slice(*ActiveAgent::Evals::PassThresholds::SUITE_KEYS), groups: groups) + rescue ArgumentError + nil + end + + # The gates the run's results met or missed (Report#gates, each + # `{ "group", "name", "label", "passed", "total", "pass_rate", + # "min_pass_rate", "gated", "met" }`), as recorded when it completed; + # nil for a run without bars. + def gates + value = scores&.dig("_gates") + value.select { |gate| gate.is_a?(Hash) } if value.is_a?(Array) + end + + # Whether every gate was met, as Report#passed? answers: false when no + # gate was reached; nil for a run without bars. + def gates_met + rows = gates + return nil if rows.nil? + + rows.any? && rows.all? { |gate| gate["met"] == true } + end + # How the report names the judge, the way the suite panel does: the # judge the recorded verdict names — unless that is only the pass-rate # ranking — else the evaluation's judge model. nil when neither is set, @@ -307,6 +349,7 @@ def to_report(links: report_links, estimate: true) kwargs[:judge_usage] = judge_usage_run if judge_usage_run && self.class.report_accepts?(:judge_usage) kwargs[:release] = release_summary if release_summary && self.class.report_accepts?(:release) kwargs[:comparison] = recorded_comparison if recorded_comparison && self.class.report_accepts?(:comparison) + kwargs[:pass_thresholds] = pass_thresholds if pass_thresholds && self.class.report_accepts?(:pass_thresholds) self.class.report_class.new(**kwargs) end diff --git a/actionagent/app/models/action_agent/scenario_product.rb b/actionagent/app/models/action_agent/scenario_product.rb index 4856a6811..ec7060d6f 100644 --- a/actionagent/app/models/action_agent/scenario_product.rb +++ b/actionagent/app/models/action_agent/scenario_product.rb @@ -21,6 +21,28 @@ def metadata value.is_a?(Hash) ? value : {} end + # The product's named criteria lists, as the catalog's `criteria:` gives + # them: list name => criterion hashes. A stored value that is not such a + # mapping, and a list left with no criterion, read as no list. + # @return [Hash{String => Array}] + def criteria + value = self[:criteria] + return {} unless value.is_a?(Hash) + + value.each_with_object({}) do |(name, list), lists| + entries = Array(list).select { |criterion| criterion.is_a?(Hash) } if list.is_a?(Array) + lists[name.to_s] = entries if entries.present? + end + end + + # The bars the catalog's `pass:` declares (ActiveAgent::Evals::PassThresholds); + # a stored value that is not a mapping reads as none. + # @return [Hash{String => Object}] + def pass + value = self[:pass] + value.is_a?(Hash) ? value : {} + end + # The agent a set of this product runs against when the caller names # none: the product's agent, else the project's agent under test, else # the owner's agent named by the document. @@ -36,6 +58,8 @@ def to_document "name" => name, "description" => description, "agent" => agent_name.presence || agent&.name, + "criteria" => criteria.presence, + "pass" => pass.presence, "sets" => sets.map(&:to_document) }.merge(metadata).compact end diff --git a/actionagent/app/models/action_agent/scenario_set.rb b/actionagent/app/models/action_agent/scenario_set.rb index c19ff6955..b1202b0af 100644 --- a/actionagent/app/models/action_agent/scenario_set.rb +++ b/actionagent/app/models/action_agent/scenario_set.rb @@ -37,6 +37,14 @@ def metadata value.is_a?(Hash) ? value : {} end + # The bars the catalog's `pass:` declares (ActiveAgent::Evals::PassThresholds); + # a stored value that is not a mapping reads as none. + # @return [Hash{String => Object}] + def pass + value = self[:pass] + value.is_a?(Hash) ? value : {} + end + # The evaluation's name: the catalog, product and set keys. def evaluation_name "#{catalog.key}/#{product.key}/#{key}".first(EvaluationReportImport::MAX_EVALUATION_NAME) @@ -117,6 +125,7 @@ def to_document "description" => description, "judge" => judge.presence, "criteria" => criteria.presence, + "pass" => pass.presence, "scenarios" => scenarios.map(&:to_document) }.merge(metadata).compact end diff --git a/actionagent/app/serializers/action_agent/evaluation_serializer.rb b/actionagent/app/serializers/action_agent/evaluation_serializer.rb index 588cbafef..26ff5d51d 100644 --- a/actionagent/app/serializers/action_agent/evaluation_serializer.rb +++ b/actionagent/app/serializers/action_agent/evaluation_serializer.rb @@ -81,7 +81,9 @@ def scores(run) # checkout sandbox the run replayed against, if any: its session id and # checkout, never its token. `agent_version` is the version of the # agent the run scored, and `version_state` whether that is the agent's - # current version ("current", "earlier" or "unrecorded"). + # current version ("current", "earlier" or "unrecorded"). `gates` are the + # per-group pass gates the run was held to (EvaluationRun#gates) and + # `gates_met` whether it met every one; both nil for a run without bars. def run_summary(run, number: nil) { id: run.id, @@ -95,7 +97,9 @@ def run_summary(run, number: nil) created_at: run.created_at.iso8601, sandbox: run.sandbox, agent_version: run.agent_version_summary, - version_state: run.evaluation.standing_info.version_state(run) + version_state: run.evaluation.standing_info.version_state(run), + gates: run.gates, + gates_met: run.gates_met } end diff --git a/actionagent/app/services/action_agent/evaluation_report_import.rb b/actionagent/app/services/action_agent/evaluation_report_import.rb index fc89e0198..3015ba6f3 100644 --- a/actionagent/app/services/action_agent/evaluation_report_import.rb +++ b/actionagent/app/services/action_agent/evaluation_report_import.rb @@ -95,6 +95,10 @@ def initialize(denial) JUDGE_USAGE_KEYS = %w[calls input_tokens output_tokens cost model by_kind source].freeze JUDGE_USAGE_SOURCES = %w[reported traces meter].freeze MAX_JUDGE_KINDS = 10 + # Groups a report's `pass_thresholds` may name; a group holds at least + # one result, so no report needs more. + MAX_PASS_GROUPS = MAX_RESULTS + PASS_THRESHOLD_KEYS = %w[threshold min_pass_rate groups].freeze SCOPE_PATTERN = %r{\A[\w .:/@-]{1,100}\z} STATUSES = %w[passed failed errored].freeze # The envelope statuses a delivery may name. @@ -674,10 +678,21 @@ def recorded_scores "_verdict" => report["verdict"], "_selection" => selection, "_metadata" => metadata, - "_judge_usage_run" => bounded_judge_usage(report.dig("judge_usage", "run")) + "_judge_usage_run" => bounded_judge_usage(report.dig("judge_usage", "run")), + "_pass_thresholds" => recorded_pass_thresholds }.compact.merge("_judge_label" => judge_label) end + # The bars the report was gated by, as PassThresholds normalizes them + # (validate_pass_thresholds! has refused anything else), so the rebuilt + # report gates the stored results the way the application's did. nil + # for a report whose suite declared none. + def recorded_pass_thresholds + return nil if report["pass_thresholds"].nil? + + EvaluationRun.pass_thresholds_from(report["pass_thresholds"])&.to_h + end + # The run's scores in the shape the Evaluations view renders # (ScenarioEvaluationRunner#scores_for), summarized from the stored # results as the application reported them — no cost is estimated here, @@ -689,10 +704,14 @@ def recorded_scores def summarized_scores(run) rebuilt = run.to_report(estimate: false) comparison = rebuilt.comparison if rebuilt.respond_to?(:comparison) + # The gates are worked out from the stored results as well: the + # report's own "gates" are not taken as the verdict. + gates = rebuilt.gates.map(&:to_h) if rebuilt.respond_to?(:pass_thresholds) && rebuilt.pass_thresholds rebuilt.criterion_scores.merge( "_models" => rebuilt.summary_by_model, "_recommendations" => rebuilt.recommendations, - "_comparison" => comparison + "_comparison" => comparison, + "_gates" => gates ).compact.merge(recorded_scores) end @@ -725,6 +744,7 @@ def validate! judge_trace_ids!(metadata["judge_trace_ids"]) string!(report["judge"], "report.judge", 200) validate_release! + validate_pass_thresholds! validate_judge_usage!(report.dig("judge_usage", "run"), "report.judge_usage.run") if report["judge_usage"].is_a?(Hash) optional_object!(report["judge_usage"], "report.judge_usage") object!(report["models"], "report.models") @@ -856,6 +876,33 @@ def validate_release! string!(release["label"], "report.release.label", 200) end + # The bars the suite declared, as Report#to_h writes them: "threshold" + # and "min_pass_rate" from 0 to 1, and "groups", each group's + # "min_pass_rate" and "gated", by group key. Checked by PassThresholds + # itself, so the import refuses what the framework would. + def validate_pass_thresholds! + bars = report["pass_thresholds"] + return if bars.nil? + + object!(bars, "report.pass_thresholds") + unknown = bars.keys - PASS_THRESHOLD_KEYS + raise Invalid, "report.pass_thresholds has unknown keys #{unknown.join(', ')}" if unknown.any? + + groups = bars["groups"] + optional_object!(groups, "report.pass_thresholds.groups") + if groups && groups.size > MAX_PASS_GROUPS + raise Invalid, "report.pass_thresholds.groups must name at most #{MAX_PASS_GROUPS} groups" + end + + (groups || {}).each_key { |key| string!(key, "report.pass_thresholds.groups key", 200) } + # A framework without per-group bars stores none, as before. + return unless defined?(ActiveAgent::Evals::PassThresholds) + + ActiveAgent::Evals::PassThresholds.new(suite: bars.slice(*ActiveAgent::Evals::PassThresholds::SUITE_KEYS), groups: groups || {}) + rescue ArgumentError => e + raise Invalid, "report.pass_thresholds: #{e.message}" + end + # What the judge spent, as ActiveAgent::Evals::Report writes it per # result and for the run. def validate_judge_usage!(usage, name) diff --git a/actionagent/app/services/action_agent/scenario_catalog_import.rb b/actionagent/app/services/action_agent/scenario_catalog_import.rb index 063481fdb..d87a44d46 100644 --- a/actionagent/app/services/action_agent/scenario_catalog_import.rb +++ b/actionagent/app/services/action_agent/scenario_catalog_import.rb @@ -181,6 +181,10 @@ def replace_products(parsed) metadata: entry.metadata, agent: resolve_agent(entry) || (merge? ? product.agent : nil), project: resolve_project(entry) || (merge? ? product.project : nil) ) + # Until add_catalog_product_criteria runs, imports keep working without the lists. + product.criteria = entry.criteria if product.has_attribute?(:criteria) + # Until add_catalog_pass_bars runs, imports keep working without the bars. + product.pass = entry.pass if product.has_attribute?(:pass) product.position = position_for(product, entry.position, offset) product.save! replace_sets(product, entry) @@ -197,6 +201,7 @@ def replace_sets(product, entry) name: set_entry.name, description: set_entry.description, judge: set_entry.judge, criteria: set_entry.criteria, metadata: set_entry.metadata ) + set.pass = set_entry.pass if set.has_attribute?(:pass) set.position = position_for(set, set_entry.position, offset) set.save! replace_scenarios(set, set_entry) diff --git a/actionagent/app/services/action_agent/scenario_evaluation_runner.rb b/actionagent/app/services/action_agent/scenario_evaluation_runner.rb index 9c9b87815..d1ffc0705 100644 --- a/actionagent/app/services/action_agent/scenario_evaluation_runner.rb +++ b/actionagent/app/services/action_agent/scenario_evaluation_runner.rb @@ -22,6 +22,11 @@ module ActionAgent # decisive (ActiveAgent::Evals::Comparison) # "_selection" — the scenarios and models this run covered, and # the checkout sandbox it replayed against, if any + # "_pass_thresholds" — for an evaluation of a catalog set that declares + # `pass` bars: the bars, recorded as the run starts, + # so every replay and the completion gate by the same + # ones however the catalog changes meanwhile + # "_gates" — with them: each group's gate per model, met or not # # A selection's `sandbox_id` names a checkout sandbox whose app runtime # every replay reaches beside the agent's own MCP servers, as if the agent @@ -81,6 +86,7 @@ def call specs = model_specs run = @run || @evaluation.evaluation_runs.create!(status: :pending) run.update!(status: :running, selection: selection_summary(scenarios, specs)) + record_pass_thresholds!(run) ensure_sandbox_live! if scenarios.empty? @@ -125,7 +131,7 @@ def call adapter.call(evaluation: @evaluation, owner: owner, scenarios: tasks, models: specs, on_result: metered) else ensure_judge_defined_kpis! if @evaluation.judge_defined? - default_report(tasks, specs, on_result) + default_report(tasks, specs, on_result, run) end raise ArgumentError, "scenario evaluation adapter must return an ActiveAgent::Evals::Report" unless report.is_a?(Evals::Report) reported = report.results.map { |result| [ result.scenario.key, result.label ] } @@ -453,7 +459,7 @@ def fan_out_scorer(run) available_tools: fan_out_state(run).fetch("tools") { tool_roster }, instructions: @evaluation.agent.instructions, agent_name: @evaluation.agent.name, - threshold: PASS_THRESHOLD, + **gating(run.pass_thresholds, Evals::Runner), replay: ->(*) { raise ArgumentError, "a fanned-out result is scored from its stored replay" }, refine_gate: -> { reserve_refinement!(run) } ) @@ -513,7 +519,7 @@ def completion_attributes(run, rows, specs) ) end report = Evals::Report.new(results: results, models: specs.values, judge: evals_judge, - instructions: @evaluation.agent.instructions, threshold: PASS_THRESHOLD) + instructions: @evaluation.agent.instructions, **gating(run.pass_thresholds, Evals::Report)) state = fan_out_state(run) # The other jobs' judge calls go into this runner's meter before the @@ -559,7 +565,7 @@ def error_text(error) error.is_a?(Exception) ? "#{error.class}: #{error.message}" : error.to_s end - def default_report(tasks, specs, on_result) + def default_report(tasks, specs, on_result, run) Evals::Runner.new( scenarios: tasks, models: specs, @@ -568,7 +574,7 @@ def default_report(tasks, specs, on_result) available_tools: tool_roster, instructions: @evaluation.agent.instructions, agent_name: @evaluation.agent.name, - threshold: PASS_THRESHOLD, + **gating(run.pass_thresholds, Evals::Runner), replay: ->(scenario, spec) { replay(scenario, spec) }, on_result: on_result ).call @@ -827,6 +833,7 @@ def scores_for(report, run) comparison = report.comparison if report.respond_to?(:comparison) scores["_comparison"] = comparison if comparison scores["_selection"] = run.selection + record_gates(scores, report, run.pass_thresholds) scores["_metadata"] = report.metadata scores["_judge_label"] = report.judge_label || report.judge&.label # The judge's own spend, apart from the replays' (which the results @@ -839,6 +846,60 @@ def scores_for(report, run) scores end + # The bars a host adapter's report did not carry are the run's own, so + # the run is gated however its replays ran. + def record_gates(scores, report, recorded) + thresholds = (report.pass_thresholds if report.respond_to?(:pass_thresholds)) || recorded + return if thresholds.nil? + + scores["_pass_thresholds"] = thresholds.to_h + scores["_gates"] = report.gates(thresholds).map(&:to_h) + end + + # --- pass bars ---------------------------------------------------------- + + # The score keyword, and the bars when the run has them and the + # installed framework's +klass+ takes them: the bars' threshold is the + # catalog's or PASS_THRESHOLD, the score the dashboard always used. + def gating(thresholds, klass) + return { threshold: PASS_THRESHOLD } if thresholds.nil? || !accepts_keyword?(klass, :pass_thresholds) + + { threshold: thresholds.threshold, pass_thresholds: thresholds } + end + + def accepts_keyword?(klass, keyword) + klass.instance_method(:initialize).parameters.any? { |type, name| name == keyword && %i[key keyreq].include?(type) } + end + + # Records the bars of the catalog set this evaluation runs as, once, + # as the run starts: a fanned-out replay reads them from the run. + def record_pass_thresholds!(run) + thresholds = catalog_pass_thresholds + return if thresholds.nil? + + run.update!(scores: (run.scores.is_a?(Hash) ? run.scores : {}).merge("_pass_thresholds" => thresholds.to_h)) + end + + # The product's bars as the suite's and the set's as its group's, as + # Catalog#suite_for gives them, for an evaluation a catalog set + # materialized (ScenarioSet#catalog_reference) when the set, under the + # owner's catalogs, still has the keys the reference names; nil when + # it declares none, and on a framework without per-group bars. + def catalog_pass_thresholds + reference = @evaluation.config.to_h["catalog"] + return nil unless reference.is_a?(Hash) && defined?(Evals::PassThresholds) + + set = ScenarioSet.joins(:product).includes(:product) + .where(ScenarioProduct.table_name => { scenario_catalog_id: ScenarioCatalog.for_owner(owner).select(:id) }) + .find_by(id: reference["set_id"], key: reference["set_key"].to_s) + return nil if set.nil? || set.product.key != reference["product_key"].to_s + return nil if set.product.pass.empty? && set.pass.empty? + + Evals::PassThresholds.new(suite: set.product.pass, groups: { set.key => set.pass }) + rescue ArgumentError + nil + end + # Records who judged once the calls are in. A judge with no model pinned # started out labelled by its provider; it is renamed after the model # that answered, here and on the verdict it wrote. diff --git a/actionagent/frontend/components/dashboard/ScenarioSuitePanel.jsx b/actionagent/frontend/components/dashboard/ScenarioSuitePanel.jsx index 891bc459e..5fef18aaf 100644 --- a/actionagent/frontend/components/dashboard/ScenarioSuitePanel.jsx +++ b/actionagent/frontend/components/dashboard/ScenarioSuitePanel.jsx @@ -16,6 +16,7 @@ import useMeasuredWidth, { useIsoLayoutEffect } from '../../hooks/useMeasuredWid import MultiModelPicker from './MultiModelPicker'; import { RunRail, runRows } from './evaluations/RunsList'; import RunHeader from './evaluations/RunHeader'; +import GateTable from './evaluations/GateTable'; import CriteriaFooter from './evaluations/CriteriaFooter'; import { scenariosToText } from '../../utils/scenarioSuiteText.mjs'; import { @@ -1002,6 +1003,10 @@ export default function ScenarioSuitePanel({ /> )} + {/* The pass gates the shown run was held to, when its suite or + catalog set declared any. */} + {run && !running && } + {/* Runs, read narrow: the latest few as cards above the box, the rest a line away. */} {!wide && } diff --git a/actionagent/frontend/components/dashboard/evaluations/GateTable.jsx b/actionagent/frontend/components/dashboard/evaluations/GateTable.jsx new file mode 100644 index 000000000..308cb4679 --- /dev/null +++ b/actionagent/frontend/components/dashboard/evaluations/GateTable.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { Badge, Card, MicroLabel, MONO } from '../primitives'; +import { ModelIdentity } from './ModelComparisonTable'; +import { fmtPasses } from '../../../utils/evalFormat.mjs'; +import { gateSentence, runGates } from '../../../utils/evaluationRuns.mjs'; + +// Pass rate by group: the bars a run was held to (its suite's or catalog +// set's `pass`), one row per group and model, then the whole run's ("All") +// per model, as the server worked them out (ActiveAgent::Evals::Report#gates). +// Each row reads passed of total, the bar, and met / not met in words; a +// group that declared `gated: false` reads "reported only". Nothing for a +// run held to no bars. +const STATUS = { + met: { tone: 'success', text: 'met' }, + missed: { tone: 'error', text: 'not met' }, + ungated: { tone: 'muted', text: 'reported only' }, +}; + +const cell = { padding: '8px 14px', fontSize: 13, color: 'var(--color-text-cell)', borderTop: '1px solid var(--color-border-light)', textAlign: 'left' }; +const head = { ...cell, fontFamily: MONO, fontSize: 11, fontWeight: 600, color: 'var(--color-text-muted)', borderTop: 'none' }; + +export default function GateTable({ run, testId = 'run-gates' }) { + const gates = runGates(run); + if (!gates || !gates.rows.length) return null; + const missed = gates.rows.filter((gate) => gate.gated && !gate.met).length; + + return ( + +
+ Pass rate by group + + {gates.met ? 'every gate met' : missed ? `${missed} ${missed === 1 ? 'gate' : 'gates'} not met` : 'no gate reached'} + +
+
+ + + + + + + + + + + + {gates.rows.map((gate) => { + const status = !gate.gated ? STATUS.ungated : gate.met ? STATUS.met : STATUS.missed; + return ( + + + + + + + + ); + })} + +
GroupModelPassedRequiredGate
{gate.name}{fmtPasses(gate.passed, gate.total)} + {gate.gated ? `${Math.round(gate.minRate * 100)}%` : '—'} + {status.text}
+
+
+ ); +} diff --git a/actionagent/frontend/components/dashboard/evaluations/RunsList.jsx b/actionagent/frontend/components/dashboard/evaluations/RunsList.jsx index 22ccab918..447bc29f1 100644 --- a/actionagent/frontend/components/dashboard/evaluations/RunsList.jsx +++ b/actionagent/frontend/components/dashboard/evaluations/RunsList.jsx @@ -5,8 +5,8 @@ import { META_COLUMN, MetaStrip } from '../TelemetryObject'; import { splitModelLabel, timeAgo } from '../../../utils/format'; import { fmtPasses, fmtScore, fmtSpend } from '../../../utils/evalFormat.mjs'; import { - STRIP_LIST_HEIGHT, combinedBars, judgeCallsText, judgeLabel, judgeSourceText, passRate, plural, runCohorts, runDelta, runLabel, - runNumber, runSandboxLabel, runSpend, runTotalOf, runsMeta, shownRunIndexes, versionChip, versionDelta, + STRIP_LIST_HEIGHT, combinedBars, gateSentence, judgeCallsText, judgeLabel, judgeSourceText, passRate, plural, runCohorts, runDelta, + runGates, runLabel, runNumber, runSandboxLabel, runSpend, runTotalOf, runsMeta, shownRunIndexes, unmetGates, versionChip, versionDelta, } from '../../../utils/evaluationRuns.mjs'; import { useIsoLayoutEffect } from '../../../hooks/useMeasuredWidth'; import { agentUnit, fmtRate } from './SpendStrip'; @@ -28,7 +28,10 @@ import { agentUnit, fmtRate } from './SpendStrip'; // A run's standing, as one badge: what it passed when it completed, else // where it is. A fraction carries its percent; `short` drops the word -// "passed" where the row around it already says so (a rail row). +// "passed" where the row around it already says so (a rail row). A run held +// to pass gates says whether it met them: a missed gate turns the badge to +// an error and reads "gate missed" whatever the pass rate, and the title +// names each gate it missed. export function RunBadge({ run, testId, short = false }) { if (!run) return no runs; if (run.status === 'failed') return failed; @@ -36,9 +39,15 @@ export function RunBadge({ run, testId, short = false }) { if (run.status === 'running') return running; if (run.samples_evaluated) { const passes = fmtPasses(run.samples_passed || 0, run.samples_evaluated); + const gates = runGates(run); + const missed = !!gates && !gates.met; + const gateTitle = !gates ? null : missed ? (unmetGates(run).map(gateSentence).join('\n') || 'No gate was reached') : 'Every pass gate was met'; + const text = short ? passes : `${passes} passed`; + const note = missed ? ' · gate missed' : gates && !short ? ' · gates met' : ''; + const title = [short || gates ? `${passes} passed` : null, gateTitle].filter(Boolean).join('\n') || undefined; return ( - - {short ? passes : `${passes} passed`} + + {`${text}${note}`} ); } diff --git a/actionagent/frontend/test/runGatesViews.test.mjs b/actionagent/frontend/test/runGatesViews.test.mjs new file mode 100644 index 000000000..9fc1bf35d --- /dev/null +++ b/actionagent/frontend/test/runGatesViews.test.mjs @@ -0,0 +1,125 @@ +import assert from 'node:assert/strict'; +import { mkdirSync, rmSync, writeFileSync } from 'node:fs'; +import { dirname } from 'node:path'; +import test, { after, before } from 'node:test'; +import { fileURLToPath, pathToFileURL } from 'node:url'; +import { build } from 'esbuild'; +import { gateSentence, runGates, unmetGates } from '../utils/evaluationRuns.mjs'; + +// A run's per-group pass gates: the helpers that read them from the run's +// JSON, the Pass rate by group table, and the run badge's verdict, bundled +// with esbuild and rendered to static markup. + +const root = fileURLToPath(new URL('..', import.meta.url)); +const bundlePath = fileURLToPath(new URL(`../node_modules/.cache/run-gates-views-${process.pid}.mjs`, import.meta.url)); + +let render; + +before(async () => { + Object.defineProperty(globalThis, 'localStorage', { value: { getItem: () => 'light', setItem() {} }, configurable: true, writable: true }); + + const { outputFiles } = await build({ + stdin: { + contents: ` + import React from 'react'; + import { renderToStaticMarkup } from 'react-dom/server'; + import { ThemeProvider } from './contexts/ThemeContext.jsx'; + import GateTable from './components/dashboard/evaluations/GateTable.jsx'; + import { RunBadge } from './components/dashboard/evaluations/RunsList.jsx'; + + const views = { GateTable, RunBadge }; + export const render = (name, props) => + renderToStaticMarkup(React.createElement(ThemeProvider, null, React.createElement(views[name], props))); + `, + resolveDir: root, + loader: 'jsx', + }, + bundle: true, + write: false, + format: 'esm', + platform: 'node', + external: ['react', 'react-dom', 'react-dom/server', '@rails/actioncable'], + logLevel: 'error', + }); + mkdirSync(dirname(bundlePath), { recursive: true }); + writeFileSync(bundlePath, outputFiles[0].text); + ({ render } = await import(pathToFileURL(bundlePath).href)); +}); + +after(() => rmSync(bundlePath, { force: true })); + +const gate = (extra = {}) => ({ + group: 'critical', name: 'Critical', label: 'gpt-5-mini', passed: 1, total: 2, pass_rate: 0.5, min_pass_rate: 1.0, gated: true, met: false, ...extra, +}); + +// Nine of ten passed, so the whole run clears its 80% bar; the critical +// group passed one of two against 100%. +const gatedRun = { + status: 'complete', samples_evaluated: 10, samples_passed: 9, gates_met: false, + gates: [ + gate(), + gate({ group: 'informational', name: 'Informational', passed: 0, total: 2, pass_rate: 0, min_pass_rate: 0.8, gated: false, met: true }), + gate({ group: null, name: 'All', passed: 7, total: 8, pass_rate: 0.875, min_pass_rate: 0.8, met: true }), + ], +}; + +test('a run without gates reads as it always did', () => { + assert.equal(runGates({ status: 'complete', samples_evaluated: 2, samples_passed: 2 }), null); + assert.equal(runGates({ gates: null, gates_met: null }), null); + assert.deepEqual(unmetGates({}), []); + assert.equal(render('GateTable', { run: { status: 'complete' } }), ''); +}); + +test("the verdict is the server's, and each gate keeps its bar", () => { + const gates = runGates(gatedRun); + + assert.equal(gates.met, false); + assert.deepEqual(gates.rows.map((row) => [row.name, row.gated, row.met]), [['Critical', true, false], ['Informational', false, true], ['All', true, true]]); + assert.equal(runGates({ ...gatedRun, gates_met: true }).met, true, 'the rows are not regraded in the browser'); + assert.deepEqual(unmetGates(gatedRun).map((row) => row.name), ['Critical']); + assert.deepEqual(runGates({ gates: [null, 'x', gate()], gates_met: false }).rows.length, 1, 'a row that is not an object is dropped'); +}); + +test("a gate reads in Gate#to_s's words", () => { + const [critical, informational, all] = runGates(gatedRun).rows; + + assert.equal(gateSentence(critical), 'Critical · gpt-5-mini: 1/2 (50%) passed, below 100%'); + assert.equal(gateSentence(informational), 'Informational · gpt-5-mini: 0/2 (0%) passed, not gated'); + assert.equal(gateSentence(all), 'All · gpt-5-mini: 7/8 (88%) passed, at or above 80%'); +}); + +test('the table lists every gate with its status in words', () => { + const html = render('GateTable', { run: gatedRun }); + + assert.match(html, /Pass rate by group/); + assert.match(html, /data-testid="run-gates-verdict"[^>]*>1 gate not met match[1]), ['not met', 'reported only', 'met']); + assert.match(html, /title="Critical · gpt-5-mini: 1\/2 \(50%\) passed, below 100%"/); + assert.match(html, />100%]*>—<\/td>/, 'an ungated group has no required rate'); +}); + +test('a run that met every gate says so', () => { + const run = { ...gatedRun, gates_met: true, gates: [gate({ passed: 2, pass_rate: 1, met: true })] }; + + assert.match(render('GateTable', { run }), /data-testid="run-gates-verdict"[^>]*>every gate met { + const html = render('RunBadge', { run: gatedRun }); + + assert.match(html, /9\/10 · 90% passed · gate missed/); + assert.match(html, /color:var\(--color-error-text\)/, 'a 90% run that missed a gate is toned as an error, not a warning'); + assert.match(render('RunBadge', { run: { ...gatedRun, gates_met: true } }), /color:var\(--color-warning-text\)/); + assert.match(html, /title="9\/10 · 90% passed\nCritical · gpt-5-mini: 1\/2 \(50%\) passed, below 100%"/); + assert.match(render('RunBadge', { run: gatedRun, short: true }), />9\/10 · 90% · gate missed9\/10 · 90% passed · gates met { + const html = render('RunBadge', { run: { status: 'complete', samples_evaluated: 10, samples_passed: 9 } }); + + assert.match(html, />9\/10 · 90% passed export const isInProgress = (run) => !!run && ['pending', 'running'].includes(run.status); +// --- pass gates ------------------------------------------------------------- + +// A run's per-group pass gates, as the server computed them (the run's +// `gates`, ActiveAgent::Evals::Report#gates) with its `gates_met` verdict: +// `{ met, rows }`, one row per group and model, then the whole run's ("All") +// per model. null for a run held to no bars, so it reads as it always did. +export const runGates = (run) => { + if (!run || !Array.isArray(run.gates)) return null; + const number = (value) => (Number.isFinite(Number(value)) ? Number(value) : 0); + const rows = run.gates.filter((gate) => gate && typeof gate === 'object').map((gate) => ({ + group: gate.group ?? null, + name: String(gate.name || gate.group || 'All'), + label: String(gate.label || ''), + passed: number(gate.passed), + total: number(gate.total), + rate: number(gate.pass_rate), + minRate: number(gate.min_pass_rate), + gated: gate.gated !== false, + met: gate.met === true, + })); + return { met: run.gates_met === true, rows }; +}; + +// What a gate says, in Gate#to_s's words: +// "Orders · gpt-5-mini: 1/2 (50%) passed, below 100%". +export const gateSentence = (gate) => { + const bar = !gate.gated ? 'not gated' : gate.met ? `at or above ${wholePercent(gate.minRate)}` : `below ${wholePercent(gate.minRate)}`; + const passes = gate.total > 0 ? `${gate.passed}/${gate.total} (${wholePercent(gate.passed / gate.total)})` : '—'; + return `${gate.name}${gate.label ? ` · ${gate.label}` : ''}: ${passes} passed, ${bar}`; +}; + +// The gated rows a run missed, in order. +export const unmetGates = (run) => (runGates(run)?.rows || []).filter((gate) => gate.gated && !gate.met); + // --- pricing ---------------------------------------------------------------- // // Every interaction with tokens is priced by the API: a cost the diff --git a/actionagent/lib/generators/action_agent/templates/migrations/034_add_catalog_product_criteria.rb.erb b/actionagent/lib/generators/action_agent/templates/migrations/034_add_catalog_product_criteria.rb.erb new file mode 100644 index 000000000..75fce9f47 --- /dev/null +++ b/actionagent/lib/generators/action_agent/templates/migrations/034_add_catalog_product_criteria.rb.erb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddCatalogProductCriteria < ActiveRecord::Migration<%= migration_version %> + def up + return unless table_exists?(products_table) + return if column_exists?(products_table, :criteria) + + type = connection.adapter_name.to_s.downcase.include?("postgres") ? :jsonb : :json + add_column products_table, :criteria, type + end + + def down + return unless table_exists?(products_table) + return unless column_exists?(products_table, :criteria) + + remove_column products_table, :criteria + end + + private + + def products_table + "#{ActionAgent.table_name_prefix}scenario_products" + end +end diff --git a/actionagent/lib/generators/action_agent/templates/migrations/035_add_catalog_pass_bars.rb.erb b/actionagent/lib/generators/action_agent/templates/migrations/035_add_catalog_pass_bars.rb.erb new file mode 100644 index 000000000..756f6239c --- /dev/null +++ b/actionagent/lib/generators/action_agent/templates/migrations/035_add_catalog_pass_bars.rb.erb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class AddCatalogPassBars < ActiveRecord::Migration<%= migration_version %> + def up + type = connection.adapter_name.to_s.downcase.include?("postgres") ? :jsonb : :json + catalog_tables.each do |table| + next unless table_exists?(table) + next if column_exists?(table, :pass) + + add_column table, :pass, type + end + end + + def down + catalog_tables.each do |table| + next unless table_exists?(table) + next unless column_exists?(table, :pass) + + remove_column table, :pass + end + end + + private + + def catalog_tables + %w[scenario_products scenario_sets].map { |table| "#{ActionAgent.table_name_prefix}#{table}" } + end +end diff --git a/actionagent/test/catalog_pass_bars_test.rb b/actionagent/test/catalog_pass_bars_test.rb new file mode 100644 index 000000000..ba64d3ba0 --- /dev/null +++ b/actionagent/test/catalog_pass_bars_test.rb @@ -0,0 +1,176 @@ +# frozen_string_literal: true + +require "test_helper" + +# A catalog product's and set's `pass` bars (PassThresholds) kept by the +# dashboard: stored on import, emitted by the export, compared by the import +# preview, and read back by the stored catalog's pass_thresholds. +class CatalogPassBarsTest < ActiveSupport::TestCase + # Makes ScenarioProduct and ScenarioSet report no pass column while + # +hidden+ is set, as an install that has not run add_catalog_pass_bars does. + module WithoutPassColumn + mattr_accessor :hidden, default: false + + def has_attribute?(name) + return false if WithoutPassColumn.hidden && name.to_s == "pass" + + super + end + end + ActionAgent::ScenarioProduct.prepend(WithoutPassColumn) + ActionAgent::ScenarioSet.prepend(WithoutPassColumn) + + def setup + ActionAgent::ScenarioCatalog.destroy_all + @storage = ActionAgent.active_storage + ActionAgent.active_storage = :auto + end + + def teardown + ActionAgent.active_storage = @storage + end + + def document(product_pass: { "min_pass_rate" => 0.8 }, critical: { "min_pass_rate" => 1.0 }, informational: { "gated" => false }) + { + "catalog" => "order_suite", + "products" => [ { + "key" => "checkout", "pass" => product_pass, + "sets" => [ + { "key" => "critical", "pass" => critical, + "scenarios" => [ { "key" => "cannot_charge_twice", "prompt" => "Check duplicate charge." } ] }, + { "key" => "informational", "pass" => informational, + "scenarios" => [ { "key" => "shipping_eta", "prompt" => "Check shipping ETA." } ] } + ].map(&:compact) + }.compact ] + } + end + + def import(input = document, **options) + ActionAgent::ScenarioCatalogImport.new(owner: nil, document: input.to_yaml, **options).call + end + + def preview(input = document, **options) + ActionAgent::ScenarioCatalogImport.new(owner: nil, document: input.to_yaml, **options).preview + end + + def actions(result) + result[:changes].reject { |change| %w[unchanged keep].include?(change[:action]) }.to_h { |change| [ change[:path], change[:action] ] } + end + + test "the stored catalog gates a product's sets with the bars the document declared" do + parsed = ActiveAgent::Evals::Catalog.parse(document.to_yaml) + catalog = import.reload + + assert_equal parsed.pass_thresholds(:checkout).to_h, catalog.to_catalog.pass_thresholds(:checkout).to_h + assert_equal parsed.pass_thresholds(:checkout, :critical).to_h, catalog.to_catalog.pass_thresholds(:checkout, :critical).to_h + thresholds = catalog.to_catalog.pass_thresholds(:checkout) + assert_equal 0.8, thresholds.min_pass_rate("informational") + assert_equal 1.0, thresholds.min_pass_rate("critical") + assert thresholds.gated?("critical") + assert_not thresholds.gated?("informational") + end + + test "the bars survive the database and export as the document imported them" do + parsed = ActiveAgent::Evals::Catalog.parse(document.to_yaml) + catalog = import.reload + product = catalog.products.sole + + assert_equal({ "min_pass_rate" => 0.8 }, product.pass) + assert_equal({ "critical" => { "min_pass_rate" => 1.0 }, "informational" => { "gated" => false } }, + product.sets.to_h { |set| [ set.key, set.pass ] }) + assert_equal parsed.to_h, catalog.to_catalog.to_h + exported = ActiveAgent::Evals::Catalog.parse(catalog.export_yaml) + assert_equal parsed.to_h, exported.to_h + assert_equal catalog.digest, exported.digest + critical = product.sets.find_by!(key: "critical") + narrowed = YAML.safe_load(catalog.export_yaml(set_ids: [ critical.id ])) + assert_equal({ "min_pass_rate" => 0.8 }, narrowed.dig("products", 0, "pass")) + assert_equal({ "min_pass_rate" => 1.0 }, narrowed.dig("products", 0, "sets", 0, "pass")) + end + + test "re-importing the same document previews no change" do + import + result = preview + + assert_equal "unchanged", result.dig(:catalog, :action) + assert_empty result[:changes] + assert_equal({ "unchanged" => 5 }, result[:counts]) + end + + test "a changed or removed bar previews as an update and replaces the stored bars" do + import + stricter = document(product_pass: { "min_pass_rate" => 0.9, "threshold" => 0.7 }, informational: nil) + + assert_equal({ "checkout" => "update", "checkout/informational" => "update" }, actions(preview(stricter))) + catalog = import(stricter) + assert_equal({ "min_pass_rate" => 0.9, "threshold" => 0.7 }, catalog.products.sole.reload.pass) + assert_equal({}, catalog.sets.find_by!(key: "informational").pass) + assert_not YAML.safe_load(catalog.export_yaml).dig("products", 0, "sets", 1).key?("pass") + assert catalog.to_catalog.pass_thresholds(:checkout).gated?("informational") + end + + test "merge mode takes the document's bars, and a narrowed export merges back unchanged" do + catalog = import + critical = catalog.sets.find_by!(key: "critical") + merged = ActionAgent::ScenarioCatalogImport.new(owner: nil, document: catalog.export_yaml(set_ids: [ critical.id ]), mode: "merge") + + assert_empty actions(merged.preview) + merged.call + assert_equal({ "min_pass_rate" => 1.0 }, critical.reload.pass) + assert_equal({ "gated" => false }, catalog.sets.find_by!(key: "informational").pass) + + relaxed = document(critical: { "min_pass_rate" => 0.5 }) + relaxed["products"][0]["sets"].pop + assert_equal({ "checkout/critical" => "update" }, actions(preview(relaxed, mode: "merge"))) + import(relaxed, mode: "merge") + assert_equal({ "min_pass_rate" => 0.5 }, critical.reload.pass) + assert_equal({ "gated" => false }, catalog.sets.find_by!(key: "informational").pass) + + bare = document(product_pass: nil, critical: nil, informational: nil) + assert_equal({ "checkout" => "update", "checkout/critical" => "update", "checkout/informational" => "update" }, + actions(preview(bare, mode: "merge"))) + import(bare, mode: "merge") + assert_equal({}, catalog.products.sole.reload.pass, "the preview's update is what the import does") + assert_equal({}, critical.reload.pass) + assert_equal({}, catalog.sets.find_by!(key: "informational").pass) + end + + test "a catalog without bars imports, exports and previews as before" do + bare = document(product_pass: nil, critical: nil, informational: nil) + catalog = import(bare).reload + exported = YAML.safe_load(catalog.export_yaml) + + assert_not exported.dig("products", 0).key?("pass") + assert(exported.dig("products", 0, "sets").none? { |set| set.key?("pass") }) + assert_equal ActiveAgent::Evals::Catalog.parse(bare.to_yaml).digest, catalog.digest + assert_empty preview(bare)[:changes] + assert_equal ActiveAgent::Evals::PassThresholds.default.to_h, catalog.to_catalog.pass_thresholds(:checkout).to_h + end + + test "before the migration runs, a catalog imports and exports without the bars" do + WithoutPassColumn.hidden = true + catalog = import.reload + + assert_equal({}, catalog.products.sole.pass) + assert_nil catalog.products.sole.read_attribute_before_type_cast(:pass), "the import writes no product bars" + assert(catalog.sets.all? { |set| set.read_attribute_before_type_cast(:pass).nil? }, "the import writes no set bars") + assert_not YAML.safe_load(catalog.export_yaml).dig("products", 0).key?("pass") + assert_equal 2, catalog.scenarios.count + ensure + WithoutPassColumn.hidden = false + end + + test "a stored value that is not a mapping reads as no bars" do + catalog = import + product = catalog.products.sole + set = catalog.sets.find_by!(key: "critical") + [ nil, [], "0.8", 0.8 ].each do |stored| + product.update_column(:pass, stored) + set.update_column(:pass, stored) + assert_equal({}, product.reload.pass, stored.inspect) + assert_equal({}, set.reload.pass, stored.inspect) + assert_not product.to_document.key?("pass"), stored.inspect + assert_not set.to_document.key?("pass"), stored.inspect + end + end +end diff --git a/actionagent/test/catalog_product_criteria_test.rb b/actionagent/test/catalog_product_criteria_test.rb new file mode 100644 index 000000000..d49c57ff7 --- /dev/null +++ b/actionagent/test/catalog_product_criteria_test.rb @@ -0,0 +1,173 @@ +# frozen_string_literal: true + +require "test_helper" + +# A catalog product's named criteria lists (`criteria: { name => [...] }`) +# kept by the dashboard: stored on import, emitted by the export, compared +# by the import preview, and layered by name and criterion key in merge mode. +class CatalogProductCriteriaTest < ActiveSupport::TestCase + # Makes ScenarioProduct report no criteria column while +hidden+ is set, + # as an install that has not run add_catalog_product_criteria does. + module WithoutCriteriaColumn + mattr_accessor :hidden, default: false + + def has_attribute?(name) + return false if WithoutCriteriaColumn.hidden && name.to_s == "criteria" + + super + end + end + ActionAgent::ScenarioProduct.prepend(WithoutCriteriaColumn) + + LISTS = { + "shared" => [ { "key" => "answered", "type" => "response_present" } ], + "strict" => [ + { "key" => "answered", "type" => "response_present" }, + { "key" => "polite", "type" => "not_contains", "config" => { "pattern" => "unfortunately" } } + ] + }.freeze + + SET_CRITERIA = [ { "key" => "answered", "type" => "response_present" } ].freeze + + def setup + ActionAgent::ScenarioCatalog.destroy_all + @storage = ActionAgent.active_storage + ActionAgent.active_storage = :auto + end + + def teardown + ActionAgent.active_storage = @storage + end + + def document(lists = LISTS) + { + "catalog" => "support_desk", + "products" => [ { + "key" => "triage", "name" => "Triage", "criteria" => lists, + "sets" => [ { + "key" => "smoke", "criteria" => SET_CRITERIA, + "scenarios" => [ { "key" => "order_1", "prompt" => "Where is order 1?" } ] + } ] + }.compact ] + } + end + + def import(input = document, **options) + ActionAgent::ScenarioCatalogImport.new(owner: nil, document: input.to_yaml, **options).call + end + + def preview(input = document, **options) + ActionAgent::ScenarioCatalogImport.new(owner: nil, document: input.to_yaml, **options).preview + end + + def product_actions(result) + result[:changes].select { |change| change[:level] == "product" }.to_h { |change| [ change[:path], change[:action] ] } + end + + test "a product's named lists survive the database and export as the document imported them" do + parsed = ActiveAgent::Evals::Catalog.parse(document.to_yaml) + catalog = import.reload + + assert_equal LISTS, catalog.products.sole.criteria + assert_equal parsed.to_h, catalog.to_catalog.to_h + exported = ActiveAgent::Evals::Catalog.parse(catalog.export_yaml) + assert_equal parsed.to_h, exported.to_h + assert_equal parsed.digest, exported.digest + assert_equal catalog.digest, exported.digest + assert_equal LISTS, YAML.safe_load(catalog.export_yaml(product_ids: [ catalog.products.sole.id ])).dig("products", 0, "criteria") + assert_equal LISTS, YAML.safe_load(catalog.export_yaml(set_ids: [ catalog.sets.sole.id ])).dig("products", 0, "criteria") + end + + test "the lists reach a suite of the stored product, alongside the set's own criteria" do + catalog = import.reload + suite = catalog.to_catalog.suite_for(:triage) + + assert_equal %w[answered polite], suite.criteria(:shared, :strict).map { |criterion| criterion["key"] } + assert_equal SET_CRITERIA, catalog.sets.sole.criteria + assert_equal SET_CRITERIA, catalog.to_catalog.set(:triage, :smoke).criteria + end + + test "re-importing the same document previews no change and adds no records" do + import + result = preview + + assert_equal "unchanged", result.dig(:catalog, :action) + assert_empty result[:changes] + assert_equal({ "unchanged" => 3 }, result[:counts]) + import + assert_equal 1, ActionAgent::ScenarioProduct.count + end + + test "a changed or removed list previews as an update and replaces the stored lists" do + import + changed = LISTS.merge("strict" => [ { "key" => "answered", "type" => "response_present" } ]) + + assert_equal({ "triage" => "update" }, product_actions(preview(document(changed)))) + assert_equal changed, import(document(changed)).products.sole.reload.criteria + + only_shared = LISTS.slice("shared") + assert_equal({ "triage" => "update" }, product_actions(preview(document(only_shared)))) + assert_equal only_shared, import(document(only_shared)).products.sole.reload.criteria + + catalog = import(document(nil)) + assert_equal({}, catalog.products.sole.reload.criteria) + assert_nil YAML.safe_load(catalog.export_yaml).dig("products", 0).fetch("criteria", nil) + end + + test "merge mode takes the document's lists as it takes a set's criteria, and a narrowed export merges back unchanged" do + catalog = import + set_export = catalog.export_yaml(set_ids: [ catalog.sets.sole.id ]) + merged = ActionAgent::ScenarioCatalogImport.new(owner: nil, document: set_export, mode: "merge") + + assert_empty merged.preview[:changes].reject { |change| change[:action] == "unchanged" } + assert_equal LISTS, merged.call.products.sole.reload.criteria + + overlay = { "terse" => [ { "key" => "detailed", "type" => "min_length", "config" => { "chars" => 40 } } ] } + assert_equal({ "triage" => "update" }, product_actions(preview(document(overlay), mode: "merge"))) + assert_equal overlay, import(document(overlay), mode: "merge").products.sole.reload.criteria + assert_equal SET_CRITERIA, catalog.sets.sole.reload.criteria + + assert_equal({ "triage" => "update" }, product_actions(preview(document(nil), mode: "merge"))) + assert_equal({}, import(document(nil), mode: "merge").products.sole.reload.criteria, "the preview's update is what the import does") + end + + test "a bare criteria list on a product is stored as the default list" do + catalog = import(document(SET_CRITERIA)) + + assert_equal({ "default" => SET_CRITERIA }, catalog.products.sole.reload.criteria) + assert_equal catalog.digest, ActiveAgent::Evals::Catalog.parse(catalog.export_yaml).digest + end + + test "a catalog without product criteria imports, exports and previews as before" do + catalog = import(document(nil)).reload + exported = YAML.safe_load(catalog.export_yaml) + + assert_not exported.dig("products", 0).key?("criteria") + assert_equal ActiveAgent::Evals::Catalog.parse(document(nil).to_yaml).digest, catalog.digest + assert_empty preview(document(nil))[:changes] + end + + test "before the migration runs, a catalog imports and exports without the lists" do + WithoutCriteriaColumn.hidden = true + catalog = import.reload + product = catalog.products.sole + + assert_equal({}, product.criteria) + assert_nil product.read_attribute_before_type_cast(:criteria), "the import writes no lists" + assert_not YAML.safe_load(catalog.export_yaml).dig("products", 0).key?("criteria") + assert_equal "Where is order 1?", catalog.scenarios.sole.prompt + ensure + WithoutCriteriaColumn.hidden = false + end + + test "a stored value that is not a mapping of lists reads as no lists" do + catalog = import + product = catalog.products.sole + [ nil, [], "shared", { "shared" => "answered" }, { "shared" => [ "answered" ] } ].each do |stored| + product.update_column(:criteria, stored) + product.reload + assert_equal({}, product.criteria, stored.inspect) + assert_not product.to_document.key?("criteria"), stored.inspect + end + end +end diff --git a/actionagent/test/evaluation_pass_gates_test.rb b/actionagent/test/evaluation_pass_gates_test.rb new file mode 100644 index 000000000..d3c841877 --- /dev/null +++ b/actionagent/test/evaluation_pass_gates_test.rb @@ -0,0 +1,346 @@ +# frozen_string_literal: true + +require "test_helper" + +# A run's per-group pass gates (ActiveAgent::Evals::Report#gates): the bars +# a dashboard run of a catalog set is held to, recorded as it starts, and +# the bars a published report arrived with, kept on the run so the rebuilt +# report, the run's JSON and the export gate the stored results the same way. +class EvaluationPassGatesTest < ActiveSupport::TestCase + include ActiveJob::TestHelper + + CRITERIA = [ { "key" => "response_present", "type" => "response_present" } ].freeze + + def setup + ActionAgent::ScenarioCatalog.destroy_all + ActionAgent::Agent.delete_all + @agent = ActionAgent::Agent.create!(name: "Checkout Agent", provider: "mock", model: "mock-model", instructions: "Answer with the data.") + @fan_out = ActionAgent.scenario_evaluation_fan_out + end + + def teardown + ActionAgent.scenario_evaluation_fan_out = @fan_out + end + + # A product whose bar is 60% over a set that must pass every answer: + # two of its three scenarios pass under the mock provider and the third, + # expecting a tool the mock never calls, fails. + def document(product_pass: { "min_pass_rate" => 0.6 }, set_pass: { "min_pass_rate" => 1.0 }, criteria: CRITERIA) + { + "catalog" => "order_suite", + "products" => [ { + "key" => "checkout", "pass" => product_pass, + "sets" => [ { + "key" => "critical", "criteria" => criteria, "pass" => set_pass, + "scenarios" => [ + { "key" => "charge_once", "prompt" => "Check the duplicate charge." }, + { "key" => "refund_once", "prompt" => "Check the refund." }, + { "key" => "lookup", "prompt" => "Find the order.", "expect" => { "tools" => [ "find_order" ] } } + ] + }.compact ] + }.compact ] + } + end + + def import(input = document) + ActionAgent::ScenarioCatalogImport.new(owner: nil, document: input.to_yaml).call + end + + def materialized(input = document) + import(input).sets.sole.materialize!(agent: @agent) + end + + # An evaluation of one passing scenario, built the way the dashboard + # builds one by hand. + def evaluation(name:, **attributes) + built = @agent.evaluations.new(name: name, judge_kind: "rules", criteria: CRITERIA, **attributes) + built.scenarios.build(key: "one", prompt: "Hello") + built.save! + built + end + + def critical_gate(run) + run.gates.find { |gate| gate["group"] == "critical" } + end + + def all_gate(run) + run.gates.find { |gate| gate["group"].nil? } + end + + test "a dashboard run of a catalog set is gated by the set's bars even when its pass rate clears the product's" do + run = materialized.run! + + assert_equal "complete", run.status, "a missed gate is a verdict, not a failed run" + assert_equal [ 3, 2 ], [ run.samples_evaluated, run.samples_passed ] + assert_equal({ "threshold" => 0.7, "min_pass_rate" => 0.6, "groups" => { "critical" => { "min_pass_rate" => 1.0 } } }, + run.scores["_pass_thresholds"]) + assert_equal({ "passed" => 2, "total" => 3, "min_pass_rate" => 1.0, "gated" => true, "met" => false }, + critical_gate(run).slice("passed", "total", "min_pass_rate", "gated", "met")) + assert_equal({ "min_pass_rate" => 0.6, "met" => true }, all_gate(run).slice("min_pass_rate", "met")) + assert_equal false, run.gates_met + + report = run.to_report + assert_not report.passed? + assert_equal run.gates, report.to_h["gates"] + assert_equal run.scores["_pass_thresholds"], report.to_h["pass_thresholds"] + end + + test "an ungated set is reported, not gated" do + run = materialized(document(set_pass: { "gated" => false })).run! + + assert_equal({ "gated" => false, "met" => true }, critical_gate(run).slice("gated", "met")) + assert_nil all_gate(run), "no gated result reaches the whole-run gate" + assert_equal true, run.gates_met + end + + # An answer present but far short of LONG scores a little over 0.5: + # below the dashboard's 0.7, above a catalog threshold of 0.4. + LONG = [ *CRITERIA, { "key" => "long", "type" => "min_length", "config" => { "chars" => 100_000 } } ].freeze + + test "a catalog's threshold scores the run's answers" do + lenient = materialized(document(product_pass: { "threshold" => 0.4 }, set_pass: nil, criteria: LONG)).run! + + assert_equal 0.4, lenient.scores.dig("_pass_thresholds", "threshold") + assert_equal 2, lenient.samples_passed + assert_equal 0, materialized(document(product_pass: nil, set_pass: nil, criteria: LONG)).run!.samples_passed + end + + test "a fanned-out run scores its answers at the catalog's threshold" do + ActionAgent.scenario_evaluation_fan_out = true + run = materialized(document(product_pass: { "threshold" => 0.4 }, set_pass: nil, criteria: LONG)).run_later! + loop do + break if enqueued_jobs.empty? + + perform_enqueued_jobs + end + + assert_equal [ "complete", 2 ], [ run.reload.status, run.samples_passed ] + end + + test "a finished run keeps the bars it ran with when the catalog changes" do + run = materialized.run! + before = run.gates + + import(document(set_pass: { "min_pass_rate" => 0.5 })) + run.reload + + assert_equal before, run.gates + assert_equal before, run.to_report.to_h["gates"] + assert_equal false, run.gates_met + assert_equal true, materialized(document(set_pass: { "min_pass_rate" => 0.5 })).run!.gates_met, "a new run takes the new bar" + end + + test "a fanned-out run gates its results with the bars it recorded as it started" do + ActionAgent.scenario_evaluation_fan_out = true + evaluation = materialized + run = evaluation.run_later! + perform_enqueued_jobs(only: ActionAgent::EvaluationRunJob) + import(document(set_pass: { "min_pass_rate" => 0.5 })) + loop do + break if enqueued_jobs.empty? + + perform_enqueued_jobs + end + run.reload + + assert_equal "complete", run.status + assert_equal 1.0, critical_gate(run)["min_pass_rate"], "the bar recorded at the start, not the one imported mid-run" + assert_equal false, run.gates_met + assert_equal run.gates, run.to_report.to_h["gates"] + end + + test "a host adapter's run is gated by the set's bars when its report carries none" do + previous = ActionAgent.scenario_evaluation_adapter_resolver + ActionAgent.scenario_evaluation_adapter_resolver = lambda do |_evaluation| + lambda do |scenarios:, models:, on_result:, **| + ActiveAgent::Evals::Runner.new( + scenarios: scenarios, models: models, criteria: CRITERIA, on_result: on_result, + replay: ->(scenario, _spec) { ActiveAgent::Evals::Replay.new(answer: scenario.key == "lookup" ? "" : "The host answered.") } + ).call + end + end + + run = materialized.run! + + assert_equal "complete", run.status + assert_equal({ "passed" => 2, "total" => 3, "met" => false }, critical_gate(run).slice("passed", "total", "met")) + assert_equal false, run.gates_met + ensure + ActionAgent.scenario_evaluation_adapter_resolver = previous + end + + test "a run without bars records none and reports as before" do + plain = materialized(document(product_pass: nil, set_pass: nil)).run! + adhoc = evaluation(name: "Ad hoc").run! + + [ plain, adhoc ].each do |run| + assert_equal "complete", run.status + assert_not run.scores.key?("_pass_thresholds") + assert_nil run.gates + assert_nil run.gates_met + assert_not run.to_report.to_h.key?("gates") + end + end + + test "an evaluation pointing at another owner's set is not gated by it" do + previous = ActionAgent.user_class + ActionAgent.user_class = "User" + stranger = User.create!(name: "Stranger", email: "stranger-#{SecureRandom.hex(4)}@example.com", age: 30) + owner = User.create!(name: "Owner", email: "owner-#{SecureRandom.hex(4)}@example.com", age: 30) + theirs = ActionAgent::ScenarioCatalogImport.new(owner: stranger, document: document.to_yaml).call.sets.sole + @agent.update!(user_id: owner.id) + run = evaluation(name: "Borrowed", config: { "catalog" => theirs.catalog_reference }).run! + + assert_equal "complete", run.status + assert_nil run.gates + ensure + ActionAgent.user_class = previous + end + + test "a reference whose keys no longer match the set is not gated by it" do + evaluation = materialized + evaluation.update!(config: evaluation.config.merge("catalog" => evaluation.config["catalog"].merge("set_key" => "renamed"))) + + assert_nil evaluation.run!.gates + end + + test "a recorded bar that is not one reads as none" do + run = materialized.run! + [ "0.8", [], { "groups" => [] }, { "min_pass_rate" => 2 }, { "groups" => { "critical" => { "gated" => "no" } } } ].each do |stored| + run.update_column(:scores, run.scores.merge("_pass_thresholds" => stored)) + run.reload + + assert_nil run.pass_thresholds, stored.inspect + assert_not run.to_report.to_h.key?("pass_thresholds"), stored.inspect + end + end + + test "the run's JSON carries the gates and whether every one was met" do + run = materialized.run! + summary = ActionAgent::EvaluationSerializer.run_summary(run) + + assert_equal run.gates, summary[:gates] + assert_equal false, summary[:gates_met] + plain = ActionAgent::EvaluationSerializer.run_summary(materialized(document(product_pass: nil, set_pass: nil)).run!) + assert_equal [ nil, nil ], plain.values_at(:gates, :gates_met) + run.update_column(:scores, run.scores.merge("_gates" => [])) + assert_equal false, run.reload.gates_met, "a run that reached no gate has not passed, as Report#passed? says" + end +end + +# The bars a published report carries (Report#to_h["pass_thresholds"]), as +# the collector at /api/evaluation_reports stores them. +class EvaluationPassGatesImportTest < ActionDispatch::IntegrationTest + Evals = ActiveAgent::Evals + ENDPOINT = "/activeagents/api/evaluation_reports" + + def setup + ActionAgent::EvaluationRun.delete_all + ActionAgent::Evaluation.delete_all + ActionAgent::Agent.delete_all + end + + # Ten answers, nine passing: the critical group passes one of its two + # against a bar of 100%, so the run's pass rate is 90% and it fails. + def report(pass_thresholds: default_thresholds) + spec = Evals::ModelSpec.new(label: "gpt-5-mini", provider: "openai", model: "gpt-5-mini") + results = (1..10).map do |index| + group = index <= 2 ? "critical" : (index <= 4 ? "informational" : "orders") + failing = index == 2 + Evals::Result.new( + scenario: Evals::Scenario.from_hash({ "key" => "case_#{index}", "group" => group, "prompt" => "Case #{index}?" }), + spec: spec, + replay: Evals::Replay.new(answer: failing ? "" : "Answer #{index}.", tool_calls: [], duration_ms: 100, input_tokens: 10, output_tokens: 5), + scores: { "response_present" => failing ? 0.0 : 1.0 }, score: failing ? 0.0 : 1.0, status: failing ? "failed" : "passed" + ) + end + Evals::Report.new(results: results, models: [ spec ], pass_thresholds: pass_thresholds) + end + + def default_thresholds + Evals::PassThresholds.new(suite: { "min_pass_rate" => 0.8 }, + groups: { "critical" => { "min_pass_rate" => 1.0 }, "informational" => { "gated" => false } }) + end + + def envelope(published = report, run_id: "run-#{SecureRandom.hex(4)}") + { "version" => 1, "run_id" => run_id, "source" => "ci", "agent_name" => "OrderBot", "suite" => "orders", + "report" => JSON.parse(published.to_json) } + end + + def publish(payload) + post ENDPOINT, params: payload.to_json, headers: { "Content-Type" => "application/json" } + end + + def stored_run + ActionAgent::EvaluationRun.sole + end + + test "a published report's gates come back from the stored run and its export" do + published = report + payload = envelope(published) + publish(payload) + assert_response :created + run = stored_run + + assert_equal [ 10, 9 ], [ run.samples_evaluated, run.samples_passed ] + assert_equal published.to_h["pass_thresholds"], run.scores["_pass_thresholds"] + assert_equal published.to_h["gates"], run.gates + assert_equal false, run.gates_met + assert_equal published.to_h["gates"], run.to_report.to_h["gates"] + exported = ActionAgent::EvaluationReportExport.new(run).envelope["report"] + assert_equal published.to_h["pass_thresholds"], exported["pass_thresholds"] + assert_equal published.to_h["gates"], exported["gates"] + + publish(payload) + assert_response :success + assert_equal 1, ActionAgent::EvaluationRun.count, "an identical retry stores nothing new" + assert_equal published.to_h["gates"], stored_run.gates + end + + test "the gates are worked out from the results, not taken from the report" do + payload = envelope + payload["report"]["gates"].each { |gate| gate["met"] = true } + publish(payload) + assert_response :created + + assert_equal false, stored_run.gates_met + end + + test "a report without bars is stored as before" do + publish(envelope(report(pass_thresholds: nil))) + assert_response :created + + assert_not stored_run.scores.key?("_pass_thresholds") + assert_nil stored_run.gates + assert_nil stored_run.gates_met + end + + test "bars the framework would refuse are refused with the reason" do + { + "a list" => [ [], "report.pass_thresholds must be an object" ], + "an unknown key" => [ { "min_pass_rate" => 0.8, "strict" => true }, "unknown keys strict" ], + "a bar above 1" => [ { "min_pass_rate" => 2 }, "report.pass_thresholds:" ], + "groups as a list" => [ { "groups" => [] }, "report.pass_thresholds.groups must be an object" ], + "a gated flag that is not true or false" => [ { "groups" => { "critical" => { "gated" => "no" } } }, "must be true or false" ], + "a group key the suite cannot have" => [ { "groups" => { "critical" => { "threshold" => 0.5 } } }, "unknown key \"threshold\"" ] + }.each do |label, (bars, message)| + payload = envelope + payload["report"]["pass_thresholds"] = bars + publish(payload) + + assert_response :unprocessable_entity, label + assert_includes JSON.parse(response.body)["error"], message, label + assert_equal 0, ActionAgent::EvaluationRun.count, label + end + end + + test "too many groups are refused" do + payload = envelope + groups = (0..ActionAgent::EvaluationReportImport::MAX_PASS_GROUPS).to_h { |index| [ "g#{index}", { "gated" => false } ] } + payload["report"]["pass_thresholds"]["groups"] = groups + publish(payload) + + assert_response :unprocessable_entity + assert_includes response.body, "at most #{ActionAgent::EvaluationReportImport::MAX_PASS_GROUPS} groups" + end +end diff --git a/actionagent/test/install_generator_test.rb b/actionagent/test/install_generator_test.rb index d9ae9b4eb..9583c43ad 100644 --- a/actionagent/test/install_generator_test.rb +++ b/actionagent/test/install_generator_test.rb @@ -551,6 +551,120 @@ class ActionAgentInstallGeneratorTest < Rails::Generators::TestCase end end + test "the product criteria upgrade follows catalog creation and is emitted again only when missing" do + run_generator [ "--skip-routes" ] + assert_migration "db/migrate/add_catalog_product_criteria.rb" + assert_operator migration_version("add_catalog_product_criteria"), :>, migration_version("create_active_agent_scenario_catalogs") + FileUtils.rm(migration_file_name("db/migrate/add_catalog_product_criteria.rb")) + before = Dir.children(File.join(destination_root, "db/migrate")) + + run_generator [ "--skip-routes" ] + emitted = Dir.children(File.join(destination_root, "db/migrate")) - before + assert_equal 1, emitted.grep(/_add_catalog_product_criteria\.rb\z/).size + run_generator [ "--skip-routes" ] + assert_equal 1, Dir.glob(File.join(destination_root, "db/migrate/*_add_catalog_product_criteria.rb")).size + end + + test "the product criteria upgrade preserves old rows under a custom prefix, reverses idempotently and skips a missing table" do + run_generator [ "--skip-routes" ] + connection = ActiveRecord::Base.connection + prefix = "product_criteria_probe_" + table = "#{prefix}scenario_products" + connection.create_table(table, force: true) { |t| t.string :key } + connection.execute("INSERT INTO #{table} (key) VALUES ('existing')") + ActionAgent.table_name_prefix = prefix + + 2.times { run_migration("add_catalog_product_criteria", :AddCatalogProductCriteria) } + assert connection.column_exists?(table, :criteria) + assert_equal [ "existing" ], connection.select_values("SELECT key FROM #{table}") + assert_nil connection.select_value("SELECT criteria FROM #{table}") + 2.times { run_migration("add_catalog_product_criteria", :AddCatalogProductCriteria, :down) } + assert_not connection.column_exists?(table, :criteria) + assert_equal [ "existing" ], connection.select_values("SELECT key FROM #{table}") + + ActionAgent.table_name_prefix = "missing_product_probe_" + run_migration("add_catalog_product_criteria", :AddCatalogProductCriteria) + run_migration("add_catalog_product_criteria", :AddCatalogProductCriteria, :down) + assert_not connection.table_exists?("missing_product_probe_scenario_products") + ensure + ActionAgent.table_name_prefix = "active_agent_" + connection&.drop_table(table, if_exists: true) if table + end + + test "the product criteria upgrade uses each adapter's JSON type without a JSON default" do + run_generator [ "--skip-routes" ] + namespace = Module.new + namespace.module_eval(File.read(migration_file_name("db/migrate/add_catalog_product_criteria.rb"))) + { "PostgreSQL" => :jsonb, "Mysql2" => :json, "Trilogy" => :json, "SQLite" => :json }.each do |adapter, type| + migration = namespace::AddCatalogProductCriteria.new + added = [] + connection = connection_without_metadata_column(adapter, added) + ActiveRecord::Migration.suppress_messages { migration.stub(:connection, connection) { migration.up } } + assert_equal [ [ "active_agent_scenario_products", :criteria, type, {} ] ], added, adapter + end + end + + test "the pass bars upgrade follows catalog creation and is emitted again only when missing" do + run_generator [ "--skip-routes" ] + assert_migration "db/migrate/add_catalog_pass_bars.rb" + assert_operator migration_version("add_catalog_pass_bars"), :>, migration_version("create_active_agent_scenario_catalogs") + FileUtils.rm(migration_file_name("db/migrate/add_catalog_pass_bars.rb")) + before = Dir.children(File.join(destination_root, "db/migrate")) + + run_generator [ "--skip-routes" ] + emitted = Dir.children(File.join(destination_root, "db/migrate")) - before + assert_equal 1, emitted.grep(/_add_catalog_pass_bars\.rb\z/).size + run_generator [ "--skip-routes" ] + assert_equal 1, Dir.glob(File.join(destination_root, "db/migrate/*_add_catalog_pass_bars.rb")).size + end + + test "the pass bars upgrade preserves old rows under a custom prefix, reverses idempotently and skips a missing table" do + run_generator [ "--skip-routes" ] + connection = ActiveRecord::Base.connection + prefix = "pass_bars_probe_" + tables = %w[scenario_products scenario_sets].map { |name| "#{prefix}#{name}" } + tables.each do |table| + connection.create_table(table, force: true) { |t| t.string :key } + connection.execute("INSERT INTO #{table} (key) VALUES ('existing')") + end + ActionAgent.table_name_prefix = prefix + + 2.times { run_migration("add_catalog_pass_bars", :AddCatalogPassBars) } + tables.each do |table| + assert connection.column_exists?(table, :pass), table + assert_equal [ "existing" ], connection.select_values("SELECT key FROM #{table}") + assert_nil connection.select_value("SELECT pass FROM #{table}") + end + 2.times { run_migration("add_catalog_pass_bars", :AddCatalogPassBars, :down) } + tables.each do |table| + assert_not connection.column_exists?(table, :pass), table + assert_equal [ "existing" ], connection.select_values("SELECT key FROM #{table}") + end + + connection.drop_table(tables.last) + 2.times { run_migration("add_catalog_pass_bars", :AddCatalogPassBars) } + assert connection.column_exists?(tables.first, :pass), "a missing sets table does not stop the products column" + run_migration("add_catalog_pass_bars", :AddCatalogPassBars, :down) + assert_not connection.table_exists?(tables.last) + ensure + ActionAgent.table_name_prefix = "active_agent_" + tables&.each { |table| connection&.drop_table(table, if_exists: true) } + end + + test "the pass bars upgrade uses each adapter's JSON type without a JSON default" do + run_generator [ "--skip-routes" ] + namespace = Module.new + namespace.module_eval(File.read(migration_file_name("db/migrate/add_catalog_pass_bars.rb"))) + { "PostgreSQL" => :jsonb, "Mysql2" => :json, "Trilogy" => :json, "SQLite" => :json }.each do |adapter, type| + migration = namespace::AddCatalogPassBars.new + added = [] + connection = connection_without_metadata_column(adapter, added) + ActiveRecord::Migration.suppress_messages { migration.stub(:connection, connection) { migration.up } } + expected = %w[active_agent_scenario_products active_agent_scenario_sets].map { |table| [ table, :pass, type, {} ] } + assert_equal expected, added, adapter + end + end + private # The real connection, reporting +adapter+ and a table without the column, diff --git a/actionagent/test/scenario_catalogs_api_test.rb b/actionagent/test/scenario_catalogs_api_test.rb index 813abf44f..ae210c79e 100644 --- a/actionagent/test/scenario_catalogs_api_test.rb +++ b/actionagent/test/scenario_catalogs_api_test.rb @@ -89,6 +89,73 @@ def body assert_includes response.body, "key: add_item" end + test "a product's named criteria lists come back from the export and preview as unchanged" do + document = <<~YAML + catalog: checkout + products: + - key: cart + agent: Cart + criteria: + shared: + - { key: answered, type: response_present } + strict: + - { key: answered, type: response_present } + - { key: polite, type: not_contains, config: { pattern: unfortunately } } + sets: + - key: uat + scenarios: + - key: add_item + prompt: Add two of item 7 to the cart. + YAML + post "/activeagents/api/scenario_catalogs", params: { document: document }, as: :json + assert_response :created + id = body["catalogs"].sole["id"] + + get "/activeagents/api/scenario_catalogs/#{id}/export" + assert_response :success + exported = ActiveAgent::Evals::Catalog.parse(response.body) + assert_equal ActiveAgent::Evals::Catalog.parse(document).digest, exported.digest + assert_equal %w[shared strict], exported.product(:cart).criteria.keys + + post "/activeagents/api/scenario_catalogs/preview", params: { document: document }, as: :json + assert_response :success + assert_empty body["previews"].sole["changes"] + end + + test "a product's and a set's pass bars come back from the export and preview as unchanged" do + document = <<~YAML + catalog: checkout + products: + - key: cart + agent: Cart + pass: { min_pass_rate: 0.8 } + sets: + - key: critical + pass: { min_pass_rate: 1.0 } + scenarios: + - key: add_item + prompt: Add two of item 7 to the cart. + - key: informational + pass: { gated: false } + scenarios: + - key: eta + prompt: When does the cart ship? + YAML + post "/activeagents/api/scenario_catalogs", params: { document: document }, as: :json + assert_response :created + id = body["catalogs"].sole["id"] + + get "/activeagents/api/scenario_catalogs/#{id}/export" + assert_response :success + exported = ActiveAgent::Evals::Catalog.parse(response.body) + assert_equal ActiveAgent::Evals::Catalog.parse(document).digest, exported.digest + assert_equal ActiveAgent::Evals::Catalog.parse(document).pass_thresholds(:cart), exported.pass_thresholds(:cart) + + post "/activeagents/api/scenario_catalogs/preview", params: { document: document }, as: :json + assert_response :success + assert_empty body["previews"].sole["changes"] + end + test "an invalid document is refused with the reason" do post "/activeagents/api/scenario_catalogs", params: { document: "catalog: x\nproducts: [{ name: nameless }]" }, as: :json diff --git a/docs/framework/dashboard.md b/docs/framework/dashboard.md index 42303c11e..19250dbc0 100644 --- a/docs/framework/dashboard.md +++ b/docs/framework/dashboard.md @@ -610,6 +610,22 @@ models, the matrix, the drill-downs, what to fix — so the whole card describes the run you are reading, while the collapsed header keeps reporting the latest. +**Pass gates.** A run held to pass bars (a published report's +`pass_thresholds`, or the `pass` blocks of the catalog set a run started +here replays) shows a **Pass rate by group** table under the run header: +one row per group and model, then the whole run's per model, each with +passed of total, the bar, and `met`, `not met`, or `reported only` for a +`gated: false` group. The run's badge, in the list and the header, adds +`gate missed` when any gate was not met, whatever the pass rate reads, and +its tooltip names each gate missed; otherwise `gates met`. A missed gate is +a verdict on a complete run, not a failed one. The bars are recorded with +the run when it starts or is imported, so changing the catalog later does +not regrade it, and the gates are worked out from the stored results rather +than taken from the report. The run's JSON carries them as `gates` (each +`group`, `name`, `label`, `passed`, `total`, `pass_rate`, `min_pass_rate`, +`gated` and `met`) and `gates_met`, both `null` for a run without bars, +which reads as it always did. + **Models** gives each candidate its pass bar and `k/n`, mean score, mean latency with its P50 and P95, input and output tokens, estimated cost, and the faults it hit as badges (or `[+] no faults`). When the run compared @@ -891,6 +907,28 @@ bin/rails db:migrate This also installs the column on a fresh dashboard. Fields discarded by an earlier version can only be restored by importing the original document again. +A product's named `criteria` lists are stored the same way. They come back +in every export that includes the product, so a re-imported unchanged +document previews as unchanged and keeps its digest. Like a set's +`criteria`, the lists are a field of the product: replace and merge mode +both take the document's, so a narrowed export merges back unchanged. +A set still runs on its own +`criteria`: the product's lists are kept, not scored. Existing installs +need the `add_catalog_product_criteria` migration (the same +`action_agent:install --skip` and `db:migrate` as above); until it runs, +imports keep working and leave the lists out. Lists dropped by an earlier +version come back when the original document is imported again. + +A product's and a set's `pass` bars are stored the same way, so the stored +catalog's `pass_thresholds` answer as the document's do and an unchanged +document previews as unchanged. Both import modes take the document's +bars, so a set imported without `pass` loses its stored one. A run of the +set started from the dashboard is gated by them (see **Pass gates** under +[Scenario evaluations](#scenario-evaluations)). Existing +installs need the `add_catalog_pass_bars` migration; until it runs, +imports keep working and leave the bars out. Bars dropped by an earlier +version come back when the original document is imported again. + **Permissions and gates.** Importing, re-importing, deleting, syncing, materializing and running a set change evaluation scenarios, so each needs the `replace_scenarios` [permission](#permissions); reading needs none. diff --git a/docs/framework/evaluations.md b/docs/framework/evaluations.md index baaff8840..58ef83be7 100644 --- a/docs/framework/evaluations.md +++ b/docs/framework/evaluations.md @@ -887,7 +887,9 @@ no gates table, no tone and none of the three keys. The command line's `evals run --min-pass-rate` stays a gate on the whole run's pass rate (see [Command Line](/framework/cli#gating-ci-on-a-pass-rate)); the per-group gates travel with the report, in `to_h["gates"]`, for whatever -reads the JSON. +reads the JSON. The mounted dashboard keeps a published report's +`pass_thresholds` with the run and rebuilds the gates from its stored +results (see [Scenario evaluations](/framework/dashboard#scenario-evaluations)). ## The pieces @@ -1390,15 +1392,17 @@ new one is appended), so `catalog.suite_for(:triage).criteria(:shared)` reads a product's `shared` list the way `Suite#criteria` does. A set keeps a criterion without a `key`, appended as it is and once, however many layered documents restate it. The mounted dashboard stores a set's -criteria; a product's named lists stay in the YAML and do not survive its -import and export, so the import preview reports a product that carries -them as changed on every re-import, and a document the dashboard writes -back from its records leaves them out. +criteria and a product's named lists, and exports both as it imported +them, so an unchanged document re-imports with no change; running a set +still scores on the set's own criteria (see +[Scenario catalogs](/framework/dashboard#scenario-catalogs)). A product and a set may also carry a `pass` block (see [Gating a suite](#gating-a-suite)), checked as the catalog loads — a bad one raises `Catalog::InvalidDocument` naming the product or set it sits on; `suite_for` makes the product's the suite's and each set's its group's, and -`Catalog#pass_thresholds(:triage, :smoke)` reads them. Keys the format does +`Catalog#pass_thresholds(:triage, :smoke)` reads them. The mounted +dashboard stores and exports both blocks with the catalog, and gates a run +of the set by them. Keys the format does not define (`owner_team`, `repository`, …) are kept as `metadata` on the catalog, product, set or scenario they sit on. Scenario extensions are opaque data: they do not add scoring rules. They remain at their original diff --git a/test/dummy/db/migrate/034_add_catalog_product_criteria.rb b/test/dummy/db/migrate/034_add_catalog_product_criteria.rb new file mode 100644 index 000000000..6776a2726 --- /dev/null +++ b/test/dummy/db/migrate/034_add_catalog_product_criteria.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddCatalogProductCriteria < ActiveRecord::Migration[7.2] + def up + return unless table_exists?(products_table) + return if column_exists?(products_table, :criteria) + + type = connection.adapter_name.to_s.downcase.include?("postgres") ? :jsonb : :json + add_column products_table, :criteria, type + end + + def down + return unless table_exists?(products_table) + return unless column_exists?(products_table, :criteria) + + remove_column products_table, :criteria + end + + private + + def products_table + "#{ActionAgent.table_name_prefix}scenario_products" + end +end diff --git a/test/dummy/db/migrate/035_add_catalog_pass_bars.rb b/test/dummy/db/migrate/035_add_catalog_pass_bars.rb new file mode 100644 index 000000000..23cb5ce5c --- /dev/null +++ b/test/dummy/db/migrate/035_add_catalog_pass_bars.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class AddCatalogPassBars < ActiveRecord::Migration[7.2] + def up + type = connection.adapter_name.to_s.downcase.include?("postgres") ? :jsonb : :json + catalog_tables.each do |table| + next unless table_exists?(table) + next if column_exists?(table, :pass) + + add_column table, :pass, type + end + end + + def down + catalog_tables.each do |table| + next unless table_exists?(table) + next unless column_exists?(table, :pass) + + remove_column table, :pass + end + end + + private + + def catalog_tables + %w[scenario_products scenario_sets].map { |table| "#{ActionAgent.table_name_prefix}#{table}" } + end +end diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb index 99383b9be..f18f70fea 100644 --- a/test/dummy/db/schema.rb +++ b/test/dummy/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 32) do +ActiveRecord::Schema[8.0].define(version: 35) do create_table "active_agent_agent_contexts", force: :cascade do |t| t.string "action_name", null: false t.string "agent_name", null: false @@ -682,6 +682,8 @@ t.json "metadata" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.json "criteria" + t.json "pass" t.index [ "agent_id" ], name: "index_active_agent_scenario_products_on_agent_id" t.index [ "project_id" ], name: "index_active_agent_scenario_products_on_project_id" t.index [ "scenario_catalog_id", "key" ], name: "idx_on_scenario_catalog_id_key_2062a9535b", unique: true @@ -699,6 +701,7 @@ t.integer "position" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.json "pass" t.index [ "evaluation_id" ], name: "index_active_agent_scenario_sets_on_evaluation_id" t.index [ "scenario_product_id", "key" ], name: "idx_on_scenario_product_id_key_dec134b9c6", unique: true end